From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D176C43603 for ; Sat, 7 Dec 2019 10:21:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1E00F24676 for ; Sat, 7 Dec 2019 10:21:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575714065; bh=na/ehcomn3JxTQ3kUPJyXWmELDLTDJdxJCVF33rmsrw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=juJOfkvSntdZ5HL0RvJUx08euoAoZHPyctq1XXCxs22KCviMkoFm+PoWHq9Mm1Erg dX/25ljSAywcXenXukQO5XmHdTgULkgO9SqW4OUC/9Y5MRJM9efTdANnNh+VdTOwTw +mCFKXXr/1mpKvZ6D82LL0olMZ989pw8+I4+NESE= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726025AbfLGKVE (ORCPT ); Sat, 7 Dec 2019 05:21:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:59598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725992AbfLGKVE (ORCPT ); Sat, 7 Dec 2019 05:21:04 -0500 Received: from archlinux (cpc149474-cmbg20-2-0-cust94.5-4.cable.virginm.net [82.4.196.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BDDB2217BA; Sat, 7 Dec 2019 10:21:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575714062; bh=na/ehcomn3JxTQ3kUPJyXWmELDLTDJdxJCVF33rmsrw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=kGtO0NQAf046r+i197eTcivYZgSTYaWkojN4+KfmIoJlZwM9SUJ9IjvQ7sprikZtX dJAMemhyIsPfelyGugPorcvpRvZOwC1l4FQh5tFFqPHQOG2KDGd1ZQf9iz8J0jJ/89 Xl44J944FNwNRcLXpNaITU+t9m3GPg1zDRXNCNcM= Date: Sat, 7 Dec 2019 10:20:57 +0000 From: Jonathan Cameron To: Linus Walleij Cc: linux-iio@vger.kernel.org, Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Karol Wrona Subject: Re: [PATCH] iio: ssp_sensors: Convert to use GPIO descriptors Message-ID: <20191207102057.30010f1b@archlinux> In-Reply-To: <20191202085350.77149-1-linus.walleij@linaro.org> References: <20191202085350.77149-1-linus.walleij@linaro.org> X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org On Mon, 2 Dec 2019 09:53:50 +0100 Linus Walleij wrote: > These three GPIO lines used by the Samsung sensor hub is pretty > straight-forward to convert to use GPIO descriptors. > > Cc: Karol Wrona > Signed-off-by: Linus Walleij This one looks very straight forward, so I've applied it. However, if anyone else has time to take a look that would be great. Thanks, Jonathan > --- > drivers/iio/common/ssp_sensors/ssp.h | 14 ++++++------ > drivers/iio/common/ssp_sensors/ssp_dev.c | 29 ++++++++---------------- > drivers/iio/common/ssp_sensors/ssp_spi.c | 8 +++---- > 3 files changed, 20 insertions(+), 31 deletions(-) > > diff --git a/drivers/iio/common/ssp_sensors/ssp.h b/drivers/iio/common/ssp_sensors/ssp.h > index 0a381bb1ae6f..abb832795619 100644 > --- a/drivers/iio/common/ssp_sensors/ssp.h > +++ b/drivers/iio/common/ssp_sensors/ssp.h > @@ -7,7 +7,7 @@ > #define __SSP_SENSORHUB_H__ > > #include > -#include > +#include > #include > #include > #include > @@ -168,9 +168,9 @@ struct ssp_sensorhub_info { > * @fw_dl_state: firmware download state > * @comm_lock: lock protecting the handshake > * @pending_lock: lock protecting pending list and completion > - * @mcu_reset_gpio: mcu reset line > - * @ap_mcu_gpio: ap to mcu gpio line > - * @mcu_ap_gpio: mcu to ap gpio line > + * @mcu_reset_gpiod: mcu reset line > + * @ap_mcu_gpiod: ap to mcu gpio line > + * @mcu_ap_gpiod: mcu to ap gpio line > * @pending_list: pending list for messages queued to be sent/read > * @sensor_devs: registered IIO devices table > * @enable_refcount: enable reference count for wdt (watchdog timer) > @@ -212,9 +212,9 @@ struct ssp_data { > struct mutex comm_lock; > struct mutex pending_lock; > > - int mcu_reset_gpio; > - int ap_mcu_gpio; > - int mcu_ap_gpio; > + struct gpio_desc *mcu_reset_gpiod; > + struct gpio_desc *ap_mcu_gpiod; > + struct gpio_desc *mcu_ap_gpiod; > > struct list_head pending_list; > > diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c b/drivers/iio/common/ssp_sensors/ssp_dev.c > index 9c70553994c6..a94dbcf491ce 100644 > --- a/drivers/iio/common/ssp_sensors/ssp_dev.c > +++ b/drivers/iio/common/ssp_sensors/ssp_dev.c > @@ -9,7 +9,6 @@ > #include > #include > #include > -#include > #include > #include "ssp.h" > > @@ -61,9 +60,9 @@ static const struct mfd_cell sensorhub_sensor_devs[] = { > > static void ssp_toggle_mcu_reset_gpio(struct ssp_data *data) > { > - gpio_set_value(data->mcu_reset_gpio, 0); > + gpiod_set_value(data->mcu_reset_gpiod, 0); > usleep_range(1000, 1200); > - gpio_set_value(data->mcu_reset_gpio, 1); > + gpiod_set_value(data->mcu_reset_gpiod, 1); > msleep(50); > } > > @@ -441,7 +440,6 @@ MODULE_DEVICE_TABLE(of, ssp_of_match); > > static struct ssp_data *ssp_parse_dt(struct device *dev) > { > - int ret; > struct ssp_data *data; > struct device_node *node = dev->of_node; > const struct of_device_id *match; > @@ -450,26 +448,17 @@ static struct ssp_data *ssp_parse_dt(struct device *dev) > if (!data) > return NULL; > > - data->mcu_ap_gpio = of_get_named_gpio(node, "mcu-ap-gpios", 0); > - if (data->mcu_ap_gpio < 0) > - return NULL; > - > - data->ap_mcu_gpio = of_get_named_gpio(node, "ap-mcu-gpios", 0); > - if (data->ap_mcu_gpio < 0) > - return NULL; > - > - data->mcu_reset_gpio = of_get_named_gpio(node, "mcu-reset-gpios", 0); > - if (data->mcu_reset_gpio < 0) > + data->mcu_ap_gpiod = devm_gpiod_get(dev, "mcu-ap", GPIOD_IN); > + if (IS_ERR(data->mcu_ap_gpiod)) > return NULL; > > - ret = devm_gpio_request_one(dev, data->ap_mcu_gpio, GPIOF_OUT_INIT_HIGH, > - "ap-mcu-gpios"); > - if (ret) > + data->ap_mcu_gpiod = devm_gpiod_get(dev, "ap-mcu", GPIOD_OUT_HIGH); > + if (IS_ERR(data->ap_mcu_gpiod)) > return NULL; > > - ret = devm_gpio_request_one(dev, data->mcu_reset_gpio, > - GPIOF_OUT_INIT_HIGH, "mcu-reset-gpios"); > - if (ret) > + data->mcu_reset_gpiod = devm_gpiod_get(dev, "mcu-reset", > + GPIOD_OUT_HIGH); > + if (IS_ERR(data->mcu_reset_gpiod)) > return NULL; > > match = of_match_node(ssp_of_match, node); > diff --git a/drivers/iio/common/ssp_sensors/ssp_spi.c b/drivers/iio/common/ssp_sensors/ssp_spi.c > index 7db3d5886e3e..4864c38b8d1c 100644 > --- a/drivers/iio/common/ssp_sensors/ssp_spi.c > +++ b/drivers/iio/common/ssp_sensors/ssp_spi.c > @@ -155,9 +155,9 @@ static int ssp_check_lines(struct ssp_data *data, bool state) > { > int delay_cnt = 0; > > - gpio_set_value_cansleep(data->ap_mcu_gpio, state); > + gpiod_set_value_cansleep(data->ap_mcu_gpiod, state); > > - while (gpio_get_value_cansleep(data->mcu_ap_gpio) != state) { > + while (gpiod_get_value_cansleep(data->mcu_ap_gpiod) != state) { > usleep_range(3000, 3500); > > if (data->shut_down || delay_cnt++ > 500) { > @@ -165,7 +165,7 @@ static int ssp_check_lines(struct ssp_data *data, bool state) > __func__, state); > > if (!state) > - gpio_set_value_cansleep(data->ap_mcu_gpio, 1); > + gpiod_set_value_cansleep(data->ap_mcu_gpiod, 1); > > return -ETIMEDOUT; > } > @@ -197,7 +197,7 @@ static int ssp_do_transfer(struct ssp_data *data, struct ssp_msg *msg, > > status = spi_write(data->spi, msg->buffer, SSP_HEADER_SIZE); > if (status < 0) { > - gpio_set_value_cansleep(data->ap_mcu_gpio, 1); > + gpiod_set_value_cansleep(data->ap_mcu_gpiod, 1); > dev_err(SSP_DEV, "%s spi_write fail\n", __func__); > goto _error_locked; > }