aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/cells.cc
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2018-11-17 18:02:31 +0100
committerSylvain Munaut <tnt@246tNt.com>2018-11-19 18:20:20 +0100
commite8556aff372c77c1e14a4378b43b47f8ba1e75ec (patch)
tree40d8a30b0d1d30bf84df1fd47b0c8d38e594b7f2 /ice40/cells.cc
parentde8de6304f6905525fd5774d30851c0cc9fe4e37 (diff)
downloadnextpnr-e8556aff372c77c1e14a4378b43b47f8ba1e75ec.tar.gz
nextpnr-e8556aff372c77c1e14a4378b43b47f8ba1e75ec.tar.bz2
nextpnr-e8556aff372c77c1e14a4378b43b47f8ba1e75ec.zip
ice40: Add support for SB_RGBA_DRV
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'ice40/cells.cc')
-rw-r--r--ice40/cells.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/ice40/cells.cc b/ice40/cells.cc
index 53f2e10c..dbb75c2c 100644
--- a/ice40/cells.cc
+++ b/ice40/cells.cc
@@ -246,6 +246,20 @@ std::unique_ptr<CellInfo> create_ice_cell(Context *ctx, IdString type, std::stri
add_port(ctx, new_cell.get(), "PLLOUT_B", PORT_OUT);
add_port(ctx, new_cell.get(), "PLLOUT_A_GLOBAL", PORT_OUT);
add_port(ctx, new_cell.get(), "PLLOUT_B_GLOBAL", PORT_OUT);
+ } else if (type == ctx->id("SB_RGBA_DRV")) {
+ new_cell->params[ctx->id("CURRENT_MODE")] = "0b0";
+ new_cell->params[ctx->id("RGB0_CURRENT")] = "0b000000";
+ new_cell->params[ctx->id("RGB1_CURRENT")] = "0b000000";
+ new_cell->params[ctx->id("RGB2_CURRENT")] = "0b000000";
+
+ add_port(ctx, new_cell.get(), "CURREN", PORT_IN);
+ add_port(ctx, new_cell.get(), "RGBLEDEN", PORT_IN);
+ add_port(ctx, new_cell.get(), "RGB0PWM", PORT_IN);
+ add_port(ctx, new_cell.get(), "RGB1PWM", PORT_IN);
+ add_port(ctx, new_cell.get(), "RGB2PWM", PORT_IN);
+ add_port(ctx, new_cell.get(), "RGB0", PORT_OUT);
+ add_port(ctx, new_cell.get(), "RGB1", PORT_OUT);
+ add_port(ctx, new_cell.get(), "RGB2", PORT_OUT);
} else {
log_error("unable to create iCE40 cell of type %s", type.c_str(ctx));
}