diff mbox series

ACPI: LPSS: Add pwm_lookup_table entry for second PWM on CHT/BSW devices

Message ID 20230509115226.287318-1-hdegoede@redhat.com (mailing list archive)
State Superseded, archived
Headers show
Series ACPI: LPSS: Add pwm_lookup_table entry for second PWM on CHT/BSW devices | expand

Commit Message

Hans de Goede May 9, 2023, 11:52 a.m. UTC
BSW PWM2 is used for backlight control for fixed (etched into the glass)
touch controls on some models.

Add an entry for the second PWM controller to bsw_pwm_lookup,
so that drivers can use pwm_get() to get a referene to it.

These touch-controls have specialized drivers which bind to different
devices on different models, so the consumer-device-name in the lookup
table entry is set to NULL, so that only con-id matching is used.

The con-id is set to "pwm_soc_lpss_2" which describes the PWM controller
rather then the usual approach of describing its function.
The specialized (model specific) drivers which need access to the PWM
controller know they need the "pwm_soc_lpss_2" con-id.

Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/acpi/acpi_lpss.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Comments

Andy Shevchenko May 9, 2023, 12:27 p.m. UTC | #1
On Tue, May 9, 2023 at 2:52 PM Hans de Goede <hdegoede@redhat.com> wrote:
>
> BSW PWM2 is used for backlight control for fixed (etched into the glass)
> touch controls on some models.
>
> Add an entry for the second PWM controller to bsw_pwm_lookup,
> so that drivers can use pwm_get() to get a referene to it.

reference

> These touch-controls have specialized drivers which bind to different
> devices on different models, so the consumer-device-name in the lookup
> table entry is set to NULL, so that only con-id matching is used.
>
> The con-id is set to "pwm_soc_lpss_2" which describes the PWM controller
> rather then the usual approach of describing its function.

than

> The specialized (model specific) drivers which need access to the PWM
> controller know they need the "pwm_soc_lpss_2" con-id.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  drivers/acpi/acpi_lpss.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index 77186f084d3a..539e700de4d2 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -201,11 +201,19 @@ static void byt_i2c_setup(struct lpss_private_data *pdata)
>         writel(0, pdata->mmio_base + LPSS_I2C_ENABLE);
>  }
>
> -/* BSW PWM used for backlight control by the i915 driver */
> +/*
> + * BSW PWM1 is used for backlight control by the i915 driver
> + * BSW PWM2 is used for backlight control for fixed (etched into the glass)
> + * touch controls on some models. These touch-controls have specialized
> + * drivers which know they need the "pwm_soc_lpss_2" con-id.
> + */
>  static struct pwm_lookup bsw_pwm_lookup[] = {
>         PWM_LOOKUP_WITH_MODULE("80862288:00", 0, "0000:00:02.0",
>                                "pwm_soc_backlight", 0, PWM_POLARITY_NORMAL,
>                                "pwm-lpss-platform"),
> +       PWM_LOOKUP_WITH_MODULE("80862289:00", 0, NULL,
> +                              "pwm_soc_lpss_2", 0, PWM_POLARITY_NORMAL,
> +                              "pwm-lpss-platform"),
>  };
>
>  static void bsw_pwm_setup(struct lpss_private_data *pdata)
> --
> 2.40.1
>
Uwe Kleine-König May 9, 2023, 12:35 p.m. UTC | #2
On Tue, May 09, 2023 at 01:52:26PM +0200, Hans de Goede wrote:
> BSW PWM2 is used for backlight control for fixed (etched into the glass)
> touch controls on some models.
> 
> Add an entry for the second PWM controller to bsw_pwm_lookup,
> so that drivers can use pwm_get() to get a referene to it.
> 
> These touch-controls have specialized drivers which bind to different
> devices on different models, so the consumer-device-name in the lookup
> table entry is set to NULL, so that only con-id matching is used.
> 
> The con-id is set to "pwm_soc_lpss_2" which describes the PWM controller
> rather then the usual approach of describing its function.
> The specialized (model specific) drivers which need access to the PWM
> controller know they need the "pwm_soc_lpss_2" con-id.
> 
> Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

I don't understand the conditional before the call to pwm_add_table, but
I guess that's ok.

Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Best regards
Uwe
Andy Shevchenko May 9, 2023, 2:42 p.m. UTC | #3
On Tue, May 9, 2023 at 3:35 PM Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> wrote:
>
> On Tue, May 09, 2023 at 01:52:26PM +0200, Hans de Goede wrote:
> > BSW PWM2 is used for backlight control for fixed (etched into the glass)
> > touch controls on some models.
> >
> > Add an entry for the second PWM controller to bsw_pwm_lookup,
> > so that drivers can use pwm_get() to get a referene to it.
> >
> > These touch-controls have specialized drivers which bind to different
> > devices on different models, so the consumer-device-name in the lookup
> > table entry is set to NULL, so that only con-id matching is used.
> >
> > The con-id is set to "pwm_soc_lpss_2" which describes the PWM controller
> > rather then the usual approach of describing its function.
> > The specialized (model specific) drivers which need access to the PWM
> > controller know they need the "pwm_soc_lpss_2" con-id.
> >
> > Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>
> I don't understand the conditional before the call to pwm_add_table, but
> I guess that's ok.

There is a comment.
The _UID can be different for the _HID (so on some devices we have the
same _HID, but different _UIDs, i.e. '80862288 / 1', '80862288 / n'),
this is to prevent duplication for those, on the other hand the
devices where there are two different IDs, i.e. '80862288 / 1',
'80862289 / n', we expect to have the second one only when the first
one is present. At the same time we have no callback for the second
one at all. I.o.w. for the '80862289' we add the table when '80862288
/ 1' is enumerated.
diff mbox series

Patch

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 77186f084d3a..539e700de4d2 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -201,11 +201,19 @@  static void byt_i2c_setup(struct lpss_private_data *pdata)
 	writel(0, pdata->mmio_base + LPSS_I2C_ENABLE);
 }
 
-/* BSW PWM used for backlight control by the i915 driver */
+/*
+ * BSW PWM1 is used for backlight control by the i915 driver
+ * BSW PWM2 is used for backlight control for fixed (etched into the glass)
+ * touch controls on some models. These touch-controls have specialized
+ * drivers which know they need the "pwm_soc_lpss_2" con-id.
+ */
 static struct pwm_lookup bsw_pwm_lookup[] = {
 	PWM_LOOKUP_WITH_MODULE("80862288:00", 0, "0000:00:02.0",
 			       "pwm_soc_backlight", 0, PWM_POLARITY_NORMAL,
 			       "pwm-lpss-platform"),
+	PWM_LOOKUP_WITH_MODULE("80862289:00", 0, NULL,
+			       "pwm_soc_lpss_2", 0, PWM_POLARITY_NORMAL,
+			       "pwm-lpss-platform"),
 };
 
 static void bsw_pwm_setup(struct lpss_private_data *pdata)