From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: David Woodhouse <dwmw2@infradead.org>
Cc: linuxppc-dev@ozlabs.org, jgarzik@pobox.com, alan@lxorguk.ukuu.org.uk
Subject: Re: [PATCH] Fix Maple PATA IRQ assignment.
Date: Tue, 02 Jan 2007 11:18:06 +1100 [thread overview]
Message-ID: <1167697087.23340.162.camel@localhost.localdomain> (raw)
In-Reply-To: <1167679875.22068.350.camel@pmac.infradead.org>
On Mon, 2007-01-01 at 19:31 +0000, David Woodhouse wrote:
> On the Maple board, the AMD8111 IDE is in legacy mode... except that it
> appears on IRQ 20 instead of IRQ 15. For drivers/ide this was handled by
> the architecture's "pci_get_legacy_ide_irq()" function, but in libata we
> just hard-code the numbers 14 and 15.
>
> This patch provides asm-powerpc/libata-portmap.h which maps the IRQ as
> appropriate, having added a pci_dev argument to the
> ATA_{PRIM,SECOND}ARY_IRQ macros.
>
> There's probably a better way to do this -- especially if we observe
> that the _only_ case in which this seemingly-generic
> "pci_get_legacy_ide_irq()" function returns anything other than 14 and
> 15 for primary and secondary respectively is the case of the AMD8111 on
> the Maple board -- couldn't we handle that with a special case in the
> pata_amd driver, or perhaps with a PCI quirk for Maple to switch it into
> native mode during early boot and assign resources properly?
>
> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 0673dbe..1857707 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -484,6 +484,7 @@ config PPC_MAPLE
> select PPC_970_NAP
> select PPC_NATIVE
> select PPC_RTAS
> + select ATA_NONSTANDARD if ATA
> default n
> help
> This option enables support for the Maple 970FX Evaluation Board.
> diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
> index 7645f2b..bf44f6d 100644
> --- a/drivers/ata/libata-sff.c
> +++ b/drivers/ata/libata-sff.c
> @@ -879,7 +879,7 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
> probe_ent->n_ports = 2;
>
> if (port_mask & ATA_PORT_PRIMARY) {
> - probe_ent->irq = ATA_PRIMARY_IRQ;
> + probe_ent->irq = ATA_PRIMARY_IRQ(pdev);
> probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD;
> probe_ent->port[0].altstatus_addr =
> probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL;
> @@ -894,9 +894,9 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
>
> if (port_mask & ATA_PORT_SECONDARY) {
> if (probe_ent->irq)
> - probe_ent->irq2 = ATA_SECONDARY_IRQ;
> + probe_ent->irq2 = ATA_SECONDARY_IRQ(pdev);
> else
> - probe_ent->irq = ATA_SECONDARY_IRQ;
> + probe_ent->irq = ATA_SECONDARY_IRQ(pdev);
> probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD;
> probe_ent->port[1].altstatus_addr =
> probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL;
> diff --git a/include/asm-generic/libata-portmap.h b/include/asm-generic/libata-portmap.h
> index 9202fd0..ec742ca 100644
> --- a/include/asm-generic/libata-portmap.h
> +++ b/include/asm-generic/libata-portmap.h
> @@ -1,12 +1,12 @@
> #ifndef __ASM_GENERIC_LIBATA_PORTMAP_H
> #define __ASM_GENERIC_LIBATA_PORTMAP_H
>
> #define ATA_PRIMARY_CMD 0x1F0
> #define ATA_PRIMARY_CTL 0x3F6
> -#define ATA_PRIMARY_IRQ 14
> +#define ATA_PRIMARY_IRQ(dev) 14
>
> #define ATA_SECONDARY_CMD 0x170
> #define ATA_SECONDARY_CTL 0x376
> -#define ATA_SECONDARY_IRQ 15
> +#define ATA_SECONDARY_IRQ(dev) 15
>
> #endif
> --- /dev/null 2006-12-19 10:44:19.206057770 +0000
> +++ b/include/asm-powerpc/libata-portmap.h 2006-12-31 00:32:04.000000000 +0000
> @@ -0,0 +1,12 @@
> +#ifndef __ASM_POWERPC_LIBATA_PORTMAP_H
> +#define __ASM_POWERPC_LIBATA_PORTMAP_H
> +
> +#define ATA_PRIMARY_CMD 0x1F0
> +#define ATA_PRIMARY_CTL 0x3F6
> +#define ATA_PRIMARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 0)
> +
> +#define ATA_SECONDARY_CMD 0x170
> +#define ATA_SECONDARY_CTL 0x376
> +#define ATA_SECONDARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 1)
> +
> +#endif
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 03f6338..6a38c9b 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -19,6 +19,10 @@ config ATA
>
> if ATA
>
> +config ATA_NONSTANDARD
> + bool
> + default n
> +
> config SATA_AHCI
> tristate "AHCI SATA support"
> depends on PCI
>
>
next prev parent reply other threads:[~2007-01-02 0:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-01 19:31 [PATCH] Fix Maple PATA IRQ assignment David Woodhouse
2007-01-01 20:10 ` Benjamin Herrenschmidt
2007-01-01 20:26 ` David Woodhouse
2007-01-01 21:23 ` Benjamin Herrenschmidt
2007-01-01 20:44 ` Segher Boessenkool
2007-01-01 21:33 ` Benjamin Herrenschmidt
2007-01-01 22:17 ` Segher Boessenkool
2007-01-01 20:42 ` Segher Boessenkool
2007-01-01 20:56 ` David Woodhouse
2007-01-01 21:22 ` Alan
2007-01-01 21:15 ` David Woodhouse
2007-01-01 21:34 ` Alan
2007-01-01 21:43 ` David Woodhouse
2007-01-02 0:17 ` Benjamin Herrenschmidt
2007-01-02 0:18 ` Benjamin Herrenschmidt [this message]
2007-01-26 22:28 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1167697087.23340.162.camel@localhost.localdomain \
--to=benh@kernel.crashing.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=dwmw2@infradead.org \
--cc=jgarzik@pobox.com \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).