Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp240299rdg; Tue, 10 Oct 2023 08:59:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFFYm3QjZVJas84OM8IiIgTDsI0NsDCVEqeW3/hkG2bvXxRkS55w3blEcHmCqP0BqhLMN4S X-Received: by 2002:a05:6a20:7d94:b0:15c:fa48:2c09 with SMTP id v20-20020a056a207d9400b0015cfa482c09mr19137301pzj.15.1696953560488; Tue, 10 Oct 2023 08:59:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696953560; cv=none; d=google.com; s=arc-20160816; b=ka7k94zQzkPyHbBi1MJpkuWdFLkIbFMhj9zBq6+Qi69cGyp3aTAAt2CYGfuaSw+gAS ywpQ89vfLz5nfuObSjuNNTnlO4LEILd001TV9DedCL/v/0Ds7/aHhRNsARD/PBQ1SWAj JWPVImUBjJf3x8/qd5LwDURsi0/vKIk3lBS+JsUg0AqiHJbXXj8xuvToIX7HlyIUhVW6 NFuSQHxq2M1L8S+GTLCpogKHc4Wa4uv/M9/aSEwN4Tg0GU+Qjdr3UHKGC4m8PDYFOPAL B/bcN/Ot0XP+PBPkdRjfhaqeAgext5fsvge6zxc7R81WjvwnIOFgjn+JRGvgfUQeBDhI WNqg== 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:subject:cc:to:from:date :dkim-signature; bh=CnyMGY7tWajHlDdqBiCgWzRPZ4ejgLSizN1W+s5LSe0=; fh=pXKqORNJ+dg5Lz7xCcqJMzke/CtmHwLH72jSpZY9BDY=; b=rQX9+WGGtn4AVUFnTo4XI/yZ5mysCt8wl12sZhZxn08xejW43DAxd8SlhbBOWrO5Hq e4100g4X68qjbHSwOGQsdjd2qka/Ro7giVQlIieyQQ8p8EknIwkBHY0kaQdxEIfx3UfJ CuhpoPGpfYUQpW4E1R1y+wRut2tFqiHWHW6PHBELU9mwPws1JKSk1TyfvNhtGVEMt888 4rH6nB7rsMAeOnaoQFlnk/Xt5uQxvKCDom2x0/WFK+Rpr0Zc1zpJQgqSM+quP/Z+1hM0 KC+ke7Be9aUxroZLaKWzMwxeBTFHvKCuG+ObXA1jkgcVEqEFoejpNqoIVg06q+wNUr91 S27g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="Bqj9z/Xe"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id cn7-20020a056a00340700b0068a4ba92eafsi9958571pfb.54.2023.10.10.08.59.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 08:59:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="Bqj9z/Xe"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id F2306817C8BD; Tue, 10 Oct 2023 08:59:17 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233770AbjJJP7I (ORCPT + 99 others); Tue, 10 Oct 2023 11:59:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233597AbjJJP7H (ORCPT ); Tue, 10 Oct 2023 11:59:07 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BCB197; Tue, 10 Oct 2023 08:59:06 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A371C433C7; Tue, 10 Oct 2023 15:59:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696953545; bh=OPlhF+ij5+nDi2Y2jm7qw/gg2jrqcnUYBRVJO1XRlb0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Bqj9z/XeQGfxu4j6A0XiLOGIh8HkXHcboAxtwTHV6c4oF/W2HIYcaYxRRG7CB1BIz mYR9CQKK8jHVaBmq7WbptMzxeSTI+kBaEP76geWkg5XQbUaLvDDMKALHw6DYZGs1I7 nHpH1fq5FddAHADlDIwLYxQhFxrau3Cq0XJ/gocKSWMtvlRYXrAkvtSyuZ9HvnRtx2 LnBfO9MOfNDtxc9oUFzSJZKoXPx6NccxmusjZF6a6B1a8kOePTUBCM+wxcjXP2xuVF y0u0JoEdzkUVzpCK2O+XpOsDO91i2/axucjFyBi9OdyWDJSTSVzJpx0eMjzBgN5Fel nU0cV7DUQLLmg== Date: Tue, 10 Oct 2023 16:59:17 +0100 From: Jonathan Cameron To: David Lechner Cc: linux-iio@vger.kernel.org, linux-staging@lists.linux.dev, Michael Hennerich , Nuno =?UTF-8?B?U8Oh?= , Axel Haslam , Philip Molloy , linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 12/17] iio: event: add optional event label support Message-ID: <20231010165917.4c1cb0a9@jic23-huawei> In-Reply-To: <20231005-ad2s1210-mainline-v4-12-ec00746840fc@baylibre.com> References: <20231005-ad2s1210-mainline-v4-0-ec00746840fc@baylibre.com> <20231005-ad2s1210-mainline-v4-12-ec00746840fc@baylibre.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 10 Oct 2023 08:59:18 -0700 (PDT) X-Spam-Level: ** On Thu, 5 Oct 2023 19:50:29 -0500 David Lechner wrote: > This adds a new optional field to struct iio_info to allow drivers to > specify a label for the event. This is useful for cases where there are > many events or the event attribute name is not descriptive enough or > where an event doesn't have any other attributes. > > The implementation is based on the existing label support for channels. > So either all events of a device have a label attribute or none do. > > Signed-off-by: David Lechner Was going to moan about lack of docs, but I see they are in later patches. Ok. General feature is fine. Applied. Jonathan > --- > > v4 changes: New patch in v4. > > drivers/iio/industrialio-event.c | 55 ++++++++++++++++++++++++++++++++++++++++ > include/linux/iio/iio.h | 8 ++++++ > 2 files changed, 63 insertions(+) > > diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c > index 19f7a91157ee..910c1f14abd5 100644 > --- a/drivers/iio/industrialio-event.c > +++ b/drivers/iio/industrialio-event.c > @@ -355,6 +355,21 @@ static ssize_t iio_ev_value_store(struct device *dev, > return len; > } > > +static ssize_t iio_ev_label_show(struct device *dev, > + struct device_attribute *attr, > + char *buf) > +{ > + struct iio_dev *indio_dev = dev_to_iio_dev(dev); > + struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); > + > + if (indio_dev->info->read_event_label) > + return indio_dev->info->read_event_label(indio_dev, > + this_attr->c, iio_ev_attr_type(this_attr), > + iio_ev_attr_dir(this_attr), buf); > + > + return -EINVAL; > +} > + > static int iio_device_add_event(struct iio_dev *indio_dev, > const struct iio_chan_spec *chan, unsigned int spec_index, > enum iio_event_type type, enum iio_event_direction dir, > @@ -411,6 +426,41 @@ static int iio_device_add_event(struct iio_dev *indio_dev, > return attrcount; > } > > +static int iio_device_add_event_label(struct iio_dev *indio_dev, > + const struct iio_chan_spec *chan, > + unsigned int spec_index, > + enum iio_event_type type, > + enum iio_event_direction dir) > +{ > + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); > + char *postfix; > + int ret; > + > + if (!indio_dev->info->read_event_label) > + return 0; > + > + if (dir != IIO_EV_DIR_NONE) > + postfix = kasprintf(GFP_KERNEL, "%s_%s_label", > + iio_ev_type_text[type], > + iio_ev_dir_text[dir]); > + else > + postfix = kasprintf(GFP_KERNEL, "%s_label", > + iio_ev_type_text[type]); > + if (postfix == NULL) > + return -ENOMEM; > + > + ret = __iio_add_chan_devattr(postfix, chan, &iio_ev_label_show, NULL, > + spec_index, IIO_SEPARATE, &indio_dev->dev, NULL, > + &iio_dev_opaque->event_interface->dev_attr_list); > + > + kfree(postfix); > + > + if (ret < 0) > + return ret; > + > + return 1; > +} > + > static int iio_device_add_event_sysfs(struct iio_dev *indio_dev, > struct iio_chan_spec const *chan) > { > @@ -448,6 +498,11 @@ static int iio_device_add_event_sysfs(struct iio_dev *indio_dev, > if (ret < 0) > return ret; > attrcount += ret; > + > + ret = iio_device_add_event_label(indio_dev, chan, i, type, dir); > + if (ret < 0) > + return ret; > + attrcount += ret; > } > ret = attrcount; > return ret; > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h > index 7bfa1b9bc8a2..d0ce3b71106a 100644 > --- a/include/linux/iio/iio.h > +++ b/include/linux/iio/iio.h > @@ -427,6 +427,8 @@ struct iio_trigger; /* forward declaration */ > * @write_event_config: set if the event is enabled. > * @read_event_value: read a configuration value associated with the event. > * @write_event_value: write a configuration value for the event. > + * @read_event_label: function to request label name for a specified label, > + * for better event identification. > * @validate_trigger: function to validate the trigger when the > * current trigger gets changed. > * @update_scan_mode: function to configure device and scan buffer when > @@ -511,6 +513,12 @@ struct iio_info { > enum iio_event_direction dir, > enum iio_event_info info, int val, int val2); > > + int (*read_event_label)(struct iio_dev *indio_dev, > + struct iio_chan_spec const *chan, > + enum iio_event_type type, > + enum iio_event_direction dir, > + char *label); > + > int (*validate_trigger)(struct iio_dev *indio_dev, > struct iio_trigger *trig); > int (*update_scan_mode)(struct iio_dev *indio_dev, >