Re: [PATCH] usb: typec: tcpm/tcpci_maxim: better interrupt name

From: André Draszik
Date: Tue Feb 25 2025 - 03:42:52 EST


Hi Will,

On Fri, 2025-02-14 at 13:57 -0800, William McVicker wrote:
> On 02/13/2025, André Draszik wrote:
> > This changes the output of /proc/interrupts from the non-descriptive:
> >     1-0025
> > (or similar) to a more descriptive:
> >     1-0025-max33359
> >
> > This makes it easier to find the device, in particular if there are
> > multiple i2c devices, as one doesn't have to remember (or lookup) where
> > it is located.
> >
> > Signed-off-by: André Draszik <andre.draszik@xxxxxxxxxx>
> > ---
> >  drivers/usb/typec/tcpm/tcpci_maxim_core.c | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/usb/typec/tcpm/tcpci_maxim_core.c b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> > index fd1b80593367..46fc626589db 100644
> > --- a/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> > +++ b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> > @@ -420,12 +420,14 @@ static irqreturn_t max_tcpci_isr(int irq, void *dev_id)
> >   return IRQ_WAKE_THREAD;
> >  }
> >  
> > -static int max_tcpci_init_alert(struct max_tcpci_chip *chip, struct i2c_client *client)
> > +static int max_tcpci_init_alert(struct max_tcpci_chip *chip,
> > + struct i2c_client *client,
> > + const char *name)
> >  {
> >   int ret;
> >  
> >   ret = devm_request_threaded_irq(chip->dev, client->irq, max_tcpci_isr, max_tcpci_irq,
> > - (IRQF_TRIGGER_LOW | IRQF_ONESHOT), dev_name(chip->dev),
> > + (IRQF_TRIGGER_LOW | IRQF_ONESHOT), name,
> >   chip);
> >  
> >   if (ret < 0)
> > @@ -485,6 +487,7 @@ static int max_tcpci_probe(struct i2c_client *client)
> >   int ret;
> >   struct max_tcpci_chip *chip;
> >   u8 power_status;
> > + const char *name;
> >  
> >   chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
> >   if (!chip)
> > @@ -531,7 +534,11 @@ static int max_tcpci_probe(struct i2c_client *client)
> >  
> >   chip->port = tcpci_get_tcpm_port(chip->tcpci);
> >  
> > - ret = max_tcpci_init_alert(chip, client);
> > + name = devm_kasprintf(&client->dev, GFP_KERNEL, "%s-%s",
> > +       dev_name(&client->dev), client->name);
> > + if (!name)
> > + return -ENOMEM;
> > + ret = max_tcpci_init_alert(chip, client, name);
> >   if (ret < 0)
> >   return dev_err_probe(&client->dev, ret,
> >        "IRQ initialization failed\n");
>
> Can you just change the `init_name` instead like this?
>
>   chip->client->dev.init_name = name;
>
> That way calling `dev_name()` will get you this more informative name as well?

I don't think that member is supposed to be set by anybody. Looking
at device_add(), this seems to only be meant to be statically set
by statically allocated devices and is cleared upon device_add().
Essentially no driver sets this in the kernel.

So it doesn't appear to be appropriate.

Cheers,
Andre'