Let's try again.
Is this an assumption or known?
I found an rtl9300.h
uboot source which has the following, the key difference being the offsets, plus the masks and bitshifts look identical in nature to what we have now:
// RMA: Reserved Multicast Address (RMA)
#define RTL9300_RMA_MGN_LRN_CTRL_ADDR (0x9818)
#define RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_OFFSET (2)
#define RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_OFFSET)
#define RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_OFFSET (1)
#define RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_OFFSET)
#define RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_OFFSET (0)
#define RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_OFFSET)
#define RTL9300_RMA_PORT_BPDU_CTRL_ADDR(port) (0x981C + (((port >> 4) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_BPDU_CTRL_ACT_OFFSET(port) ((port & 0xF) << 1)
#define RTL9300_RMA_PORT_BPDU_CTRL_ACT_MASK(port) (0x3 << RTL9300_RMA_PORT_BPDU_CTRL_ACT_OFFSET(port))
#define RTL9300_RMA_PORT_PTP_CTRL_ADDR(port) (0x9824 + (((port) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_OFFSET (2)
#define RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_MASK (0x3 << RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_OFFSET)
#define RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_OFFSET (0)
#define RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_MASK (0x3 << RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_OFFSET)
#define RTL9300_RMA_PORT_LLDP_CTRL_ADDR(port) (0x9898 + (((port >> 4) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_LLDP_CTRL_ACT_OFFSET(port) ((port & 0xF) << 1)
#define RTL9300_RMA_PORT_LLDP_CTRL_ACT_MASK(port) (0x3 << RTL9300_RMA_PORT_LLDP_CTRL_ACT_OFFSET(port))
#define RTL9300_RMA_PORT_EAPOL_CTRL_ADDR(port) (0x98A0 + (((port >> 4) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_EAPOL_CTRL_ACT_OFFSET(port) ((port & 0xF) << 1)
#define RTL9300_RMA_PORT_EAPOL_CTRL_ACT_MASK(port) (0x3 << RTL9300_RMA_PORT_EAPOL_CTRL_ACT_OFFSET(port))
It uses the ACT offsets, like those mentioned in the 9310 dev sheet.
@howels can you retest with this commit tip please? (there should be 5 commits to cherry-pick)
Failing this, I think we can try with how 931x does the masks.
Here it is: a second attempt commit tip (8 commits) with some different values from another swcore_rtl9300.h
, as per how the 931x does things.
#define RTL9300_RMA_MGN_LRN_CTRL_ADDR (0x9E78)
#define RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_OFFSET (2)
#define RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_PTP_LRN_OFFSET)
#define RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_OFFSET (1)
#define RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_LLDP_LRN_OFFSET)
#define RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_OFFSET (0)
#define RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_MASK (0x1 << RTL9300_RMA_MGN_LRN_CTRL_EAPOL_LRN_OFFSET)
#define RTL9300_RMA_PORT_BPDU_CTRL_ADDR(port) (0x9E7C + (((port / 10) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_BPDU_CTRL_ACT_OFFSET(port) ((port % 0xA) * 3)
#define RTL9300_RMA_PORT_BPDU_CTRL_ACT_MASK(port) (0x7 << RTL9300_RMA_PORT_BPDU_CTRL_ACT_OFFSET(port))
#define RTL9300_RMA_PORT_PTP_CTRL_ADDR(port) (0x9E88 + (((port) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_OFFSET (2)
#define RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_MASK (0x3 << RTL9300_RMA_PORT_PTP_CTRL_UDP_ACT_OFFSET)
#define RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_OFFSET (0)
#define RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_MASK (0x3 << RTL9300_RMA_PORT_PTP_CTRL_ETH2_ACT_OFFSET)
#define RTL9300_RMA_PORT_LLDP_CTRL_ADDR(port) (0x9EFC + (((port / 10) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_LLDP_CTRL_ACT_OFFSET(port) ((port % 0xA) * 3)
#define RTL9300_RMA_PORT_LLDP_CTRL_ACT_MASK(port) (0x7 << RTL9300_RMA_PORT_LLDP_CTRL_ACT_OFFSET(port))
#define RTL9300_RMA_PORT_EAPOL_CTRL_ADDR(port) (0x9F08 + (((port / 10) << 2))) /* port: 0-28 */
#define RTL9300_RMA_PORT_EAPOL_CTRL_ACT_OFFSET(port) ((port % 0xA) * 3)
#define RTL9300_RMA_PORT_EAPOL_CTRL_ACT_MASK(port) (0x7 << RTL9300_RMA_PORT_EAPOL_CTRL_ACT_OFFSET(port))