On Fri, Nov 26, 2021 at 11:23 AM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > In order to get rid of legacy platform data in AT25 driver, > convert its users to use software nodes. > > Suggested-by: Arnd Bergmann <arnd@xxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> This looks good to me, thanks for cleaning this up! I think Geert has this hardware, adding him to Cc in case he wants to give it a spin. Arnd > arch/mips/include/asm/txx9/spi.h | 4 ++-- > arch/mips/txx9/generic/spi_eeprom.c | 32 +++++++++++++++++------------ > arch/mips/txx9/rbtx4938/setup.c | 6 +++--- > 3 files changed, 24 insertions(+), 18 deletions(-) > > diff --git a/arch/mips/include/asm/txx9/spi.h b/arch/mips/include/asm/txx9/spi.h > index 0d727f354557..1ca87a516b81 100644 > --- a/arch/mips/include/asm/txx9/spi.h > +++ b/arch/mips/include/asm/txx9/spi.h > @@ -16,11 +16,11 @@ > #include <linux/errno.h> > > #ifdef CONFIG_SPI > -int spi_eeprom_register(int busid, int chipid, int size); > +int spi_eeprom_register(int busid, int chipid); > int spi_eeprom_read(int busid, int chipid, > int address, unsigned char *buf, int len); > #else > -static inline int spi_eeprom_register(int busid, int chipid, int size) > +static inline int spi_eeprom_register(int busid, int chipid) > { > return -ENODEV; > } > diff --git a/arch/mips/txx9/generic/spi_eeprom.c b/arch/mips/txx9/generic/spi_eeprom.c > index d833dd2c9b55..cb4b4d47437e 100644 > --- a/arch/mips/txx9/generic/spi_eeprom.c > +++ b/arch/mips/txx9/generic/spi_eeprom.c > @@ -9,18 +9,32 @@ > * > * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@xxxxxxxxxx) > */ > +#include <linux/device.h> > +#include <linux/export.h> > #include <linux/init.h> > +#include <linux/property.h> > #include <linux/slab.h> > -#include <linux/export.h> > -#include <linux/device.h> > + > #include <linux/spi/spi.h> > -#include <linux/spi/eeprom.h> > + > #include <asm/txx9/spi.h> > > +#define AT250X0_SIZE 128 > #define AT250X0_PAGE_SIZE 8 > > +static const struct property_entry spi_eeprom_properties[] = { > + PROPERTY_ENTRY_U32("size", AT250X0_SIZE), > + PROPERTY_ENTRY_U32("pagesize", AT250X0_PAGE_SIZE), > + PROPERTY_ENTRY_U32("address-width", 8), > + { } > +}; > + > +static const struct software_node spi_eeprom_node = { > + .properties = spi_eeprom_properties, > +}; > + > /* register board information for at25 driver */ > -int __init spi_eeprom_register(int busid, int chipid, int size) > +int __init spi_eeprom_register(int busid, int chipid) > { > struct spi_board_info info = { > .modalias = "at25", > @@ -28,16 +42,8 @@ int __init spi_eeprom_register(int busid, int chipid, int size) > .bus_num = busid, > .chip_select = chipid, > /* Mode 0: High-Active, Sample-Then-Shift */ > + .swnode = &spi_eeprom_node, > }; > - struct spi_eeprom *eeprom; > - eeprom = kzalloc(sizeof(*eeprom), GFP_KERNEL); > - if (!eeprom) > - return -ENOMEM; > - strcpy(eeprom->name, "at250x0"); > - eeprom->byte_len = size; > - eeprom->page_size = AT250X0_PAGE_SIZE; > - eeprom->flags = EE_ADDR1; > - info.platform_data = eeprom; > return spi_register_board_info(&info, 1); > } > > diff --git a/arch/mips/txx9/rbtx4938/setup.c b/arch/mips/txx9/rbtx4938/setup.c > index e68eb2e7ce0c..136af1cace75 100644 > --- a/arch/mips/txx9/rbtx4938/setup.c > +++ b/arch/mips/txx9/rbtx4938/setup.c > @@ -283,9 +283,9 @@ static int __init rbtx4938_spi_init(void) > .mode = SPI_MODE_1 | SPI_CS_HIGH, > }; > spi_register_board_info(&srtc_info, 1); > - spi_eeprom_register(SPI_BUSNO, SEEPROM1_CS, 128); > - spi_eeprom_register(SPI_BUSNO, 16 + SEEPROM2_CS, 128); > - spi_eeprom_register(SPI_BUSNO, 16 + SEEPROM3_CS, 128); > + spi_eeprom_register(SPI_BUSNO, 0 + SEEPROM1_CS); > + spi_eeprom_register(SPI_BUSNO, 16 + SEEPROM2_CS); > + spi_eeprom_register(SPI_BUSNO, 16 + SEEPROM3_CS); > gpio_request(16 + SRTC_CS, "rtc-rs5c348"); > gpio_direction_output(16 + SRTC_CS, 0); > gpio_request(SEEPROM1_CS, "seeprom1"); > -- > 2.33.0 >