Re: [PATCH v1 1/1] MIPS: TXx9: Convert SPI platform data to software nodes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux