Thanks! After applying two of the patches, the RTL8214QF is detected, but not properly initialized - I'm quite sure some additional work is needed on the RTL8393M with this combination: MDIO 0x30 and 0x31 are detected as "internal RTL8390 SERDES" while 0x32 and 0x33 are detected as "RTL8214QF PHY". However, the RTL8214QF PHY is only initialized when its base address is a multiple of 4.
I suppose that the internal SERDES needs to be somehow disabled - the U-Boot board config seems to confirm this in rtl8393m_8214b_8214qf_board.c
:
.phy.list = {
[0] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 0 , .phy_max = 8 },
[1] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 8 , .phy_max = 8 },
[2] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 16, .phy_max = 8 },
[3] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 24, .phy_max = 8 },
[4] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 32, .phy_max = 8 },
[5] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 40, .phy_max = 8 },
[6] = { .chip = RTK_CHIP_RTL8214QF, .mac_id = 48, .phy_max = 4 },
}, /* .phy.list */
while the same list for rtl8393m_8218b_8218fb_2sfp.c
contains
.phy.list = {
[0] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 0 , .phy_max = 8 },
[1] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 8 , .phy_max = 8 },
[2] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 16, .phy_max = 8 },
[3] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 24, .phy_max = 8 },
[4] = { .chip = RTK_CHIP_RTL8218B, .mac_id = 32, .phy_max = 8 },
[5] = { .chip = RTK_CHIP_RTL8218FB, .mac_id = 40, .phy_max = 8 },
[6] = { .chip = RTK_CHIP_NONE, .mac_id = 48, .phy_max = 0 },
}, /* .phy.list */