From: Hans de Goede <hdegoede@redhat.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Mark Gross <markgross@kernel.org>,
Andy Shevchenko <andy@kernel.org>, Pavel Machek <pavel@ucw.cz>,
Lee Jones <lee@kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Daniel Scally <djrscally@gmail.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
platform-driver-x86@vger.kernel.org, linux-leds@vger.kernel.org,
linux-gpio@vger.kernel.org, Kate Hsuan <hpa@redhat.com>,
Mark Pearson <markpearson@lenovo.com>,
Andy Yeh <andy.yeh@intel.com>, Hao Yao <hao.yao@intel.com>,
linux-media@vger.kernel.org
Subject: Re: [PATCH v4 04/11] leds: led-class: Add generic [devm_]led_get()
Date: Thu, 19 Jan 2023 15:15:56 +0100 [thread overview]
Message-ID: <53af2be7-8a10-2ea4-83f7-501668f8042a@redhat.com> (raw)
In-Reply-To: <CAHp75VcCEJVx71H9MqNqPP+KAMDzgpx5v1P9h_h375ejeMa2+g@mail.gmail.com>
Hi,
On 1/19/23 15:04, Andy Shevchenko wrote:
> On Thu, Jan 19, 2023 at 3:01 PM Hans de Goede <hdegoede@redhat.com> wrote:
>>
>> Add a generic [devm_]led_get() method which can be used on both devicetree
>> and non devicetree platforms to get a LED classdev associated with
>> a specific function on a specific device, e.g. the privacy LED associated
>> with a specific camera sensor.
>>
>> Note unlike of_led_get() this takes a string describing the function
>> rather then an index. This is done because e.g. camera sensors might
>
> than
>
>> have a privacy LED, or a flash LED, or both and using an index
>> approach leaves it unclear what the function of index 0 is if there is
>> only 1 LED.
>>
>> This uses a lookup-table mechanism for non devicetree platforms.
>> This allows the platform code to map specific LED class_dev-s to a specific
>> device,function combinations this way.
>>
>> For devicetree platforms getting the LED by function-name could be made
>> to work using the standard devicetree pattern of adding a -names string
>> array to map names to the indexes.
>
> ...
>
>> +/*
>> + * This is used to tell led_get() device which led_classdev to return for
>> + * a specific consumer device-name, function pair on non devicetree platforms.
>> + * Note all strings must be set.
>> + */
>> +struct led_lookup_data {
>> + struct list_head list;
>> + const char *led_name;
>> + const char *consumer_dev_name;
>> + const char *consumer_function;
>> +};
>
> I'm wondering if it would be better to have something like
>
> struct led_function_map {
> const char *name;
> const char *function;
> };
>
> struct led_lookup_data {
> struct list_head list;
> const char *dev_name;
> const struct led_function_map map[];
> };
Thank you for the review.
Since led_lookup_data now is variable sized, AFAIK this means that
the led_lookup_data now can no longer be embedded in another struct and
instead it must always be dynamically allocated, including adding error
checking + rollback for said allocation.
If you look at the only current consumer of this:
[PATCH v4 09/11] platform/x86: int3472/discrete: Create a LED class device for the privacy LED
then the code there would become more complicated.
> as you may have more than one LED per the device and it would be a
> more compressed list in this case. I'm basically referring to the GPIO
> lookup table.
Right, but having more then 1 GPIO per device is quite common while
I expect having more then 1 (or maybe 2) LEDs per device to be rare while
at the same time the suggested change makes things slightly more
complicated for consumers of the API which know before hand how much
lookup entries they will need (typically 1).
So all in all I believe staying with the current implementation is better
but if there is a strong preference to switch to the structure you suggest
then I have no objection against that.
Regards,
Hans
next prev parent reply other threads:[~2023-01-19 14:17 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-19 13:00 [PATCH v4 00/11] leds: lookup-table support + int3472/media privacy LED support Hans de Goede
2023-01-19 13:00 ` [PATCH v4 01/11] leds: led-class: Add missing put_device() to led_put() Hans de Goede
2023-01-19 13:21 ` Andy Shevchenko
2023-01-20 7:23 ` Linus Walleij
2023-01-19 13:00 ` [PATCH v4 02/11] leds: led-class: Add led_module_get() helper Hans de Goede
2023-01-19 13:22 ` Andy Shevchenko
2023-01-20 7:24 ` Linus Walleij
2023-01-19 13:00 ` [PATCH v4 03/11] leds: led-class: Add __devm_led_get() helper Hans de Goede
2023-01-19 13:25 ` Andy Shevchenko
2023-01-20 7:25 ` Linus Walleij
2023-01-19 13:00 ` [PATCH v4 04/11] leds: led-class: Add generic [devm_]led_get() Hans de Goede
2023-01-19 14:04 ` Andy Shevchenko
2023-01-19 14:15 ` Hans de Goede [this message]
2023-01-19 14:54 ` Andy Shevchenko
2023-01-19 15:02 ` Hans de Goede
2023-01-20 7:26 ` Linus Walleij
2023-01-20 8:09 ` Lee Jones
2023-01-19 13:00 ` [PATCH v4 05/11] [RFC] leds: led-class: Add devicetree support to led_get() Hans de Goede
2023-01-19 13:29 ` Andy Shevchenko
2023-01-20 7:27 ` Linus Walleij
2023-01-19 13:00 ` [PATCH v4 06/11] media: v4l2-core: Built async and fwnode code into videodev.ko Hans de Goede
2023-01-19 19:47 ` kernel test robot
2023-01-20 10:43 ` Hans de Goede
2023-01-19 20:48 ` kernel test robot
2023-01-19 20:58 ` kernel test robot
2023-01-19 13:00 ` [PATCH v4 07/11] media: v4l2-core: Make the v4l2-core code enable/disable the privacy LED if present Hans de Goede
2023-01-19 13:00 ` [PATCH v4 08/11] platform/x86: int3472/discrete: Refactor GPIO to sensor mapping Hans de Goede
2023-01-19 13:00 ` [PATCH v4 09/11] platform/x86: int3472/discrete: Create a LED class device for the privacy LED Hans de Goede
2023-01-19 13:00 ` [PATCH v4 10/11] platform/x86: int3472/discrete: Move GPIO request to skl_int3472_register_clock() Hans de Goede
2023-01-19 13:00 ` [PATCH v4 11/11] platform/x86: int3472/discrete: Get the polarity from the _DSM entry Hans de Goede
2023-01-20 7:28 ` [PATCH v4 00/11] leds: lookup-table support + int3472/media privacy LED support Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53af2be7-8a10-2ea4-83f7-501668f8042a@redhat.com \
--to=hdegoede@redhat.com \
--cc=andy.shevchenko@gmail.com \
--cc=andy.yeh@intel.com \
--cc=andy@kernel.org \
--cc=djrscally@gmail.com \
--cc=hao.yao@intel.com \
--cc=hpa@redhat.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=lee@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=markgross@kernel.org \
--cc=markpearson@lenovo.com \
--cc=mchehab@kernel.org \
--cc=pavel@ucw.cz \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sakari.ailus@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).