From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1163BC4332F for ; Wed, 23 Feb 2022 16:35:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242876AbiBWQgM (ORCPT ); Wed, 23 Feb 2022 11:36:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242854AbiBWQgE (ORCPT ); Wed, 23 Feb 2022 11:36:04 -0500 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36AAD55762; Wed, 23 Feb 2022 08:35:36 -0800 (PST) Received: by mail-pj1-x1029.google.com with SMTP id g7-20020a17090a708700b001bb78857ccdso2850901pjk.1; Wed, 23 Feb 2022 08:35:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=w9jy9lnBDfLmIqFJjt9CXkg0EOVyG3IWJdyZ7MDDT48=; b=nlLBN5s4GQMQWjKPwI22UxkOH8KIvS+6KW2qFKrwM9aObdGHqa/w60mDMQO84XlXqr E5gJVv3NQYY9X9R/5pbnCnXWcH1yym5olfCtnQGZuvG2NgqqBL7695+CT0zXHbtk3uSW qQe+7hyvshb70QfHLHBfddekYruNx/mWnu+cqG1G6MGOjcGq0kdOuJhJfhvFVnpMCGao DWdE1dIY7QhZd7F+IFcmGtdBk9v34MbQ3od9mS5vHFl8LodgBnLtQB94EE6UgznKv7r+ MJVn+t9pV5JHBncT35g1MCBmug2CF2+xZ03M0LZJ8bKBbDcOng6+8GeAQMd4aV4ReNvg We8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=w9jy9lnBDfLmIqFJjt9CXkg0EOVyG3IWJdyZ7MDDT48=; b=qDHjTfvCcfHry40nHOOm8tHZMCvC74tQPu5haFTkZn0QZnbc1P/PUhLX2tQuTYBSYf BFAOH4IMjitNfb2OwBRkkC1swJJe9mj1i8vbXQQ0hBottBe9bIPG8L5WTjVCgwbqT5u/ h5aIUeiY/AexgPkC+qLDa4e+1NIF01VUbXtmEPgUykLE2WIvRhc19jVOXo5ejZrbjD46 nHAVYwJWNCYoGvtWtvvKPdMTPXiU2sMotJtyOqCeK5hYilit2X57/e6ghxnpr1FnX38C 2PaGrRvomYSG3RV+4GoqYruqLBXxCf2qdOqv+XQ6oytcKg/Vg8rB+AX/IxiAStTA8Y0+ M4Bg== X-Gm-Message-State: AOAM530hA++wPHS8U2XyUVgW55wm2lkrQu6nNhFOQjt+gMpaiq6lSzrq cTJ7Ys1dTfX1vGXB4j5UZGY= X-Google-Smtp-Source: ABdhPJzwDNR3J0waYJQej6XoUvxUXwC8OECh1f8ElQnpmaTIYt2bTbq4AELnociBCX/6rsDVyk+HUw== X-Received: by 2002:a17:90a:d50c:b0:1bc:6d27:75b with SMTP id t12-20020a17090ad50c00b001bc6d27075bmr177850pju.94.1645634135718; Wed, 23 Feb 2022 08:35:35 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:35 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/7] iio: potentiometer: Alignment to match the open parenthesis Date: Wed, 23 Feb 2022 22:05:19 +0530 Message-Id: <20220223163525.13399-2-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Fix following checkpatch.pl check by removing blank space. CHECK: Alignment should match open parenthesis. Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/ds1803.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index 20b45407eaac..3c542a50ece6 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -55,8 +55,8 @@ static const struct iio_chan_spec ds1803_channels[] =3D { }; =20 static int ds1803_read_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int *val, int *val2, long mask) + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) { struct ds1803_data *data =3D iio_priv(indio_dev); int pot =3D chan->channel; @@ -66,7 +66,7 @@ static int ds1803_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: ret =3D i2c_master_recv(data->client, result, - indio_dev->num_channels); + indio_dev->num_channels); if (ret < 0) return ret; =20 @@ -83,8 +83,8 @@ static int ds1803_read_raw(struct iio_dev *indio_dev, } =20 static int ds1803_write_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int val, int val2, long mask) + struct iio_chan_spec const *chan, + int val, int val2, long mask) { struct ds1803_data *data =3D iio_priv(indio_dev); int pot =3D chan->channel; @@ -109,8 +109,7 @@ static const struct iio_info ds1803_info =3D { .write_raw =3D ds1803_write_raw, }; =20 -static int ds1803_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int ds1803_probe(struct i2c_client *client, const struct i2c_device= _id *id) { struct device *dev =3D &client->dev; struct ds1803_data *data; --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 111C9C433EF for ; Wed, 23 Feb 2022 16:35:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242882AbiBWQgO (ORCPT ); Wed, 23 Feb 2022 11:36:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242867AbiBWQgH (ORCPT ); Wed, 23 Feb 2022 11:36:07 -0500 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F6BE56C3F; Wed, 23 Feb 2022 08:35:39 -0800 (PST) Received: by mail-pj1-x1033.google.com with SMTP id m22so3214349pja.0; Wed, 23 Feb 2022 08:35:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Wuoe6//698fzWFtSPEf4qQyavX9sdiATrcn5KHdyTWQ=; b=ZEC+UKEo6VznFd6EFEO3nWFawUDsHoGCOzFjQxvmOtwi2LdH5yfXy3qPhqTXGLEFhw A8ByJ0RcLygYDVOH5jo92Y+0Qv5lnha7nD4LHSpKeiR7h9afTy0VFqqR5B/pW+EBHMJr dS2aVw/YkwZqWJwilKonD0sXjOXbRDc7LeDtVEARxIFUE5L/XeGvX4MtDC3QA21AmRu7 lU9yjTp5Kj37Nvf+Jz7h8Ocv5i8Dt0ELbYbWwxj9tlVoHh2z2LhUHemKL/W+VF0IzP5U TvUeP536YIIU2ZxEmIWpCIxYMzoHenfIpuicJhNa8qIxPd0w0gADsDDised5Bc3IOTJJ M8aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Wuoe6//698fzWFtSPEf4qQyavX9sdiATrcn5KHdyTWQ=; b=19gaP4PZUivOmT+kOWJ+5oahkLnvw6b5Tlp6yoUo7oNYLAiO2yLc3f6zJDrn9gDyei 8V0RwpkkDZMwU+yr2O6y13QlK31/cj3/9bDc2dwV7guTfJ0QfVJhxRFwq6tkJK7kUc/+ LXLdRpk059UL5aP+3tA6LmVaz62NxquoqEv0n13MnHUrf4Fg0DzrhtXk4pKexcUYwwy2 OcijZKZuD1RhqQ3TE3dWv8a5Ze79g5sV86+7oXxhJcGhYkkqxbr5J+NzBG3DKWMbgSjl ks4HdUrEN8d+z/FFTKs3LUKNQ7uDTJ3fXuDquMLyCs08r7ZwtpEnSwi9TnspVmsDKXmy sSYw== X-Gm-Message-State: AOAM530L5zmHI99h7eUG31wTcLgy4b/OnqV1AIvTPCqEZBAE5rcdPxe0 JeFqYTGbJViTP1vxCg9H6X0= X-Google-Smtp-Source: ABdhPJzwp2w+tNkvRPX12NoUmqxFBjCDrWB1l+lbut6fIv6wPUhO78eriZobE+f4kX855gidQTQMZA== X-Received: by 2002:a17:90a:800b:b0:1bc:1954:9640 with SMTP id b11-20020a17090a800b00b001bc19549640mr148588pjn.89.1645634139005; Wed, 23 Feb 2022 08:35:39 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:38 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 2/7] iio: potentiometer: Add available functionality Date: Wed, 23 Feb 2022 22:05:20 +0530 Message-Id: <20220223163525.13399-3-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Adding available functionality for DS1803 driver which will show the minimum, step and maximum values that the driver can accepts through sysfs entry. Now using the max value present in avail array instead of chip type specific macro to make the driver flexible to add other type of potentiometer with different max position value. Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/ds1803.c | 61 ++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index 3c542a50ece6..9610269bed7f 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -16,7 +16,6 @@ #include #include =20 -#define DS1803_MAX_POS 255 #define DS1803_WRITE(chan) (0xa8 | ((chan) + 1)) =20 enum ds1803_type { @@ -26,27 +25,23 @@ enum ds1803_type { }; =20 struct ds1803_cfg { + int avail[3]; int kohms; }; =20 -static const struct ds1803_cfg ds1803_cfg[] =3D { - [DS1803_010] =3D { .kohms =3D 10, }, - [DS1803_050] =3D { .kohms =3D 50, }, - [DS1803_100] =3D { .kohms =3D 100, }, -}; - struct ds1803_data { struct i2c_client *client; const struct ds1803_cfg *cfg; }; =20 -#define DS1803_CHANNEL(ch) { \ - .type =3D IIO_RESISTANCE, \ - .indexed =3D 1, \ - .output =3D 1, \ - .channel =3D (ch), \ - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ +#define DS1803_CHANNEL(ch) { \ + .type =3D IIO_RESISTANCE, \ + .indexed =3D 1, \ + .output =3D 1, \ + .channel =3D (ch), \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_RAW), \ } =20 static const struct iio_chan_spec ds1803_channels[] =3D { @@ -54,6 +49,21 @@ static const struct iio_chan_spec ds1803_channels[] =3D { DS1803_CHANNEL(1), }; =20 +static const struct ds1803_cfg ds1803_cfg[] =3D { + [DS1803_010] =3D { + .avail =3D { 0, 1, 255 }, + .kohms =3D 10, + }, + [DS1803_050] =3D { + .avail =3D { 0, 1, 255 }, + .kohms =3D 50, + }, + [DS1803_100] =3D { + .avail =3D { 0, 1, 255 }, + .kohms =3D 100, + }, +}; + static int ds1803_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask) @@ -75,7 +85,7 @@ static int ds1803_read_raw(struct iio_dev *indio_dev, =20 case IIO_CHAN_INFO_SCALE: *val =3D 1000 * data->cfg->kohms; - *val2 =3D DS1803_MAX_POS; + *val2 =3D data->cfg->avail[2]; /* Max wiper position */ return IIO_VAL_FRACTIONAL; } =20 @@ -88,13 +98,14 @@ static int ds1803_write_raw(struct iio_dev *indio_dev, { struct ds1803_data *data =3D iio_priv(indio_dev); int pot =3D chan->channel; + int max_pos =3D data->cfg->avail[2]; =20 if (val2 !=3D 0) return -EINVAL; =20 switch (mask) { case IIO_CHAN_INFO_RAW: - if (val > DS1803_MAX_POS || val < 0) + if (val > max_pos || val < 0) return -EINVAL; break; default: @@ -104,9 +115,27 @@ static int ds1803_write_raw(struct iio_dev *indio_dev, return i2c_smbus_write_byte_data(data->client, DS1803_WRITE(pot), val); } =20 +static int ds1803_read_avail(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + const int **vals, int *type, + int *length, long mask) +{ + struct ds1803_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_RAW: + *vals =3D data->cfg->avail; + *length =3D ARRAY_SIZE(data->cfg->avail); + *type =3D IIO_VAL_INT; + return IIO_AVAIL_RANGE; + } + return -EINVAL; +} + static const struct iio_info ds1803_info =3D { .read_raw =3D ds1803_read_raw, .write_raw =3D ds1803_write_raw, + .read_avail =3D ds1803_read_avail, }; =20 static int ds1803_probe(struct i2c_client *client, const struct i2c_device= _id *id) --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DF097C43217 for ; Wed, 23 Feb 2022 16:35:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242887AbiBWQgU (ORCPT ); Wed, 23 Feb 2022 11:36:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242861AbiBWQgK (ORCPT ); Wed, 23 Feb 2022 11:36:10 -0500 Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7A1254BCE; Wed, 23 Feb 2022 08:35:42 -0800 (PST) Received: by mail-pf1-x431.google.com with SMTP id w2so3625599pfu.11; Wed, 23 Feb 2022 08:35:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=An4kRmIkXBZ2c6ClQNkLaUl2i0QTZVDwlsSpiNK0iJg=; b=ipp6RsDospPHUs7/0gvlkaW8uvB30RVtz5zdDeDloh4ZjTeIWNrmRmXL1RG85ipSsR 0Hjy36WY0xL00nJUaXHLRtD5YC9h3PgalSuXh6bWTPzA2iz3/FJZBJFXWQWvDghzzLHO 7do20Zcy3+F/0Ir2UWks9YI2BFYeddUItTiqWSB6YOBcKhg3nDX/IgHgEn86tyYlLDhh wVDylvCcAtgiDAPl+Y1v7qY+Vl86Vq5mmjy3LXll1VHOv3R54WB0IhiBl6oS3eyWF6mV QlOjyk99CiPHOa/Kdz7gYYddSXzOopbW1P/tILx9qGvoWkvqEnoRebkVXl+srZJK7LgQ 3g/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=An4kRmIkXBZ2c6ClQNkLaUl2i0QTZVDwlsSpiNK0iJg=; b=YEzMTDcPSjHQAsggzdLyAlzaWSk9QyVt/kAklkS2VpyiPGGK8jZkxcKQU6hoGOjG+Z nE9rp3PPYsLLIFvPcrPcX82+2ry8ZSmWywZgYP3R18Oj7Iq/IgEhyZkBFpDyCWdHODwU NJ8YBg9UbDZa8t0iXk1ivpaCIfxJeAh3c4eBp/hK544NkZFujNtRA51y8GssJqIG3pk/ 0+a0nOhyNJFBSydtBpwU8wuleKo9KTehCDGyhSwHMmvpcEQDzO2oyguIYPQACJGtY/lY iZyDEaV+f7qyG7e6NUeA0cWS3GPkovg7klraGhuDHVx6Nyvkz3TM6aiJCHavzEvbktJF djSQ== X-Gm-Message-State: AOAM533ws53rv8VNIQoOls2KNNNy4dJefjV8hwXXf8Sx4yGHNvU5+pig DyzVMY9Nd0yKFIs7xx+JGu5JsOJUV1PXg4Jb X-Google-Smtp-Source: ABdhPJzHV+NtemqyrTfpHJCDSBbpqSQQ/yLKVONEmrko3Nbua5k81GSMttZM4+S/y96f4/FTyiqDjQ== X-Received: by 2002:aa7:8f33:0:b0:4cb:95a7:928c with SMTP id y19-20020aa78f33000000b004cb95a7928cmr203680pfr.42.1645634142180; Wed, 23 Feb 2022 08:35:42 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:41 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/7] iio: potentiometer: Add channel information in device data Date: Wed, 23 Feb 2022 22:05:21 +0530 Message-Id: <20220223163525.13399-4-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Adding each device wiper count and channel information into device private data. Utilizing addr member of struct iio_chan_spec to get the wiper register address so that the value can be read or write to the same address. Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/ds1803.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index 9610269bed7f..f93cd342e09a 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -16,7 +16,8 @@ #include #include =20 -#define DS1803_WRITE(chan) (0xa8 | ((chan) + 1)) +#define DS1803_WIPER_0 0xA9 +#define DS1803_WIPER_1 0xAA =20 enum ds1803_type { DS1803_010, @@ -25,8 +26,11 @@ enum ds1803_type { }; =20 struct ds1803_cfg { + int wipers; int avail[3]; int kohms; + const struct iio_chan_spec *channels; + u8 num_channels; }; =20 struct ds1803_data { @@ -34,33 +38,43 @@ struct ds1803_data { const struct ds1803_cfg *cfg; }; =20 -#define DS1803_CHANNEL(ch) { \ +#define DS1803_CHANNEL(ch, addr) { \ .type =3D IIO_RESISTANCE, \ .indexed =3D 1, \ .output =3D 1, \ .channel =3D (ch), \ + .address =3D (addr), \ .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_RAW), \ } =20 static const struct iio_chan_spec ds1803_channels[] =3D { - DS1803_CHANNEL(0), - DS1803_CHANNEL(1), + DS1803_CHANNEL(0, DS1803_WIPER_0), + DS1803_CHANNEL(1, DS1803_WIPER_1), }; =20 static const struct ds1803_cfg ds1803_cfg[] =3D { [DS1803_010] =3D { + .wipers =3D 2, .avail =3D { 0, 1, 255 }, .kohms =3D 10, + .channels =3D ds1803_channels, + .num_channels =3D ARRAY_SIZE(ds1803_channels), }, [DS1803_050] =3D { + .wipers =3D 2, .avail =3D { 0, 1, 255 }, .kohms =3D 50, + .channels =3D ds1803_channels, + .num_channels =3D ARRAY_SIZE(ds1803_channels), }, [DS1803_100] =3D { + .wipers =3D 2, .avail =3D { 0, 1, 255 }, .kohms =3D 100, + .channels =3D ds1803_channels, + .num_channels =3D ARRAY_SIZE(ds1803_channels), }, }; =20 @@ -97,7 +111,7 @@ static int ds1803_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct ds1803_data *data =3D iio_priv(indio_dev); - int pot =3D chan->channel; + u8 addr =3D chan->address; int max_pos =3D data->cfg->avail[2]; =20 if (val2 !=3D 0) @@ -112,7 +126,7 @@ static int ds1803_write_raw(struct iio_dev *indio_dev, return -EINVAL; } =20 - return i2c_smbus_write_byte_data(data->client, DS1803_WRITE(pot), val); + return i2c_smbus_write_byte_data(data->client, addr, val); } =20 static int ds1803_read_avail(struct iio_dev *indio_dev, @@ -155,8 +169,8 @@ static int ds1803_probe(struct i2c_client *client, cons= t struct i2c_device_id *i data->cfg =3D &ds1803_cfg[id->driver_data]; =20 indio_dev->info =3D &ds1803_info; - indio_dev->channels =3D ds1803_channels; - indio_dev->num_channels =3D ARRAY_SIZE(ds1803_channels); + indio_dev->channels =3D data->cfg->channels; + indio_dev->num_channels =3D data->cfg->num_channels; indio_dev->name =3D client->name; =20 return devm_iio_device_register(dev, indio_dev); --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81BDDC433EF for ; Wed, 23 Feb 2022 16:35:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242898AbiBWQgY (ORCPT ); Wed, 23 Feb 2022 11:36:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46506 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242867AbiBWQgS (ORCPT ); Wed, 23 Feb 2022 11:36:18 -0500 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD1B757168; Wed, 23 Feb 2022 08:35:45 -0800 (PST) Received: by mail-pj1-x1029.google.com with SMTP id bx9-20020a17090af48900b001bc64ee7d3cso679552pjb.4; Wed, 23 Feb 2022 08:35:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qwCO6oz8VP1/6wMfQ6D1bt50DiPSQlvwOligZ6UZ0U0=; b=mbmiq7QI8dAK+pShCCZt7PIKpHBDpLCTKo7TLsAHhsIALUAkmvXmpVKGsTv/cGewID nuU5YqXBXZ2Ksp5Hsu4S1p6+RgVTKkTemCVEENyCWqSt0bcER6Zhckeudxu+5ZfQ9LQX H8I7mWaUHNgGpFceBlrVk6RoaeVvbgCQLcV0a+v4TyplAf0w7vwFt/Q1FooVWqYXRTk4 +xQwb6stntn8MxmNecIcYwRf40SpCKKQCczmUDcCNm0Y5OWhg/wU5X2BTRZUXVogne4A mTaSytFfKKtuUWg18w+qVMLDVmNVd8Lyg2gy5OAAxYjppTtOLFSeh1EtKNHVvs07QiZD GOYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qwCO6oz8VP1/6wMfQ6D1bt50DiPSQlvwOligZ6UZ0U0=; b=mM9jjGVCM6g/I91USmOlznNy9fBjIRKKxffUvf1nG+vtlCRtx0zRQMqMYzdv9whuMD 0O3VaGuTudcsAXQr3pp5Zo8JRupAl08EW3gp0NXxTeNDj1rs0s9+8DmINedigeXiAPT/ ayOmfHqfTElXqaj00x3OYGspuzVi+rJ74RNFsON6EXaYUHhz8Wkkhd0rUXf/CXrk6nWg i1uyCn36UtMqJVF3jlCGjyclSkn/nY1mbeoKeM78zTdtowCyXhPs2Blhigm7+G17p550 +bpC5au64rixX0Dtv0uDSJV3EM1rjlc6ExAEtv/QaNO4Anq8Yds3QH3aMr0vBtIpiDfa UJkA== X-Gm-Message-State: AOAM533FYuPGpdD8qQIa6Eb0XIFL35rgfnDjssEpTiAG9QVWqzQw/jLJ AgOFapK2NCgXWQVFIzM+BfU= X-Google-Smtp-Source: ABdhPJy79ozUt4jv/QsDI0/li6lXu61zmHSwllKaVzSIHRN2RrwxKjbHXBri4Rx6A4HjbSMDpDmHnQ== X-Received: by 2002:a17:902:6acc:b0:149:8f60:a526 with SMTP id i12-20020a1709026acc00b001498f60a526mr399077plt.25.1645634145325; Wed, 23 Feb 2022 08:35:45 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:45 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 4/7] iio: potentiometer: Change to firmware provided data Date: Wed, 23 Feb 2022 22:05:22 +0530 Message-Id: <20220223163525.13399-5-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Using firmware provided data to get the device specific structure if not available fall back to id->driver_data. Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/ds1803.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index f93cd342e09a..aeb74ee46fbc 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -15,6 +15,7 @@ #include #include #include +#include =20 #define DS1803_WIPER_0 0xA9 #define DS1803_WIPER_1 0xAA @@ -166,7 +167,9 @@ static int ds1803_probe(struct i2c_client *client, cons= t struct i2c_device_id *i =20 data =3D iio_priv(indio_dev); data->client =3D client; - data->cfg =3D &ds1803_cfg[id->driver_data]; + data->cfg =3D device_get_match_data(dev); + if (!data->cfg) + data->cfg =3D &ds1803_cfg[id->driver_data]; =20 indio_dev->info =3D &ds1803_info; indio_dev->channels =3D data->cfg->channels; --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BA18C433EF for ; Wed, 23 Feb 2022 16:36:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242903AbiBWQg0 (ORCPT ); Wed, 23 Feb 2022 11:36:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242893AbiBWQgV (ORCPT ); Wed, 23 Feb 2022 11:36:21 -0500 Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3482E58E54; Wed, 23 Feb 2022 08:35:49 -0800 (PST) Received: by mail-pj1-x102a.google.com with SMTP id q8-20020a17090a178800b001bc299b8de1so3301667pja.1; Wed, 23 Feb 2022 08:35:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=65Wdm90Autv7h+ovWGggxz9JvLLtxF54G/7vj1OKLTE=; b=ludn/iw7TO8EAl54NsS1kxVVqwipjy6pAT/ddqVN6qCbqk1FkGSkesDMkug+YJv3ik bnXQ7eB5ccJAVDQMhDYGgh4wo/ByoDXp2OUDNXNEvQ4bRCN5Hqo7G3bZ9KxaKQMocyQp YnVMrCMMivFOpHORmGIVITQm+HUpphc+9wIjogok6JfhVzO54Wxvg1tSESG8/XdQOYJ+ 0A+KjGK+2tmB24M6ydjI64oy6ax5+UT7xGlNU/OZ/PFEr+jdUnSuoTStMPgLDf226vq9 kOovMFVX8IFNJmHBcD3LpX8tAmLJkND5NTK2YeAfNDWlTWWAA6zZABFAq0ECtJngNqPP T4CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=65Wdm90Autv7h+ovWGggxz9JvLLtxF54G/7vj1OKLTE=; b=24qMHFNxTltiPnW/P90Uq+hJzg54TuEivOEzFAF+7sSlxb6WgDd2QD8MlQxLzADXNF aRXpdvsKspp54IMvEL+T9rhLNZrGRA4XtrngT60zue4rx+v1BpQPY+ZkJD5d88ZSe3wJ nZlBU2h5eX9F6BY4UZtBERyLeX5LLztabhLbA7kb1NXFc7DGXJRIZ9r+FstkpZlM8ARv oqy+x2RS///eb1crZT9zqdOS2SW5vhUG5K0h/CBkLH8qSNZkcXvlkmKr3oowETp+p1JD FEsizDLg4xu5FtEjnYErePpDvoySXqSfMObLxX2yTDyY9DJxUZKtNzlWFh6HeeqCmI/J aqlA== X-Gm-Message-State: AOAM532tACLz3gWEJklqtcAjJ+zU6CaJ92O5My7zpMC9YI+ZK5F5qMd5 Olj4kE3KikhMXdrQ3/KUCMp7nYn+g+uvOpwo X-Google-Smtp-Source: ABdhPJzsOcHiFQxJLP4cBOYmIcNRg7OFleHA4BFGFuTixIEdRscmV8unU9RMmLnzQdlB/O5EGz5FNw== X-Received: by 2002:a17:90b:3b42:b0:1b9:b5d8:ead2 with SMTP id ot2-20020a17090b3b4200b001b9b5d8ead2mr10057529pjb.149.1645634148546; Wed, 23 Feb 2022 08:35:48 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:48 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 5/7] iio: potentiometer: Add device specific read_raw function Date: Wed, 23 Feb 2022 22:05:23 +0530 Message-Id: <20220223163525.13399-6-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Added function pointer in the device specific structure to call the appropriate device read_raw function, so that the other type of devices with different read method can be handled. Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/ds1803.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index aeb74ee46fbc..878188351f8f 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -32,6 +32,8 @@ struct ds1803_cfg { int kohms; const struct iio_chan_spec *channels; u8 num_channels; + int (*read)(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, int *val); }; =20 struct ds1803_data { @@ -55,6 +57,22 @@ static const struct iio_chan_spec ds1803_channels[] =3D { DS1803_CHANNEL(1, DS1803_WIPER_1), }; =20 +static int ds1803_read(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val) +{ + struct ds1803_data *data =3D iio_priv(indio_dev); + int ret; + u8 result[ARRAY_SIZE(ds1803_channels)]; + + ret =3D i2c_master_recv(data->client, result, indio_dev->num_channels); + if (ret < 0) + return ret; + + *val =3D result[chan->channel]; + return ret; +} + static const struct ds1803_cfg ds1803_cfg[] =3D { [DS1803_010] =3D { .wipers =3D 2, @@ -62,6 +80,7 @@ static const struct ds1803_cfg ds1803_cfg[] =3D { .kohms =3D 10, .channels =3D ds1803_channels, .num_channels =3D ARRAY_SIZE(ds1803_channels), + .read =3D ds1803_read, }, [DS1803_050] =3D { .wipers =3D 2, @@ -69,6 +88,7 @@ static const struct ds1803_cfg ds1803_cfg[] =3D { .kohms =3D 50, .channels =3D ds1803_channels, .num_channels =3D ARRAY_SIZE(ds1803_channels), + .read =3D ds1803_read, }, [DS1803_100] =3D { .wipers =3D 2, @@ -76,6 +96,7 @@ static const struct ds1803_cfg ds1803_cfg[] =3D { .kohms =3D 100, .channels =3D ds1803_channels, .num_channels =3D ARRAY_SIZE(ds1803_channels), + .read =3D ds1803_read, }, }; =20 @@ -84,20 +105,15 @@ static int ds1803_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct ds1803_data *data =3D iio_priv(indio_dev); - int pot =3D chan->channel; int ret; - u8 result[ARRAY_SIZE(ds1803_channels)]; =20 switch (mask) { case IIO_CHAN_INFO_RAW: - ret =3D i2c_master_recv(data->client, result, - indio_dev->num_channels); + ret =3D data->cfg->read(indio_dev, chan, val); if (ret < 0) return ret; =20 - *val =3D result[pot]; return IIO_VAL_INT; - case IIO_CHAN_INFO_SCALE: *val =3D 1000 * data->cfg->kohms; *val2 =3D data->cfg->avail[2]; /* Max wiper position */ --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7A0DC43217 for ; Wed, 23 Feb 2022 16:36:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242906AbiBWQge (ORCPT ); Wed, 23 Feb 2022 11:36:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242896AbiBWQgc (ORCPT ); Wed, 23 Feb 2022 11:36:32 -0500 Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D8F656C06; Wed, 23 Feb 2022 08:35:52 -0800 (PST) Received: by mail-pl1-x636.google.com with SMTP id e13so1557745plh.3; Wed, 23 Feb 2022 08:35:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MCt65LTa8zW6DS3Nb8ZpZQR8g7aGxwmOYcejdqUg5PU=; b=hZjKkv1gvycJnJIzNRcDfYHHryzx2OGSF8uprtAAuYsdshuAIWZUHki2WcHYGKurH6 2IPxLjvUxQYkcQESkbga/T0NZaGW4kiU2SKyu5rVIpQTW5zThLGODxhfsO6mLrK9amik VwZk1+01aRfsjb7UD3NWqVj6CpHn1K3DZDllQfiw1dM8DyKaHwwbSJejSWSR9dVD18gV fvhHfO6SYGzP73YcbCx75PaHdDJp84Q8JHRqd5RsNhfBzP471/yWbsUUuIDM1hjpzpyc M87GyigX3YXmrzaa4ZRET7vGGj9vI6KCQMe+NfWYKFItZQm1eTpy3qCTRViVGqqO8zMC oO0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MCt65LTa8zW6DS3Nb8ZpZQR8g7aGxwmOYcejdqUg5PU=; b=PLiktwDIfQ/6LQPUdU996jKqylMLnM0TSL1HgxNq7CGVO1DwB762rGOKvpTeb9UMfI nWETMRYtDDdAxq2WtQJxfc7XmSK1rq/e9lyWQ4uy85G7WN+E0Ono30eEJYkyec6/xDyN InmUCdmeQJjZ2AhboVE8YCtBu2cp34wJb0nbrkvc22wpp0623pgAbbYdFuqFGP0SFf0U 0Egc4GR4PAqUuN4C1O7e0vrsb1rXO+8brMczFsk0LgR8n6SHD77Du6grntoLGf0h1are 51x3MtjqDoIsUj/d+kptXjQAJyxb5jS5c936p6/CA2W5Ft/X/q5NDNL0h+RCyFQ/X4Gq wV1w== X-Gm-Message-State: AOAM531fflG5u56UBx1ooHCVw/7WIjwb+1UBUgp/JUczVDVZGNcKmC4A yVtCiHW4O033pBvoBFRbwOa1m9qJtZd48GMc X-Google-Smtp-Source: ABdhPJxPOZrMzxejDhmaNCrS5/WxAUEmIFBPPBqwn2W95RQn8+D1QGZquM65JT4EJn8yURZQGvtHUg== X-Received: by 2002:a17:902:a98b:b0:14f:ae28:c660 with SMTP id bh11-20020a170902a98b00b0014fae28c660mr431352plb.94.1645634152030; Wed, 23 Feb 2022 08:35:52 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:51 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 6/7] iio: potentiometer: Add support for Maxim DS3502 Date: Wed, 23 Feb 2022 22:05:24 +0530 Message-Id: <20220223163525.13399-7-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The DS3502 is a 7-bit, nonvolatile digital potentiometer featuring an output voltage range of up to 15.5V. DS3502 support is added into existing DS1803 driver. Datasheet: https://datasheets.maximintegrated.com/en/ds/DS3502.pdf Signed-off-by: Jagath Jog J Reviewed-by: Andy Shevchenko --- drivers/iio/potentiometer/Kconfig | 6 ++--- drivers/iio/potentiometer/ds1803.c | 37 +++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/drivers/iio/potentiometer/Kconfig b/drivers/iio/potentiometer/= Kconfig index 832df8da2bc6..01dd3f858d99 100644 --- a/drivers/iio/potentiometer/Kconfig +++ b/drivers/iio/potentiometer/Kconfig @@ -27,11 +27,11 @@ config AD5272 module will be called ad5272. =20 config DS1803 - tristate "Maxim Integrated DS1803 Digital Potentiometer driver" + tristate "Maxim Integrated DS1803 and similar Digital Potentiometer drive= r" depends on I2C help - Say yes here to build support for the Maxim Integrated DS1803 - digital potentiometer chip. + Say yes here to build support for the Maxim Integrated DS1803 and + DS3502 digital potentiometer chip. =20 To compile this driver as a module, choose M here: the module will be called ds1803. diff --git a/drivers/iio/potentiometer/ds1803.c b/drivers/iio/potentiometer= /ds1803.c index 878188351f8f..81456b7d314b 100644 --- a/drivers/iio/potentiometer/ds1803.c +++ b/drivers/iio/potentiometer/ds1803.c @@ -1,12 +1,15 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Maxim Integrated DS1803 digital potentiometer driver + * Maxim Integrated DS1803 and similar digital potentiometer driver * Copyright (c) 2016 Slawomir Stepien + * Copyright (c) 2022 Jagath Jog J * * Datasheet: https://datasheets.maximintegrated.com/en/ds/DS1803.pdf + * Datasheet: https://datasheets.maximintegrated.com/en/ds/DS3502.pdf * * DEVID #Wipers #Positions Resistor Opts (kOhm) i2c address * ds1803 2 256 10, 50, 100 0101xxx + * ds3502 1 128 10 01010xx */ =20 #include @@ -19,11 +22,13 @@ =20 #define DS1803_WIPER_0 0xA9 #define DS1803_WIPER_1 0xAA +#define DS3502_WR_IVR 0x00 =20 enum ds1803_type { DS1803_010, DS1803_050, DS1803_100, + DS3502, }; =20 struct ds1803_cfg { @@ -57,6 +62,10 @@ static const struct iio_chan_spec ds1803_channels[] =3D { DS1803_CHANNEL(1, DS1803_WIPER_1), }; =20 +static const struct iio_chan_spec ds3502_channels[] =3D { + DS1803_CHANNEL(0, DS3502_WR_IVR), +}; + static int ds1803_read(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val) @@ -73,6 +82,21 @@ static int ds1803_read(struct iio_dev *indio_dev, return ret; } =20 +static int ds3502_read(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val) +{ + struct ds1803_data *data =3D iio_priv(indio_dev); + int ret; + + ret =3D i2c_smbus_read_byte_data(data->client, chan->address); + if (ret < 0) + return ret; + + *val =3D ret; + return ret; +} + static const struct ds1803_cfg ds1803_cfg[] =3D { [DS1803_010] =3D { .wipers =3D 2, @@ -98,6 +122,14 @@ static const struct ds1803_cfg ds1803_cfg[] =3D { .num_channels =3D ARRAY_SIZE(ds1803_channels), .read =3D ds1803_read, }, + [DS3502] =3D { + .wipers =3D 1, + .avail =3D { 0, 1, 127 }, + .kohms =3D 10, + .channels =3D ds3502_channels, + .num_channels =3D ARRAY_SIZE(ds3502_channels), + .read =3D ds3502_read, + }, }; =20 static int ds1803_read_raw(struct iio_dev *indio_dev, @@ -199,6 +231,7 @@ static const struct of_device_id ds1803_dt_ids[] =3D { { .compatible =3D "maxim,ds1803-010", .data =3D &ds1803_cfg[DS1803_010] }, { .compatible =3D "maxim,ds1803-050", .data =3D &ds1803_cfg[DS1803_050] }, { .compatible =3D "maxim,ds1803-100", .data =3D &ds1803_cfg[DS1803_100] }, + { .compatible =3D "maxim,ds3502", .data =3D &ds1803_cfg[DS3502] }, {} }; MODULE_DEVICE_TABLE(of, ds1803_dt_ids); @@ -207,6 +240,7 @@ static const struct i2c_device_id ds1803_id[] =3D { { "ds1803-010", DS1803_010 }, { "ds1803-050", DS1803_050 }, { "ds1803-100", DS1803_100 }, + { "ds3502", DS3502 }, {} }; MODULE_DEVICE_TABLE(i2c, ds1803_id); @@ -223,5 +257,6 @@ static struct i2c_driver ds1803_driver =3D { module_i2c_driver(ds1803_driver); =20 MODULE_AUTHOR("Slawomir Stepien "); +MODULE_AUTHOR("Jagath Jog J "); MODULE_DESCRIPTION("DS1803 digital potentiometer"); MODULE_LICENSE("GPL v2"); --=20 2.17.1 From nobody Wed Jun 24 02:12:11 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F125DC433EF for ; Wed, 23 Feb 2022 16:36:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239243AbiBWQgg (ORCPT ); Wed, 23 Feb 2022 11:36:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242893AbiBWQgd (ORCPT ); Wed, 23 Feb 2022 11:36:33 -0500 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF71358381; Wed, 23 Feb 2022 08:35:55 -0800 (PST) Received: by mail-pl1-x631.google.com with SMTP id x11so19191595pll.10; Wed, 23 Feb 2022 08:35:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Bcgt5PK1Q0mp9E0RmLUvcE/cB/2glUg86KZveaMOtXU=; b=M0j9xNzFyktfVR9Ex34gv6jh+eREkHS60NNePIupNQ0EqJzf/F4qEHp+2mU4FxJ1Nx C+ma8SOt4a8EeysSi4gCM1Ks7tEg7+zTNNy1PbBtakQrB6txiHZmXLfPcEkP6UoKyOPt ysEFdldsQOs/MARlmqmIMtGSWp+tahTj8v8GNyiyVLz/HxPT+CiEQcSlbv/Qn15X/XqW qN6Y18iqfbJaiKAW7xwMcUW24MoCqtcQz/wFf/VfimgCazZr16v77MwqhlzV1+fjg7LP oV+2tX8dtDYzsA1tEXodTjHvBSWzMUDF5Zx9JGxqvPot0fUhAWmWDPd8kc2xZdOLUKxp V7yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Bcgt5PK1Q0mp9E0RmLUvcE/cB/2glUg86KZveaMOtXU=; b=A74oSey4X4fvY4Dxg2J7RQRWdcnSXnkrOsZm/XvTJnMr2UFQiwzUmOANCEqAhwnNwZ jvchkwOJnO42Pl3tZkOHn7BYfOVGkPtTFkjG0ZVYNYhUtR+GHZ/616ERu0h54/7NNWqV EGgJNIAfWTKka4J5OywisEjG1dPLp3G+9XXrRLBVnYn7usdaawsMQEDwmoJBxjMjnudQ PsM9D+bNfvitNyhCKp9LqC2CX4jQOJ+ufCsrOtWIMl95AuS5s5u2WdCkg4qovLcRA1q5 6lqLnHjiHCO9z/lRNzz9bE+uStZXgV+IBLOk/Og4P9FUKRiJrfJTZI0gEtmyEnh2Imgl ByfQ== X-Gm-Message-State: AOAM5310v4I5tXRPPocRkKCTbg+h+H7GfWGuvkgEbI+lr5ZBMLmXbO0P uM1BJXK1sWI+u5SO3lFlnPk= X-Google-Smtp-Source: ABdhPJwmXDDTB84pFYHj8MR6ShOZkroY72Sayv4BLY/e8ELIy4W8q12tITwgKVl7vcnxZz9+dfaXrA== X-Received: by 2002:a17:90a:1548:b0:1b9:d1b7:bb1a with SMTP id y8-20020a17090a154800b001b9d1b7bb1amr141903pja.125.1645634155159; Wed, 23 Feb 2022 08:35:55 -0800 (PST) Received: from localhost.localdomain ([27.7.190.133]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a4fe600b001b9ba2a1dc3sm3455106pjh.25.2022.02.23.08.35.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 08:35:54 -0800 (PST) From: Jagath Jog J To: jic23@kernel.org, lars@metafoo.de, andy.shevchenko@gmail.com, sst@poczta.fm, robh+dt@kernel.org Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 7/7] dt-bindings: iio: potentiometer: Add Maxim DS3502 in trivial-devices Date: Wed, 23 Feb 2022 22:05:25 +0530 Message-Id: <20220223163525.13399-8-jagathjog1996@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220223163525.13399-1-jagathjog1996@gmail.com> References: <20220223163525.13399-1-jagathjog1996@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Maxim DS3502 is a 7 bit nonvolatile digital potentiometer. Add DS3502 binding into trivial-devices.yaml. Signed-off-by: Jagath Jog J Acked-by: Rob Herring Reviewed-by: Andy Shevchenko --- Documentation/devicetree/bindings/trivial-devices.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Docum= entation/devicetree/bindings/trivial-devices.yaml index 091792ba993e..b6187603317a 100644 --- a/Documentation/devicetree/bindings/trivial-devices.yaml +++ b/Documentation/devicetree/bindings/trivial-devices.yaml @@ -157,6 +157,8 @@ properties: - maxim,ds1803-050 # 100 kOhm digital potentiometer with I2C interface - maxim,ds1803-100 + # 10 kOhm digital potentiometer with I2C interface + - maxim,ds3502 # Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs - maxim,max1237 # Temperature Sensor, I2C interface --=20 2.17.1