Re: [PATCH 2/2] gpio: crystalcove: Set IRQ domain bus token to DOMAIN_BUS_WIRED

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

 



On Sat, Dec 25, 2021 at 2:00 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> For the CRC PMIC we end up with multiple irq-domains with the same fwnode.
> One for the irqchip which demultiplexes the actual PMIC interrupt into
> interrupts for the various cells (known as the level 1 interrupts);
>
> And 2 more for the irqchips which are part of the crystal_cove_gpio
> and crystal_cove_charger cells.
>
> This leads to the following error being printed when
> CONFIG_GENERIC_IRQ_DEBUGFS is enabled:
>  debugfs: File '\_SB.I2C7.PMIC' in directory 'domains' already present!
>
> Set the bus token of the main IRQ domain to DOMAIN_BUS_WIRED to avoid
> this error, this also allows irq_find_matching_fwspec() to find the
> right domain if necessary.
>
> Note all 3 domain registering drivers need to set the IRQ domain bus token.
> This is necessary because the IRQ domain code defaults to creating
> the debugfs dir with just the fwnode name and then renames it when
> the bus token is set. So each one starts with the same default name and
> all 3 must be given a different name to avoid problems when one of the
> other drivers loads and starts with the same default name.

Acked-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>

> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/gpio/gpio-crystalcove.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpio/gpio-crystalcove.c b/drivers/gpio/gpio-crystalcove.c
> index 5a909f3c79e8..b55c74a5e064 100644
> --- a/drivers/gpio/gpio-crystalcove.c
> +++ b/drivers/gpio/gpio-crystalcove.c
> @@ -370,7 +370,14 @@ static int crystalcove_gpio_probe(struct platform_device *pdev)
>                 return retval;
>         }
>
> -       return devm_gpiochip_add_data(&pdev->dev, &cg->chip, cg);
> +       retval = devm_gpiochip_add_data(&pdev->dev, &cg->chip, cg);
> +       if (retval)
> +               return retval;
> +
> +       /* Distuingish IRQ domain from others sharing (MFD) the same fwnode */
> +       irq_domain_update_bus_token(cg->chip.irq.domain, DOMAIN_BUS_WIRED);
> +
> +       return 0;
>  }
>
>  static struct platform_driver crystalcove_gpio_driver = {
> --
> 2.33.1
>


-- 
With Best Regards,
Andy Shevchenko



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux