Merge tag 'imx-soc-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo...
authorOlof Johansson <olof@lixom.net>
Fri, 25 May 2018 20:47:42 +0000 (13:47 -0700)
committerOlof Johansson <olof@lixom.net>
Fri, 25 May 2018 20:47:42 +0000 (13:47 -0700)
i.MX SoC update for 4.18:
 - A series from Bartosz to convert all i.MX plaform code using
   at24_platform_data to use at24 eeprom generic device properties.
 - Enable pinctrl driver support for i.MX6SLL SoC.
 - Clean up i.MX platform code using spi_imx platform data on outdated
   documentation and chip select array usage.

* tag 'imx-soc-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: imx: select imx6sll pinctrl when imx6sll enabled
  ARM: imx: pcm037: use device properties for at24 eeprom
  ARM: imx: pca100: use device properties for at24 eeprom
  ARM: imx: pcm043: use device properties for at24 eeprom
  ARM: imx: vpr200: drop at24_platform_data
  ARM: imx: Update spi_imx platform data to reflect current state

Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/mach-mx31_3ds.c
arch/arm/mach-imx/mach-mx31lilly.c
arch/arm/mach-imx/mach-mx31lite.c
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-imx/mach-pca100.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mach-pcm037_eet.c
arch/arm/mach-imx/mach-pcm043.c
arch/arm/mach-imx/mach-vpr200.c
include/linux/platform_data/spi-imx.h

index e47fa13f4b0cc9ce02797f6afa0955d71f15d21c..6f423238477477c2720d4cb042305016f0676fb9 100644 (file)
@@ -501,6 +501,7 @@ config SOC_IMX6SL
 
 config SOC_IMX6SLL
        bool "i.MX6 SoloLiteLite support"
+       select PINCTRL_IMX6SLL
        select SOC_IMX6
 
        help
index 68c3f0799d5bbab62ce2cb9b94788014e6998800..9d87f1dcf7bbc8cea73b30e571ec131793b41b9c 100644 (file)
@@ -374,26 +374,12 @@ static struct imx_ssi_platform_data mx31_3ds_ssi_pdata = {
 };
 
 /* SPI */
-static int spi0_internal_chipselect[] = {
-       MXC_SPI_CS(0),
-       MXC_SPI_CS(1),
-       MXC_SPI_CS(2),
-};
-
 static const struct spi_imx_master spi0_pdata __initconst = {
-       .chipselect     = spi0_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi0_internal_chipselect),
-};
-
-static int spi1_internal_chipselect[] = {
-       MXC_SPI_CS(0),
-       MXC_SPI_CS(1),
-       MXC_SPI_CS(2),
+       .num_chipselect = 3,
 };
 
 static const struct spi_imx_master spi1_pdata __initconst = {
-       .chipselect     = spi1_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
+       .num_chipselect = 3,
 };
 
 static struct spi_board_info mx31_3ds_spi_devs[] __initdata = {
index 6fd463642954a404e60cfb9526e2041360008260..8bf52819d4d9885cdf842a4d1b0b4ab2f6526846 100644 (file)
@@ -226,20 +226,12 @@ static void __init lilly1131_usb_init(void)
 
 /* SPI */
 
-static int spi_internal_chipselect[] = {
-       MXC_SPI_CS(0),
-       MXC_SPI_CS(1),
-       MXC_SPI_CS(2),
-};
-
 static const struct spi_imx_master spi0_pdata __initconst = {
-       .chipselect = spi_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
+       .num_chipselect = 3,
 };
 
 static const struct spi_imx_master spi1_pdata __initconst = {
-       .chipselect = spi_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
+       .num_chipselect = 3,
 };
 
 static struct mc13xxx_platform_data mc13783_pdata __initdata = {
index a3250bc7f1148fc59c11f3c378051ad950dc253b..a3cbba6c955bd0168b9e18c8bf92987e5a053653 100644 (file)
@@ -83,15 +83,8 @@ static const struct imxuart_platform_data uart_pdata __initconst = {
 };
 
 /* SPI */
-static int spi0_internal_chipselect[] = {
-       MXC_SPI_CS(0),
-       MXC_SPI_CS(1),
-       MXC_SPI_CS(2),
-};
-
 static const struct spi_imx_master spi0_pdata __initconst = {
-       .chipselect     = spi0_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi0_internal_chipselect),
+       .num_chipselect = 3,
 };
 
 static const struct mxc_nand_platform_data
@@ -133,13 +126,8 @@ static struct platform_device smsc911x_device = {
  * The MC13783 is the only hard-wired SPI device on the module.
  */
 
-static int spi1_internal_chipselect[] = {
-       MXC_SPI_CS(0),
-};
-
 static const struct spi_imx_master spi1_pdata __initconst = {
-       .chipselect     = spi1_internal_chipselect,
-       .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
+       .num_chipselect = 1,
 };
 
 static struct mc13xxx_platform_data mc13783_pdata __initdata = {
index 7716f83aecdda1d5f6a35677d40d9446b5d8a0cf..643a3d74970364985366e613ecc2ca9dc6773adc 100644 (file)
@@ -152,14 +152,8 @@ static const struct imxi2c_platform_data moboard_i2c1_data __initconst = {
        .bitrate = 100000,
 };
 
-static int moboard_spi1_cs[] = {
-       MXC_SPI_CS(0),
-       MXC_SPI_CS(2),
-};
-
 static const struct spi_imx_master moboard_spi1_pdata __initconst = {
-       .chipselect     = moboard_spi1_cs,
-       .num_chipselect = ARRAY_SIZE(moboard_spi1_cs),
+       .num_chipselect = 3,
 };
 
 static struct regulator_consumer_supply sdhc_consumers[] = {
@@ -296,19 +290,14 @@ static struct spi_board_info moboard_spi_board_info[] __initdata = {
                /* irq number is run-time assigned */
                .max_speed_hz = 300000,
                .bus_num = 1,
-               .chip_select = 1,
+               .chip_select = 0,
                .platform_data = &moboard_pmic,
                .mode = SPI_CS_HIGH,
        },
 };
 
-static int moboard_spi2_cs[] = {
-       MXC_SPI_CS(0), MXC_SPI_CS(1),
-};
-
 static const struct spi_imx_master moboard_spi2_pdata __initconst = {
-       .chipselect     = moboard_spi2_cs,
-       .num_chipselect = ARRAY_SIZE(moboard_spi2_cs),
+       .num_chipselect = 2,
 };
 
 #define SDHC1_CD IOMUX_TO_GPIO(MX31_PIN_ATA_CS0)
index ed675863655b7115df6ce911d40f6c7022918c37..5714e2f1b10621a0df1bd8294ce0ef374ec01726 100644 (file)
@@ -20,7 +20,7 @@
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/dma-mapping.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/eeprom.h>
@@ -168,16 +168,15 @@ static const struct imxi2c_platform_data pca100_i2c1_data __initconst = {
        .bitrate = 100000,
 };
 
-static struct at24_platform_data board_eeprom = {
-       .byte_len = 4096,
-       .page_size = 32,
-       .flags = AT24_FLAG_ADDR16,
+static const struct property_entry board_eeprom_properties[] = {
+       PROPERTY_ENTRY_U32("pagesize", 32),
+       { }
 };
 
 static struct i2c_board_info pca100_i2c_devices[] = {
        {
-               I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */
-               .platform_data = &board_eeprom,
+               I2C_BOARD_INFO("24c32", 0x52), /* E0=0, E1=1, E2=0 */
+               .properties = board_eeprom_properties,
        }, {
                I2C_BOARD_INFO("pcf8563", 0x51),
        }, {
index b787ba6897e435ae53ca1ddabdc664a19d9a68d3..004737c40fdab306f890cf881c7ec2cb0b32e83f 100644 (file)
@@ -23,7 +23,7 @@
 #include <linux/smsc911x.h>
 #include <linux/interrupt.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/delay.h>
 #include <linux/spi/spi.h>
 #include <linux/irq.h>
@@ -263,16 +263,15 @@ static const struct imxi2c_platform_data pcm037_i2c2_data __initconst = {
        .bitrate = 20000,
 };
 
-static struct at24_platform_data board_eeprom = {
-       .byte_len = 4096,
-       .page_size = 32,
-       .flags = AT24_FLAG_ADDR16,
+static const struct property_entry board_eeprom_properties[] = {
+       PROPERTY_ENTRY_U32("pagesize", 32),
+       { }
 };
 
 static struct i2c_board_info pcm037_i2c_devices[] = {
        {
-               I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */
-               .platform_data = &board_eeprom,
+               I2C_BOARD_INFO("24c32", 0x52), /* E0=0, E1=1, E2=0 */
+               .properties = board_eeprom_properties,
        }, {
                I2C_BOARD_INFO("pcf8563", 0x51),
        }
index 95bd97710494e4e0041ad36c82ef0e0eaa220003..15bc956d466b1ea43b16053d205f278f2d0387f7 100644 (file)
@@ -56,11 +56,8 @@ static struct spi_board_info pcm037_spi_dev[] = {
 };
 
 /* Platform Data for MXC CSPI */
-static int pcm037_spi1_cs[] = { MXC_SPI_CS(0), MXC_SPI_CS(1), };
-
 static const struct spi_imx_master pcm037_spi1_pdata __initconst = {
-       .chipselect = pcm037_spi1_cs,
-       .num_chipselect = ARRAY_SIZE(pcm037_spi1_cs),
+       .num_chipselect = 2,
 };
 
 /* GPIO-keys input device */
index 78e2bf8dcd965a236c3f82b7a53b738c13ad92a1..e595e5368676de1f5f219c74ed8ea37cc217266b 100644 (file)
@@ -24,7 +24,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/usb/otg.h>
 #include <linux/usb/ulpi.h>
 
@@ -110,16 +110,15 @@ static const struct imxi2c_platform_data pcm043_i2c0_data __initconst = {
        .bitrate = 50000,
 };
 
-static struct at24_platform_data board_eeprom = {
-       .byte_len = 4096,
-       .page_size = 32,
-       .flags = AT24_FLAG_ADDR16,
+static const struct property_entry board_eeprom_properties[] = {
+       PROPERTY_ENTRY_U32("pagesize", 32),
+       { }
 };
 
 static struct i2c_board_info pcm043_i2c_devices[] = {
        {
-               I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */
-               .platform_data = &board_eeprom,
+               I2C_BOARD_INFO("24c32", 0x52), /* E0=0, E1=1, E2=0 */
+               .properties = board_eeprom_properties,
        }, {
                I2C_BOARD_INFO("pcf8563", 0x51),
        },
index 5ff154c9a08626fa179983d0361a2ec22a7aa6c7..da3336aaa4c53758f86a84501f1d3137fae76cdd 100644 (file)
@@ -29,7 +29,6 @@
 #include <asm/mach/time.h>
 
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
 #include <linux/mfd/mc13xxx.h>
 
 #include "common.h"
@@ -145,15 +144,9 @@ static const struct imxi2c_platform_data vpr200_i2c0_data __initconst = {
        .bitrate = 50000,
 };
 
-static struct at24_platform_data vpr200_eeprom = {
-       .byte_len = 2048 / 8,
-       .page_size = 1,
-};
-
 static struct i2c_board_info vpr200_i2c_devices[] = {
        {
-               I2C_BOARD_INFO("at24", 0x50), /* E0=0, E1=0, E2=0 */
-               .platform_data = &vpr200_eeprom,
+               I2C_BOARD_INFO("24c02", 0x50), /* E0=0, E1=0, E2=0 */
        }, {
                I2C_BOARD_INFO("mc13892", 0x08),
                .platform_data = &vpr200_pmic,
index 6f012fefa1a231b5517981353ea2b892fd668863..328f670d10bd731b81e0a2bf3edecc819cfb3d26 100644 (file)
@@ -5,24 +5,29 @@
 
 /*
  * struct spi_imx_master - device.platform_data for SPI controller devices.
- * @chipselect: Array of chipselects for this master. Numbers >= 0 mean gpio
- *              pins, numbers < 0 mean internal CSPI chipselects according
- *              to MXC_SPI_CS(). Normally you want to use gpio based chip
- *              selects as the CSPI module tries to be intelligent about
- *              when to assert the chipselect: The CSPI module deasserts the
- *              chipselect once it runs out of input data. The other problem
- *              is that it is not possible to mix between high active and low
- *              active chipselects on one single bus using the internal
- *              chipselects. Unfortunately Freescale decided to put some
+ * @chipselect: Array of chipselects for this master or NULL.  Numbers >= 0
+ *              mean GPIO pins, -ENOENT means internal CSPI chipselect
+ *              matching the position in the array.  E.g., if chipselect[1] =
+ *              -ENOENT then a SPI slave using chip select 1 will use the
+ *              native SS1 line of the CSPI.  Omitting the array will use
+ *              all native chip selects.
+
+ *              Normally you want to use gpio based chip selects as the CSPI
+ *              module tries to be intelligent about when to assert the
+ *              chipselect:  The CSPI module deasserts the chipselect once it
+ *              runs out of input data.  The other problem is that it is not
+ *              possible to mix between high active and low active chipselects
+ *              on one single bus using the internal chipselects.
+ *              Unfortunately, on some SoCs, Freescale decided to put some
  *              chipselects on dedicated pins which are not usable as gpios,
  *              so we have to support the internal chipselects.
- * @num_chipselect: ARRAY_SIZE(chipselect)
+ *
+ * @num_chipselect: If @chipselect is specified, ARRAY_SIZE(chipselect),
+ *                  otherwise the number of native chip selects.
  */
 struct spi_imx_master {
        int     *chipselect;
        int     num_chipselect;
 };
 
-#define MXC_SPI_CS(no) ((no) - 32)
-
 #endif /* __MACH_SPI_H_*/