Re: [PATCH v2] ACPI: LPSS: Add 80862289 ACPI _HID for second PWM controller on Cherry Trail

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 18, 2023 at 10:54 AM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> On some Cherry Trail devices the second PWM controller uses
> 80862289 as ACPI _HID, rather then using 80862288 as is done
> for both controllers on most models.
>
> Add the missing 80862289 ACPI _HID, note this uses its own
> lpss_device_desc, without ".setup = bsw_pwm_setup" so that
> the pwm_lookup is not added for it.
> On devices where both controllers use the 80862288 _HID bsw_pwm_setup()
> does a UID check to avoid registering the lookup for the second
> controller but that will not work here.
>
> Adding the missing id fixes the second PWM controller no longer
> working after the entire LPSS1 island has been in D3 at least
> once, which causes the contents of the LPSS private registers
> to get lost. Adding the _HID makes acpi_lpss restore these
> when the controller moves from D3 to D0.
>
> Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
> Changes in v2:
> - s/HID/_HID/
> - Add Mika's Reviewed-by
> ---
>  drivers/acpi/acpi_lpss.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index f08ffa75f4a7..77186f084d3a 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -271,6 +271,12 @@ static const struct lpss_device_desc bsw_pwm_dev_desc = {
>         .resume_from_noirq = true,
>  };
>
> +static const struct lpss_device_desc bsw_pwm2_dev_desc = {
> +       .flags = LPSS_SAVE_CTX_ONCE | LPSS_NO_D3_DELAY,
> +       .prv_offset = 0x800,
> +       .resume_from_noirq = true,
> +};
> +
>  static const struct lpss_device_desc byt_uart_dev_desc = {
>         .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
>         .clk_con_id = "baudclk",
> @@ -368,6 +374,7 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = {
>         /* Braswell LPSS devices */
>         { "80862286", LPSS_ADDR(lpss_dma_desc) },
>         { "80862288", LPSS_ADDR(bsw_pwm_dev_desc) },
> +       { "80862289", LPSS_ADDR(bsw_pwm2_dev_desc) },
>         { "8086228A", LPSS_ADDR(bsw_uart_dev_desc) },
>         { "8086228E", LPSS_ADDR(bsw_spi_dev_desc) },
>         { "808622C0", LPSS_ADDR(lpss_dma_desc) },
> --

Applied as 6.4 material, thanks!



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux