diff mbox series

[1/2] misc: i2c_eeprom: add support for microchip 24aa025e48

Message ID 20220429142212.233933-1-eugen.hristev@microchip.com
State Rejected
Delegated to: Eugen Hristev
Headers show
Series [1/2] misc: i2c_eeprom: add support for microchip 24aa025e48 | expand

Commit Message

Eugen Hristev April 29, 2022, 2:22 p.m. UTC
24aa025e48 is a variant of 24aa02e48 that has a page size of 16 bytes.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/misc/i2c_eeprom.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Heiko Schocher May 2, 2022, 4:30 a.m. UTC | #1
Hello Eugen,

On 29.04.22 16:22, Eugen Hristev wrote:
> 24aa025e48 is a variant of 24aa02e48 that has a page size of 16 bytes.
> 
> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> ---
>  drivers/misc/i2c_eeprom.c | 8 ++++++++
>  1 file changed, 8 insertions(+)

Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
Michael Walle May 2, 2022, 9:24 a.m. UTC | #2
> 24aa025e48 is a variant of 24aa02e48 that has a page size of 16 bytes.
> 
> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> ---
>  drivers/misc/i2c_eeprom.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
> index 89a450d0f8..265c1d0591 100644
> --- a/drivers/misc/i2c_eeprom.c
> +++ b/drivers/misc/i2c_eeprom.c
> @@ -176,6 +176,13 @@ static const struct i2c_eeprom_drv_data mc24aa02e48_data = {
>  	.offset_len = 1,
>  };
>  
> +static const struct i2c_eeprom_drv_data mc24aa025e48_data = {
> +	.size = 256,
> +	.pagesize = 16,
> +	.addr_offset_mask = 0,
> +	.offset_len = 1,
> +};
> +
>  static const struct i2c_eeprom_drv_data atmel24c01a_data = {
>  	.size = 128,
>  	.pagesize = 8,
> @@ -264,6 +271,7 @@ static const struct i2c_eeprom_drv_data atmel24c512_data = {
>  static const struct udevice_id i2c_eeprom_std_ids[] = {
>  	{ .compatible = "i2c-eeprom", (ulong)&eeprom_data },
>  	{ .compatible = "microchip,24aa02e48", (ulong)&mc24aa02e48_data },
> +	{ .compatible = "microchip,24aa025e48", (ulong)&mc24aa025e48_data },

As far as I can see, this is not a documented compatible string in the
device tree bindings, which means u-boot is diverting again from its linux
counterpart. (The same goes for the 24aa02e48).

-michael

>  	{ .compatible = "atmel,24c01", (ulong)&atmel24c01a_data },
>  	{ .compatible = "atmel,24c01a", (ulong)&atmel24c01a_data },
>  	{ .compatible = "atmel,24c02", (ulong)&atmel24c02_data },
Eugen Hristev May 10, 2022, 7:44 a.m. UTC | #3
On 5/2/22 12:24 PM, Michael Walle wrote:
>> 24aa025e48 is a variant of 24aa02e48 that has a page size of 16 bytes.
>>
>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>> ---
>>   drivers/misc/i2c_eeprom.c | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
>> index 89a450d0f8..265c1d0591 100644
>> --- a/drivers/misc/i2c_eeprom.c
>> +++ b/drivers/misc/i2c_eeprom.c
>> @@ -176,6 +176,13 @@ static const struct i2c_eeprom_drv_data mc24aa02e48_data = {
>>        .offset_len = 1,
>>   };
>>
>> +static const struct i2c_eeprom_drv_data mc24aa025e48_data = {
>> +     .size = 256,
>> +     .pagesize = 16,
>> +     .addr_offset_mask = 0,
>> +     .offset_len = 1,
>> +};
>> +
>>   static const struct i2c_eeprom_drv_data atmel24c01a_data = {
>>        .size = 128,
>>        .pagesize = 8,
>> @@ -264,6 +271,7 @@ static const struct i2c_eeprom_drv_data atmel24c512_data = {
>>   static const struct udevice_id i2c_eeprom_std_ids[] = {
>>        { .compatible = "i2c-eeprom", (ulong)&eeprom_data },
>>        { .compatible = "microchip,24aa02e48", (ulong)&mc24aa02e48_data },
>> +     { .compatible = "microchip,24aa025e48", (ulong)&mc24aa025e48_data },
> 
> As far as I can see, this is not a documented compatible string in the
> device tree bindings, which means u-boot is diverting again from its linux
> counterpart. (The same goes for the 24aa02e48).

Hello Michael,

I know. But I thought it was the best way rather than reusing one 
existing compatible and forcing the page size. I can do that if you feel 
it's better.

I have to check how Linux is handling this eeprom as it's using the 
at24c32 compatible which is incorrect. It may be that the at24c32 
compatible with additional properties makes the driver behaving as if 
it's a mc23aa025e48 . Which is not really right... (as the idea above)

Heiko, your thoughts ?

Eugen

> 
> -michael
> 
>>        { .compatible = "atmel,24c01", (ulong)&atmel24c01a_data },
>>        { .compatible = "atmel,24c01a", (ulong)&atmel24c01a_data },
>>        { .compatible = "atmel,24c02", (ulong)&atmel24c02_data },
Heiko Schocher May 10, 2022, 8:46 a.m. UTC | #4
Hello Eugen,

On 10.05.22 09:44, Eugen.Hristev@microchip.com wrote:
> On 5/2/22 12:24 PM, Michael Walle wrote:
>>> 24aa025e48 is a variant of 24aa02e48 that has a page size of 16 bytes.
>>>
>>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>>> ---
>>>   drivers/misc/i2c_eeprom.c | 8 ++++++++
>>>   1 file changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
>>> index 89a450d0f8..265c1d0591 100644
>>> --- a/drivers/misc/i2c_eeprom.c
>>> +++ b/drivers/misc/i2c_eeprom.c
>>> @@ -176,6 +176,13 @@ static const struct i2c_eeprom_drv_data mc24aa02e48_data = {
>>>        .offset_len = 1,
>>>   };
>>>
>>> +static const struct i2c_eeprom_drv_data mc24aa025e48_data = {
>>> +     .size = 256,
>>> +     .pagesize = 16,
>>> +     .addr_offset_mask = 0,
>>> +     .offset_len = 1,
>>> +};
>>> +
>>>   static const struct i2c_eeprom_drv_data atmel24c01a_data = {
>>>        .size = 128,
>>>        .pagesize = 8,
>>> @@ -264,6 +271,7 @@ static const struct i2c_eeprom_drv_data atmel24c512_data = {
>>>   static const struct udevice_id i2c_eeprom_std_ids[] = {
>>>        { .compatible = "i2c-eeprom", (ulong)&eeprom_data },
>>>        { .compatible = "microchip,24aa02e48", (ulong)&mc24aa02e48_data },
>>> +     { .compatible = "microchip,24aa025e48", (ulong)&mc24aa025e48_data },
>>
>> As far as I can see, this is not a documented compatible string in the
>> device tree bindings, which means u-boot is diverting again from its linux
>> counterpart. (The same goes for the 24aa02e48).
> 
> Hello Michael,
> 
> I know. But I thought it was the best way rather than reusing one 
> existing compatible and forcing the page size. I can do that if you feel 
> it's better.
> 
> I have to check how Linux is handling this eeprom as it's using the 
> at24c32 compatible which is incorrect. It may be that the at24c32 
> compatible with additional properties makes the driver behaving as if 
> it's a mc23aa025e48 . Which is not really right... (as the idea above)
> 
> Heiko, your thoughts ?

Best would be to find out, what linux do.

I think, you should have the same problem with linux?

So I think, best would be to introduce this 2 compatible strings also
in linux and add of course the correct settings for "24aa025e48".

bye,
Heiko
diff mbox series

Patch

diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
index 89a450d0f8..265c1d0591 100644
--- a/drivers/misc/i2c_eeprom.c
+++ b/drivers/misc/i2c_eeprom.c
@@ -176,6 +176,13 @@  static const struct i2c_eeprom_drv_data mc24aa02e48_data = {
 	.offset_len = 1,
 };
 
+static const struct i2c_eeprom_drv_data mc24aa025e48_data = {
+	.size = 256,
+	.pagesize = 16,
+	.addr_offset_mask = 0,
+	.offset_len = 1,
+};
+
 static const struct i2c_eeprom_drv_data atmel24c01a_data = {
 	.size = 128,
 	.pagesize = 8,
@@ -264,6 +271,7 @@  static const struct i2c_eeprom_drv_data atmel24c512_data = {
 static const struct udevice_id i2c_eeprom_std_ids[] = {
 	{ .compatible = "i2c-eeprom", (ulong)&eeprom_data },
 	{ .compatible = "microchip,24aa02e48", (ulong)&mc24aa02e48_data },
+	{ .compatible = "microchip,24aa025e48", (ulong)&mc24aa025e48_data },
 	{ .compatible = "atmel,24c01", (ulong)&atmel24c01a_data },
 	{ .compatible = "atmel,24c01a", (ulong)&atmel24c01a_data },
 	{ .compatible = "atmel,24c02", (ulong)&atmel24c02_data },