Message ID | 1432021249-24183-1-git-send-email-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | Superseded |
Commit | 9590e69db93d72684f6f1ae7307e2cac7aa5bca8 |
Headers | show |
On Tue, May 19, 2015 at 9:40 AM, Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote: > Since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*() functions) > which appeared in v3.17-rc1, the gpiod_get* functions take an additional > parameter that allows to specify direction and initial value for output. > > Also there is a variant to find optional gpios that returns NULL if > there is no gpio instead of -ENOENT. > > Make use of both features to simplify the driver. > > This makes error checking more strict because errors like -ENOSYS ("no > gpio support compiled in") or -EPROBE_DEFER ("gpio not ready yet") are > handled correctly now. > > Furthermore this is one caller less that stops us making the flags > argument to gpiod_get*() mandatory. > > Fixes: a689554ba6ed ("drm/msm: Initial add DSI connector support") I'd recommend dropping this Fixes: > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 956b22492c9a..b3d8f4694bf2 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1353,34 +1353,19 @@ static int dsi_host_init_panel_gpios(struct msm_dsi_host *msm_host, { int ret; - msm_host->disp_en_gpio = devm_gpiod_get(panel_device, - "disp-enable"); + msm_host->disp_en_gpio = devm_gpiod_get_optional(panel_device, + "disp-enable", + GPIOD_OUT_LOW); if (IS_ERR(msm_host->disp_en_gpio)) { DBG("cannot get disp-enable-gpios %ld", PTR_ERR(msm_host->disp_en_gpio)); - msm_host->disp_en_gpio = NULL; - } - if (msm_host->disp_en_gpio) { - ret = gpiod_direction_output(msm_host->disp_en_gpio, 0); - if (ret) { - pr_err("cannot set dir to disp-en-gpios %d\n", ret); - return ret; - } + return PTR_ERR(msm_host->disp_en_gpio); } - msm_host->te_gpio = devm_gpiod_get(panel_device, "disp-te"); + msm_host->te_gpio = devm_gpiod_get(panel_device, "disp-te", GPIOD_IN); if (IS_ERR(msm_host->te_gpio)) { DBG("cannot get disp-te-gpios %ld", PTR_ERR(msm_host->te_gpio)); - msm_host->te_gpio = NULL; - } - - if (msm_host->te_gpio) { - ret = gpiod_direction_input(msm_host->te_gpio); - if (ret) { - pr_err("%s: cannot set dir to disp-te-gpios, %d\n", - __func__, ret); - return ret; - } + return PTR_ERR(msm_host->te_gpio); } return 0;
Since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*() functions) which appeared in v3.17-rc1, the gpiod_get* functions take an additional parameter that allows to specify direction and initial value for output. Also there is a variant to find optional gpios that returns NULL if there is no gpio instead of -ENOENT. Make use of both features to simplify the driver. This makes error checking more strict because errors like -ENOSYS ("no gpio support compiled in") or -EPROBE_DEFER ("gpio not ready yet") are handled correctly now. Furthermore this is one caller less that stops us making the flags argument to gpiod_get*() mandatory. Fixes: a689554ba6ed ("drm/msm: Initial add DSI connector support") Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/gpu/drm/msm/dsi/dsi_host.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-)