diff mbox

[RESEND] ARM: pxa: stargate2: use device properties for at24 eeprom

Message ID 20180404114706.15856-1-brgl@bgdev.pl (mailing list archive)
State New, archived
Headers show

Commit Message

Bartosz Golaszewski April 4, 2018, 11:47 a.m. UTC
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 <brgl@bgdev.pl>
---
NOTE: resending with correct e-mail address for Jonathan Cameron.

 arch/arm/mach-pxa/stargate2.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Jonathan Cameron April 4, 2018, 12:08 p.m. UTC | #1
On 4 April 2018 12:47:06 BST, Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>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 <brgl@bgdev.pl>
Looks sensible to me.

Acked-by: Jonathan Cameron <jonathan.cameron@huawei.com>

Will be a while before I can test but this looks safe enough..
>---
>NOTE: resending with correct e-mail address for Jonathan Cameron.
>
> arch/arm/mach-pxa/stargate2.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
>diff --git a/arch/arm/mach-pxa/stargate2.c
>b/arch/arm/mach-pxa/stargate2.c
>index df62bb23dbee..bbea5fa9a140 100644
>--- a/arch/arm/mach-pxa/stargate2.c
>+++ b/arch/arm/mach-pxa/stargate2.c
>@@ -27,11 +27,11 @@
> 
> #include <linux/platform_data/i2c-pxa.h>
> #include <linux/platform_data/pcf857x.h>
>-#include <linux/platform_data/at24.h>
> #include <linux/smc91x.h>
> #include <linux/gpio/machine.h>
> #include <linux/gpio.h>
> #include <linux/leds.h>
>+#include <linux/property.h>
> 
> #include <asm/types.h>
> #include <asm/setup.h>
>@@ -795,9 +795,9 @@ static struct pcf857x_platform_data
>platform_data_pcf857x = {
> 	.context = NULL,
> };
> 
>-static struct at24_platform_data pca9500_eeprom_pdata = {
>-	.byte_len = 256,
>-	.page_size = 4,
>+static const struct property_entry pca9500_eeprom_properties[] = {
>+	PROPERTY_ENTRY_U32("pagesize", 4),
>+	{ }
> };
> 
> /**
>@@ -935,7 +935,7 @@ static struct i2c_board_info __initdata
>stargate2_i2c_board_info[] = {
> 	}, {
> 		.type = "24c02",
> 		.addr = 0x57,
>-		.platform_data = &pca9500_eeprom_pdata,
>+		.properties = pca9500_eeprom_properties,
> 	}, {
> 		.type = "max1238",
> 		.addr = 0x35,
Robert Jarzmik April 4, 2018, 7:44 p.m. UTC | #2
Bartosz Golaszewski <brgl@bgdev.pl> writes:

> 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.
Hi Bartosz,

I'd like a little explanation for the last sentence. Are you implying that
ac24.c is using the "type" field, and if so could you point me to the correct
line, because I was under the impression a property called "size" is used for
byte_len value ... ?

Cheers.

--
Robert
Bartosz Golaszewski April 5, 2018, 8:32 a.m. UTC | #3
2018-04-04 21:44 GMT+02:00 Robert Jarzmik <robert.jarzmik@free.fr>:
> Bartosz Golaszewski <brgl@bgdev.pl> writes:
>
>> 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.
> Hi Bartosz,
>
> I'd like a little explanation for the last sentence. Are you implying that
> ac24.c is using the "type" field, and if so could you point me to the correct
> line, because I was under the impression a property called "size" is used for
> byte_len value ... ?
>

Yes, it does use the type field from i2c_board_info implicitly over
i2c-core. The type field is copied over to client->name and then is
matched against the i2c ID table from which we get the associated chip
data (unless the type is "at24") containing the size and flags.

Hope that helps.

Bartosz
Robert Jarzmik April 8, 2018, 9:03 a.m. UTC | #4
Bartosz Golaszewski <brgl@bgdev.pl> writes:

> 2018-04-04 21:44 GMT+02:00 Robert Jarzmik <robert.jarzmik@free.fr>:
>> Bartosz Golaszewski <brgl@bgdev.pl> writes:
> Yes, it does use the type field from i2c_board_info implicitly over
> i2c-core. The type field is copied over to client->name and then is
> matched against the i2c ID table from which we get the associated chip
> data (unless the type is "at24") containing the size and flags.

Ah yes, the "struct i2c_device_id at24_ids" part, I see.

Applied to pxa/for-next, thanks.
diff mbox

Patch

diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index df62bb23dbee..bbea5fa9a140 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -27,11 +27,11 @@ 
 
 #include <linux/platform_data/i2c-pxa.h>
 #include <linux/platform_data/pcf857x.h>
-#include <linux/platform_data/at24.h>
 #include <linux/smc91x.h>
 #include <linux/gpio/machine.h>
 #include <linux/gpio.h>
 #include <linux/leds.h>
+#include <linux/property.h>
 
 #include <asm/types.h>
 #include <asm/setup.h>
@@ -795,9 +795,9 @@  static struct pcf857x_platform_data platform_data_pcf857x = {
 	.context = NULL,
 };
 
-static struct at24_platform_data pca9500_eeprom_pdata = {
-	.byte_len = 256,
-	.page_size = 4,
+static const struct property_entry pca9500_eeprom_properties[] = {
+	PROPERTY_ENTRY_U32("pagesize", 4),
+	{ }
 };
 
 /**
@@ -935,7 +935,7 @@  static struct i2c_board_info __initdata stargate2_i2c_board_info[] = {
 	}, {
 		.type = "24c02",
 		.addr = 0x57,
-		.platform_data = &pca9500_eeprom_pdata,
+		.properties = pca9500_eeprom_properties,
 	}, {
 		.type = "max1238",
 		.addr = 0x35,