hi Kevin, On 12/6/19 1:58 AM, Kevin Hilman wrote: > Guillaume La Roque <glaroque@xxxxxxxxxxxx> writes: > >> Actually IRQ can be found from GPIO but all platorms don't support > nit: s/platorms/platforms/ will fix in v3 >> gpiod_to_irq, it's the case on amlogic chip. >> so to have possibility to use interrupt mode we need to add interrupts >> field in node and support it in driver. >> >> Signed-off-by: Guillaume La Roque <glaroque@xxxxxxxxxxxx> >> --- >> sorry for noise, >> >> v2 is for rebasing on master branch >> >> guillaume >> >> drivers/bluetooth/hci_bcm.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c >> index f8f5c593a05c..9f52d57c56de 100644 >> --- a/drivers/bluetooth/hci_bcm.c >> +++ b/drivers/bluetooth/hci_bcm.c >> @@ -1409,6 +1409,7 @@ static int bcm_serdev_probe(struct serdev_device *serdev) >> { >> struct bcm_device *bcmdev; >> const struct bcm_device_data *data; >> + struct platform_device *pdev; >> int err; >> >> bcmdev = devm_kzalloc(&serdev->dev, sizeof(*bcmdev), GFP_KERNEL); >> @@ -1421,6 +1422,8 @@ static int bcm_serdev_probe(struct serdev_device *serdev) >> #endif >> bcmdev->serdev_hu.serdev = serdev; >> serdev_device_set_drvdata(serdev, bcmdev); >> + pdev = to_platform_device(bcmdev->dev); >> + bcmdev->irq = platform_get_irq(pdev, 0); > I don't know this driver well enough to be sure, but don't you need some > error checking here? > > If this fails (on platforms with no IRQ defined), is an error code in > bcmdev->irq going to affect later code that tries to setup IRQs? not needed to do something here because bcm_get_resources function check irq <=0 if yes it check if host-wakeup gpio was defined in node and try a gpiod_to_irq. at the end in bcm_request_irq function i check if irq <=0 if yes return EOPNOTSUPP > Kevin > Guillaume