[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMRc=MdOSsakJm4H5=cqVzdKDrrMFO2t-wKVWRCU83saozepxQ@mail.gmail.com>
Date: Thu, 20 Mar 2025 16:54:26 +0100
From: Bartosz Golaszewski <brgl@...ev.pl>
To: Koichiro Den <koichiro.den@...onical.com>
Cc: linux-gpio@...r.kernel.org, geert+renesas@...der.be,
linus.walleij@...aro.org, maciej.borzecki@...onical.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v6 4/9] gpio: aggregator: introduce basic configfs interface
On Sat, Mar 15, 2025 at 5:41 PM Koichiro Den <koichiro.den@...onical.com> wrote:
>
> The existing sysfs 'new_device' interface has several limitations:
> * No way to determine when GPIO aggregator creation is complete.
> * No way to retrieve errors when creating a GPIO aggregator.
> * No way to trace a GPIO line of an aggregator back to its
> corresponding physical device.
> * The 'new_device' echo does not indicate which virtual gpiochip<N>
> was created.
> * No way to assign names to GPIO lines exported through an aggregator.
>
> Introduce the new configfs interface for gpio-aggregator to address
> these limitations. It provides a more streamlined, modern, and
> extensible configuration method. For backward compatibility, the
> 'new_device' interface and its behavior is retained for now.
>
> This commit implements basic functionalities:
>
> /config/gpio-aggregator/<name-of-your-choice>/
> /config/gpio-aggregator/<name-of-your-choice>/live
> /config/gpio-aggregator/<name-of-your-choice>/dev_name
> /config/gpio-aggregator/<name-of-your-choice>/<lineY>/
> /config/gpio-aggregator/<name-of-your-choice>/<lineY>/key
> /config/gpio-aggregator/<name-of-your-choice>/<lineY>/offset
> /config/gpio-aggregator/<name-of-your-choice>/<lineY>/name
>
> Basic setup flow is:
> 1. Create a directory for a GPIO aggregator.
> 2. Create subdirectories for each line you want to instantiate.
> 3. In each line directory, configure the key and offset.
> The key/offset semantics are as follows:
> * If offset is >= 0:
> - key specifies the name of the chip this GPIO belongs to
> - offset specifies the line offset within that chip.
> * If offset is <0:
> - key needs to specify the GPIO line name.
> 4. Return to the aggregator's root directory and write '1' to the live
> attribute.
>
> For example, the command in the existing kernel doc:
>
> echo 'e6052000.gpio 19 e6050000.gpio 20-21' > new_device
>
> is equivalent to:
>
> mkdir /sys/kernel/config/gpio-aggregator/<custom-name>
> # Change <custom-name> to name of your choice (e.g. "aggr0")
> cd /sys/kernel/config/gpio-aggregator/<custom-name>
> mkdir line0 line1 line2 # Only "line<Y>" naming allowed.
> echo e6052000.gpio > line0/key
> echo 19 > line0/offset
> echo e6050000.gpio > line1/key
> echo 20 > line1/offset
> echo e6050000.gpio > line2/key
> echo 21 > line2/offset
> echo 1 > live
>
> The corresponding gpio_device id can be identified as follows:
>
> cd /sys/kernel/config/gpio-aggregator/<custom-name>
> ls -d /sys/devices/platform/`cat dev_name`/gpiochip*
>
> Also, via configfs, custom GPIO line name can be set like this:
>
> cd /sys/kernel/config/gpio-aggregator/<custom-name>
> echo "abc" > line1/name
>
> Signed-off-by: Koichiro Den <koichiro.den@...onical.com>
> ---
>
> @@ -90,6 +124,70 @@ static int aggr_add_gpio(struct gpio_aggregator *aggr, const char *key,
> return 0;
> }
>
> +static bool aggr_is_active(struct gpio_aggregator *aggr)
Series-wide: I would prefer a different prefix: why not
gpio_aggregator or at least gpio_aggr?
Other than that, looks good to me!
Bartosz
Powered by blists - more mailing lists