From: Srinivas KANDAGATLA <srinivas.kandagatla@st.com>
To: Mark Brown <broonie@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC] regmap: Add regmap_field APIs
Date: Wed, 05 Jun 2013 10:21:23 +0100 [thread overview]
Message-ID: <51AF0313.6000205@st.com> (raw)
In-Reply-To: <20130604210137.GV31367@sirena.org.uk>
On 04/06/13 22:01, Mark Brown wrote:
> On Tue, May 28, 2013 at 03:58:00PM +0100, Srinivas KANDAGATLA wrote:
>
>> +#define REGMAP_FIELD_INIT(regmap, reg, lsb, msb) { \
>> + .regmap = regmap, \
>> + .reg = reg, \
>> + .lsb = lsb, \
>> + .msb = msb, \
>> + }
>
> Having a macro for this is really odd since macros are generally only
> used at compile time but the regmap is only available at runtime and
> this...
>
Yes, I think the macro is bit over do.. I will remove it.
>> +static inline void regmap_field_init(struct regmap_field *field,
>> + struct regmap *regmap, unsigned int reg,
>> + unsigned int lsb, unsigned int msb)
>> +{
>> + field->regmap = regmap;
>> + field->reg = reg;
>> + field->lsb = lsb;
>> + field->msb = msb;
>> +}
>
> ...is a bit awkward since you can't use it with static data. I think
> either the read/write/modify APIs should be changed to take both the map
> and the field as arguments (with the field only containing the bitfield
> definitions) or the init function should be something that allocates a
> new, runtime only structure from static data.
I agree with you and I think init function should allocate and
initialize the regmap_field and return it, and the read/write apis will
take the field and value. This approach looks neat.
Is it ok if we rename the regmap_field_init function to
regmap_field_alloc, as it will make it obvious that its allocating
memory which should be freed?
I also thought we could add devm version of it as well.
With this change here is what the init/alloc function would look like:
static void _regmap_field_init(struct regmap_field *field,
struct regmap *regmap, unsigned int reg,
unsigned int lsb, unsigned int msb)
{
field->regmap = regmap;
field->reg = reg;
field->lsb = lsb;
field->msb = msb;
}
struct regmap_field *devm_regmap_field_alloc(struct device *dev,
struct regmap *regmap, unsigned int reg,
unsigned int lsb, unsigned int msb)
{
struct regmap_field *field = devm_kzalloc(dev,
sizeof(*field), GFP_KERNEL);
if (!field)
return ERR_PTR(-ENOMEM);
_regmap_field_init(field, regmap, reg, lsb, msb);
return field;
}
EXPORT_SYMBOL_GPL(devm_regmap_field_alloc);
struct regmap_field *regmap_field_alloc(struct regmap *regmap,
unsigned int reg, unsigned int lsb, unsigned int msb)
{
struct regmap_field *field = kzalloc(sizeof(*field), GFP_KERNEL);
if (!field)
return ERR_PTR(-ENOMEM);
_regmap_field_init(field, regmap, reg, lsb, msb);
return field;
}
EXPORT_SYMBOL_GPL(regmap_field_alloc);
In header file..
static void inline regmap_field_free(struct regmap_field *field)
{
kfree(field);
}
static void inline devm_regmap_field_free(struct device *dev, struct
regmap_field *field)
{
devm_kfree(dev, field);
}
Thanks,
srini
>
next prev parent reply other threads:[~2013-06-05 9:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-28 14:58 [RFC] regmap: Add regmap_field APIs Srinivas KANDAGATLA
2013-05-31 6:31 ` Srinivas KANDAGATLA
2013-06-01 18:38 ` Mark Brown
2013-06-04 21:01 ` Mark Brown
2013-06-05 9:21 ` Srinivas KANDAGATLA [this message]
2013-06-05 11:41 ` Mark Brown
2013-06-05 14:41 ` Srinivas KANDAGATLA
2013-06-05 15:59 ` Mark Brown
2013-06-09 16:00 ` Lars-Peter Clausen
2013-06-10 7:09 ` Srinivas KANDAGATLA
2013-06-10 9:15 ` Mark Brown
2013-06-10 10:27 ` Srinivas KANDAGATLA
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=51AF0313.6000205@st.com \
--to=srinivas.kandagatla@st.com \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.