linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 04/10] eeprom: Add a simple EEPROM framework for eeprom consumers
Date: Thu, 9 Apr 2015 07:45:22 -0700	[thread overview]
Message-ID: <20150409144522.GB9663@codeaurora.org> (raw)
In-Reply-To: <55243982.7020907@linaro.org>

On 04/07, Srinivas Kandagatla wrote:
> On 07/04/15 19:45, Stephen Boyd wrote:
> >On 03/30, Srinivas Kandagatla wrote:
> >
> >Do you have an overview of how to use these APIs? Maybe some
> >Documentation/ is in order? I'm mostly interested in how the
> >blocks array is supposed to work and how this hooks up to drivers
> >that are using DT.
> 
> Only doc ATM is function level kernel doc in c file.
> May be I can explain you for now and I will try to add some
> documentation with some usage examples in next version.

Thanks.

> 
> eeprom block array is just another way intended to get hold of
> eeprom content for non-DT providers/consumers, but DT
> consumers/providers can also use it. As of today SOC/mach level code
> could use it as well.
> 
> In eeprom_cell_get() case the lookup of provider is done based on
> provider name, this provider name is generally supplied by all the
> providers (both DT/non DT).
> 
> for example in qfprom case,
> provider is registered from DT with eeprom config containing a unique name:
> static struct eeprom_config econfig = {
> 	.name = "qfprom",
> 	.id = 0,
> };
> 
> In the consumer case, the tsens driver could do some like in non DT way:
> 
> 	struct eeprom_block blocks[4] ={
> 		{
> 		.offset = 0x404,
> 		.count = 0x4,
> 		},
> 		{
> 		.offset = 0x408,
> 		.count = 0x4,
> 		},
> 		{
> 		.offset = 0x40c,
> 		.count = 0x4,
> 		},
> 		{
> 		.offset = 0x410,
> 		.count = 0x4,
> 		},
> 	};
> 	calib_cell = eeprom_cell_get("qfprom0", blocks, 4);
> 
> 
> Or in DT way
> calib_cell  = of_eeprom_cell_get(np, "calib");
> 

Ok. I guess I was hoping for a more device centric approach like
we have for clks/regulators/etc. That way a driver doesn't need
to know it's using DT or not to figure out which API to call.
Also the global namespace is sort of worrying (qfprom0 part). How
do we know it's qfprom0? What if it's qfprom1 sometimes?

Also, how are we supposed to encode certain bits inside the
stream of bytes (blocks)? In some situations (e.g. the qcom CPR
stuff) we have quite a few fuse bits we need to read that are
packed into different bytes and may cross byte boundaries (i.e.
bits 6 to 10 of a 32-bit word). The current API looks to be byte
focused when I have bit based/non-byte aligned data.

My current feeling is that I don't want to use any of the block
stuff at all. I just want a simple byte-based API that allows me
to read a number of contiguous bytes from the fuses. Then I'll
need to shift that data down by a few bits and mask it with the
width of the data I want to read to extract the data needed.

The only thing after that where I have a problem is figuring out
which eeprom is present in the consumer driver. I think I may
need to open-code it and look at the phandle for the eeprom and
do a compatible check to figure out which bits I want to read.

The DT would be like this (note I left eeprom-cells/eeproms here
because that allows us to generically find eeproms used by a
device and find eeprom providers):

	qfprom: eeprom at 58000 {
		compatible = "qcom,qfprom-msm8916";
		reg = <0x58000 0x7000>;
		#eeprom-cells = <0>;
	};
	
	cpr at b018000 {
		compatible = "qcom,cpr";
		reg = <0xb018000 0x1000>;
		interrupts = <0 15 1>, <0 16 1>, <0 17 1>;
		eeproms = <&qfprom>;
		...
	};

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2015-04-09 14:45 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
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 [this message]
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=20150409144522.GB9663@codeaurora.org \
    --to=sboyd@codeaurora.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).