Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1677634 > unrolled thread

[RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

Started byClaudiu Beznea <claudiu.beznea@microchip.com>
First post2017-06-29 13:40 +0200
Last post2017-06-30 09:30 +0200
Articles 5 — 5 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses Claudiu Beznea <claudiu.beznea@microchip.com> - 2017-06-29 13:40 +0200
    Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Andy Shevchenko <andy.shevchenko@gmail.com> - 2017-06-29 14:00 +0200
      Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Ludovic Desroches <ludovic.desroches@microchip.com> - 2017-06-29 15:40 +0200
    Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses David Lechner <david@lechnology.com> - 2017-06-29 18:20 +0200
    Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Uwe Kleine-König          <u.kleine-koenig@pengutronix.de> - 2017-06-30 09:30 +0200

#1677634 — [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

FromClaudiu Beznea <claudiu.beznea@microchip.com>
Date2017-06-29 13:40 +0200
Subject[RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Message-ID<tXFXJ-6YG-33@gated-at.bofh.it>
Add support for reading from different offsets of EEPROM.
The offset is initialized via device tree. If nothing is
given as input the old value, 0x90, is used. In this way
the driver could be used as generic driver for different
vendor memories by only changing the reading offset via
device tree.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
 drivers/misc/eeprom/at24.c         | 5 ++++-
 include/linux/platform_data/at24.h | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 764ff5df..53c5fb8 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -365,7 +365,7 @@ static ssize_t at24_eeprom_read_mac(struct at24_data *at24, char *buf,
 	memset(msg, 0, sizeof(msg));
 	msg[0].addr = client->addr;
 	msg[0].buf = addrbuf;
-	addrbuf[0] = 0x90 + offset;
+	addrbuf[0] = at24->chip.offset + offset;
 	msg[0].len = 1;
 	msg[1].addr = client->addr;
 	msg[1].flags = I2C_M_RD;
@@ -581,6 +581,9 @@ static void at24_get_pdata(struct device *dev, struct at24_platform_data *chip)
 		 */
 		chip->page_size = 1;
 	}
+	err = device_property_read_u8(dev, "start-offset", &chip->offset);
+	if (err)
+		chip->offset = 0x90;
 }
 
 static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h
index 271a4e2..d55c454 100644
--- a/include/linux/platform_data/at24.h
+++ b/include/linux/platform_data/at24.h
@@ -50,6 +50,7 @@ struct at24_platform_data {
 #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 */
+	u8		offset;
 
 	void		(*setup)(struct nvmem_device *nvmem, void *context);
 	void		*context;
-- 
2.7.4

[toc] | [next] | [standalone]


#1677654 — Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2017-06-29 14:00 +0200
SubjectRe: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Message-ID<tXGh3-774-15@gated-at.bofh.it>
In reply to#1677634
On Thu, Jun 29, 2017 at 2:39 PM, Claudiu Beznea
<claudiu.beznea@microchip.com> wrote:
> Add support for reading from different offsets of EEPROM.
> The offset is initialized via device tree. If nothing is
> given as input the old value, 0x90, is used. In this way
> the driver could be used as generic driver for different
> vendor memories by only changing the reading offset via
> device tree.

> +       err = device_property_read_u8(dev, "start-offset", &chip->offset);

This property has to be documented.

Moreover, the name looks too broad (I checked current use of
"*-offset" type of properties and they either vendor specific, or data
type specific.

Taking above into consideration mac-offset sounds better to me.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1677754 — Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

FromLudovic Desroches <ludovic.desroches@microchip.com>
Date2017-06-29 15:40 +0200
SubjectRe: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Message-ID<tXHPP-8aI-13@gated-at.bofh.it>
In reply to#1677654
On Thu, Jun 29, 2017 at 02:56:03PM +0300, Andy Shevchenko wrote:
> On Thu, Jun 29, 2017 at 2:39 PM, Claudiu Beznea
> <claudiu.beznea@microchip.com> wrote:
> > Add support for reading from different offsets of EEPROM.
> > The offset is initialized via device tree. If nothing is
> > given as input the old value, 0x90, is used. In this way
> > the driver could be used as generic driver for different
> > vendor memories by only changing the reading offset via
> > device tree.
> 
> > +       err = device_property_read_u8(dev, "start-offset", &chip->offset);
> 
> This property has to be documented.
> 
> Moreover, the name looks too broad (I checked current use of
> "*-offset" type of properties and they either vendor specific, or data
> type specific.
> 
> Taking above into consideration mac-offset sounds better to me.

I agree, it sounds better to me too.

Regards

Ludovic

[toc] | [prev] | [next] | [standalone]


#1677908 — Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

FromDavid Lechner <david@lechnology.com>
Date2017-06-29 18:20 +0200
SubjectRe: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Message-ID<tXKkG-1nd-37@gated-at.bofh.it>
In reply to#1677634
On 06/29/2017 06:39 AM, Claudiu Beznea wrote:
> Add support for reading from different offsets of EEPROM.
> The offset is initialized via device tree. If nothing is
> given as input the old value, 0x90, is used. In this way
> the driver could be used as generic driver for different
> vendor memories by only changing the reading offset via
> device tree.
> 
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> ---
>   drivers/misc/eeprom/at24.c         | 5 ++++-
>   include/linux/platform_data/at24.h | 1 +
>   2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
> index 764ff5df..53c5fb8 100644
> --- a/drivers/misc/eeprom/at24.c
> +++ b/drivers/misc/eeprom/at24.c
> @@ -365,7 +365,7 @@ static ssize_t at24_eeprom_read_mac(struct at24_data *at24, char *buf,
>   	memset(msg, 0, sizeof(msg));
>   	msg[0].addr = client->addr;
>   	msg[0].buf = addrbuf;
> -	addrbuf[0] = 0x90 + offset;
> +	addrbuf[0] = at24->chip.offset + offset;
>   	msg[0].len = 1;
>   	msg[1].addr = client->addr;
>   	msg[1].flags = I2C_M_RD;
> @@ -581,6 +581,9 @@ static void at24_get_pdata(struct device *dev, struct at24_platform_data *chip)
>   		 */
>   		chip->page_size = 1;
>   	}
> +	err = device_property_read_u8(dev, "start-offset", &chip->offset);

Why use u8 here? I have an at24 EEPROM that uses 16-bit addressing where 
the MAC address is stored at 0x3F06. Seems like it would be better to 
just use u32, then you don't have to mess with /bits/ in the device tree 
binding.

> +	if (err)
> +		chip->offset = 0x90;
>   }
>   
>   static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
> diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h
> index 271a4e2..d55c454 100644
> --- a/include/linux/platform_data/at24.h
> +++ b/include/linux/platform_data/at24.h
> @@ -50,6 +50,7 @@ struct at24_platform_data {
>   #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 */
> +	u8		offset;
>   
>   	void		(*setup)(struct nvmem_device *nvmem, void *context);
>   	void		*context;
> 

[toc] | [prev] | [next] | [standalone]


#1678553 — Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

FromUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date2017-06-30 09:30 +0200
SubjectRe: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Message-ID<tXYxk-2tg-1@gated-at.bofh.it>
In reply to#1677634
Hallo,

On Thu, Jun 29, 2017 at 02:39:10PM +0300, Claudiu Beznea wrote:
> diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h
> index 271a4e2..d55c454 100644
> --- a/include/linux/platform_data/at24.h
> +++ b/include/linux/platform_data/at24.h
> @@ -50,6 +50,7 @@ struct at24_platform_data {
>  #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 */
> +	u8		offset;

Assuming you rename the property, please adapt the member name here
accordingly.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web