From: Steffen Trumtrar <s.trumtrar@pengutronix.de>
To: Robin Gong <b38343@freescale.com>
Cc: broonie@kernel.org, shawn.guo@linaro.org,
grant.likely@linaro.org, rob.herring@calxeda.com,
rob@landley.net, lgirdwood@gmail.com,
devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4] regulator: pfuze100: add pfuze100 regulator driver
Date: Wed, 24 Jul 2013 10:30:41 +0200 [thread overview]
Message-ID: <20130724083041.GC4332@pengutronix.de> (raw)
In-Reply-To: <1374398247-11384-1-git-send-email-b38343@freescale.com>
Hi!
I tested your patch and had to change two things to actually make it
work. See below...
On Sun, Jul 21, 2013 at 05:17:27PM +0800, Robin Gong wrote:
> Add pfuze100 regulator driver.
>
> Signed-off-by: Robin Gong <b38343@freescale.com>
(...)
> ---
> diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
> new file mode 100644
> index 0000000..fd259ef
> --- /dev/null
> +++ b/drivers/regulator/pfuze100-regulator.c
> @@ -0,0 +1,462 @@
(...)
> +static struct regulator_ops pfuze100_ldo_regulator_ops = {
> + .enable = regulator_enable_regmap,
> + .disable = regulator_disable_regmap,
> + .is_enabled = regulator_is_enabled_regmap,
> + .list_voltage = regulator_list_voltage_linear,
> + .set_voltage_sel = regulator_set_voltage_sel_regmap,
> + .get_voltage_sel = regulator_get_voltage_sel_regmap,
> +};
> +
> +static struct regulator_ops pfuze100_fixed_regulator_ops = {
> + .list_voltage = regulator_list_voltage_linear,
> +};
This needs:
diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
index 07d5a54..d0d67b4 100644
--- a/drivers/regulator/pfuze100-regulator.c
+++ b/drivers/regulator/pfuze100-regulator.c
@@ -133,6 +133,7 @@ static struct regulator_ops pfuze100_ldo_regulator_ops = {
static struct regulator_ops pfuze100_fixed_regulator_ops = {
.list_voltage = regulator_list_voltage_linear,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
};
static struct regulator_ops pfuze100_sw_regulator_ops = {
Otherwise the fixed_regulator VDDR isn't registered and the driver then unloads
completely. This is at least the case for v3.10. I haven't had the chance to test
it on v3.11-rcX. If the _regulator_do_set_voltage logic changes, then scratch this.
> +
> +static struct regulator_ops pfuze100_sw_regulator_ops = {
> + .list_voltage = regulator_list_voltage_linear,
> + .set_voltage_sel = regulator_set_voltage_sel_regmap,
> + .get_voltage_sel = regulator_get_voltage_sel_regmap,
> + .set_voltage_time_sel = regulator_set_voltage_time_sel,
> + .set_ramp_delay = pfuze100_set_ramp_delay,
> +};
> +
> +static struct regulator_ops pfuze100_swb_regulator_ops = {
> + .list_voltage = regulator_list_voltage_table,
> + .set_voltage_sel = regulator_set_voltage_sel_regmap,
> + .get_voltage_sel = regulator_get_voltage_sel_regmap,
> +
> +};
> +
> +#define PFUZE100_FIXED_REG(_name, base, voltage) \
> +{ \
> + [PFUZE100_ ## _name] = { \
> + .desc = { \
> + .name = #_name, \
> + .n_voltages = 1, \
> + .ops = &pfuze100_fixed_regulator_ops, \
> + .type = REGULATOR_VOLTAGE, \
> + .id = PFUZE100_ ## _name, \
> + .owner = THIS_MODULE, \
> + .min_uV = (voltage), \
> + .enable_reg = (base), \
> + .enable_mask = 0x10, \
> + }, \
> + } \
> +}
> +
With this and the following defines I had to remove the first and last
curly braces. It didn't compile with them. I'm not that into the preprocessor,
to fully understand if it is valid C syntax or not.
Other drivers (e.g. mc13xxx) seem to also ommit these.
> +#define PFUZE100_SW_REG(_name, base, min, max, step) \
> +{ \
> + [PFUZE100_ ## _name] = { \
> + .desc = { \
> + .name = #_name,\
> + .n_voltages = ((max) - (min)) / (step) + 1, \
> + .ops = &pfuze100_sw_regulator_ops, \
> + .type = REGULATOR_VOLTAGE, \
> + .id = PFUZE100_ ## _name, \
> + .owner = THIS_MODULE, \
> + .min_uV = (min), \
> + .uV_step = (step), \
> + .vsel_reg = (base) + PFUZE100_VOL_OFFSET, \
> + .vsel_mask = 0x3f, \
> + }, \
> + .stby_reg = (base) + PFUZE100_STANDBY_OFFSET, \
> + .stby_mask = 0x3f, \
> + } \
> +}
> +
> +#define PFUZE100_SWB_REG(_name, base, mask, voltages) \
> +{ \
> + [PFUZE100_ ## _name] = { \
> + .desc = { \
> + .name = #_name, \
> + .n_voltages = ARRAY_SIZE(voltages), \
> + .ops = &pfuze100_swb_regulator_ops, \
> + .type = REGULATOR_VOLTAGE, \
> + .id = PFUZE100_ ## _name, \
> + .owner = THIS_MODULE, \
> + .volt_table = voltages, \
> + .vsel_reg = (base), \
> + .vsel_mask = (mask), \
> + }, \
> + } \
> +}
> +
> +#define PFUZE100_VGEN_REG(_name, base, min, max, step) \
> +{ \
> + [PFUZE100_ ## _name] = { \
> + .desc = { \
> + .name = #_name, \
> + .n_voltages = ((max) - (min)) / (step) + 1, \
> + .ops = &pfuze100_ldo_regulator_ops, \
> + .type = REGULATOR_VOLTAGE, \
> + .id = PFUZE100_ ## _name, \
> + .owner = THIS_MODULE, \
> + .min_uV = (min), \
> + .uV_step = (step), \
> + .vsel_reg = (base), \
> + .vsel_mask = 0xf, \
> + .enable_reg = (base), \
> + .enable_mask = 0x10, \
> + }, \
> + .stby_reg = (base), \
> + .stby_mask = 0x20, \
> + } \
> +}
> +
Thanks,
Steffen
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2013-07-24 8:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-21 9:17 [PATCH v4] regulator: pfuze100: add pfuze100 regulator driver Robin Gong
2013-07-21 9:17 ` Robin Gong
2013-07-22 9:11 ` Shawn Guo
2013-07-22 9:11 ` Shawn Guo
2013-07-22 10:39 ` Robin Gong
2013-07-22 10:39 ` Robin Gong
2013-07-22 12:46 ` Shawn Guo
2013-07-22 12:46 ` Shawn Guo
2013-07-24 8:30 ` Steffen Trumtrar [this message]
2013-07-24 9:42 ` Mark Brown
2013-07-24 9:51 ` Steffen Trumtrar
2013-07-24 14:39 ` Mark Brown
2013-07-24 10:07 ` Robin Gong
2013-07-24 10:07 ` Robin Gong
2013-07-24 10:18 ` Steffen Trumtrar
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=20130724083041.GC4332@pengutronix.de \
--to=s.trumtrar@pengutronix.de \
--cc=b38343@freescale.com \
--cc=broonie@kernel.org \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rob.herring@calxeda.com \
--cc=rob@landley.net \
--cc=shawn.guo@linaro.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.