From: Nishad Kamdar <nishadkamdar@gmail.com>
To: Johan Hovold <johan@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Alex Elder <elder@kernel.org>,
Rui Miguel Silva <rmfrfs@gmail.com>,
greybus-dev@lists.linaro.org, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org,
Nishad Kamdar <nishadkamdar@gmail.com>
Subject: Re: [PATCH v3 3/3] staging: greybus: arche-platform: Switch to the gpio descriptor interface
Date: Sat, 22 Dec 2018 20:12:52 +0530 [thread overview]
Message-ID: <20181222144251.GC15439@nishad> (raw)
In-Reply-To: <20181218115056.GO20658@localhost>
On Tue, Dec 18, 2018 at 12:50:56PM +0100, Johan Hovold wrote:
> On Thu, Nov 22, 2018 at 10:39:24PM +0530, Nishad Kamdar wrote:
> > Use the gpiod interface instead of the deprecated
> > old non-descriptor interface.
> >
> > Signed-off-by: Nishad Kamdar <nishadkamdar@gmail.com>
> > ---
> > Changes in v2:
> > - Move comment to the same line as to what it applies to.
> > ---
> > drivers/staging/greybus/arche-platform.c | 119 ++++++++---------------
> > 1 file changed, 41 insertions(+), 78 deletions(-)
> >
> > diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c
> > index 4c36e88766e7..a5cea79d8e32 100644
> > --- a/drivers/staging/greybus/arche-platform.c
> > +++ b/drivers/staging/greybus/arche-platform.c
> > @@ -8,10 +8,9 @@
> >
> > #include <linux/clk.h>
> > #include <linux/delay.h>
> > -#include <linux/gpio.h>
> > +#include <linux/gpio/consumer.h>
> > #include <linux/init.h>
> > #include <linux/module.h>
> > -#include <linux/of_gpio.h>
> > #include <linux/of_platform.h>
> > #include <linux/pinctrl/consumer.h>
> > #include <linux/platform_device.h>
> > @@ -45,14 +44,14 @@ enum svc_wakedetect_state {
> >
> > struct arche_platform_drvdata {
> > /* Control GPIO signals to and from AP <=> SVC */
> > - int svc_reset_gpio;
> > + struct gpio_desc *svc_reset;
> > + struct gpio_desc *svc_sysboot;
>
> Why move sysboot? The flag below is about reset (but should eventually
> go away).
>
Ok, I'll restore its position.
> > bool is_reset_act_hi;
> > - int svc_sysboot_gpio;
> > - int wake_detect_gpio; /* bi-dir,maps to WAKE_MOD & WAKE_FRAME signals */
> > + struct gpio_desc *wake_detect; /* bi-dir,maps to WAKE_MOD & WAKE_FRAME signals */
> >
> > enum arche_platform_state state;
> >
> > - int svc_refclk_req;
> > + struct gpio_desc *svc_refclk_req;
> > struct clk *svc_ref_clk;
> >
> > struct pinctrl *pinctrl;
> > @@ -85,9 +84,9 @@ static void arche_platform_set_wake_detect_state(
> > arche_pdata->wake_detect_state = state;
> > }
> >
> > -static inline void svc_reset_onoff(unsigned int gpio, bool onoff)
> > +static inline void svc_reset_onoff(struct gpio_desc *gpio, bool onoff)
> > {
> > - gpio_set_value(gpio, onoff);
> > + gpiod_set_value(gpio, onoff);
> > }
> >
> > static int apb_cold_boot(struct device *dev, void *data)
> > @@ -116,7 +115,6 @@ static int apb_poweroff(struct device *dev, void *data)
> > static void arche_platform_wd_irq_en(struct arche_platform_drvdata *arche_pdata)
> > {
> > /* Enable interrupt here, to read event back from SVC */
> > - gpio_direction_input(arche_pdata->wake_detect_gpio);
> > enable_irq(arche_pdata->wake_detect_irq);
> > }
> >
> > @@ -160,7 +158,7 @@ static irqreturn_t arche_platform_wd_irq(int irq, void *devid)
> >
> > spin_lock_irqsave(&arche_pdata->wake_lock, flags);
> >
> > - if (gpio_get_value(arche_pdata->wake_detect_gpio)) {
> > + if (gpiod_get_value(arche_pdata->wake_detect)) {
> > /* wake/detect rising */
> >
> > /*
> > @@ -224,10 +222,10 @@ arche_platform_coldboot_seq(struct arche_platform_drvdata *arche_pdata)
> >
> > dev_info(arche_pdata->dev, "Booting from cold boot state\n");
> >
> > - svc_reset_onoff(arche_pdata->svc_reset_gpio,
> > + svc_reset_onoff(arche_pdata->svc_reset,
>
> No need to break line here.
>
Ok.
> > arche_pdata->is_reset_act_hi);
> >
> > - gpio_set_value(arche_pdata->svc_sysboot_gpio, 0);
> > + gpiod_set_value(arche_pdata->svc_sysboot, 0);
> > usleep_range(100, 200);
> >
> > ret = clk_prepare_enable(arche_pdata->svc_ref_clk);
> > @@ -238,7 +236,7 @@ arche_platform_coldboot_seq(struct arche_platform_drvdata *arche_pdata)
> > }
> >
> > /* bring SVC out of reset */
> > - svc_reset_onoff(arche_pdata->svc_reset_gpio,
> > + svc_reset_onoff(arche_pdata->svc_reset,
>
> Same here. Please check throughout.
>
Yes.
> > !arche_pdata->is_reset_act_hi);
> >
> > arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_ACTIVE);
> > @@ -259,10 +257,10 @@ arche_platform_fw_flashing_seq(struct arche_platform_drvdata *arche_pdata)
> >
> > dev_info(arche_pdata->dev, "Switching to FW flashing state\n");
> >
> > - svc_reset_onoff(arche_pdata->svc_reset_gpio,
> > + svc_reset_onoff(arche_pdata->svc_reset,
> > arche_pdata->is_reset_act_hi);
> >
> > - gpio_set_value(arche_pdata->svc_sysboot_gpio, 1);
> > + gpiod_set_value(arche_pdata->svc_sysboot, 1);
> >
> > usleep_range(100, 200);
> >
> > @@ -273,7 +271,7 @@ arche_platform_fw_flashing_seq(struct arche_platform_drvdata *arche_pdata)
> > return ret;
> > }
> >
> > - svc_reset_onoff(arche_pdata->svc_reset_gpio,
> > + svc_reset_onoff(arche_pdata->svc_reset,
> > !arche_pdata->is_reset_act_hi);
> >
> > arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_FW_FLASHING);
> > @@ -305,7 +303,7 @@ arche_platform_poweroff_seq(struct arche_platform_drvdata *arche_pdata)
> > clk_disable_unprepare(arche_pdata->svc_ref_clk);
> >
> > /* As part of exit, put APB back in reset state */
> > - svc_reset_onoff(arche_pdata->svc_reset_gpio,
> > + svc_reset_onoff(arche_pdata->svc_reset,
> > arche_pdata->is_reset_act_hi);
> >
> > arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF);
> > @@ -435,6 +433,7 @@ static int arche_platform_probe(struct platform_device *pdev)
> > struct device *dev = &pdev->dev;
> > struct device_node *np = dev->of_node;
> > int ret;
> > + unsigned int flags;
> >
> > arche_pdata = devm_kzalloc(&pdev->dev, sizeof(*arche_pdata),
> > GFP_KERNEL);
> > @@ -444,61 +443,33 @@ static int arche_platform_probe(struct platform_device *pdev)
> > /* setup svc reset gpio */
> > arche_pdata->is_reset_act_hi = of_property_read_bool(np,
> > "svc,reset-active-high");
>
> This should also go away eventually in favour of gpio flags in
> devicetree. Fine to keep for now, though.
>
Ok.
> > - arche_pdata->svc_reset_gpio = of_get_named_gpio(np,
> > - "svc,reset-gpio",
> > - 0);
> > - if (!gpio_is_valid(arche_pdata->svc_reset_gpio)) {
> > - dev_err(dev, "failed to get reset-gpio\n");
> > - return arche_pdata->svc_reset_gpio;
> > - }
> > - ret = devm_gpio_request(dev, arche_pdata->svc_reset_gpio, "svc-reset");
> > - if (ret) {
> > - dev_err(dev, "failed to request svc-reset gpio:%d\n", ret);
> > - return ret;
> > - }
> > - ret = gpio_direction_output(arche_pdata->svc_reset_gpio,
> > - arche_pdata->is_reset_act_hi);
> > - if (ret) {
> > - dev_err(dev, "failed to set svc-reset gpio dir:%d\n", ret);
> > + if (arche_pdata->is_reset_act_hi)
> > + flags = GPIOD_OUT_HIGH;
> > + else
> > + flags = GPIOD_OUT_LOW;
> > +
> > + arche_pdata->svc_reset = devm_gpiod_get(dev, "svc,reset-gpio", flags);
> > + if (IS_ERR(arche_pdata->svc_reset)) {
> > + ret = PTR_ERR(arche_pdata->svc_reset);
> > + dev_err(dev, "failed to request svc-reset GPIO:%d\n", ret);
> > return ret;
> > }
>
> Thanks,
> Johan
Thanks for the review.
Regards,
Nishad
prev parent reply other threads:[~2018-12-22 17:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-22 17:06 [PATCH v3 0/3] greybus: gpio: Switch to the gpio descriptor interface Nishad Kamdar
2018-11-22 17:07 ` [PATCH v3 1/3] staging: greybus: gpio: switch GPIO portions to use GPIOLIB_IRQCHIP Nishad Kamdar
2018-12-18 11:10 ` Johan Hovold
2018-12-22 14:39 ` Nishad Kamdar
2018-11-22 17:08 ` [PATCH v3 2/3] staging: greybus: arche-apb-ctrl.c: Switch to the gpio descriptor interface Nishad Kamdar
2018-12-18 11:35 ` Johan Hovold
2018-12-22 14:41 ` Nishad Kamdar
2018-11-22 17:09 ` [PATCH v3 3/3] staging: greybus: arche-platform: " Nishad Kamdar
2018-12-18 11:50 ` Johan Hovold
2018-12-22 14:42 ` Nishad Kamdar [this message]
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=20181222144251.GC15439@nishad \
--to=nishadkamdar@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=elder@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=greybus-dev@lists.linaro.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rmfrfs@gmail.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.