Re: [net-next 1/2] net: ethernet: slicoss: add slicoss gigabit ethernet driver
From: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Date: 2016-11-15 22:55:10
Also in:
lkml
On 15.11.2016 23:39, Florian Fainelli wrote:
On 11/15/2016 02:34 PM, Lino Sanfilippo wrote:quoted
On 15.11.2016 22:59, Andrew Lunn wrote:quoted
quoted
The link state is retrieved by a command to the application processor that is running on the network card. Also the register to set the phy configuration is write-only, so it is not even possible to do the usual mdio bit-banging in the Phy read() and write() functions (however there seems to be another application processor command reserved for retrieving the PHY settings, but I have not tried it yet).quoted
quoted
+ val = MII_BMCR << 16 | SLIC_PCR_AUTONEG | + SLIC_PCR_AUTONEG_RST; + slic_write(sdev, SLIC_REG_WPHY, val);This actually looks a lot like an MDIO write operation. The upper 16 bits are the register, and the lower 16 bits are the data. What you don't have is the address. But maybe it is limited to one address. If the processor command reserved for read works in a similar way, you have enough to do an MDIO bus.Ok, I will give it a try. Reading values via the application processor is a bit awkward though, since it requires an address to a dma area as part of the command and then the AP informs the driver via irq that the dma memory has been written. So probably the irq handler will have to set some flag and the mdio_read() function will have to poll for that flag in place of doing bit-banging a register.That's a bit unusual compared to typical controllers that are usually memory-mapped and that you can either write to, read/poll to know about completion. I suppose that you could still have a mdiobus implementation that is able to read to/from PHYs by submitting a command to the AP, wait on a completion structure, and have the interrupt handler do the completion of the command?
Thats essentially what I meant by setting a flag in the irq handler. The mdio function would have to check somehow if the irq has been fired (be it by means of a flag or a completion that is set by the irq handler and checked by the mdio function). So I agree that it should work (if reading via the AP command is actually possible). Lino