From patchwork Mon May 1 23:17:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marijn Suijten X-Patchwork-Id: 89206 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp243487vqo; Mon, 1 May 2023 16:39:47 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6TVHZXQ0odTE3ut//l0ttEh95cONa0oBENfHNX/HsX5JX1W5UQZx7ojVE25fWy6jub5Vbd X-Received: by 2002:a05:6a20:42a8:b0:f3:a3b7:ae37 with SMTP id o40-20020a056a2042a800b000f3a3b7ae37mr20548830pzj.29.1682984387117; Mon, 01 May 2023 16:39:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682984387; cv=none; d=google.com; s=arc-20160816; b=SZZ4SPYpARVafNUdkn+3FVDrr+QL+GlyWMaZBblVbuGtzFAjWvsWWid4S40hZK6+TS DgKIeVQkbACyCKBUX/OAZMMiV2uh8hHjPFOtdw+NHXI2gJfXxRBtqBvmZtoQawkcbaAG sA1Y6koLWDw44+drlOEhH0i4PvizQtbZJ6PSzQOgyYtGG1KZb8ijEFJDWAH8ERPCaDed yAn/feEGS8ieXNwZ0iotpTFXoHcxdPM/9NitO5VOdpVPOXXviFW0FZxpCgce+81VGmni luG1pdPELxufcVmQScNcVugJZ9SE49/h/JkT3pVLoeOxXLKIh3TTO6wCQjpTGFBro6L8 vovA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=lrdNiVJTdY5RmdnjGHblDY7BwLhGVQ+8hfIUk6lXMgM=; b=HpsOZWOqADLxP3t9Gw46LL00KeRRIHS54l/gXSFHZdeCfy2HG7+fOOGTlo+Olta5iO Aig6gqzi2EzVkMmv+g4DJII6eM1JbAnyUaY1XkV3cYq7TSV/hx4qdz28yMXRWXg+ISXA lfA8JSM2YszXXlLT1GVNQRbwe8q8qkoce2/k/l2P4Dac/G9shX9J5mNr9xFLv3QGy8I5 WqSQTReG/zOmpnN1wu2hxNMQ/iJDU+6yawu76k3fbgbLesa9uSvnIF8tjVYql0q90bpC azbhwhn+i1adH3cWLj9MePdIOwIjDULPgoypPWkeBIVCQSj24Xm6f1ppCKnS8e7gukdS 5BjQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d9-20020a655ac9000000b0050bfa82c245si29273620pgt.855.2023.05.01.16.39.33; Mon, 01 May 2023 16:39:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232860AbjEAXSc (ORCPT + 99 others); Mon, 1 May 2023 19:18:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233209AbjEAXSV (ORCPT ); Mon, 1 May 2023 19:18:21 -0400 Received: from m-r2.th.seeweb.it (m-r2.th.seeweb.it [5.144.164.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53ED035BF; Mon, 1 May 2023 16:18:18 -0700 (PDT) Received: from localhost.localdomain (94-211-6-86.cable.dynamic.v4.ziggo.nl [94.211.6.86]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by m-r2.th.seeweb.it (Postfix) with ESMTPSA id 3EDB340E6D; Tue, 2 May 2023 01:18:16 +0200 (CEST) From: Marijn Suijten To: phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, AngeloGioacchino Del Regno , Konrad Dybcio , Martin Botka , Jami Kettunen , Jonathan Cameron , Lars-Peter Clausen , Andy Gross , Bjorn Andersson Cc: Marijn Suijten , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [PATCH RESEND v3 5/5] iio: adc: qcom-spmi-vadc: Propagate fw node label to userspace Date: Tue, 2 May 2023 01:17:37 +0200 Message-Id: <20230502-iio-adc-propagate-fw-node-label-v3-5-6be5db6e6b5a@somainline.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230502-iio-adc-propagate-fw-node-label-v3-0-6be5db6e6b5a@somainline.org> References: <20230502-iio-adc-propagate-fw-node-label-v3-0-6be5db6e6b5a@somainline.org> MIME-Version: 1.0 X-Mailer: b4 0.12.2 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764735904477637315?= X-GMAIL-MSGID: =?utf-8?q?1764737036734240293?= Set the read_label() callback to return a friendly name provided in DT (firmware), in order to make in_{therm,voltage}X_label attributes show up in sysfs for userspace to consume a channel name. This is particularly useful for custom thermistors being attached to otherwise generically named GPIOs, where the name is known by the board DT. If the channel name isn't set in DT, use the datasheet_name hardcoded in the driver instead. Note that this doesn't fall back to fwnode_get_name() as that provides suboptimally readable names, with an @xx address suffix from board DT. Signed-off-by: Marijn Suijten Reviewed-by: Dmitry Baryshkov --- drivers/iio/adc/qcom-spmi-vadc.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c index bcff0f62b70e0..f5c6f1f27b2c7 100644 --- a/drivers/iio/adc/qcom-spmi-vadc.c +++ b/drivers/iio/adc/qcom-spmi-vadc.c @@ -84,6 +84,7 @@ * that is an average of multiple measurements. * @scale_fn_type: Represents the scaling function to convert voltage * physical units desired by the client for the channel. + * @channel_name: Channel name used in device tree. */ struct vadc_channel_prop { unsigned int channel; @@ -93,6 +94,7 @@ struct vadc_channel_prop { unsigned int hw_settle_time; unsigned int avg_samples; enum vadc_scale_fn_type scale_fn_type; + const char *channel_name; }; /** @@ -495,8 +497,18 @@ static int vadc_fwnode_xlate(struct iio_dev *indio_dev, return -EINVAL; } +static int vadc_read_label(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, char *label) +{ + struct vadc_priv *vadc = iio_priv(indio_dev); + const char *name = vadc->chan_props[chan->address].channel_name; + + return sysfs_emit(label, "%s\n", name); +} + static const struct iio_info vadc_info = { .read_raw = vadc_read_raw, + .read_label = vadc_read_label, .fwnode_xlate = vadc_fwnode_xlate, }; @@ -652,7 +664,7 @@ static int vadc_get_fw_channel_data(struct device *dev, struct vadc_channel_prop *prop, struct fwnode_handle *fwnode) { - const char *name = fwnode_get_name(fwnode); + const char *name = fwnode_get_name(fwnode), *label; u32 chan, value, varr[2]; int ret; @@ -667,6 +679,11 @@ static int vadc_get_fw_channel_data(struct device *dev, return -EINVAL; } + ret = fwnode_property_read_string(fwnode, "label", &label); + if (ret) + label = vadc_chans[chan].datasheet_name; + prop->channel_name = label; + /* the channel has DT description */ prop->channel = chan;