Re: [PATCH] DSA support for Micrel KSZ8895
From: Maxim Uvarov <hidden>
Date: 2017-08-30 10:06:10
Also in:
lkml
2017-08-30 0:23 GMT+03:00 Florian Fainelli [off-list ref]:
On 08/29/2017 02:15 PM, Pavel Machek wrote:quoted
On Tue 2017-08-29 14:26:04, Andrew Lunn wrote:quoted
quoted
But the MDIO emaulation code is from their driver, after lots of deletions.Is this driver supposed to run on lots of different OSs? That would explain why they ignored the Linux MDIO and PHY layers.It did not look particulary portable.Part of the problem is that they need to duplicate the standard MII definitions, whereas we could re-use those from include/linux/mii.h and/or mdio.h.quoted
quoted
If possible, please make use of the Linux infrastructure.I did not find any infrastructure I could use instead ksz_mdio_emulation.fixed PHY/swphy.c is as close as it could get, but it is a highly simplified version of this.quoted
Now, drivers/net/phy/spi_ks8995.c can access the PHY registers, and I can not see any translation there, so there may be something I'm missing.I don't see anything in that driver that seems to access PHY registers what makes you think it does? There's got to be a way to perform indirect accesses through SPI, Woojung, do you know?
As I understand they just attach phy on spi bus with generic driver:
phy_addr = 0;
phy_mode = PHY_INTERFACE_MODE_MII;
snprintf(bus_id, MII_BUS_ID_SIZE, "sw.%d", sw_device_present);
snprintf(phy_id, MII_BUS_ID_SIZE, PHY_ID_FMT, bus_id, phy_addr);
phydev = phy_attach(netdev, phy_id, 0, phy_mode);
if (!IS_ERR(phydev)) {
phydev->adjust_link = sw_adjust_link;
return phydev;
}
Where is bus is:
bus = mdiobus_alloc();
bus->read = ksz_mii_read; (spi read function)
bus->write = ksz_mii_write;
Then just generic reads:
.config_aneg = genphy_config_aneg,
.read_status = genphy_read_status,
Maxim.
quoted
Pointers would be welcome at this point. Thanks, Pavel-- Florian
-- Best regards, Maxim Uvarov