diff options
| author | Lorenzo Bianconi <lorenzo@kernel.org> | 2026-03-06 09:07:27 +0100 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-03-09 19:18:49 -0700 |
| commit | bf3471e6e6c02137dc0d26caa783ac1849f9aab8 (patch) | |
| tree | 5582d6a7b16829bcb0ecfa72e74b8d51288471d6 | |
| parent | 014c607f86abc903d7bf46e13373d89392e371fe (diff) | |
net: airoha: Make flow control source port mapping dependent on nbq parameter
Flow control source port mapping for USB serdes needs to be configured
according to the GDM port nbq parameter. This is a preliminary patch
since nbq parameter is specific for the given port serdes and needs to
be read from the DTS (in the current codebase is assigned statically).
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260306-airoha-fix-loopback-for-usb-serdes-v2-1-319de9c96826@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | drivers/net/ethernet/airoha/airoha_eth.c | 10 | ||||
| -rw-r--r-- | drivers/net/ethernet/airoha/airoha_regs.h | 5 |
2 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c index 09acbe669536..7b47d9e066ce 100644 --- a/drivers/net/ethernet/airoha/airoha_eth.c +++ b/drivers/net/ethernet/airoha/airoha_eth.c @@ -1729,10 +1729,12 @@ static int airhoha_set_gdm2_loopback(struct airoha_gdm_port *port) SP_CPORT_MASK(val), __field_prep(SP_CPORT_MASK(val), FE_PSE_PORT_CDM2)); - if (port->id != AIROHA_GDM3_IDX && airoha_is_7581(eth)) - airoha_fe_rmw(eth, REG_SRC_PORT_FC_MAP6, - FC_ID_OF_SRC_PORT24_MASK, - FIELD_PREP(FC_ID_OF_SRC_PORT24_MASK, 2)); + if (port->id == AIROHA_GDM4_IDX && airoha_is_7581(eth)) { + u32 mask = FC_ID_OF_SRC_PORT_MASK(nbq); + + airoha_fe_rmw(eth, REG_SRC_PORT_FC_MAP6, mask, + __field_prep(mask, AIROHA_GDM2_IDX)); + } return 0; } diff --git a/drivers/net/ethernet/airoha/airoha_regs.h b/drivers/net/ethernet/airoha/airoha_regs.h index ed4e3407f4a0..29878b954c77 100644 --- a/drivers/net/ethernet/airoha/airoha_regs.h +++ b/drivers/net/ethernet/airoha/airoha_regs.h @@ -376,10 +376,7 @@ #define SP_CPORT_MASK(_n) GENMASK(3 + ((_n) << 2), ((_n) << 2)) #define REG_SRC_PORT_FC_MAP6 0x2298 -#define FC_ID_OF_SRC_PORT27_MASK GENMASK(28, 24) -#define FC_ID_OF_SRC_PORT26_MASK GENMASK(20, 16) -#define FC_ID_OF_SRC_PORT25_MASK GENMASK(12, 8) -#define FC_ID_OF_SRC_PORT24_MASK GENMASK(4, 0) +#define FC_ID_OF_SRC_PORT_MASK(_n) GENMASK(4 + ((_n) << 3), ((_n) << 3)) #define REG_CDM5_RX_OQ1_DROP_CNT 0x29d4 |
