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


Groups > linux.kernel > #1401346 > unrolled thread

Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree

Started byBoris Brezillon <boris.brezillon@free-electrons.com>
First post2016-05-16 10:00 +0200
Last post2016-05-16 19:20 +0200
Articles 4 — 2 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

  Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from  devicetree Boris Brezillon <boris.brezillon@free-electrons.com> - 2016-05-16 10:00 +0200
    Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from  devicetree Boris Brezillon <boris.brezillon@free-electrons.com> - 2016-05-16 10:10 +0200
      Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree Moritz Fischer <moritz.fischer@ettus.com> - 2016-05-16 18:40 +0200
        Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from  devicetree Boris Brezillon <boris.brezillon@free-electrons.com> - 2016-05-16 19:20 +0200

#1401346 — Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree

FromBoris Brezillon <boris.brezillon@free-electrons.com>
Date2016-05-16 10:00 +0200
SubjectRe: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree
Message-ID<rzlBv-4a7-21@gated-at.bofh.it>
Hi Moritz,

On Wed, 11 May 2016 10:47:39 -0700
Moritz Fischer <moritz.fischer@ettus.com> wrote:

> This allows for getting a struct mtd_info from a node pointer,
> allowing mtd devices to e.g. store serial numbers or MAC addresses.

Can you detail a bit what you'll do next. I guess you need to provide
this information to in-kernel users, and those users will just call
mtd_read() after retrieving the mtd_info pointer.

Here are a few questions (I'm assuming the netdev + MAC address case):
- how would you link the net/PHY device to the MTD partition storing
  the MAC address

> 
> Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
>  drivers/mtd/mtdcore.c   | 21 +++++++++++++++++++++
>  include/linux/mtd/mtd.h |  2 ++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index 3096251..3d0ae65 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -363,6 +363,27 @@ unsigned mtd_mmap_capabilities(struct mtd_info *mtd)
>  EXPORT_SYMBOL_GPL(mtd_mmap_capabilities);
>  #endif
>  
> +static int mtd_of_node_match(struct device *dev, const void *data)
> +{
> +	return dev->of_node == data;
> +}
> +
> +struct mtd_info *of_mtd_info_get(struct device_node *node)
> +{
> +	struct mtd_info *mtd;
> +	struct device *d;
> +	int ret = -ENODEV;
> +
> +	d = class_find_device(&mtd_class, NULL, node, mtd_of_node_match);
> +	if (!d)
> +		return ERR_PTR(-ENODEV);
> +
> +	mtd = container_of(d, struct mtd_info, dev);
> +
> +	return mtd;
> +}
> +EXPORT_SYMBOL_GPL(of_mtd_info_get);
> +
>  static int mtd_reboot_notifier(struct notifier_block *n, unsigned long state,
>  			       void *cmd)
>  {
> diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
> index 7712721..cce6cc7 100644
> --- a/include/linux/mtd/mtd.h
> +++ b/include/linux/mtd/mtd.h
> @@ -264,6 +264,8 @@ static inline struct device_node *mtd_get_of_node(struct mtd_info *mtd)
>  	return mtd->dev.of_node;
>  }
>  
> +struct mtd_info *of_mtd_info_get(struct device_node *node);
> +
>  static inline int mtd_oobavail(struct mtd_info *mtd, struct mtd_oob_ops *ops)
>  {
>  	return ops->mode == MTD_OPS_AUTO_OOB ? mtd->oobavail : mtd->oobsize;



-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

[toc] | [next] | [standalone]


#1401348

FromBoris Brezillon <boris.brezillon@free-electrons.com>
Date2016-05-16 10:10 +0200
Message-ID<rzlLb-4sk-3@gated-at.bofh.it>
In reply to#1401346
On Mon, 16 May 2016 09:55:34 +0200
Boris Brezillon <boris.brezillon@free-electrons.com> wrote:

> Hi Moritz,
> 
> On Wed, 11 May 2016 10:47:39 -0700
> Moritz Fischer <moritz.fischer@ettus.com> wrote:
> 
> > This allows for getting a struct mtd_info from a node pointer,
> > allowing mtd devices to e.g. store serial numbers or MAC addresses.  
> 
> Can you detail a bit what you'll do next. I guess you need to provide
> this information to in-kernel users, and those users will just call
> mtd_read() after retrieving the mtd_info pointer.
> 
> Here are a few questions (I'm assuming the netdev + MAC address case):
> - how would you link the net/PHY device to the MTD partition storing
>   the MAC address

Sorry, I sent it before asking all my questions :).

- it seems quite specific to MTD devices to me. What if the MAC address
  is stored in something that is not exposed as an MTD device. I wonder
  if we shouldn't add an nvmem wrapper around MTD devices.


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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


#1401615 — Re: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree

FromMoritz Fischer <moritz.fischer@ettus.com>
Date2016-05-16 18:40 +0200
SubjectRe: [PATCH] mtd: Adding of_mtd_info_get to get mtd_info from devicetree
Message-ID<rztIJ-X4-3@gated-at.bofh.it>
In reply to#1401348
Hi Boris,

On Mon, May 16, 2016 at 1:05 AM, Boris Brezillon
<boris.brezillon@free-electrons.com> wrote:

>> Here are a few questions (I'm assuming the netdev + MAC address case):
>> - how would you link the net/PHY device to the MTD partition storing
>>   the MAC address

Well in my case I actually planned to use it with the OTP partition of my QSPI
device using spi_nor_read_usr_prot_reg and friends and I just needed a way
to get to the struct mtd_info from a child of my network device.

Right now the OTP 'partitions' are not really exposed to device tree afaik.
Maybe that would be worthwhile to further look into? Maybe exposing
(wrapping) that as nvmem
would be the way to go?

> Sorry, I sent it before asking all my questions :).
;-) (as you can see from this email, you're not the only one that
fails at email today, forgot to CC list ...)

> - it seems quite specific to MTD devices to me. What if the MAC address
>   is stored in something that is not exposed as an MTD device. I wonder
>   if we shouldn't add an nvmem wrapper around MTD devices.

That looks certainly worthwhile investigating for the general case.

Cheers,

Moritz

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


#1401649

FromBoris Brezillon <boris.brezillon@free-electrons.com>
Date2016-05-16 19:20 +0200
Message-ID<rzulr-1pQ-3@gated-at.bofh.it>
In reply to#1401615
On Mon, 16 May 2016 09:30:10 -0700
Moritz Fischer <moritz.fischer@ettus.com> wrote:

> Hi Boris,
> 
> On Mon, May 16, 2016 at 1:05 AM, Boris Brezillon
> <boris.brezillon@free-electrons.com> wrote:
> 
> >> Here are a few questions (I'm assuming the netdev + MAC address case):
> >> - how would you link the net/PHY device to the MTD partition storing
> >>   the MAC address  
> 
> Well in my case I actually planned to use it with the OTP partition of my QSPI
> device using spi_nor_read_usr_prot_reg and friends and I just needed a way
> to get to the struct mtd_info from a child of my network device.
> 
> Right now the OTP 'partitions' are not really exposed to device tree afaik.
> Maybe that would be worthwhile to further look into? Maybe exposing
> (wrapping) that as nvmem
> would be the way to go?

I think so. Now that MTD partitions are defined in a 'partitions'
subnode (see MTD binding doc), we can define an 'otp-partitions'
subnode and define nvmem cells in there.


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web