Message ID | 1473501690-11987-1-git-send-email-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Michael Ellerman <mpe@ellerman.id.au> writes: > We'd like to eventually remove NO_IRQ on powerpc, so remove usages of it > from electra_cf.c which is a powerpc-only driver. > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > --- > drivers/pcmcia/electra_cf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Ping anyone? Or should I merge this via the powerpc tree? cheers > diff --git a/drivers/pcmcia/electra_cf.c b/drivers/pcmcia/electra_cf.c > index 4d7bc3f4124a..c6fe2a4a7a6a 100644 > --- a/drivers/pcmcia/electra_cf.c > +++ b/drivers/pcmcia/electra_cf.c > @@ -207,7 +207,7 @@ static int electra_cf_probe(struct platform_device *ofdev) > return -ENOMEM; > > setup_timer(&cf->timer, electra_cf_timer, (unsigned long)cf); > - cf->irq = NO_IRQ; > + cf->irq = 0; > > cf->ofdev = ofdev; > cf->mem_phys = mem.start; > @@ -313,7 +313,7 @@ fail3: > fail2: > release_mem_region(cf->mem_phys, cf->mem_size); > fail1: > - if (cf->irq != NO_IRQ) > + if (cf->irq) > free_irq(cf->irq, cf); > > if (cf->io_virt) > -- > 2.7.4
On Tue, Mar 14, 2017 at 11:51 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: > Michael Ellerman <mpe@ellerman.id.au> writes: > >> We'd like to eventually remove NO_IRQ on powerpc, so remove usages of it >> from electra_cf.c which is a powerpc-only driver. >> >> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> >> --- >> drivers/pcmcia/electra_cf.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) > > Ping anyone? > > Or should I merge this via the powerpc tree? That's what I would recommend for a powerpc specific pcmcia driver, yes. Looking at the bigger picture of powerpc drivers using NO_IRQ, I also see these others: drivers/ata/pata_mpc52xx.c: if (ata_irq == NO_IRQ) { drivers/ata/sata_dwc_460ex.c:#ifndef NO_IRQ drivers/ata/sata_dwc_460ex.c:#define NO_IRQ 0 drivers/ata/sata_dwc_460ex.c: if (hsdev->dma->irq == NO_IRQ) { drivers/ata/sata_dwc_460ex.c: if (irq == NO_IRQ) { drivers/iommu/fsl_pamu.c: if (irq == NO_IRQ) { drivers/iommu/fsl_pamu.c: if (irq != NO_IRQ) drivers/media/platform/fsl-viu.c: if (viu_irq == NO_IRQ) { drivers/mtd/nand/mpc5121_nfc.c: if (prv->irq == NO_IRQ) { drivers/pcmcia/electra_cf.c: cf->irq = NO_IRQ; drivers/pcmcia/electra_cf.c: if (cf->irq != NO_IRQ) drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_low == NO_IRQ) { drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_high != NO_IRQ && drivers/spi/spi-mpc52xx.c: if (status && (irq != NO_IRQ)) drivers/tty/ehv_bytechan.c: if (stdout_irq == NO_IRQ) { drivers/tty/ehv_bytechan.c: if ((bc->rx_irq == NO_IRQ) || (bc->tx_irq == NO_IRQ)) { drivers/tty/serial/cpm_uart/cpm_uart_core.c: if (pinfo->port.irq == NO_IRQ) { drivers/uio/uio_fsl_elbc_gpcm.c: if (irq != NO_IRQ) { drivers/uio/uio_fsl_elbc_gpcm.c: irq = NO_IRQ; drivers/uio/uio_fsl_elbc_gpcm.c: irq != NO_IRQ ? irq : -1); drivers/usb/host/ehci-grlib.c: if (irq == NO_IRQ) { drivers/usb/host/ehci-ppc-of.c: if (irq == NO_IRQ) { drivers/usb/host/fhci-hcd.c: if (usb_irq == NO_IRQ) { drivers/usb/host/ohci-ppc-of.c: if (irq == NO_IRQ) { drivers/usb/host/uhci-grlib.c: if (irq == NO_IRQ) { drivers/video/fbdev/mb862xx/mb862xxfbdrv.c: if (par->irq == NO_IRQ) { drivers/virt/fsl_hypervisor.c: if (!handle || (irq == NO_IRQ)) { include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) include/soc/fsl/qe/qe_ic.h: if (cascade_irq == NO_IRQ) include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) Did you have other pending patches for those? Arnd
Arnd Bergmann <arnd@arndb.de> writes: > On Tue, Mar 14, 2017 at 11:51 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >> Michael Ellerman <mpe@ellerman.id.au> writes: >> >>> We'd like to eventually remove NO_IRQ on powerpc, so remove usages of it >>> from electra_cf.c which is a powerpc-only driver. >>> >>> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> >>> --- >>> drivers/pcmcia/electra_cf.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> Ping anyone? >> >> Or should I merge this via the powerpc tree? > > That's what I would recommend for a powerpc specific pcmcia driver, yes. Suits me. > Looking at the bigger picture of powerpc drivers using NO_IRQ, I also > see these others: > > drivers/ata/pata_mpc52xx.c: if (ata_irq == NO_IRQ) { > drivers/ata/sata_dwc_460ex.c:#ifndef NO_IRQ > drivers/ata/sata_dwc_460ex.c:#define NO_IRQ 0 > drivers/ata/sata_dwc_460ex.c: if (hsdev->dma->irq == NO_IRQ) { > drivers/ata/sata_dwc_460ex.c: if (irq == NO_IRQ) { > drivers/iommu/fsl_pamu.c: if (irq == NO_IRQ) { > drivers/iommu/fsl_pamu.c: if (irq != NO_IRQ) > drivers/media/platform/fsl-viu.c: if (viu_irq == NO_IRQ) { > drivers/mtd/nand/mpc5121_nfc.c: if (prv->irq == NO_IRQ) { > drivers/pcmcia/electra_cf.c: cf->irq = NO_IRQ; > drivers/pcmcia/electra_cf.c: if (cf->irq != NO_IRQ) > drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if > no interrupt is pending. */ > drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; > drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if > no interrupt is pending. */ > drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; > drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_low == NO_IRQ) { > drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_high != NO_IRQ && > drivers/spi/spi-mpc52xx.c: if (status && (irq != NO_IRQ)) > drivers/tty/ehv_bytechan.c: if (stdout_irq == NO_IRQ) { > drivers/tty/ehv_bytechan.c: if ((bc->rx_irq == NO_IRQ) || > (bc->tx_irq == NO_IRQ)) { > drivers/tty/serial/cpm_uart/cpm_uart_core.c: if (pinfo->port.irq == NO_IRQ) { > drivers/uio/uio_fsl_elbc_gpcm.c: if (irq != NO_IRQ) { > drivers/uio/uio_fsl_elbc_gpcm.c: irq = NO_IRQ; > drivers/uio/uio_fsl_elbc_gpcm.c: irq != NO_IRQ ? irq : -1); > drivers/usb/host/ehci-grlib.c: if (irq == NO_IRQ) { > drivers/usb/host/ehci-ppc-of.c: if (irq == NO_IRQ) { > drivers/usb/host/fhci-hcd.c: if (usb_irq == NO_IRQ) { > drivers/usb/host/ohci-ppc-of.c: if (irq == NO_IRQ) { > drivers/usb/host/uhci-grlib.c: if (irq == NO_IRQ) { > drivers/video/fbdev/mb862xx/mb862xxfbdrv.c: if (par->irq == NO_IRQ) { > drivers/virt/fsl_hypervisor.c: if (!handle || (irq == NO_IRQ)) { > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > include/soc/fsl/qe/qe_ic.h: if (cascade_irq == NO_IRQ) > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > Did you have other pending patches for those? No. I stayed away from anything FSL related as I was under the impression some of them were being ported to arch/arm, which uses -1 for NO_IRQ IIUIC. eg. all of include/soc/fsl and drivers/soc/fsl was moved from arch/powerpc in commit 7aa1aa6ecec2, which said: QE: Move QE from arch/powerpc to drivers/soc ls1 has qe and ls1 has arm cpu. move qe from arch/powerpc to drivers/soc/fsl to adapt to powerpc and arm But looking at the Kconfigs it looks like they're still only selectable on PPC. So that's a bit annoying. I'll do patches for everything above that's not drivers/soc or include/soc and hopefully we can hear from someone at NXP on the plans for getting the soc parts enabled on arm. cheers
On Wed, Mar 15, 2017 at 6:35 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: > Arnd Bergmann <arnd@arndb.de> writes: >> On Tue, Mar 14, 2017 at 11:51 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >>> Michael Ellerman <mpe@ellerman.id.au> writes: >>> >> >> drivers/ata/pata_mpc52xx.c: if (ata_irq == NO_IRQ) { >> drivers/ata/sata_dwc_460ex.c:#ifndef NO_IRQ >> drivers/ata/sata_dwc_460ex.c:#define NO_IRQ 0 >> drivers/ata/sata_dwc_460ex.c: if (hsdev->dma->irq == NO_IRQ) { >> drivers/ata/sata_dwc_460ex.c: if (irq == NO_IRQ) { >> drivers/iommu/fsl_pamu.c: if (irq == NO_IRQ) { >> drivers/iommu/fsl_pamu.c: if (irq != NO_IRQ) >> drivers/media/platform/fsl-viu.c: if (viu_irq == NO_IRQ) { >> drivers/mtd/nand/mpc5121_nfc.c: if (prv->irq == NO_IRQ) { >> drivers/pcmcia/electra_cf.c: cf->irq = NO_IRQ; >> drivers/pcmcia/electra_cf.c: if (cf->irq != NO_IRQ) >> drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if >> no interrupt is pending. */ >> drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; >> drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if >> no interrupt is pending. */ >> drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; >> drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_low == NO_IRQ) { >> drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_high != NO_IRQ && >> drivers/spi/spi-mpc52xx.c: if (status && (irq != NO_IRQ)) >> drivers/tty/ehv_bytechan.c: if (stdout_irq == NO_IRQ) { >> drivers/tty/ehv_bytechan.c: if ((bc->rx_irq == NO_IRQ) || >> (bc->tx_irq == NO_IRQ)) { >> drivers/tty/serial/cpm_uart/cpm_uart_core.c: if (pinfo->port.irq == NO_IRQ) { >> drivers/uio/uio_fsl_elbc_gpcm.c: if (irq != NO_IRQ) { >> drivers/uio/uio_fsl_elbc_gpcm.c: irq = NO_IRQ; >> drivers/uio/uio_fsl_elbc_gpcm.c: irq != NO_IRQ ? irq : -1); >> drivers/usb/host/ehci-grlib.c: if (irq == NO_IRQ) { >> drivers/usb/host/ehci-ppc-of.c: if (irq == NO_IRQ) { >> drivers/usb/host/fhci-hcd.c: if (usb_irq == NO_IRQ) { >> drivers/usb/host/ohci-ppc-of.c: if (irq == NO_IRQ) { >> drivers/usb/host/uhci-grlib.c: if (irq == NO_IRQ) { >> drivers/video/fbdev/mb862xx/mb862xxfbdrv.c: if (par->irq == NO_IRQ) { >> drivers/virt/fsl_hypervisor.c: if (!handle || (irq == NO_IRQ)) { >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq == NO_IRQ) >> include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) >> >> Did you have other pending patches for those? > > No. I stayed away from anything FSL related as I was under the > impression some of them were being ported to arch/arm, which uses -1 for > NO_IRQ IIUIC. > > eg. all of include/soc/fsl and drivers/soc/fsl was moved from > arch/powerpc in commit 7aa1aa6ecec2, which said: > > QE: Move QE from arch/powerpc to drivers/soc > > ls1 has qe and ls1 has arm cpu. > move qe from arch/powerpc to drivers/soc/fsl > to adapt to powerpc and arm > > But looking at the Kconfigs it looks like they're still only selectable > on PPC. So that's a bit annoying. > > I'll do patches for everything above that's not drivers/soc or > include/soc and hopefully we can hear from someone at NXP on the plans > for getting the soc parts enabled on arm. I think the removal of the NO_IRQ references is a requirement for getting the drivers working properly on ARM, as the OF platform code will use '0' for invalid IRQs. Arnd
On Wed, 2017-03-15 at 16:35 +1100, Michael Ellerman wrote: > Arnd Bergmann <arnd@arndb.de> writes: > > > > > On Tue, Mar 14, 2017 at 11:51 AM, Michael Ellerman <mpe@ellerman.id.au> > > wrote: > > > > > > Michael Ellerman <mpe@ellerman.id.au> writes: > > > > > > > > > > > We'd like to eventually remove NO_IRQ on powerpc, so remove usages of > > > > it > > > > from electra_cf.c which is a powerpc-only driver. > > > > > > > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > > > > --- > > > > drivers/pcmcia/electra_cf.c | 4 ++-- > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > Ping anyone? > > > > > > Or should I merge this via the powerpc tree? > > That's what I would recommend for a powerpc specific pcmcia driver, yes. > Suits me. > > > > > Looking at the bigger picture of powerpc drivers using NO_IRQ, I also > > see these others: > > > > drivers/ata/pata_mpc52xx.c: if (ata_irq == NO_IRQ) { > > drivers/ata/sata_dwc_460ex.c:#ifndef NO_IRQ > > drivers/ata/sata_dwc_460ex.c:#define NO_IRQ 0 > > drivers/ata/sata_dwc_460ex.c: if (hsdev->dma->irq == NO_IRQ) { > > drivers/ata/sata_dwc_460ex.c: if (irq == NO_IRQ) { > > drivers/iommu/fsl_pamu.c: if (irq == NO_IRQ) { > > drivers/iommu/fsl_pamu.c: if (irq != NO_IRQ) > > drivers/media/platform/fsl-viu.c: if (viu_irq == NO_IRQ) { > > drivers/mtd/nand/mpc5121_nfc.c: if (prv->irq == NO_IRQ) { > > drivers/pcmcia/electra_cf.c: cf->irq = NO_IRQ; > > drivers/pcmcia/electra_cf.c: if (cf->irq != NO_IRQ) > > drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if > > no interrupt is pending. */ > > drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; > > drivers/soc/fsl/qe/qe_ic.c:/* Return an interrupt vector or NO_IRQ if > > no interrupt is pending. */ > > drivers/soc/fsl/qe/qe_ic.c: return NO_IRQ; > > drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_low == NO_IRQ) { > > drivers/soc/fsl/qe/qe_ic.c: if (qe_ic->virq_high != NO_IRQ && > > drivers/spi/spi-mpc52xx.c: if (status && (irq != NO_IRQ)) > > drivers/tty/ehv_bytechan.c: if (stdout_irq == NO_IRQ) { > > drivers/tty/ehv_bytechan.c: if ((bc->rx_irq == NO_IRQ) || > > (bc->tx_irq == NO_IRQ)) { > > drivers/tty/serial/cpm_uart/cpm_uart_core.c: if (pinfo->port.irq == > > NO_IRQ) { > > drivers/uio/uio_fsl_elbc_gpcm.c: if (irq != NO_IRQ) { > > drivers/uio/uio_fsl_elbc_gpcm.c: irq = NO_IRQ; > > drivers/uio/uio_fsl_elbc_gpcm.c: irq != NO_IRQ ? irq : > > -1); > > drivers/usb/host/ehci-grlib.c: if (irq == NO_IRQ) { > > drivers/usb/host/ehci-ppc-of.c: if (irq == NO_IRQ) { > > drivers/usb/host/fhci-hcd.c: if (usb_irq == NO_IRQ) { > > drivers/usb/host/ohci-ppc-of.c: if (irq == NO_IRQ) { > > drivers/usb/host/uhci-grlib.c: if (irq == NO_IRQ) { > > drivers/video/fbdev/mb862xx/mb862xxfbdrv.c: if (par->irq == NO_IRQ) { > > drivers/virt/fsl_hypervisor.c: if (!handle || (irq == NO_IRQ)) { > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq == NO_IRQ) > > include/soc/fsl/qe/qe_ic.h: if (cascade_irq != NO_IRQ) > > > > Did you have other pending patches for those? > No. I stayed away from anything FSL related as I was under the > impression some of them were being ported to arch/arm, which uses -1 for > NO_IRQ IIUIC. > > eg. all of include/soc/fsl and drivers/soc/fsl was moved from > arch/powerpc in commit 7aa1aa6ecec2, which said: > > QE: Move QE from arch/powerpc to drivers/soc > > ls1 has qe and ls1 has arm cpu. > move qe from arch/powerpc to drivers/soc/fsl > to adapt to powerpc and arm > > But looking at the Kconfigs it looks like they're still only selectable > on PPC. So that's a bit annoying. > > I'll do patches for everything above that's not drivers/soc or > include/soc and hopefully we can hear from someone at NXP on the plans > for getting the soc parts enabled on arm. qe_ic is handled by https://lkml.org/lkml/2017/3/13/1234 -Scott
Scott Wood <oss@buserror.net> writes: > On Wed, 2017-03-15 at 16:35 +1100, Michael Ellerman wrote: >> I'll do patches for everything above that's not drivers/soc or >> include/soc and hopefully we can hear from someone at NXP on the plans >> for getting the soc parts enabled on arm. > > qe_ic is handled by https://lkml.org/lkml/2017/3/13/1234 Thanks. cheers
Arnd Bergmann <arnd@arndb.de> writes: > On Wed, Mar 15, 2017 at 6:35 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >> I'll do patches for everything above that's not drivers/soc or >> include/soc and hopefully we can hear from someone at NXP on the plans >> for getting the soc parts enabled on arm. > > I think the removal of the NO_IRQ references is a requirement for > getting the drivers working properly on ARM, as the OF platform > code will use '0' for invalid IRQs. OK. So the #define NO_IRQ (-1) in arch/arm/include/asm/irq.h is a red herring and should be ignored for anything modern? cheers
On Thu, Mar 16, 2017 at 10:55 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: > Arnd Bergmann <arnd@arndb.de> writes: >> On Wed, Mar 15, 2017 at 6:35 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >>> I'll do patches for everything above that's not drivers/soc or >>> include/soc and hopefully we can hear from someone at NXP on the plans >>> for getting the soc parts enabled on arm. >> >> I think the removal of the NO_IRQ references is a requirement for >> getting the drivers working properly on ARM, as the OF platform >> code will use '0' for invalid IRQs. > > OK. So the #define NO_IRQ (-1) in arch/arm/include/asm/irq.h is a red > herring and should be ignored for anything modern? Correct. There are a couple of older (non-DT) platforms that still rely on it, and I also have patches for those, which I intend to revisit at some point. Arnd
On Sat, 2016-09-10 at 10:01:30 UTC, Michael Ellerman wrote: > We'd like to eventually remove NO_IRQ on powerpc, so remove usages of it > from electra_cf.c which is a powerpc-only driver. > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Applied to powerpc next. https://git.kernel.org/powerpc/c/6c8343e82bec46ece4fe773304a84c cheers
diff --git a/drivers/pcmcia/electra_cf.c b/drivers/pcmcia/electra_cf.c index 4d7bc3f4124a..c6fe2a4a7a6a 100644 --- a/drivers/pcmcia/electra_cf.c +++ b/drivers/pcmcia/electra_cf.c @@ -207,7 +207,7 @@ static int electra_cf_probe(struct platform_device *ofdev) return -ENOMEM; setup_timer(&cf->timer, electra_cf_timer, (unsigned long)cf); - cf->irq = NO_IRQ; + cf->irq = 0; cf->ofdev = ofdev; cf->mem_phys = mem.start; @@ -313,7 +313,7 @@ fail3: fail2: release_mem_region(cf->mem_phys, cf->mem_size); fail1: - if (cf->irq != NO_IRQ) + if (cf->irq) free_irq(cf->irq, cf); if (cf->io_virt)
We'd like to eventually remove NO_IRQ on powerpc, so remove usages of it from electra_cf.c which is a powerpc-only driver. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- drivers/pcmcia/electra_cf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)