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> --- 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