From: Sergei Shtylyov <sshtylyov@mvista.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
Sergei Shtylyov <sshtylyov@mvista.com>,
linux-ide <linux-ide@vger.kernel.org>,
Parisc List <linux-parisc@vger.kernel.org>
Subject: Re: [PATCH 0/2] fix libata-sff and pata_cmd64x to not crash on boot on parisc
Date: Wed, 20 Apr 2011 14:04:10 +0400 [thread overview]
Message-ID: <4DAEAF9A.1020704@ru.mvista.com> (raw)
In-Reply-To: <1303254709.11237.34.camel@mulgrave.site>
Hello.
On 20-04-2011 3:11, James Bottomley wrote:
>> Beats me then. Whatever - its easy enough to work around and avoid
>> exploding parisc and sparc so it definitely wants sorting
> OK, so are we all agreed on this (I'll split it up into the cosmetic
> libata piece and the cmd64x fix later)?
> James
> ---
> diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
> index f8380ce..b1b926c 100644
> --- a/drivers/ata/libata-sff.c
> +++ b/drivers/ata/libata-sff.c
> @@ -2447,13 +2447,18 @@ int ata_pci_sff_activate_host(struct ata_host *host,
> return -ENOMEM;
>
> if (!legacy_mode&& pdev->irq) {
> + int i;
> +
> rc = devm_request_irq(dev, pdev->irq, irq_handler,
> IRQF_SHARED, drv_name, host);
> if (rc)
> goto out;
>
> - ata_port_desc(host->ports[0], "irq %d", pdev->irq);
> - ata_port_desc(host->ports[1], "irq %d", pdev->irq);
> + for (i = 0; i < 2; i++) {
> + if (ata_port_is_dummy(host->ports[i]))
> + continue;
> + ata_port_desc(host->ports[i], "irq %d", pdev->irq);
Does this really makes any difference?
> diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c
> index 905ff76..c39fd5a 100644
> --- a/drivers/ata/pata_cmd64x.c
> +++ b/drivers/ata/pata_cmd64x.c
> @@ -41,6 +41,9 @@
> enum {
> CFR = 0x50,
> CFR_INTR_CH0 = 0x04,
> + CNTRL = 0x51,
> + CNTRL_PRIMARY = 0x04,
> + CNTRL_SECONDARY = 0x08,
Probably better to call them CNTRL_CH0 and CNTRL_CH1 to keep the naming in
line with already existing one...
> @@ -328,9 +331,17 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
> .port_ops =&cmd648_port_ops
> }
> };
> - const struct ata_port_info *ppi[] = {&cmd_info[id->driver_data], NULL };
> - u8 mrdmode;
> + const struct ata_port_info *ppi[] = {
> + &cmd_info[id->driver_data],
> + &cmd_info[id->driver_data],
> + NULL
> + };
> + u8 mrdmode, reg;
> int rc;
> + struct pci_dev *bridge = pdev->bus->self;
> + /* mobility split bridges don't report enabled ports correctly */
> + int port_ok = !(bridge && bridge->vendor ==
> + PCI_VENDOR_ID_MOBILITY_ELECTRONICS);
>
> rc = pcim_enable_device(pdev);
> if (rc)
> @@ -354,6 +369,21 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
> mrdmode |= 0x02; /* Memory read line enable */
> pci_write_config_byte(pdev, MRDMODE, mrdmode);
>
> + /* check for enabled ports */
> + pci_read_config_byte(pdev, CNTRL,®);
> + if (port_ok)
You mean !port_ok.
> + dev_printk(KERN_NOTICE, &pdev->dev, "Mobility Bridge detected, ignoring CNTRL port enable/disable\n");
> + /* 643 and 646 no UDMA, primary port always enabled */
> + if (port_ok && id->driver_data > 1 && !(reg & CNTRL_PRIMARY)) {
PCI0646U and later revisions on PCI0646 do have the primary port enable
bit. The same about UltraDMA -- PCI0646U2 has it. Look at what cmd64x does in
cmd64x_init_one()...
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> index 4e2c915..7a0ac45 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -608,6 +608,8 @@
> #define PCI_DEVICE_ID_MATROX_G550 0x2527
> #define PCI_DEVICE_ID_MATROX_VIA 0x4536
>
> +#define PCI_VENDOR_ID_MOBILITY_ELECTRONICS 0x14f2
> +
The current trend seems to be to only define vendor/device IDs where they
are used and not in pci_ids.h...
MBR, Sergei
next prev parent reply other threads:[~2011-04-20 10:04 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-18 18:42 [PATCH 0/2] fix libata-sff and pata_cmd64x to not crash on boot on parisc James Bottomley
2011-04-18 18:44 ` [PATCH 1/2] libata-sff: remove hardcoded requirement for two ports James Bottomley
2011-04-18 18:45 ` [PATCH 2/2] pata_cmd64x: fix crash on boot with disabled secondary port James Bottomley
2011-04-19 20:48 ` Sergei Shtylyov
2011-04-18 19:52 ` [PATCH 0/2] fix libata-sff and pata_cmd64x to not crash on boot on parisc Alan Cox
2011-04-18 20:08 ` James Bottomley
2011-04-18 20:14 ` David Miller
2011-04-18 21:09 ` Alan Cox
2011-04-18 20:50 ` James Bottomley
2011-04-18 21:20 ` Alan Cox
2011-04-19 13:54 ` James Bottomley
2011-04-19 14:36 ` Alan Cox
2011-04-19 15:02 ` James Bottomley
2011-04-19 15:58 ` Alan Cox
2011-04-19 20:59 ` Sergei Shtylyov
2011-04-19 21:19 ` Alan Cox
2011-04-19 21:22 ` Sergei Shtylyov
2011-04-19 21:28 ` Alan Cox
2011-04-19 23:11 ` James Bottomley
2011-04-20 9:35 ` Alan Cox
2011-04-20 10:04 ` Sergei Shtylyov [this message]
2011-04-20 14:28 ` James Bottomley
2011-04-20 14:52 ` James Bottomley
2011-04-20 14:54 ` Sergei Shtylyov
2011-04-20 14:54 ` Sergei Shtylyov
2011-04-20 14:56 ` Matthew Wilcox
2011-04-21 14:24 ` Jeff Garzik
2011-04-19 20:53 ` Sergei Shtylyov
-- strict thread matches above, loose matches on Subject: below --
2011-04-24 19:28 James Bottomley
2011-05-13 17:01 ` James Bottomley
2011-05-14 19:01 ` Jeff Garzik
2011-07-15 15:45 ` Sergei Shtylyov
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=4DAEAF9A.1020704@ru.mvista.com \
--to=sshtylyov@mvista.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-ide@vger.kernel.org \
--cc=linux-parisc@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.