On 12/21/2018 01:48 AM, tristram...@microchip.com wrote: >>>> Well, I just did 'git grep regmap_i2c drivers' and 'git grep regmap_spi >>>> drivers/' and found eg. >>>> drivers/iio/pressure/zpa2326_i2c.c >>>> drivers/iio/pressure/zpa2326_spi.c >>>> >>>> There's plenty of drivers using regmap in drivers/ to demonstrate how to >>>> use it. And there's always include/linux/regmap.h . >>>> >>>> In this specific (DSA) case, register either regmap_spi or regmap_i2c in >>>> the ksz_switch_register(), pop the regmap pointer into ksz_device and >>>> then use it in ksz_read*()/ksz_write*(). You can then, in a subsequent >>>> patch, massage the regmap accesses directly into the code instead and >>>> drop the ksz_read*()/ksz_write*() functions altogether, since those >>>> would be just regmap function wrappers. >>>> >>>> And if you're still lost, I can start on the conversion myself. >>> >>> Actually, wait a few hours, I'll try to prepare a regmap patchset. >> >> Try this [1], it should be a start. The last two patches might need some >> adjustments, so please test and let me know how that works (or better >> yet, provide fixes). Adding i2c regmap should then be trivial :) >> >> [1] https://patchwork.ozlabs.org/cover/1016432/ > > I did look at the code in regmap_i2c.c and regmap_spi.c. > > So the assumption is there is a regmap_read function that automatically > maps to regmap_i2c_read or regmap_spi_read depending on the device.
Yes, I just sent a V2 patchset tested on KSZ8795 . It removes over 200 LoC from the KSZ driver. Please test it on KSZ9477 and let me know if it broke anything -- and ideally, send patch :) > But the SPI access does not use the register directly. It has to convert it > into a special format recognized by the chip. The size used by SPI is 4, > while > I2C access uses the standard way and the size is 2. Regmap can handle that too, see the V2 :-) -- Best regards, Marek Vasut