From patchwork Mon Sep 14 15:48:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 303475 Delivered-To: patch@linaro.org Received: by 2002:a92:5ad1:0:0:0:0:0 with SMTP id b78csp1748886ilg; Mon, 14 Sep 2020 08:57:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+9KQHfVoy5hLuS8LywEI/WRMATYTyAEu834Omcrp0d6nE1I+h4aiML9P8KvP5YPz+k+0d X-Received: by 2002:a17:906:8c1:: with SMTP id o1mr15916634eje.478.1600099069712; Mon, 14 Sep 2020 08:57:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600099069; cv=none; d=google.com; s=arc-20160816; b=AEpw2N8gv0YSjYHMI92UYvMfC3CCie6rrsR6AFtXwjetSdo1wYFQY/Q1L87WTbnDXB nptBoGLB+17lelhrJDWw0cS/qgx1bSrMW22kwZp6xtQ2rI2uTGNPCuGyISgJ5j4ajLpi LlYPUk8WMcS9wlI1UeQem7wvX03h+/BCISnRhTKeUKKIBCqxcYPh6YYg38gguCVd/lOm oJw7M7Rzr5xEgwVqgJ4l3tBbUZ2Z/EzHoKsBtrs5aOyoGYMf13lqRsdXv+KppXOoAkgr YiLzueooPSwDQ3d9IWi75mkm5gm5dKoEdUObGCGT4P0nxUnjFcOKRFV/EkU8Rgdx3tOH wnPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=u+ec5e/iUjJ8qDBtGE9xKBCADcm1RI8srVHT5OLXlvU=; b=n9j3t0MN8M5RZ6tpeiYPe+umXYGc7OuZjQf9iQI2GAaODpZ8YfAfrOMAf/uqHI7O5U eSBfPT8H8mweZmlq0vddqna9HZVtYUHsjPh+XjWYL/sKw/tc0a1tlsBcvvFN0yvDXYsf qoIn9jVLPy1f45k/QPmJdDg7ShOCFaEZd02xWnx36E3JPY0QEPNObaVYeer+YiKNLodY Pf7PIx9GKAr6WbqjWr8/5n7vZ2dp3AXOOVNEBD+JCb15bkTnShim3Z0D+iFedueae1H/ bRkIe3/VBSLIEXYcT5tOv/hhbseBIV38ObH8YXua4zHcDaZc4aXe6l3yK4I6P7Jv0nen 4Ynw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ah7wZk7H; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l12si7523298edt.99.2020.09.14.08.57.49; Mon, 14 Sep 2020 08:57:49 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ah7wZk7H; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726420AbgINP5p (ORCPT + 6 others); Mon, 14 Sep 2020 11:57:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726541AbgINPsY (ORCPT ); Mon, 14 Sep 2020 11:48:24 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A1E2C061354 for ; Mon, 14 Sep 2020 08:48:24 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id k25so132477ljk.0 for ; Mon, 14 Sep 2020 08:48:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=u+ec5e/iUjJ8qDBtGE9xKBCADcm1RI8srVHT5OLXlvU=; b=Ah7wZk7H4a1YXb3siR+1ZjnwbjtSkXQdarNonG4apXmKK1RU7RgA3q5ffNCULhdZvv szBF+ywo3gSiAmVakhVSgrzGXibgJEBf0zLpay43DWkEfJks/Sxn9RKntWuRWYaevQev lg3aSW2BNqdhGyZe/JNz3NltDhgf8++D85FQcp14KLyjLf7D4vi1YLxZTZvklHXZ9T8Y Un2iIgaxXMW8MTzeluqSCr7BmwGpo0sk+04aycaYPhknOLHiqpydFmz5ZYsXOE0v/Gbs S1YPClKB3VqmlDYAnn14//BI+/N1syiPKkvqMZDzc7xAJueJPfZwiiaWpHxrUtoA2par bnCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u+ec5e/iUjJ8qDBtGE9xKBCADcm1RI8srVHT5OLXlvU=; b=D1ef4SAyhjpLsEAxO5Ro6Ys7Fr6GGzGvMi6iax1JmstlVHaLRla9v+AQU35M2rsX8Z Z+Vd2g2udqFFeBR3WS4JB3exGzASBvxf55aWwByv8uDOthZHK1icFHd/YsMZBMm6s8aX T8fkGa4bu+zjHkIbl4W9xp+vNFB7JZ3p245h/J2BbwaIWBUhCdYb+cqRu/o5KpVPb651 JVxt+BcK7CmoZDPizCGLdw404iPtxr/bhhzLtThcWQJrsBF/ihSJjODur3V1M8bT3/9U 9fsm5Pc7JtTYWT0yUs8sB0tTi1xPNSDT5NBFVGPIA/krfG4pWFnOn28VcEU6bp7y2rsw 5fIA== X-Gm-Message-State: AOAM532yOgefoxvfwUqk8S2z/Qnx5ILEUB+SK3CS2pnR85Ha4xSnWXV6 tpyrJ0fFOPnINwfvmX10GohvoQ== X-Received: by 2002:a2e:780d:: with SMTP id t13mr5681189ljc.324.1600098502656; Mon, 14 Sep 2020 08:48:22 -0700 (PDT) Received: from eriador.lan ([188.162.64.187]) by smtp.gmail.com with ESMTPSA id f19sm3834650lfs.85.2020.09.14.08.48.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Sep 2020 08:48:22 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Rob Herring , Zhang Rui , Daniel Lezcano , Amit Kucheria , Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler Cc: linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-iio@vger.kernel.org, Manivannan Sadhasivam , Craig Tatlor , Jonathan Cameron Subject: [PATCH v5 2/9] fixp-arith: add a linear interpolation function Date: Mon, 14 Sep 2020 18:48:02 +0300 Message-Id: <20200914154809.192174-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200914154809.192174-1-dmitry.baryshkov@linaro.org> References: <20200914154809.192174-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Craig Tatlor Adds a function to interpolate against two points, this is carried arount as a helper function by tons of drivers. Signed-off-by: Craig Tatlor Signed-off-by: Dmitry Baryshkov Acked-by: Jonathan Cameron --- include/linux/fixp-arith.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) -- 2.28.0 diff --git a/include/linux/fixp-arith.h b/include/linux/fixp-arith.h index 8396013785ef..281cb4f83dbe 100644 --- a/include/linux/fixp-arith.h +++ b/include/linux/fixp-arith.h @@ -141,4 +141,23 @@ static inline s32 fixp_sin32_rad(u32 radians, u32 twopi) #define fixp_cos32_rad(rad, twopi) \ fixp_sin32_rad(rad + twopi / 4, twopi) +/** + * fixp_linear_interpolate() - interpolates a value from two known points + * + * @x0: x value of point 0 + * @y0: y value of point 0 + * @x1: x value of point 1 + * @y1: y value of point 1 + * @x: the linear interpolant + */ +static inline int fixp_linear_interpolate(int x0, int y0, int x1, int y1, int x) +{ + if (y0 == y1 || x == x0) + return y0; + if (x1 == x0 || x == x1) + return y1; + + return y0 + ((y1 - y0) * (x - x0) / (x1 - x0)); +} + #endif From patchwork Mon Sep 14 15:48:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 303472 Delivered-To: patch@linaro.org Received: by 2002:a92:5ad1:0:0:0:0:0 with SMTP id b78csp1748273ilg; Mon, 14 Sep 2020 08:56:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJziEBncXPQegvNxa7KVb7Fmf9J+ajS99VYf1Pic5VLMwYezTzxjcq7jWr/8ae3AtpVifUq5 X-Received: by 2002:a50:f197:: with SMTP id x23mr18660149edl.367.1600099008181; Mon, 14 Sep 2020 08:56:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600099008; cv=none; d=google.com; s=arc-20160816; b=PKF/RQt3qP40OJdoyzp22IpGWwSDVlOvoaIf9Bsd2WM/rP3FG0rC6IA4gf15LRKhHz cr9em0Wh315lfqsCNHKl2oTGlT0xgw1drCg1z7drwTGOsCVRgG4j/FF6hppi/3nZZhIN 17Zgjl52VScycXD6IEK2ik9uWlUvKIMrFVUkFAL5/Odw0xPmBAOEEb638O9QZUk+/O8e up54yKHin6AM8YMvxqWaX5PyeQAz277/W3NB4U1+j5HOwTSKsv8xsjRjl94+ektrWqRB 3Cb9EgWNvgR9bBMM1NNjh7L4oplym5iBhact+kjM7WP6C+29EBitdaIZVp8P/zw/w9Fk f0Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=T0dKj6g81Qnwj432BHav6MjrRFfi+Md37xffdodCkkE=; b=oKovYY49Be/VvdutXMlfNDa27vvV3y4al/6Uej/Za+4AwJPGlldtzu8PaBiSqm5Zpx U/w388jmTy0xA5as66KebpcJbSUTBNNgCaP4pX3Yr9cktTex6btWHYKsE5uE6eLB2kA2 0xWeTqIl1DDgG+ruj01gr+iYWrp+Hg2EJElyBPvgxlD096Jp2N5yGR9PAMB9pBGGKuc3 ito6N8nwMMYi7QVffbkI6wHOr9hkXZkPjLP1fXJzaGgEuRuQBU5Gk3CuOntigfQazwnI hrDlE2UiKwZCG0Iv5KFcQ7jVLyGXsy8EE4uvaMeFBMUv6wejEg4nYXeb6HKz+2vrCZIO Yukg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DvEdx7uD; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o9si7358473ejx.707.2020.09.14.08.56.48; Mon, 14 Sep 2020 08:56:48 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DvEdx7uD; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726382AbgINP4i (ORCPT + 6 others); Mon, 14 Sep 2020 11:56:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726537AbgINPtQ (ORCPT ); Mon, 14 Sep 2020 11:49:16 -0400 Received: from mail-lf1-x143.google.com (mail-lf1-x143.google.com [IPv6:2a00:1450:4864:20::143]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70EC3C0611C0 for ; Mon, 14 Sep 2020 08:48:39 -0700 (PDT) Received: by mail-lf1-x143.google.com with SMTP id x77so13987179lfa.0 for ; Mon, 14 Sep 2020 08:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=T0dKj6g81Qnwj432BHav6MjrRFfi+Md37xffdodCkkE=; b=DvEdx7uD1/Zm3rie/uQ6tlufOEMmdWvcII2jHXVVel4u2swQZFQSMvH6BqNLhvfD9+ 5+6yCk7Z1zPLfj4pjx3x0WSitD+lB0ZySJw0mufbyM7v7C+JfVgHvS0esu59ICNHzuhQ nDSLHSeSpsIZxjWRPGeeLlUdBFeWQxSs4Z/6DyBd9rMGt4VmiXw2591CAp6h++6E6msB L90gSFQ0g1lBouovnGPDpAOecxNoDCKqhL00hf0SIxVcm890ghJFpjLo60gPV4UvI+SI YI79imbUY6rDDEfcxKd47KravGlMLrRZhyOumMe7z9KdNJd7D1CZuYsZs7vHO5vbq5nB jOxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=T0dKj6g81Qnwj432BHav6MjrRFfi+Md37xffdodCkkE=; b=t2MJasuilDDlIqL7Itd0Uq2HxrG1oTz3CkL0y6k7sfMm3gqPYPFPCpZBYhTJ+70tCU xXuwQcC5RitYzyxvLQL54j6eNr/wCYoE7TV0JD2ghnd/55QegeMYONOhcUV3ADnHDuPG +SKVd0Yb+Mvbog4f91kQV5BZ+Y5aVTeoL+Y96PushYOxf38Gp+9Lly6R2MJE7fbHey0k BvQ91OsozifRhDpzyXowEKHBjRrSPj+c96YVMhVkZbcnhx0ICDD+V02LfoHaIo17Hvk4 yTMwVL//k8z/lk0PXZHQ8om4QFWq4vEHm8ZC2LpsjL/DjG9QRCN/lUttrpnjgLtntGPT S/oQ== X-Gm-Message-State: AOAM531k+fDmQX4qo6vUErbXxnWlOIX2zhSkpdlLaNDiZ83PEqMIq+Bs zIn5NYSPQN3/FKXGol1rFcMGgQ== X-Received: by 2002:ac2:5586:: with SMTP id v6mr5523469lfg.71.1600098517844; Mon, 14 Sep 2020 08:48:37 -0700 (PDT) Received: from eriador.lan ([188.162.64.187]) by smtp.gmail.com with ESMTPSA id f19sm3834650lfs.85.2020.09.14.08.48.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Sep 2020 08:48:37 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Rob Herring , Zhang Rui , Daniel Lezcano , Amit Kucheria , Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler Cc: linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-iio@vger.kernel.org, Manivannan Sadhasivam , Jonathan Cameron Subject: [PATCH v5 6/9] iio: provide of_iio_channel_get_by_name() and devm_ version it Date: Mon, 14 Sep 2020 18:48:06 +0300 Message-Id: <20200914154809.192174-7-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200914154809.192174-1-dmitry.baryshkov@linaro.org> References: <20200914154809.192174-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org There might be cases when the IIO channel is attached to the device subnode instead of being attached to the main device node. Allow drivers to query IIO channels by using device tree nodes. Signed-off-by: Dmitry Baryshkov Reviewed-by: Jonathan Cameron --- drivers/iio/inkern.c | 34 ++++++++++++++++++++++++++-------- include/linux/iio/consumer.h | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 8 deletions(-) -- 2.28.0 diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index ede99e0d5371..8ff0ac472de3 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -180,8 +180,8 @@ static struct iio_channel *of_iio_channel_get(struct device_node *np, int index) return ERR_PTR(err); } -static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np, - const char *name) +struct iio_channel *of_iio_channel_get_by_name(struct device_node *np, + const char *name) { struct iio_channel *chan = NULL; @@ -219,6 +219,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np, return chan; } +EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name); static struct iio_channel *of_iio_channel_get_all(struct device *dev) { @@ -261,12 +262,6 @@ static struct iio_channel *of_iio_channel_get_all(struct device *dev) #else /* CONFIG_OF */ -static inline struct iio_channel * -of_iio_channel_get_by_name(struct device_node *np, const char *name) -{ - return NULL; -} - static inline struct iio_channel *of_iio_channel_get_all(struct device *dev) { return NULL; @@ -382,6 +377,29 @@ struct iio_channel *devm_iio_channel_get(struct device *dev, } EXPORT_SYMBOL_GPL(devm_iio_channel_get); +struct iio_channel *devm_of_iio_channel_get_by_name(struct device *dev, + struct device_node *np, + const char *channel_name) +{ + struct iio_channel **ptr, *channel; + + ptr = devres_alloc(devm_iio_channel_free, sizeof(*ptr), GFP_KERNEL); + if (!ptr) + return ERR_PTR(-ENOMEM); + + channel = of_iio_channel_get_by_name(np, channel_name); + if (IS_ERR(channel)) { + devres_free(ptr); + return channel; + } + + *ptr = channel; + devres_add(dev, ptr); + + return channel; +} +EXPORT_SYMBOL_GPL(devm_of_iio_channel_get_by_name); + struct iio_channel *iio_channel_get_all(struct device *dev) { const char *name; diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h index c4118dcb8e05..0a90ba8fa1bb 100644 --- a/include/linux/iio/consumer.h +++ b/include/linux/iio/consumer.h @@ -13,6 +13,7 @@ struct iio_dev; struct iio_chan_spec; struct device; +struct device_node; /** * struct iio_channel - everything needed for a consumer to use a channel @@ -97,6 +98,41 @@ void iio_channel_release_all(struct iio_channel *chan); */ struct iio_channel *devm_iio_channel_get_all(struct device *dev); +/** + * of_iio_channel_get_by_name() - get description of all that is needed to access channel. + * @np: Pointer to consumer device tree node + * @consumer_channel: Unique name to identify the channel on the consumer + * side. This typically describes the channels use within + * the consumer. E.g. 'battery_voltage' + */ +#ifdef CONFIG_OF +struct iio_channel *of_iio_channel_get_by_name(struct device_node *np, const char *name); +#else +static inline struct iio_channel * +of_iio_channel_get_by_name(struct device_node *np, const char *name) +{ + return NULL; +} +#endif + +/** + * devm_of_iio_channel_get_by_name() - Resource managed version of of_iio_channel_get_by_name(). + * @dev: Pointer to consumer device. + * @np: Pointer to consumer device tree node + * @consumer_channel: Unique name to identify the channel on the consumer + * side. This typically describes the channels use within + * the consumer. E.g. 'battery_voltage' + * + * Returns a pointer to negative errno if it is not able to get the iio channel + * otherwise returns valid pointer for iio channel. + * + * The allocated iio channel is automatically released when the device is + * unbound. + */ +struct iio_channel *devm_of_iio_channel_get_by_name(struct device *dev, + struct device_node *np, + const char *consumer_channel); + struct iio_cb_buffer; /** * iio_channel_get_all_cb() - register callback for triggered capture