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: Tue, 7 Apr 2015 11:45:33 -0700 [thread overview]
Message-ID: <20150407184533.GA10278@codeaurora.org> (raw)
In-Reply-To: <1427752670-17219-1-git-send-email-srinivas.kandagatla@linaro.org>
On 03/30, Srinivas Kandagatla wrote:
> @@ -130,6 +138,37 @@ static struct class eeprom_class = {
> .dev_release = eeprom_release,
> };
>
> +static int of_eeprom_match(struct device *dev, const void *eeprom_np)
> +{
> + return dev->of_node == eeprom_np;
> +}
> +
> +static struct eeprom_device *of_eeprom_find(struct device_node *eeprom_np)
> +{
> + struct device *d;
> +
> + if (!eeprom_np)
> + return NULL;
> +
> + d = class_find_device(&eeprom_class, NULL, eeprom_np, of_eeprom_match);
> +
> + return d ? to_eeprom(d) : NULL;
> +}
> +
> +static int eeprom_match(struct device *dev, const void *data)
> +{
> + return !strcmp(dev_name(dev), (const char *)data);
Is this cast necessary?
> +}
> +
> +static struct eeprom_device *eeprom_find(const char *name)
> +{
> + struct device *d;
> +
> + d = class_find_device(&eeprom_class, NULL, (void *)name, eeprom_match);
Is this cast necessary?
> +
> + return d ? to_eeprom(d) : NULL;
> +}
> +
> /**
> * eeprom_register(): Register a eeprom device for given eeprom.
> * Also creates an binary entry in /sys/class/eeprom/name-id/eeprom
> +
> +/**
> + * eeprom_cell_get(): Get eeprom cell of device form a given eeprom name
s/form/from/
> + * and blocks.
> + *
> + * @ename: eeprom device name that needs to be looked-up.
> + * @blocks: eeprom blocks containing offset and length information.
> + * @nblocks: number of eeprom blocks.
> + *
> + * The return value will be an ERR_PTR() on error or a valid pointer
> + * to a struct eeprom_cell. The eeprom_cell will be freed by the
> + * eeprom_cell_put().
> + */
> +struct eeprom_cell *eeprom_cell_get(const char *ename,
> + struct eeprom_block *blocks, int nblocks)
> +{
> + return __eeprom_cell_get(NULL, ename, blocks, nblocks);
> +}
> +EXPORT_SYMBOL_GPL(eeprom_cell_get);
> +
> +/**
> + * of_eeprom_cell_get(): Get eeprom cell of device form a given index
s/form/from/
> + *
> + * @dev node: Device tree node that uses the eeprom cell
> + * @index: eeprom index in eeproms property.
> + *
> + * The return value will be an ERR_PTR() on error or a valid pointer
> + * to a struct eeprom_cell. The eeprom_cell will be freed by the
> + * eeprom_cell_put().
> + */
> +struct eeprom_cell *of_eeprom_cell_get(struct device_node *np, const char *name)
> +{
> + struct device_node *cell_np;
> +
> + cell_np = of_parse_phandle(np, name, 0);
> + if (!cell_np)
> + return ERR_PTR(-EINVAL);
> +
> + return __eeprom_cell_get(cell_np, NULL, NULL, 0);
> +}
> +EXPORT_SYMBOL_GPL(of_eeprom_cell_get);
> +
> diff --git a/include/linux/eeprom-consumer.h b/include/linux/eeprom-consumer.h
> new file mode 100644
> index 0000000..effa417
> --- /dev/null
> +++ b/include/linux/eeprom-consumer.h
> @@ -0,0 +1,61 @@
> +/*
> + * EEPROM framework consumer.
> + *
> + * Copyright (C) 2015 Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> + * Copyright (C) 2013 Maxime Ripard <maxime.ripard@free-electrons.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#ifndef _LINUX_EEPROM_CONSUMER_H
> +#define _LINUX_EEPROM_CONSUMER_H
> +
> +struct eeprom_cell;
> +
> +struct eeprom_block {
> + loff_t offset;
> + size_t count;
> +};
> +#if IS_ENABLED(CONFIG_EEPROM)
> +struct eeprom_cell *eeprom_cell_get(const char *ename,
> + struct eeprom_block *blocks, int nblocks);
> +void eeprom_cell_put(struct eeprom_cell *cell);
> +char *eeprom_cell_read(struct eeprom_cell *cell, ssize_t *len);
> +int eeprom_cell_write(struct eeprom_cell *cell, const char *buf, ssize_t len);
[...]
> +
> +#if IS_ENABLED(CONFIG_EEPROM) && IS_ENABLED(CONFIG_OF)
> +struct eeprom_cell *of_eeprom_cell_get(struct device_node *dev,
> + const char *property);
> +#else
> +static inline struct eeprom_cell *of_eeprom_cell_get(struct device_node *np,
> + const char *property)
> +{
> + return ERR_PTR(-ENOSYS);
> +}
> +#endif
> +#endif /* ifndef _LINUX_EEPROM_CONSUMER_H */
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.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2015-04-07 18: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 [this message]
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=20150407184533.GA10278@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).