icE1usb fw: Add multi-port support for e1.{c,h}
Currently all the users of those function just statically use port 0
only.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I17671be65543f5a2bf3d16ba2b5a5081eb38ebdf
diff --git a/firmware/ice40-riscv/icE1usb/usb_e1.c b/firmware/ice40-riscv/icE1usb/usb_e1.c
index fe94698..8e78ffa 100644
--- a/firmware/ice40-riscv/icE1usb/usb_e1.c
+++ b/firmware/ice40-riscv/icE1usb/usb_e1.c
@@ -64,7 +64,7 @@
val = 8192;
/* Bias depending on TX fifo level */
- level = e1_tx_level();
+ level = e1_tx_level(0);
if (level < (3 * 16))
val += 256;
else if (level > (8 * 16))
@@ -90,7 +90,7 @@
ep_regs = _get_ep_regs(USB_EP_E1_INT(0));
if ((ep_regs->bd[0].csr & USB_BD_STATE_MSK) != USB_BD_STATE_RDY_DATA) {
- const struct e1_error_count *cur_err = e1_get_error_count();
+ const struct e1_error_count *cur_err = e1_get_error_count(0);
if (memcmp(cur_err, &g_usb_e1.last_err, sizeof(*cur_err))) {
struct ice1usb_irq errmsg = {
.type = ICE1USB_IRQ_T_ERRCNT,
@@ -126,7 +126,7 @@
puts("Err EP IN\n");
/* Get some data from E1 */
- int n = e1_rx_level();
+ int n = e1_rx_level(0);
if (n > 64)
n = 12;
@@ -137,7 +137,7 @@
else if (!n)
break;
- n = e1_rx_need_data((ptr >> 2) + 1, n, &pos);
+ n = e1_rx_need_data(0, (ptr >> 2) + 1, n, &pos);
/* Write header: currently version and pos (mfr/fr number) */
hdr = (0 << 28) | (pos & 0xff);
@@ -173,7 +173,7 @@
/* Empty data into the FIFO */
int n = ((int)(csr & USB_BD_LEN_MSK) - 6) / 32;
if (n > 0)
- e1_tx_feed_data((ptr >> 2) + 1, n);
+ e1_tx_feed_data(0, (ptr >> 2) + 1, n);
refill:
/* Refill it */
@@ -223,16 +223,20 @@
static void _perform_tx_config(void)
{
const struct ice1usb_tx_config *cfg = &g_usb_e1.tx_cfg;
- e1_tx_config( ((cfg->mode & 3) << 1) |
- ((cfg->timing & 1) << 3) |
- ((cfg->alarm & 1) << 4) |
- ((cfg->ext_loopback & 3) << 5) );
+ e1_tx_config(0,
+ ((cfg->mode & 3) << 1) |
+ ((cfg->timing & 1) << 3) |
+ ((cfg->alarm & 1) << 4) |
+ ((cfg->ext_loopback & 3) << 5)
+ );
}
static void _perform_rx_config(void)
{
const struct ice1usb_rx_config *cfg = &g_usb_e1.rx_cfg;
- e1_rx_config((cfg->mode << 1));
+ e1_rx_config(0,
+ (cfg->mode << 1)
+ );
}
static enum usb_fnd_resp
@@ -263,12 +267,12 @@
switch (g_usb_e1.running) {
case false:
/* Disable E1 rx/tx */
- e1_init(0, 0);
+ e1_init(0, 0, 0);
break;
case true:
/* Reset and Re-Enable E1 */
- e1_init(0, 0);
+ e1_init(0, 0, 0);
_perform_rx_config();
_perform_tx_config();