linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: srinivas.kandagatla@linaro.org (Srinivas Kandagatla)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 1/3] eeprom: Add a simple EEPROM framework
Date: Sat, 21 Feb 2015 11:31:49 +0000	[thread overview]
Message-ID: <54E86CA5.2080907@linaro.org> (raw)
In-Reply-To: <CAL_Jsq+mvpRjYfL_8OseTDCB-6aBhwhNKLBQXXJeVQLDwWm8Nw@mail.gmail.com>



On 20/02/15 22:01, Rob Herring wrote:
> On Fri, Feb 20, 2015 at 1:25 PM, Srinivas Kandagatla
> <srinivas.kandagatla@linaro.org> wrote:
>>
>>
>> On 20/02/15 17:21, Rob Herring wrote:
>>>
>>> On Thu, Feb 19, 2015 at 11:08 AM, Srinivas Kandagatla
>>> <srinivas.kandagatla@linaro.org> wrote:
>>>>
>>>> From: Maxime Ripard <maxime.ripard@free-electrons.com>
>>>>
>>>> Up until now, EEPROM drivers were stored in drivers/misc, where they all
>>>> had to
>>>> duplicate pretty much the same code to register a sysfs file, allow
>>>> in-kernel
>>>> users to access the content of the devices they were driving, etc.
>>>>
>>>> This was also a problem as far as other in-kernel users were involved,
>>>> since
>>>> the solutions used were pretty much different from on driver to another,
>>>> there
>>>> was a rather big abstraction leak.
>>>>
>>>> This introduction of this framework aims at solving this. It also
>>>> introduces DT
>>>> representation for consumer devices to go get the data they require (MAC
>>>> Addresses, SoC/Revision ID, part numbers, and so on) from the EEPROMs.
>>>>
>>>> Having regmap interface to this framework would give much better
>>>> abstraction for eeproms on different buses.
>>>>
>>>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>>>> [srinivas.kandagatla: Moved to regmap based and cleanedup apis]
>>>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>>>> ---
>>>>    .../devicetree/bindings/eeprom/eeprom.txt          |  48 ++++
>>>>    drivers/Kconfig                                    |   2 +
>>>>    drivers/Makefile                                   |   1 +
>>>>    drivers/eeprom/Kconfig                             |  19 ++
>>>>    drivers/eeprom/Makefile                            |   9 +
>>>>    drivers/eeprom/core.c                              | 290
>>>> +++++++++++++++++++++
>>>>    include/linux/eeprom-consumer.h                    |  73 ++++++
>>>>    include/linux/eeprom-provider.h                    |  51 ++++
>>>
>>>
>>> Who is going to be the maintainer for this?
>>
>>
>> Am happy to be one.
>
> So please add a MAINTAINERS entry.
Yep, I will do that in next version.

>
> [...]
>
>>>> += Data consumers =
>>>> +
>>>> +Required properties:
>>>> +
>>>> +eeproms: List of phandle and data cell specifier triplet, one triplet
>>>> +        for each data cell the device might be interested in. The
>>>> +        triplet consists of the phandle to the eeprom provider, then
>>>> +        the offset in byte within that storage device, and the length
>>>> +        in byte of the data we care about.
>>>
>>>
>>> The problem with this is it assumes you know who the consumer is and
>>> that it is a DT node. For example, how would you describe a serial
>>> number?
>>
>> Correct me if I miss understood.
>> Is serial number any different?
>> Am hoping that the eeprom consumer would be aware of offset and size of
>> serial number in the eeprom
>>
>> Cant the consumer do:
>>
>> eeprom-consumer {
>>          eeproms = <&at24 0 4>;
>>          eeprom-names = "device-serial-number";
>
> Yes, but who is "eeprom-consumer"? DT nodes generally describe a h/w
> block, but it this case, the consumer depends on the OS, not the h/w.

Consumer could be any driver for the IP on the SOC, for example an 
ethernet driver which needs Mac Address from eeprom or an thermal sensor 
which requires cablibration values or an cpufreq driver which requires 
OPP settings. Am not sure who could be the consumer for serial number, I 
guess it should some soc specific driver.

> I'm not saying you can't describe where things are, but I don't think
> you should imply who is the consumer and doing so is unnecessarily
> complicated.
>
> Also, the layout of EEPROM is likely very much platform specific. Some
> could have a more complex structure perhaps with key ids and linked
> list structure.
I agree, the data layout is very specific to platform and could vary in 
complexity.
This simple framework is attempting to solve most common usecase where 
in the consumer drivers like thermal-sensor/network/cpufreq needs to 
read an location in the eeprom. Am sure we can find a way to accommodate 
the complex layout as well.
>
> I would do something more simple that is just a list of keys and their
> location like this:
>
> device-serial-number = <start size>;
> key1 = <start size>;
> key2 = <start size>;
>
There are pros and cons doing it as list of keys.

One reason for doing it as fixed properties("eeproms", "eemprom-names") 
is "consistency and familiarity" like interrupts, regs, dmas, clocks, 
pinctrl, reset, pwm have fixed property names, trying to get most 
subsystems to do it the same way makes it easier for people to write dts 
files.


--srini


> Rob
>

  reply	other threads:[~2015-02-21 11:31 UTC|newest]

Thread overview: 153+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-19 17:07 [RFC PATCH 0/3] Add simple EEPROM Framework via regmap Srinivas Kandagatla
2015-02-19 17:08 ` [RFC PATCH 1/3] eeprom: Add a simple EEPROM framework Srinivas Kandagatla
2015-02-19 18:12   ` Andrew Lunn
2015-02-20  8:27     ` Srinivas Kandagatla
2015-02-20  2:36   ` Stephen Boyd
2015-02-20  8:14     ` Srinivas Kandagatla
2015-02-20 10:24       ` Srinivas Kandagatla
2015-02-20 17:21   ` Rob Herring
2015-02-20 19:25     ` Srinivas Kandagatla
2015-02-20 22:01       ` Rob Herring
2015-02-21 11:31         ` Srinivas Kandagatla [this message]
2015-02-22 14:34           ` Maxime Ripard
2015-02-22 14:32         ` Maxime Ripard
2015-02-23  0:57           ` Rob Herring
2015-02-23 23:11             ` Stephen Boyd
2015-02-24  7:08               ` Srinivas Kandagatla
2015-02-24  9:21               ` Maxime Ripard
2015-02-25  1:30                 ` Stephen Boyd
2015-02-26  9:16                   ` Srinivas Kandagatla
2015-02-26 13:21                     ` Maxime Ripard
2015-02-26 14:56                       ` Srinivas Kandagatla
2015-02-26 13:18                   ` Maxime Ripard
2015-02-23  9:15         ` Sascha Hauer
2015-02-20 17:46   ` Russell King - ARM Linux
2015-02-20 19:00     ` Srinivas Kandagatla
2015-02-23 15:04   ` Mark Brown
2015-02-23 15:38     ` Srinivas Kandagatla
2015-02-19 17:08 ` [RFC PATCH 2/3] eeprom: sunxi: Move the SID driver to the eeprom framework Srinivas Kandagatla
2015-02-20 17:47   ` Russell King - ARM Linux
2015-02-19 17:08 ` [RFC PATCH 3/3] eeprom: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-02-20 17:48   ` Russell King - ARM Linux
2015-03-05  9:44 ` [PATCH v1 0/6] Add simple EEPROM Framework via regmap Srinivas Kandagatla
2015-03-05  9:45   ` [PATCH v1 1/6] eeprom: Add a simple EEPROM framework for eeprom providers Srinivas Kandagatla
2015-03-05 10:23     ` Paul Bolle
2015-03-05 10:35       ` Srinivas Kandagatla
2015-03-07 15:00     ` Mark Brown
2015-03-09  7:13       ` Srinivas Kandagatla
2015-03-05  9:45   ` [PATCH v1 2/6] eeprom: Add a simple EEPROM framework for eeprom consumers Srinivas Kandagatla
2015-03-05  9:46   ` [PATCH v1 3/6] eeprom: Add bindings for simple eeprom framework Srinivas Kandagatla
2015-03-05 20:11     ` Rob Herring
2015-03-05 22:34       ` Srinivas Kandagatla
2015-03-05  9:46   ` [PATCH v1 4/6] eeprom: sunxi: Move the SID driver to the " Srinivas Kandagatla
2015-03-05 10:15     ` Paul Bolle
2015-03-05 18:36       ` Maxime Ripard
2015-03-05  9:46   ` [PATCH v1 5/6] eeprom: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-03-05 10:02     ` Paul Bolle
2015-03-05 10:10       ` Srinivas Kandagatla
2015-03-05  9:46   ` [PATCH v1 6/6] eeprom: Add to MAINTAINERS for eeprom framework Srinivas Kandagatla
2015-03-13  9:49   ` [PATCH v2 0/7] Add simple EEPROM Framework via regmap Srinivas Kandagatla
2015-03-13  9:50     ` [PATCH v2 1/7] eeprom: Add a simple EEPROM framework for eeprom providers Srinivas Kandagatla
2015-03-23 21:09       ` Mark Brown
2015-03-23 22:05         ` Srinivas Kandagatla
2015-03-24  9:18           ` Srinivas Kandagatla
2015-03-24 17:23             ` Mark Brown
2015-03-24 18:34               ` Srinivas Kandagatla
2015-03-24 19:02                 ` Mark Brown
2015-03-24 19:26                   ` Srinivas Kandagatla
2015-03-24 20:55                     ` Mark Brown
2015-03-13  9:50     ` [PATCH v2 2/7] eeprom: Add a simple EEPROM framework for eeprom consumers Srinivas Kandagatla
2015-03-13  9:50     ` [PATCH v2 3/7] eeprom: Add bindings for simple eeprom framework Srinivas Kandagatla
2015-03-13  9:50     ` [PATCH v2 4/7] eeprom: sunxi: Move the SID driver to the " Srinivas Kandagatla
2015-03-13  9:50     ` [PATCH v2 5/7] eeprom: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-03-13  9:50     ` [PATCH v2 6/7] eeprom: qfprom: Add bindings for qfprom Srinivas Kandagatla
2015-03-13  9:51     ` [PATCH v2 7/7] eeprom: Add to MAINTAINERS for eeprom framework Srinivas Kandagatla
2015-03-24 22:28     ` [PATCH v3 0/9] Add simple EEPROM Framework via regmap Srinivas Kandagatla
2015-03-24 22:29       ` [PATCH v3 1/9] regmap: Introduce regmap_get_max_register Srinivas Kandagatla
2015-03-24 22:36         ` Mark Brown
2015-03-24 23:05           ` Srinivas Kandagatla
2015-03-24 23:23             ` Joe Perches
2015-03-24 22:30       ` [PATCH v3 2/9] regmap: Introduce regmap_get_reg_stride Srinivas Kandagatla
2015-03-24 22:37         ` Mark Brown
2015-03-24 23:07           ` Srinivas Kandagatla
2015-03-24 22:30       ` [PATCH v3 3/9] eeprom: Add a simple EEPROM framework for eeprom providers Srinivas Kandagatla
2015-03-24 22:53         ` Mark Brown
2015-03-26 16:23           ` Srinivas Kandagatla
2015-03-24 22:30       ` [PATCH v3 4/9] eeprom: Add a simple EEPROM framework for eeprom consumers Srinivas Kandagatla
2015-03-25  7:16         ` Sascha Hauer
2015-03-25 12:29           ` Srinivas Kandagatla
2015-03-24 22:30       ` [PATCH v3 5/9] eeprom: Add bindings for simple eeprom framework Srinivas Kandagatla
2015-03-25  7:10         ` Sascha Hauer
2015-03-25 16:40           ` Maxime Ripard
2015-03-24 22:30       ` [PATCH v3 6/9] eeprom: sunxi: Move the SID driver to the " Srinivas Kandagatla
2015-03-24 22:30       ` [PATCH v3 7/9] eeprom: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-03-24 22:31       ` [PATCH v3 8/9] eeprom: qfprom: Add bindings for qfprom Srinivas Kandagatla
2015-03-25  0:28         ` Bjorn Andersson
2015-03-24 22:31       ` [PATCH v3 9/9] eeprom: Add to MAINTAINERS for eeprom framework Srinivas Kandagatla
2015-03-30 21:54       ` [PATCH v4 00/10] Add simple EEPROM Framework via regmap Srinivas Kandagatla
2015-03-30 21:56         ` [PATCH v4 01/10] regmap: Introduce regmap_get_max_register Srinivas Kandagatla
2015-05-04 12:05           ` Mark Brown
2015-03-30 21:57         ` [PATCH v4 02/10] regmap: Introduce regmap_get_reg_stride Srinivas Kandagatla
2015-03-30 21:57         ` [PATCH v4 03/10] eeprom: Add a simple EEPROM framework for eeprom providers Srinivas Kandagatla
2015-03-30 21:57         ` [PATCH v4 04/10] eeprom: Add a simple EEPROM framework for eeprom consumers Srinivas Kandagatla
2015-04-07 18:45           ` Stephen Boyd
2015-04-07 20:09             ` Srinivas Kandagatla
2015-04-09 14:45               ` Stephen Boyd
2015-04-10 11:45                 ` Maxime Ripard
2015-05-05 11:46                 ` Srinivas Kandagatla
2015-05-08  5:23                   ` Sascha Hauer
2015-05-06 17:28           ` Mark Brown
2015-03-30 21:57         ` [PATCH v4 05/10] eeprom: Add bindings for simple eeprom framework Srinivas Kandagatla
2015-04-06 13:32           ` Matt Porter
2015-04-06 14:11             ` Rob Herring
2015-04-06 15:04               ` Matt Porter
2015-04-07 17:35                 ` Srinivas Kandagatla
2015-04-07 17:46                   ` Mark Brown
2015-04-07 18:03                     ` Srinivas Kandagatla
2015-04-07 19:46                       ` Matt Porter
2015-04-08  9:24                         ` Srinivas Kandagatla
2015-03-30 21:58         ` [PATCH v4 06/10] eeprom: Add simple eeprom-mmio consumer helper functions Srinivas Kandagatla
2015-03-30 21:58         ` [PATCH v4 07/10] eeprom: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-03-30 21:58         ` [PATCH v4 08/10] eeprom: qfprom: Add bindings for qfprom Srinivas Kandagatla
2015-03-30 21:58         ` [PATCH v4 09/10] eeprom: sunxi: Move the SID driver to the eeprom framework Srinivas Kandagatla
2015-03-30 21:58         ` [PATCH v4 10/10] eeprom: Add to MAINTAINERS for " Srinivas Kandagatla
2015-05-21 16:42         ` [PATCH v5 00/11] Add simple NVMEM Framework via regmap Srinivas Kandagatla
2015-05-21 16:42           ` [PATCH v5 01/11] regmap: Introduce regmap_get_max_register Srinivas Kandagatla
2015-05-22 11:18             ` Mark Brown
2015-05-21 16:42           ` [PATCH v5 02/11] regmap: Introduce regmap_get_reg_stride Srinivas Kandagatla
2015-05-22 11:19             ` Mark Brown
2015-05-21 16:43           ` [PATCH v5 03/11] nvmem: Add a simple NVMEM framework for nvmem providers Srinivas Kandagatla
2015-06-16 22:43             ` Stephen Boyd
2015-06-18 12:46               ` Srinivas Kandagatla
2015-06-24  0:24                 ` Stephen Boyd
2015-06-24 10:05                   ` Srinivas Kandagatla
2015-05-21 16:43           ` [PATCH v5 04/11] nvmem: Add a simple NVMEM framework for consumers Srinivas Kandagatla
2015-06-16 22:29             ` Stephen Boyd
2015-06-17  8:00               ` Sascha Hauer
2015-06-18 12:56               ` Srinivas Kandagatla
2015-05-21 16:43           ` [PATCH v5 05/11] nvmem: Add nvmem_device based consumer apis Srinivas Kandagatla
2015-06-16 22:49             ` Stephen Boyd
2015-06-18 12:57               ` Srinivas Kandagatla
2015-05-21 16:44           ` [PATCH v5 06/11] nvmem: Add bindings for simple nvmem framework Srinivas Kandagatla
2015-06-16 22:53             ` Stephen Boyd
2015-06-18 13:01               ` Srinivas Kandagatla
2015-06-19 10:36             ` maitysanchayan at gmail.com
2015-06-19 10:59               ` Srinivas Kandagatla
2015-05-21 16:44           ` [PATCH v5 07/11] nvmem: Add simple nvmem-mmio consumer helper functions Srinivas Kandagatla
2015-06-16 22:58             ` Stephen Boyd
2015-06-18 13:08               ` Srinivas Kandagatla
2015-05-21 16:44           ` [PATCH v5 08/11] nvmem: qfprom: Add Qualcomm QFPROM support Srinivas Kandagatla
2015-06-16 23:00             ` Stephen Boyd
2015-06-18 13:22               ` Srinivas Kandagatla
2015-05-21 16:44           ` [PATCH v5 09/11] nvmem: qfprom: Add bindings for qfprom Srinivas Kandagatla
2015-06-16 23:01             ` Stephen Boyd
2015-05-21 16:45           ` [PATCH v5 11/11] nvmem: Add to MAINTAINERS for nvmem framework Srinivas Kandagatla
2015-05-21 16:45           ` [PATCH v5 10/11] nvmem: sunxi: Move the SID driver to the " Srinivas Kandagatla
2015-06-16 23:04             ` Stephen Boyd
2015-06-18 13:09               ` Srinivas Kandagatla
2015-05-25 16:51           ` [PATCH v5 00/11] Add simple NVMEM Framework via regmap Pantelis Antoniou
2015-05-26  9:12             ` Srinivas Kandagatla
2015-05-26 17:54               ` Pantelis Antoniou
2015-05-29  1:20           ` Dan Williams
2015-05-29  7:09             ` Srinivas Kandagatla
2015-05-29 21:44               ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54E86CA5.2080907@linaro.org \
    --to=srinivas.kandagatla@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).