linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH 00/12] eeprom: at24: remove platform_data
@ 2019-01-08  9:15 Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 01/12] ARM: davinci: da850-evm: remove dead MTD code Bartosz Golaszewski
                   ` (12 more replies)
  0 siblings, 13 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

Hi Sekhar,

now that all dependencies are in and v5.0-rc1 is tagged, please consider
picking up the second batch of davinci-specific changes into your tree.
Once that's done, please provide me with an immutable branch for me to
apply the last patch to my at24 tree.

This is the second part of the effort to modernize the at24 driver and
remove the legacy platform data structure in favor of device properties.
It required getting rid of the at24 setup callback in favor of nvmem
lookups.

Re-tested with da850-evm and dm365-evm.

Bartosz Golaszewski (12):
  ARM: davinci: da850-evm: remove dead MTD code
  ARM: davinci: mityomapl138: don't read the MAC address from machine
    code
  ARM: davinci: dm365-evm: use device properties for at24 eeprom
  ARM: davinci: da830-evm: use device properties for at24 eeprom
  ARM: davinci: dm644x-evm: use device properties for at24 eeprom
  ARM: davinci: dm646x-evm: use device properties for at24 eeprom
  ARM: davinci: sffsdr: fix the at24 eeprom device name
  ARM: davinci: sffsdr: use device properties for at24 eeprom
  ARM: davinci: remove dead code related to MAC address reading
  ARM: davinci: mityomapl138: use nvmem notifiers
  ARM: davinci: mityomapl138: use device properties for at24 eeprom
  eeprom: at24: remove at24_platform_data

 MAINTAINERS                                |   1 -
 arch/arm/mach-davinci/board-da830-evm.c    |  13 +-
 arch/arm/mach-davinci/board-da850-evm.c    |  28 ----
 arch/arm/mach-davinci/board-dm365-evm.c    |  13 +-
 arch/arm/mach-davinci/board-dm644x-evm.c   |  13 +-
 arch/arm/mach-davinci/board-dm646x-evm.c   |  13 +-
 arch/arm/mach-davinci/board-mityomapl138.c |  38 ++---
 arch/arm/mach-davinci/board-sffsdr.c       |  13 +-
 arch/arm/mach-davinci/common.c             |  15 --
 drivers/misc/eeprom/at24.c                 | 162 ++++++++++-----------
 include/linux/davinci_emac.h               |   1 -
 include/linux/platform_data/at24.h         |  60 --------
 12 files changed, 122 insertions(+), 248 deletions(-)
 delete mode 100644 include/linux/platform_data/at24.h

-- 
2.19.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [RESEND PATCH 01/12] ARM: davinci: da850-evm: remove dead MTD code
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 02/12] ARM: davinci: mityomapl138: don't read the MAC address from machine code Bartosz Golaszewski
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We no longer need to register the MTD notifier to read the MAC address
as it's now being done in the emac driver.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/board-da850-evm.c | 28 -------------------------
 1 file changed, 28 deletions(-)

diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 6a29baf0a289..128dd7d8dff6 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -150,32 +150,6 @@ static struct spi_board_info da850evm_spi_info[] = {
 	},
 };
 
-#ifdef CONFIG_MTD
-static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
-{
-	char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
-	size_t retlen;
-
-	if (!strcmp(mtd->name, "MAC-Address")) {
-		mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
-		if (retlen == ETH_ALEN)
-			pr_info("Read MAC addr from SPI Flash: %pM\n",
-				mac_addr);
-	}
-}
-
-static struct mtd_notifier da850evm_spi_notifier = {
-	.add	= da850_evm_m25p80_notify_add,
-};
-
-static void da850_evm_setup_mac_addr(void)
-{
-	register_mtd_user(&da850evm_spi_notifier);
-}
-#else
-static void da850_evm_setup_mac_addr(void) { }
-#endif
-
 static struct mtd_partition da850_evm_norflash_partition[] = {
 	{
 		.name           = "bootloaders + env",
@@ -1494,8 +1468,6 @@ static __init void da850_evm_init(void)
 	if (ret)
 		pr_warn("%s: SATA registration failed: %d\n", __func__, ret);
 
-	da850_evm_setup_mac_addr();
-
 	ret = da8xx_register_rproc();
 	if (ret)
 		pr_warn("%s: dsp/rproc registration failed: %d\n",
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 02/12] ARM: davinci: mityomapl138: don't read the MAC address from machine code
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 01/12] ARM: davinci: da850-evm: remove dead MTD code Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 03/12] ARM: davinci: dm365-evm: use device properties for at24 eeprom Bartosz Golaszewski
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

This is now done by the emac driver using a registered nvmem cell.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/board-mityomapl138.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 8df16e81b69e..3286dc2457a5 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -121,7 +121,6 @@ static void read_factory_config(struct nvmem_device *nvmem, void *context)
 {
 	int ret;
 	const char *partnum = NULL;
-	struct davinci_soc_info *soc_info = &davinci_soc_info;
 
 	if (!IS_BUILTIN(CONFIG_NVMEM)) {
 		pr_warn("Factory Config not available without CONFIG_NVMEM\n");
@@ -147,13 +146,6 @@ static void read_factory_config(struct nvmem_device *nvmem, void *context)
 		goto bad_config;
 	}
 
-	pr_info("Found MAC = %pM\n", factory_config.mac);
-	if (is_valid_ether_addr(factory_config.mac))
-		memcpy(soc_info->emac_pdata->mac_addr,
-			factory_config.mac, ETH_ALEN);
-	else
-		pr_warn("Invalid MAC found in factory config block\n");
-
 	partnum = factory_config.partnum;
 	pr_info("Part Number = %s\n", partnum);
 
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 03/12] ARM: davinci: dm365-evm: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 01/12] ARM: davinci: da850-evm: remove dead MTD code Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 02/12] ARM: davinci: mityomapl138: don't read the MAC address from machine code Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 04/12] ARM: davinci: da830-evm: " Bartosz Golaszewski
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/arm/mach-davinci/board-dm365-evm.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index e3b0b701e395..f21dc8d3b28c 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -18,7 +18,7 @@
 #include <linux/i2c.h>
 #include <linux/io.h>
 #include <linux/clk.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/leds.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
@@ -225,18 +225,15 @@ static struct nvmem_cell_lookup davinci_nvmem_cell_lookup = {
 	.con_id		= "mac-address",
 };
 
-static struct at24_platform_data eeprom_info = {
-	.byte_len       = (256*1024) / 8,
-	.page_size      = 64,
-	.flags          = AT24_FLAG_ADDR16,
-	.setup          = davinci_get_mac_addr,
-	.context	= (void *)0x7f00,
+static const struct property_entry eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 64),
+	{ }
 };
 
 static struct i2c_board_info i2c_info[] = {
 	{
 		I2C_BOARD_INFO("24c256", 0x50),
-		.platform_data	= &eeprom_info,
+		.properties = eeprom_properties,
 	},
 	{
 		I2C_BOARD_INFO("tlv320aic3x", 0x18),
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 04/12] ARM: davinci: da830-evm: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (2 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 03/12] ARM: davinci: dm365-evm: use device properties for at24 eeprom Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 05/12] ARM: davinci: dm644x-evm: " Bartosz Golaszewski
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/arm/mach-davinci/board-da830-evm.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index e52ec1619b70..ddd871d8b44c 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -18,7 +18,7 @@
 #include <linux/platform_device.h>
 #include <linux/i2c.h>
 #include <linux/platform_data/pcf857x.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/spi/spi.h>
@@ -457,12 +457,9 @@ static struct nvmem_cell_lookup da830_evm_nvmem_cell_lookup = {
 	.con_id		= "mac-address",
 };
 
-static struct at24_platform_data da830_evm_i2c_eeprom_info = {
-	.byte_len	= SZ_256K / 8,
-	.page_size	= 64,
-	.flags		= AT24_FLAG_ADDR16,
-	.setup		= davinci_get_mac_addr,
-	.context	= (void *)0x7f00,
+static const struct property_entry da830_evm_i2c_eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 64),
+	{ }
 };
 
 static int __init da830_evm_ui_expander_setup(struct i2c_client *client,
@@ -496,7 +493,7 @@ static struct pcf857x_platform_data __initdata da830_evm_ui_expander_info = {
 static struct i2c_board_info __initdata da830_evm_i2c_devices[] = {
 	{
 		I2C_BOARD_INFO("24c256", 0x50),
-		.platform_data	= &da830_evm_i2c_eeprom_info,
+		.properties = da830_evm_i2c_eeprom_properties,
 	},
 	{
 		I2C_BOARD_INFO("tlv320aic3x", 0x18),
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 05/12] ARM: davinci: dm644x-evm: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (3 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 04/12] ARM: davinci: da830-evm: " Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 06/12] ARM: davinci: dm646x-evm: " Bartosz Golaszewski
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/arm/mach-davinci/board-dm644x-evm.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index e1428115067f..efe4e170e87d 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -16,8 +16,8 @@
 #include <linux/gpio/machine.h>
 #include <linux/i2c.h>
 #include <linux/platform_data/pcf857x.h>
-#include <linux/platform_data/at24.h>
 #include <linux/platform_data/gpio-davinci.h>
+#include <linux/property.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/rawnand.h>
 #include <linux/mtd/partitions.h>
@@ -532,12 +532,9 @@ static struct nvmem_cell_lookup dm644evm_nvmem_cell_lookup = {
 	.con_id		= "mac-address",
 };
 
-static struct at24_platform_data eeprom_info = {
-	.byte_len	= (256*1024) / 8,
-	.page_size	= 64,
-	.flags		= AT24_FLAG_ADDR16,
-	.setup          = davinci_get_mac_addr,
-	.context	= (void *)0x7f00,
+static const struct property_entry eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 64),
+	{ }
 };
 
 /*
@@ -647,7 +644,7 @@ static struct i2c_board_info __initdata i2c_info[] =  {
 	},
 	{
 		I2C_BOARD_INFO("24c256", 0x50),
-		.platform_data	= &eeprom_info,
+		.properties = eeprom_properties,
 	},
 	{
 		I2C_BOARD_INFO("tlv320aic33", 0x1b),
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 06/12] ARM: davinci: dm646x-evm: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (4 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 05/12] ARM: davinci: dm644x-evm: " Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 07/12] ARM: davinci: sffsdr: fix the at24 eeprom device name Bartosz Golaszewski
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/arm/mach-davinci/board-dm646x-evm.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 8d5be6dd2019..02b57face113 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -22,7 +22,7 @@
 #include <linux/gpio.h>
 #include <linux/platform_device.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/platform_data/pcf857x.h>
 #include <linux/platform_data/ti-aemif.h>
 
@@ -364,12 +364,9 @@ static struct nvmem_cell_lookup dm646x_evm_nvmem_cell_lookup = {
 	.con_id		= "mac-address",
 };
 
-static struct at24_platform_data eeprom_info = {
-	.byte_len       = (256*1024) / 8,
-	.page_size      = 64,
-	.flags          = AT24_FLAG_ADDR16,
-	.setup          = davinci_get_mac_addr,
-	.context	= (void *)0x7f00,
+static const struct property_entry eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 64),
+	{ }
 };
 #endif
 
@@ -440,7 +437,7 @@ static void evm_init_cpld(void)
 static struct i2c_board_info __initdata i2c_info[] =  {
 	{
 		I2C_BOARD_INFO("24c256", 0x50),
-		.platform_data  = &eeprom_info,
+		.properties  = eeprom_properties,
 	},
 	{
 		I2C_BOARD_INFO("pcf8574a", 0x38),
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 07/12] ARM: davinci: sffsdr: fix the at24 eeprom device name
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (5 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 06/12] ARM: davinci: dm646x-evm: " Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 08/12] ARM: davinci: sffsdr: use device properties for at24 eeprom Bartosz Golaszewski
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

The currently used 24lc64 i2c device name doesn't match against any
of the devices supported by the at24 driver. Change it to the closest
compatible chip.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/board-sffsdr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index 792bb84d5011..acd9778ffa07 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -100,7 +100,7 @@ static struct at24_platform_data eeprom_info = {
 
 static struct i2c_board_info __initdata i2c_info[] =  {
 	{
-		I2C_BOARD_INFO("24lc64", 0x50),
+		I2C_BOARD_INFO("24c64", 0x50),
 		.platform_data	= &eeprom_info,
 	},
 	/* Other I2C devices:
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 08/12] ARM: davinci: sffsdr: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (6 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 07/12] ARM: davinci: sffsdr: fix the at24 eeprom device name Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 09/12] ARM: davinci: remove dead code related to MAC address reading Bartosz Golaszewski
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/arm/mach-davinci/board-sffsdr.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index acd9778ffa07..ff14de1396c8 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -26,7 +26,7 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
+#include <linux/property.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/rawnand.h>
 #include <linux/mtd/partitions.h>
@@ -92,16 +92,15 @@ static struct platform_device davinci_sffsdr_nandflash_device = {
 	.resource	= davinci_sffsdr_nandflash_resource,
 };
 
-static struct at24_platform_data eeprom_info = {
-	.byte_len	= (64*1024) / 8,
-	.page_size	= 32,
-	.flags		= AT24_FLAG_ADDR16,
+static const struct property_entry eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 32),
+	{ }
 };
 
 static struct i2c_board_info __initdata i2c_info[] =  {
 	{
 		I2C_BOARD_INFO("24c64", 0x50),
-		.platform_data	= &eeprom_info,
+		.properties = eeprom_properties,
 	},
 	/* Other I2C devices:
 	 * MSP430,  addr 0x23 (not used)
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 09/12] ARM: davinci: remove dead code related to MAC address reading
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (7 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 08/12] ARM: davinci: sffsdr: use device properties for at24 eeprom Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 10/12] ARM: davinci: mityomapl138: use nvmem notifiers Bartosz Golaszewski
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

There are no more users of davinci_get_mac_addr(). Remove it.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/common.c | 15 ---------------
 include/linux/davinci_emac.h   |  1 -
 2 files changed, 16 deletions(-)

diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c
index e1d0f0d841ff..0c638fe15dcb 100644
--- a/arch/arm/mach-davinci/common.c
+++ b/arch/arm/mach-davinci/common.c
@@ -26,21 +26,6 @@ EXPORT_SYMBOL(davinci_soc_info);
 void __iomem *davinci_intc_base;
 int davinci_intc_type;
 
-void davinci_get_mac_addr(struct nvmem_device *nvmem, void *context)
-{
-	char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
-	off_t offset = (off_t)context;
-
-	if (!IS_BUILTIN(CONFIG_NVMEM)) {
-		pr_warn("Cannot read MAC addr from EEPROM without CONFIG_NVMEM\n");
-		return;
-	}
-
-	/* Read MAC addr from EEPROM */
-	if (nvmem_device_read(nvmem, offset, ETH_ALEN, mac_addr) == ETH_ALEN)
-		pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr);
-}
-
 static int __init davinci_init_id(struct davinci_soc_info *soc_info)
 {
 	int			i;
diff --git a/include/linux/davinci_emac.h b/include/linux/davinci_emac.h
index 05b97144d342..28e6cf1356da 100644
--- a/include/linux/davinci_emac.h
+++ b/include/linux/davinci_emac.h
@@ -46,5 +46,4 @@ enum {
 	EMAC_VERSION_2,	/* DM646x */
 };
 
-void davinci_get_mac_addr(struct nvmem_device *nvmem, void *context);
 #endif
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 10/12] ARM: davinci: mityomapl138: use nvmem notifiers
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (8 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 09/12] ARM: davinci: remove dead code related to MAC address reading Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 11/12] ARM: davinci: mityomapl138: use device properties for at24 eeprom Bartosz Golaszewski
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

Stop using the at24_platform_data setup callback in favor of nvmem
notifiers.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/board-mityomapl138.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 3286dc2457a5..ac1a1699d185 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -15,6 +15,8 @@
 #include <linux/console.h>
 #include <linux/platform_device.h>
 #include <linux/mtd/partitions.h>
+#include <linux/notifier.h>
+#include <linux/nvmem-consumer.h>
 #include <linux/nvmem-provider.h>
 #include <linux/regulator/machine.h>
 #include <linux/i2c.h>
@@ -117,10 +119,15 @@ static void mityomapl138_cpufreq_init(const char *partnum)
 static void mityomapl138_cpufreq_init(const char *partnum) { }
 #endif
 
-static void read_factory_config(struct nvmem_device *nvmem, void *context)
+static int read_factory_config(struct notifier_block *nb,
+			       unsigned long event, void *data)
 {
 	int ret;
 	const char *partnum = NULL;
+	struct nvmem_device *nvmem = data;
+
+	if (strcmp(nvmem_dev_name(nvmem), "1-00500") != 0)
+		return NOTIFY_DONE;
 
 	if (!IS_BUILTIN(CONFIG_NVMEM)) {
 		pr_warn("Factory Config not available without CONFIG_NVMEM\n");
@@ -152,8 +159,14 @@ static void read_factory_config(struct nvmem_device *nvmem, void *context)
 bad_config:
 	/* default maximum speed is valid for all platforms */
 	mityomapl138_cpufreq_init(partnum);
+
+	return NOTIFY_STOP;
 }
 
+static struct notifier_block mityomapl138_nvmem_notifier = {
+	.notifier_call = read_factory_config,
+};
+
 /*
  * We don't define a cell for factory config as it will be accessed from the
  * board file using the nvmem notifier chain.
@@ -183,8 +196,6 @@ static struct at24_platform_data mityomapl138_fd_chip = {
 	.byte_len	= 256,
 	.page_size	= 8,
 	.flags		= AT24_FLAG_READONLY | AT24_FLAG_IRUGO,
-	.setup		= read_factory_config,
-	.context	= NULL,
 };
 
 static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = {
@@ -561,6 +572,7 @@ static void __init mityomapl138_init(void)
 
 	davinci_serial_init(da8xx_serial_device);
 
+	nvmem_register_notifier(&mityomapl138_nvmem_notifier);
 	nvmem_add_cell_table(&mityomapl138_nvmem_cell_table);
 	nvmem_add_cell_lookups(&mityomapl138_nvmem_cell_lookup, 1);
 
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 11/12] ARM: davinci: mityomapl138: use device properties for at24 eeprom
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (9 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 10/12] ARM: davinci: mityomapl138: use nvmem notifiers Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-08  9:15 ` [RESEND PATCH 12/12] eeprom: at24: remove at24_platform_data Bartosz Golaszewski
  2019-01-10 14:13 ` [RESEND PATCH 00/12] eeprom: at24: remove platform_data Sekhar Nori
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We want to work towards phasing out the at24_platform_data structure.
There are few users and its contents can be represented using generic
device properties. Using device properties only will allow us to
significantly simplify the at24 configuration code.

Remove the at24_platform_data structure and replace it with an array
of property entries. Drop the byte_len/size property, as the model name
already implies the EEPROM's size.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/mach-davinci/board-mityomapl138.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index ac1a1699d185..a381b26328d8 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -14,13 +14,13 @@
 #include <linux/init.h>
 #include <linux/console.h>
 #include <linux/platform_device.h>
+#include <linux/property.h>
 #include <linux/mtd/partitions.h>
 #include <linux/notifier.h>
 #include <linux/nvmem-consumer.h>
 #include <linux/nvmem-provider.h>
 #include <linux/regulator/machine.h>
 #include <linux/i2c.h>
-#include <linux/platform_data/at24.h>
 #include <linux/etherdevice.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/flash.h>
@@ -192,10 +192,10 @@ static struct nvmem_cell_lookup mityomapl138_nvmem_cell_lookup = {
 	.con_id		= "mac-address",
 };
 
-static struct at24_platform_data mityomapl138_fd_chip = {
-	.byte_len	= 256,
-	.page_size	= 8,
-	.flags		= AT24_FLAG_READONLY | AT24_FLAG_IRUGO,
+static const struct property_entry mityomapl138_fd_chip_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 8),
+	PROPERTY_ENTRY_BOOL("read-only"),
+	{ }
 };
 
 static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = {
@@ -324,7 +324,7 @@ static struct i2c_board_info __initdata mityomap_tps65023_info[] = {
 	},
 	{
 		I2C_BOARD_INFO("24c02", 0x50),
-		.platform_data = &mityomapl138_fd_chip,
+		.properties = mityomapl138_fd_chip_properties,
 	},
 };
 
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [RESEND PATCH 12/12] eeprom: at24: remove at24_platform_data
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (10 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 11/12] ARM: davinci: mityomapl138: use device properties for at24 eeprom Bartosz Golaszewski
@ 2019-01-08  9:15 ` Bartosz Golaszewski
  2019-01-10 14:13 ` [RESEND PATCH 00/12] eeprom: at24: remove platform_data Sekhar Nori
  12 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-08  9:15 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

There are no more users of at24_platform_data. Remove the relevant
header and modify the driver code to not use it anymore.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 MAINTAINERS                        |   1 -
 drivers/misc/eeprom/at24.c         | 162 +++++++++++++----------------
 include/linux/platform_data/at24.h |  60 -----------
 3 files changed, 75 insertions(+), 148 deletions(-)
 delete mode 100644 include/linux/platform_data/at24.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 32d444476a90..767c1e0e5cf7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2503,7 +2503,6 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
 S:	Maintained
 F:	Documentation/devicetree/bindings/eeprom/at24.txt
 F:	drivers/misc/eeprom/at24.c
-F:	include/linux/platform_data/at24.h
 
 ATA OVER ETHERNET (AOE) DRIVER
 M:	"Ed L. Cashin" <ed.cashin@acm.org>
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index ddfcf4ade7bf..b806a403ca46 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -22,10 +22,24 @@
 #include <linux/i2c.h>
 #include <linux/nvmem-provider.h>
 #include <linux/regmap.h>
-#include <linux/platform_data/at24.h>
 #include <linux/pm_runtime.h>
 #include <linux/gpio/consumer.h>
 
+/* Address pointer is 16 bit. */
+#define AT24_FLAG_ADDR16	BIT(7)
+/* sysfs-entry will be read-only. */
+#define AT24_FLAG_READONLY	BIT(6)
+/* sysfs-entry will be world-readable. */
+#define AT24_FLAG_IRUGO		BIT(5)
+/* Take always 8 addresses (24c00). */
+#define AT24_FLAG_TAKE8ADDR	BIT(4)
+/* Factory-programmed serial number. */
+#define AT24_FLAG_SERIAL	BIT(3)
+/* Factory-programmed mac address. */
+#define AT24_FLAG_MAC		BIT(2)
+/* Does not auto-rollover reads to the next slave address. */
+#define AT24_FLAG_NO_RDROL	BIT(1)
+
 /*
  * I2C EEPROMs from most vendors are inexpensive and mostly interchangeable.
  * Differences between different vendor product lines (like Atmel AT24C or
@@ -107,10 +121,6 @@ module_param_named(write_timeout, at24_write_timeout, uint, 0);
 MODULE_PARM_DESC(at24_write_timeout, "Time (in ms) to try writes (default 25)");
 
 struct at24_chip_data {
-	/*
-	 * these fields mirror their equivalents in
-	 * struct at24_platform_data
-	 */
 	u32 byte_len;
 	u8 flags;
 };
@@ -471,63 +481,11 @@ static int at24_write(void *priv, unsigned int off, void *val, size_t count)
 	return 0;
 }
 
-static void at24_properties_to_pdata(struct device *dev,
-				     struct at24_platform_data *chip)
-{
-	int err;
-	u32 val;
-
-	if (device_property_present(dev, "read-only"))
-		chip->flags |= AT24_FLAG_READONLY;
-	if (device_property_present(dev, "no-read-rollover"))
-		chip->flags |= AT24_FLAG_NO_RDROL;
-
-	err = device_property_read_u32(dev, "address-width", &val);
-	if (!err) {
-		switch (val) {
-		case 8:
-			if (chip->flags & AT24_FLAG_ADDR16)
-				dev_warn(dev, "Override address width to be 8, while default is 16\n");
-			chip->flags &= ~AT24_FLAG_ADDR16;
-			break;
-		case 16:
-			chip->flags |= AT24_FLAG_ADDR16;
-			break;
-		default:
-			dev_warn(dev, "Bad \"address-width\" property: %u\n",
-				 val);
-		}
-	}
-
-	err = device_property_read_u32(dev, "size", &val);
-	if (!err)
-		chip->byte_len = val;
-
-	err = device_property_read_u32(dev, "pagesize", &val);
-	if (!err) {
-		chip->page_size = val;
-	} else {
-		/*
-		 * This is slow, but we can't know all eeproms, so we better
-		 * play safe. Specifying custom eeprom-types via platform_data
-		 * is recommended anyhow.
-		 */
-		chip->page_size = 1;
-	}
-}
-
-static int at24_get_pdata(struct device *dev, struct at24_platform_data *pdata)
+static const struct at24_chip_data *at24_get_chip_data(struct device *dev)
 {
 	struct device_node *of_node = dev->of_node;
 	const struct at24_chip_data *cdata;
 	const struct i2c_device_id *id;
-	struct at24_platform_data *pd;
-
-	pd = dev_get_platdata(dev);
-	if (pd) {
-		memcpy(pdata, pd, sizeof(*pdata));
-		return 0;
-	}
 
 	id = i2c_match_id(at24_ids, to_i2c_client(dev));
 
@@ -544,13 +502,9 @@ static int at24_get_pdata(struct device *dev, struct at24_platform_data *pdata)
 		cdata = acpi_device_get_match_data(dev);
 
 	if (!cdata)
-		return -ENODEV;
+		return ERR_PTR(-ENODEV);
 
-	pdata->byte_len = cdata->byte_len;
-	pdata->flags = cdata->flags;
-	at24_properties_to_pdata(dev, pdata);
-
-	return 0;
+	return cdata;
 }
 
 static void at24_remove_dummy_clients(struct at24_data *at24)
@@ -619,7 +573,8 @@ static int at24_probe(struct i2c_client *client)
 {
 	struct regmap_config regmap_config = { };
 	struct nvmem_config nvmem_config = { };
-	struct at24_platform_data pdata = { };
+	u32 byte_len, page_size, flags, addrw;
+	const struct at24_chip_data *cdata;
 	struct device *dev = &client->dev;
 	bool i2c_fn_i2c, i2c_fn_block;
 	unsigned int i, num_addresses;
@@ -634,35 +589,72 @@ static int at24_probe(struct i2c_client *client)
 	i2c_fn_block = i2c_check_functionality(client->adapter,
 					       I2C_FUNC_SMBUS_WRITE_I2C_BLOCK);
 
-	err = at24_get_pdata(dev, &pdata);
+	cdata = at24_get_chip_data(dev);
+	if (IS_ERR(cdata))
+		return PTR_ERR(cdata);
+
+	err = device_property_read_u32(dev, "pagesize", &page_size);
 	if (err)
-		return err;
+		/*
+		 * This is slow, but we can't know all eeproms, so we better
+		 * play safe. Specifying custom eeprom-types via platform_data
+		 * is recommended anyhow.
+		 */
+		page_size = 1;
+
+	flags = cdata->flags;
+	if (device_property_present(dev, "read-only"))
+		flags |= AT24_FLAG_READONLY;
+	if (device_property_present(dev, "no-read-rollover"))
+		flags |= AT24_FLAG_NO_RDROL;
+
+	err = device_property_read_u32(dev, "address-width", &addrw);
+	if (!err) {
+		switch (addrw) {
+		case 8:
+			if (flags & AT24_FLAG_ADDR16)
+				dev_warn(dev,
+					 "Override address width to be 8, while default is 16\n");
+			flags &= ~AT24_FLAG_ADDR16;
+			break;
+		case 16:
+			flags |= AT24_FLAG_ADDR16;
+			break;
+		default:
+			dev_warn(dev, "Bad \"address-width\" property: %u\n",
+				 addrw);
+		}
+	}
+
+	err = device_property_read_u32(dev, "size", &byte_len);
+	if (err)
+		byte_len = cdata->byte_len;
 
 	if (!i2c_fn_i2c && !i2c_fn_block)
-		pdata.page_size = 1;
+		page_size = 1;
 
-	if (!pdata.page_size) {
+	if (!page_size) {
 		dev_err(dev, "page_size must not be 0!\n");
 		return -EINVAL;
 	}
 
-	if (!is_power_of_2(pdata.page_size))
+	if (!is_power_of_2(page_size))
 		dev_warn(dev, "page_size looks suspicious (no power of 2)!\n");
 
-	if (pdata.flags & AT24_FLAG_TAKE8ADDR)
+	if (flags & AT24_FLAG_TAKE8ADDR)
 		num_addresses = 8;
 	else
-		num_addresses =	DIV_ROUND_UP(pdata.byte_len,
-			(pdata.flags & AT24_FLAG_ADDR16) ? 65536 : 256);
+		num_addresses =	DIV_ROUND_UP(byte_len,
+			(flags & AT24_FLAG_ADDR16) ? 65536 : 256);
 
-	if ((pdata.flags & AT24_FLAG_SERIAL) && (pdata.flags & AT24_FLAG_MAC)) {
+	if ((flags & AT24_FLAG_SERIAL) && (flags & AT24_FLAG_MAC)) {
 		dev_err(dev,
 			"invalid device data - cannot have both AT24_FLAG_SERIAL & AT24_FLAG_MAC.");
 		return -EINVAL;
 	}
 
 	regmap_config.val_bits = 8;
-	regmap_config.reg_bits = (pdata.flags & AT24_FLAG_ADDR16) ? 16 : 8;
+	regmap_config.reg_bits = (flags & AT24_FLAG_ADDR16) ? 16 : 8;
 	regmap_config.disable_locking = true;
 
 	regmap = devm_regmap_init_i2c(client, &regmap_config);
@@ -675,11 +667,11 @@ static int at24_probe(struct i2c_client *client)
 		return -ENOMEM;
 
 	mutex_init(&at24->lock);
-	at24->byte_len = pdata.byte_len;
-	at24->page_size = pdata.page_size;
-	at24->flags = pdata.flags;
+	at24->byte_len = byte_len;
+	at24->page_size = page_size;
+	at24->flags = flags;
 	at24->num_addresses = num_addresses;
-	at24->offset_adj = at24_get_offset_adj(pdata.flags, pdata.byte_len);
+	at24->offset_adj = at24_get_offset_adj(flags, byte_len);
 	at24->client[0].client = client;
 	at24->client[0].regmap = regmap;
 
@@ -687,10 +679,10 @@ static int at24_probe(struct i2c_client *client)
 	if (IS_ERR(at24->wp_gpio))
 		return PTR_ERR(at24->wp_gpio);
 
-	writable = !(pdata.flags & AT24_FLAG_READONLY);
+	writable = !(flags & AT24_FLAG_READONLY);
 	if (writable) {
 		at24->write_max = min_t(unsigned int,
-					pdata.page_size, at24_io_limit);
+					page_size, at24_io_limit);
 		if (!i2c_fn_i2c && at24->write_max > I2C_SMBUS_BLOCK_MAX)
 			at24->write_max = I2C_SMBUS_BLOCK_MAX;
 	}
@@ -733,7 +725,7 @@ static int at24_probe(struct i2c_client *client)
 	nvmem_config.priv = at24;
 	nvmem_config.stride = 1;
 	nvmem_config.word_size = 1;
-	nvmem_config.size = pdata.byte_len;
+	nvmem_config.size = byte_len;
 
 	at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
 	if (IS_ERR(at24->nvmem)) {
@@ -742,13 +734,9 @@ static int at24_probe(struct i2c_client *client)
 	}
 
 	dev_info(dev, "%u byte %s EEPROM, %s, %u bytes/write\n",
-		 pdata.byte_len, client->name,
+		 byte_len, client->name,
 		 writable ? "writable" : "read-only", at24->write_max);
 
-	/* export data to kernel code */
-	if (pdata.setup)
-		pdata.setup(at24->nvmem, pdata.context);
-
 	return 0;
 
 err_clients:
diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h
deleted file mode 100644
index 63507ff464ee..000000000000
--- a/include/linux/platform_data/at24.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * at24.h - platform_data for the at24 (generic eeprom) driver
- * (C) Copyright 2008 by Pengutronix
- * (C) Copyright 2012 by Wolfram Sang
- * same license as the driver
- */
-
-#ifndef _LINUX_AT24_H
-#define _LINUX_AT24_H
-
-#include <linux/types.h>
-#include <linux/nvmem-consumer.h>
-#include <linux/bitops.h>
-
-/**
- * struct at24_platform_data - data to set up at24 (generic eeprom) driver
- * @byte_len: size of eeprom in byte
- * @page_size: number of byte which can be written in one go
- * @flags: tunable options, check AT24_FLAG_* defines
- * @setup: an optional callback invoked after eeprom is probed; enables kernel
-	code to access eeprom via nvmem, see example
- * @context: optional parameter passed to setup()
- *
- * If you set up a custom eeprom type, please double-check the parameters.
- * Especially page_size needs extra care, as you risk data loss if your value
- * is bigger than what the chip actually supports!
- *
- * An example in pseudo code for a setup() callback:
- *
- * void get_mac_addr(struct nvmem_device *nvmem, void *context)
- * {
- *	u8 *mac_addr = ethernet_pdata->mac_addr;
- *	off_t offset = context;
- *
- *	// Read MAC addr from EEPROM
- *	if (nvmem_device_read(nvmem, offset, ETH_ALEN, mac_addr) == ETH_ALEN)
- *		pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr);
- * }
- *
- * This function pointer and context can now be set up in at24_platform_data.
- */
-
-struct at24_platform_data {
-	u32		byte_len;		/* size (sum of all addr) */
-	u16		page_size;		/* for writes */
-	u8		flags;
-#define AT24_FLAG_ADDR16	BIT(7)	/* address pointer is 16 bit */
-#define AT24_FLAG_READONLY	BIT(6)	/* sysfs-entry will be read-only */
-#define AT24_FLAG_IRUGO		BIT(5)	/* sysfs-entry will be world-readable */
-#define AT24_FLAG_TAKE8ADDR	BIT(4)	/* take always 8 addresses (24c00) */
-#define AT24_FLAG_SERIAL	BIT(3)	/* factory-programmed serial number */
-#define AT24_FLAG_MAC		BIT(2)	/* factory-programmed mac address */
-#define AT24_FLAG_NO_RDROL	BIT(1)	/* does not auto-rollover reads to */
-					/* the next slave address */
-
-	void		(*setup)(struct nvmem_device *nvmem, void *context);
-	void		*context;
-};
-
-#endif /* _LINUX_AT24_H */
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [RESEND PATCH 00/12] eeprom: at24: remove platform_data
  2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
                   ` (11 preceding siblings ...)
  2019-01-08  9:15 ` [RESEND PATCH 12/12] eeprom: at24: remove at24_platform_data Bartosz Golaszewski
@ 2019-01-10 14:13 ` Sekhar Nori
  2019-01-22 12:22   ` Greg Kroah-Hartman
  12 siblings, 1 reply; 16+ messages in thread
From: Sekhar Nori @ 2019-01-10 14:13 UTC (permalink / raw)
  To: Bartosz Golaszewski, Kevin Hilman, Arnd Bergmann, Greg Kroah-Hartman
  Cc: linux-kernel, linux-arm-kernel, linux-i2c, Bartosz Golaszewski

Hi Bartosz,

On 08/01/19 2:45 PM, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> Hi Sekhar,
> 
> now that all dependencies are in and v5.0-rc1 is tagged, please consider
> picking up the second batch of davinci-specific changes into your tree.
> Once that's done, please provide me with an immutable branch for me to
> apply the last patch to my at24 tree.

You can use branch v5.1/eeprom-for-bartosz in my tree for this (commit
e430685f4969).

> 
> This is the second part of the effort to modernize the at24 driver and
> remove the legacy platform data structure in favor of device properties.
> It required getting rid of the at24 setup callback in favor of nvmem
> lookups.
> 
> Re-tested with da850-evm and dm365-evm.

Applied patches 1-11 for v5.1

Thanks,
Sekhar

> 
> Bartosz Golaszewski (12):
>   ARM: davinci: da850-evm: remove dead MTD code
>   ARM: davinci: mityomapl138: don't read the MAC address from machine
>     code
>   ARM: davinci: dm365-evm: use device properties for at24 eeprom
>   ARM: davinci: da830-evm: use device properties for at24 eeprom
>   ARM: davinci: dm644x-evm: use device properties for at24 eeprom
>   ARM: davinci: dm646x-evm: use device properties for at24 eeprom
>   ARM: davinci: sffsdr: fix the at24 eeprom device name
>   ARM: davinci: sffsdr: use device properties for at24 eeprom
>   ARM: davinci: remove dead code related to MAC address reading
>   ARM: davinci: mityomapl138: use nvmem notifiers
>   ARM: davinci: mityomapl138: use device properties for at24 eeprom
>   eeprom: at24: remove at24_platform_data
> 
>  MAINTAINERS                                |   1 -
>  arch/arm/mach-davinci/board-da830-evm.c    |  13 +-
>  arch/arm/mach-davinci/board-da850-evm.c    |  28 ----
>  arch/arm/mach-davinci/board-dm365-evm.c    |  13 +-
>  arch/arm/mach-davinci/board-dm644x-evm.c   |  13 +-
>  arch/arm/mach-davinci/board-dm646x-evm.c   |  13 +-
>  arch/arm/mach-davinci/board-mityomapl138.c |  38 ++---
>  arch/arm/mach-davinci/board-sffsdr.c       |  13 +-
>  arch/arm/mach-davinci/common.c             |  15 --
>  drivers/misc/eeprom/at24.c                 | 162 ++++++++++-----------
>  include/linux/davinci_emac.h               |   1 -
>  include/linux/platform_data/at24.h         |  60 --------
>  12 files changed, 122 insertions(+), 248 deletions(-)
>  delete mode 100644 include/linux/platform_data/at24.h
> 
> -- 
> 2.19.1
> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RESEND PATCH 00/12] eeprom: at24: remove platform_data
  2019-01-10 14:13 ` [RESEND PATCH 00/12] eeprom: at24: remove platform_data Sekhar Nori
@ 2019-01-22 12:22   ` Greg Kroah-Hartman
  2019-01-27 12:26     ` Bartosz Golaszewski
  0 siblings, 1 reply; 16+ messages in thread
From: Greg Kroah-Hartman @ 2019-01-22 12:22 UTC (permalink / raw)
  To: Sekhar Nori
  Cc: Bartosz Golaszewski, Kevin Hilman, Arnd Bergmann, linux-kernel,
	linux-arm-kernel, linux-i2c, Bartosz Golaszewski

On Thu, Jan 10, 2019 at 07:43:47PM +0530, Sekhar Nori wrote:
> Hi Bartosz,
> 
> On 08/01/19 2:45 PM, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> > 
> > Hi Sekhar,
> > 
> > now that all dependencies are in and v5.0-rc1 is tagged, please consider
> > picking up the second batch of davinci-specific changes into your tree.
> > Once that's done, please provide me with an immutable branch for me to
> > apply the last patch to my at24 tree.
> 
> You can use branch v5.1/eeprom-for-bartosz in my tree for this (commit
> e430685f4969).
> 
> > 
> > This is the second part of the effort to modernize the at24 driver and
> > remove the legacy platform data structure in favor of device properties.
> > It required getting rid of the at24 setup callback in favor of nvmem
> > lookups.
> > 
> > Re-tested with da850-evm and dm365-evm.
> 
> Applied patches 1-11 for v5.1

Feel free to take patch 12 as well :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RESEND PATCH 00/12] eeprom: at24: remove platform_data
  2019-01-22 12:22   ` Greg Kroah-Hartman
@ 2019-01-27 12:26     ` Bartosz Golaszewski
  0 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2019-01-27 12:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Sekhar Nori, Bartosz Golaszewski, Kevin Hilman, Arnd Bergmann,
	LKML, arm-soc, linux-i2c

wt., 22 sty 2019 o 13:22 Greg Kroah-Hartman
<gregkh@linuxfoundation.org> napisał(a):
>
> On Thu, Jan 10, 2019 at 07:43:47PM +0530, Sekhar Nori wrote:
> > Hi Bartosz,
> >
> > On 08/01/19 2:45 PM, Bartosz Golaszewski wrote:
> > > From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> > >
> > > Hi Sekhar,
> > >
> > > now that all dependencies are in and v5.0-rc1 is tagged, please consider
> > > picking up the second batch of davinci-specific changes into your tree.
> > > Once that's done, please provide me with an immutable branch for me to
> > > apply the last patch to my at24 tree.
> >
> > You can use branch v5.1/eeprom-for-bartosz in my tree for this (commit
> > e430685f4969).
> >
> > >
> > > This is the second part of the effort to modernize the at24 driver and
> > > remove the legacy platform data structure in favor of device properties.
> > > It required getting rid of the at24 setup callback in favor of nvmem
> > > lookups.
> > >
> > > Re-tested with da850-evm and dm365-evm.
> >
> > Applied patches 1-11 for v5.1
>
> Feel free to take patch 12 as well :)

Hi Greg,

I took over the at24 driver from Wolfram Sang. I collect patches for
it in my branch and then send pull-requests to Wolfram directly. I've
applied this patch to my branch in case there's some more development
for at24 in this cycle. Sekhar provided me with an immutable branch
with the arch commits I merged in.

Best regards,
Bartosz Golaszewski

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2019-01-27 12:26 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-08  9:15 [RESEND PATCH 00/12] eeprom: at24: remove platform_data Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 01/12] ARM: davinci: da850-evm: remove dead MTD code Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 02/12] ARM: davinci: mityomapl138: don't read the MAC address from machine code Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 03/12] ARM: davinci: dm365-evm: use device properties for at24 eeprom Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 04/12] ARM: davinci: da830-evm: " Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 05/12] ARM: davinci: dm644x-evm: " Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 06/12] ARM: davinci: dm646x-evm: " Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 07/12] ARM: davinci: sffsdr: fix the at24 eeprom device name Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 08/12] ARM: davinci: sffsdr: use device properties for at24 eeprom Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 09/12] ARM: davinci: remove dead code related to MAC address reading Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 10/12] ARM: davinci: mityomapl138: use nvmem notifiers Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 11/12] ARM: davinci: mityomapl138: use device properties for at24 eeprom Bartosz Golaszewski
2019-01-08  9:15 ` [RESEND PATCH 12/12] eeprom: at24: remove at24_platform_data Bartosz Golaszewski
2019-01-10 14:13 ` [RESEND PATCH 00/12] eeprom: at24: remove platform_data Sekhar Nori
2019-01-22 12:22   ` Greg Kroah-Hartman
2019-01-27 12:26     ` Bartosz Golaszewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).