> -----Original Message----- > From: Andrew Lunn [mailto:and...@lunn.ch] > Sent: Friday, September 08, 2017 7:12 AM > To: Maxim Uvarov > Cc: Tristram Ha - C24268; Pavel Machek; Nathan Conrad; Vivien Didelot; Florian > Fainelli; netdev; linux-kernel@vger.kernel.org; Woojung Huh - C21699 > Subject: Re: [PATCH RFC] Update documentation for KSZ DSA drivers so that new > drivers can be added > > On Fri, Sep 08, 2017 at 04:32:35PM +0300, Maxim Uvarov wrote: > > 2017-09-08 0:54 GMT+03:00 Andrew Lunn <and...@lunn.ch>: > > >> -- compatible: For external switch chips, compatible string must be > > >> exactly > one > > >> - of: "microchip,ksz9477" > > >> +- compatible: Should be "microchip,ksz9477" for KSZ9477 chip, > > >> + "microchip,ksz8795" for KSZ8795 chip, > > >> + "microchip,ksz8794" for KSZ8794 chip, > > >> + "microchip,ksz8765" for KSZ8765 chip, > > >> + "microchip,ksz8895" for KSZ8895 chip, > > >> + "microchip,ksz8864" for KSZ8864 chip, > > >> + "microchip,ksz8873" for KSZ8873 chip, > > >> + "microchip,ksz8863" for KSZ8863 chip, > > >> + "microchip,ksz8463" for KSZ8463 chip > > > > > > > all that chips have the same spi access to get chip id on probe(). I > > prefer common microship,ksz-spi rather than somebody will always > > maintain that list. > > The Marvell DSA driver is similar. The compatibility string tells you > enough to go find the switch ID in the switch itself. > > I suppose this comes down to, is there going to be one SPI driver for > all the devices, or lots of drivers? In general, DSA has one driver > for lots of devices. The mv88e6xxx supports around 25 devices. The b53 > has around 17, etc. > > So i would suggest one driver supporting all the different devices. >
There will be 5 drivers to support these devices: ksz9477.c - KSZ9893/KSZ9897/KSZ9567/KSZ9566/KSZ9477 ksz8795.c - KSZ8795/KSZ8795/KSZ8765 ksz8895.c - KSZ8895/KSZ8864 ksz8863.c - KSZ8863/KSZ8873 ksz8463.c - KSZ8463 These chips have different SPI access mechanisms, MIB counter reading, and register set. These can be combined into one single driver using function pointers, at least for ksz8795/ksz8895/ksz8863/ksz8463. My only concern is the memory footprint. The customer may not want a big driver to cover all the switches while only one is used. Out of topic I have a question to ask the community regarding the DSA port creation: Port 1 can be specified using the reg parameter specifying 0; port 2, 1; and so on. The KSZ8794 is a variant of KSZ8795 with port 4 disabled. So lan1 = 0, lan2 = 1, lan3 = 2, cpu = 4. But our company Marketing does not want to promote that fact but treat KSZ8794 as a distinct product. So lan1 = 0, lan2 = 1, lan3 = 2, cpu = 3. Is this okay to hide this information inside the driver? This is manageable for KSZ8794 but for KSZ8864 the first port is disabled: lan1 = 1, lan2 = 2, lan3 = 3, cpu = 4. I am not sure whether DSA has or will have a way to display the port mapping to regular users.