From: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
To: Mark Brown <broonie@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Mike Turquette <mturquette@linaro.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Alessandro Zummo <a.zummo@towertech.it>,
Kukjin Kim <kgene.kim@samsung.com>,
Doug Anderson <dianders@chromium.org>,
Olof Johansson <olof@lixom.net>,
Sjoerd Simons <sjoerd.simons@collabora.co.uk>,
Daniel Stone <daniels@collabora.com>,
Tomeu Vizoso <tomeu.vizoso@collabora.com>,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/5] regulator: Add driver for Maxim 77802 PMIC regulators
Date: Tue, 10 Jun 2014 01:29:17 +0200 [thread overview]
Message-ID: <5396434D.3020402@collabora.co.uk> (raw)
In-Reply-To: <20140609193849.GE5099@sirena.org.uk>
Hello Mark,
Thanks a lot for your feedback.
On 06/09/2014 09:38 PM, Mark Brown wrote:
> On Mon, Jun 09, 2014 at 11:37:47AM +0200, Javier Martinez Canillas wrote:
>
>> + case REGULATOR_MODE_STANDBY: /* switch off */
>> + if (id != MAX77802_LDO1 && id != MAX77802_LDO20 &&
>> + id != MAX77802_LDO21 && id != MAX77802_LDO3) {
>> + val = MAX77802_OPMODE_STANDBY;
>> + break;
>> + }
>> + /* no break */
>
> This sounds very broken...
>
The problem is that not all regulators supports the same operational modes. For
instance regulators LDO 1, 20, 21 and 3 does not support REGULATOR_MODE_STANDBY
so if the condition is not met a break is not needed since the default case is
to warn that the mode is not supported.
But I'll rework that logic on v2 to make it cleaner and have a break on each
case and don't rely on case cascading.
>> + /* OK if some GPIOs aren't defined */
>> + if (!gpio_is_valid(gpio))
>> + continue;
>> +
>> + /* If a GPIO is valid, we'd better be able to claim it */
>> + ret = devm_gpio_request_one(dev, gpio, GPIOF_OUT_INIT_HIGH,
>> + "max77802 selb");
>> + if (ret) {
>> + dev_err(dev, "can't claim gpio[%d]: %d\n", i, ret);
>> + return ret;
>> + }
>
> Can this use the GPIO descriptor API?
>
Ok, I'll use gpiod_request() on v2.
>> +static void max77802_copy_reg(struct device *dev, struct regmap *regmap,
>> + int from_reg, int to_reg)
>> +{
>> + int val;
>> + int ret;
>> +
>> + if (from_reg == to_reg)
>> + return;
>> +
>> + ret = regmap_read(regmap, from_reg, &val);
>> + if (!ret)
>> + ret = regmap_write(regmap, to_reg, val);
>> +
>> + if (ret)
>> + dev_warn(dev, "Copy err %d => %d (%d)\n",
>> + from_reg, to_reg, ret);
>> +}
>
> This doesn't look at all device specific, better implement it in generic
> code.
>
Ok, will do.
>> + if (pdata->num_regulators != MAX77802_MAX_REGULATORS) {
>> + dev_err(&pdev->dev,
>> + "Invalid initial data for regulator's initialiation: " \
>> + "expected %d, pdata/dt provided %d\n",
>> + MAX77802_MAX_REGULATORS,
>> + pdata->num_regulators);
>> + return -EINVAL;
>> + }
>
> Don't split log messages over multiple lines so people can find the log
> message in the kernel source with grep, though in any case checking for
> this is a bug - the driver should always be at least able to read the
> current state from the hardware.
>
Ok.
>> +static int __init max77802_pmic_init(void)
>> +{
>> + return platform_driver_register(&max77802_pmic_driver);
>> +}
>> +subsys_initcall(max77802_pmic_init);
>
> module_platform_driver().
>
Ok.
Best regards,
Javier
WARNING: multiple messages have this Message-ID (diff)
From: javier.martinez@collabora.co.uk (Javier Martinez Canillas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/5] regulator: Add driver for Maxim 77802 PMIC regulators
Date: Tue, 10 Jun 2014 01:29:17 +0200 [thread overview]
Message-ID: <5396434D.3020402@collabora.co.uk> (raw)
In-Reply-To: <20140609193849.GE5099@sirena.org.uk>
Hello Mark,
Thanks a lot for your feedback.
On 06/09/2014 09:38 PM, Mark Brown wrote:
> On Mon, Jun 09, 2014 at 11:37:47AM +0200, Javier Martinez Canillas wrote:
>
>> + case REGULATOR_MODE_STANDBY: /* switch off */
>> + if (id != MAX77802_LDO1 && id != MAX77802_LDO20 &&
>> + id != MAX77802_LDO21 && id != MAX77802_LDO3) {
>> + val = MAX77802_OPMODE_STANDBY;
>> + break;
>> + }
>> + /* no break */
>
> This sounds very broken...
>
The problem is that not all regulators supports the same operational modes. For
instance regulators LDO 1, 20, 21 and 3 does not support REGULATOR_MODE_STANDBY
so if the condition is not met a break is not needed since the default case is
to warn that the mode is not supported.
But I'll rework that logic on v2 to make it cleaner and have a break on each
case and don't rely on case cascading.
>> + /* OK if some GPIOs aren't defined */
>> + if (!gpio_is_valid(gpio))
>> + continue;
>> +
>> + /* If a GPIO is valid, we'd better be able to claim it */
>> + ret = devm_gpio_request_one(dev, gpio, GPIOF_OUT_INIT_HIGH,
>> + "max77802 selb");
>> + if (ret) {
>> + dev_err(dev, "can't claim gpio[%d]: %d\n", i, ret);
>> + return ret;
>> + }
>
> Can this use the GPIO descriptor API?
>
Ok, I'll use gpiod_request() on v2.
>> +static void max77802_copy_reg(struct device *dev, struct regmap *regmap,
>> + int from_reg, int to_reg)
>> +{
>> + int val;
>> + int ret;
>> +
>> + if (from_reg == to_reg)
>> + return;
>> +
>> + ret = regmap_read(regmap, from_reg, &val);
>> + if (!ret)
>> + ret = regmap_write(regmap, to_reg, val);
>> +
>> + if (ret)
>> + dev_warn(dev, "Copy err %d => %d (%d)\n",
>> + from_reg, to_reg, ret);
>> +}
>
> This doesn't look at all device specific, better implement it in generic
> code.
>
Ok, will do.
>> + if (pdata->num_regulators != MAX77802_MAX_REGULATORS) {
>> + dev_err(&pdev->dev,
>> + "Invalid initial data for regulator's initialiation: " \
>> + "expected %d, pdata/dt provided %d\n",
>> + MAX77802_MAX_REGULATORS,
>> + pdata->num_regulators);
>> + return -EINVAL;
>> + }
>
> Don't split log messages over multiple lines so people can find the log
> message in the kernel source with grep, though in any case checking for
> this is a bug - the driver should always be at least able to read the
> current state from the hardware.
>
Ok.
>> +static int __init max77802_pmic_init(void)
>> +{
>> + return platform_driver_register(&max77802_pmic_driver);
>> +}
>> +subsys_initcall(max77802_pmic_init);
>
> module_platform_driver().
>
Ok.
Best regards,
Javier
next prev parent reply other threads:[~2014-06-09 23:29 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-09 9:37 [PATCH 0/5] Add Maxim 77802 PMIC support Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-09 9:37 ` [PATCH 1/5] mfd: Add driver for Maxim 77802 Power Management IC Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-09 10:22 ` Krzysztof Kozlowski
2014-06-09 10:22 ` Krzysztof Kozlowski
2014-06-09 11:56 ` Mark Brown
2014-06-09 11:56 ` Mark Brown
2014-06-09 23:07 ` Javier Martinez Canillas
2014-06-09 23:07 ` Javier Martinez Canillas
2014-06-09 19:47 ` Mark Brown
2014-06-09 19:47 ` Mark Brown
2014-06-09 23:40 ` Javier Martinez Canillas
2014-06-09 23:40 ` Javier Martinez Canillas
2014-06-09 9:37 ` [PATCH 2/5] regulator: Add driver for Maxim 77802 PMIC regulators Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
[not found] ` <1402306670-17041-3-git-send-email-javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2014-06-09 19:38 ` Mark Brown
2014-06-09 19:38 ` Mark Brown
2014-06-09 19:38 ` Mark Brown
2014-06-09 23:29 ` Javier Martinez Canillas [this message]
2014-06-09 23:29 ` Javier Martinez Canillas
2014-06-10 10:53 ` Mark Brown
2014-06-10 10:53 ` Mark Brown
2014-06-09 9:37 ` [PATCH 3/5] clk: Add driver for Maxim 77802 PMIC clocks Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-16 8:44 ` Lee Jones
2014-06-16 8:44 ` Lee Jones
2014-06-16 8:54 ` Javier Martinez Canillas
2014-06-16 8:54 ` Javier Martinez Canillas
2014-06-09 9:37 ` [PATCH 4/5] rtc: Add driver for Maxim 77802 PMIC Real-Time-Clock Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-09 9:37 ` [PATCH 5/5] ARM: dts: Add max77802 device node for exynos5420-peach-pit Javier Martinez Canillas
2014-06-09 9:37 ` Javier Martinez Canillas
2014-06-09 10:16 ` [PATCH 0/5] Add Maxim 77802 PMIC support Krzysztof Kozlowski
2014-06-09 10:16 ` Krzysztof Kozlowski
2014-06-09 16:04 ` Doug Anderson
2014-06-09 16:04 ` Doug Anderson
2014-06-09 22:55 ` Javier Martinez Canillas
2014-06-09 22:55 ` Javier Martinez Canillas
2014-06-09 23:57 ` Doug Anderson
2014-06-09 23:57 ` Doug Anderson
2014-06-10 7:45 ` Krzysztof Kozlowski
2014-06-10 7:45 ` Krzysztof Kozlowski
2014-06-10 7:32 ` Krzysztof Kozlowski
2014-06-10 7:32 ` Krzysztof Kozlowski
2014-06-10 7:50 ` Javier Martinez Canillas
2014-06-10 7:50 ` Javier Martinez Canillas
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=5396434D.3020402@collabora.co.uk \
--to=javier.martinez@collabora.co.uk \
--cc=a.zummo@towertech.it \
--cc=broonie@kernel.org \
--cc=daniels@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=kgene.kim@samsung.com \
--cc=lee.jones@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=olof@lixom.net \
--cc=sameo@linux.intel.com \
--cc=sjoerd.simons@collabora.co.uk \
--cc=tomeu.vizoso@collabora.com \
/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.