Re: [PATCH RFC] usb: typec: tipd: Add support for polling interrupts status when interrupt line is not connected

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

 



On Wed, Apr 13, 2022 at 03:32:50PM +0530, Aswath Govindraju wrote:
> Hi Heikki,
> 
> On 13/04/22 15:04, Heikki Krogerus wrote:
> > Hi Aswath,
> > 
> > On Tue, Apr 12, 2022 at 08:20:58PM +0530, Aswath Govindraju wrote:
> >> In some cases the interrupt line from the pd controller may not be
> >> connected. In these cases, poll the status of various events.
> > 
> > Well, if the alert/interrupt line is not connected anywhere, then
> > polling is the only way to go. I'm fine with that, but the driver
> > really should be told that there is no interrupt. Using polling
> > whenever request_threaded_irq() returns -EINVAL is wrong. We really
> > should not even attempt to request the interrupt if there is no
> > interrupt for the device.
> > 
> > Isn't there any way you can get that information from DT? Or how is
> > the device enumerated in your case?
> > 
> 
> Would checking if (client->irq) field is populated, to decide between
> polling and interrupts be a good approach?
> 
> I am sorry but I did not understand what you meant by device getting
> enumerated. The device is on an I2C bus and gets enumerated based on the
> I2C address provided. The device does not have I2C_IRQ line connected,
> in my case.

"I2C devices are not enumerated at hardware level":
https://www.kernel.org/doc/html/latest/i2c/instantiating-devices.html

So your PD controller I2C slave device has to be either described in
Devicetree or ACPI tables, or there is a board file or platform driver
that actually populates the device for it.

Can you tell a little bit about the platform you are running? Is it
ARM, x86, or what, and is it ACPI or DT platform?

thanks,

-- 
heikki



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux