Quoting Wolfram Sang (2019-07-31 07:26:46) > Hi Stephen, > > > There were some comments about adding an 'optional' platform_get_irq() > > API in v4. This series doesn't include that, but I can add such an API > > if it's required. I started to look into how it might work and got hung > > up on what an optional IRQ means. I suppose it means that in DT there > > isn't an 'interrupts' property in the device node, but in ACPI based > > firmware I'm not sure what that would correspond to. Furthermore, the > > return value is hard to comprehend. Do we return an error when an > > optional irq can't be found? It doesn't seem safe to return 0 because > > sometimes 0 is a valid IRQ. Do other errors in parsing the IRQ > > constitute a failure when the IRQ is optional? > > Some time ago, I tried a series like yours and got stuck at this very > point. I found drivers where using an interrupt was optional and > platform_get_irq() returning a failure wasn't fatal. The drivers used > PIO then or dropped some additional functionality. Some of them were > very old. > > I didn't like the idea that platform_get_irq() will spit out errors for > those drivers, yet I couldn't create a suitable cocci-script to convert > drivers to use the *_optional callback where possible. So, I neither > created the optional callback. > > I still have doubts of unneeded error messages popping up. Has this been > discussed already? (Sorry, I missed the first iterations of this series)
Not heavily discussed, but it was mentioned in an earlier round. If these drivers pop up, I think we can have another function like platform_get_irq_probe() or platform_get_irq_nowarn() that doesn't print an error message. Then we can convert the drivers that are poking around for interrupts to use this new function instead. It isn't the same as a platform_get_optional_irq() API because it returns an error when the irq isn't there or we fail to parse something, but at least the error message is gone.
