From: Sergei Shtylyov <sshtylyov@mvista.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Sergei Shtylyov <sshtylyov@mvista.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
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 18:54:41 +0400 [thread overview]
Message-ID: <4DAEF3B1.6020304@ru.mvista.com> (raw)
In-Reply-To: <1303309698.2587.10.camel@mulgrave.site>
Hello.
On 20-04-2011 18:28, James Bottomley wrote:
>>> + dev_printk(KERN_NOTICE,&pdev->dev, "Mobility Bridge detected, ig=
noring CNTRL port enable/disable\n");
>>> + /* 643 and 646 no UDMA, primary port always enabled */
>>> + if (port_ok&& id->driver_data> 1&& !(reg& CNTRL_PRIMARY)) {
This should probably be:
if (port_ok && !(id->driver_data =3D=3D 0 || id->driver_data =3D=3D 1 =
&&
pdev->revision < 3) && !(reg & CNTRL_PRIMARY)) {
>> PCI0646U and later revisions on PCI0646 do have the primary por=
t enable
>> bit. The same about UltraDMA -- PCI0646U2 has it. Look at what cmd64=
x does in
>> cmd64x_init_one()...
> Where? All I see in drivers/ide/cmd64x.c is that it only ignores the
> primary for the id->driver_data =3D=3D 0 case, which is what I origin=
ally
> coded.
Hm, are we looking at the same driver?
static const struct ide_port_info cmd64x_chipsets[] __devinitdata =3D {
{ /* 0: CMD643 */
.name =3D DRV_NAME,
.init_chipset =3D init_chipset_cmd64x,
.enablebits =3D {{0x00,0x00,0x00}, {0x51,0x08,0x08}},
.port_ops =3D &cmd64x_port_ops,
.host_flags =3D IDE_HFLAG_CLEAR_SIMPLEX |
IDE_HFLAG_ABUSE_PREFETCH |
IDE_HFLAG_SERIALIZE,
.pio_mask =3D ATA_PIO5,
.mwdma_mask =3D ATA_MWDMA2,
.udma_mask =3D 0x00, /* no udma */
},
{ /* 1: CMD646 */
.name =3D DRV_NAME,
.init_chipset =3D init_chipset_cmd64x,
.enablebits =3D {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
.port_ops =3D &cmd648_port_ops,
.host_flags =3D IDE_HFLAG_ABUSE_PREFETCH |
IDE_HFLAG_SERIALIZE,
.pio_mask =3D ATA_PIO5,
.mwdma_mask =3D ATA_MWDMA2,
.udma_mask =3D ATA_UDMA2,
},
{ /* 2: CMD648 */
.name =3D DRV_NAME,
.init_chipset =3D init_chipset_cmd64x,
.enablebits =3D {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
.port_ops =3D &cmd648_port_ops,
.host_flags =3D IDE_HFLAG_ABUSE_PREFETCH,
.pio_mask =3D ATA_PIO5,
.mwdma_mask =3D ATA_MWDMA2,
.udma_mask =3D ATA_UDMA4,
},
{ /* 3: CMD649 */
.name =3D DRV_NAME,
.init_chipset =3D init_chipset_cmd64x,
.enablebits =3D {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
.port_ops =3D &cmd648_port_ops,
.host_flags =3D IDE_HFLAG_ABUSE_PREFETCH,
.pio_mask =3D ATA_PIO5,
.mwdma_mask =3D ATA_MWDMA2,
.udma_mask =3D ATA_UDMA5,
}
};
static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct=20
pci_device_id *id)
{
struct ide_port_info d;
u8 idx =3D id->driver_data;
d =3D cmd64x_chipsets[idx];
if (idx =3D=3D 1) {
/*
* UltraDMA only supported on PCI646U and PCI646U2, which
* correspond to revisions 0x03, 0x05 and 0x07 respectively.
* Actually, although the CMD tech support people won't
* tell me the details, the 0x03 revision cannot support
* UDMA correctly without hardware modifications, and even
* then it only works with Quantum disks due to some
* hold time assumptions in the 646U part which are fixed
* in the 646U2.
*
* So we only do UltraDMA on revision 0x05 and 0x07 chipsets.
*/
if (dev->revision < 5) {
d.udma_mask =3D 0x00;
/*
* The original PCI0646 didn't have the primary
* channel enable bit, it appeared starting with
* PCI0646U (i.e. revision ID 3).
*/
if (dev->revision < 3) {
d.enablebits[0].reg =3D 0;
d.port_ops =3D &cmd64x_port_ops;
if (dev->revision =3D=3D 1)
d.dma_ops =3D &cmd646_rev1_dma_ops;
}
}
}
return ide_pci_init_one(dev, &d, NULL);
}
static const struct pci_device_id cmd64x_pci_tbl[] =3D {
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_CMD_643), 0 },
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_CMD_646), 1 },
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_CMD_648), 2 },
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_CMD_649), 3 },
{ 0, },
};
MODULE_DEVICE_TABLE(pci, cmd64x_pci_tbl);
"=C3=AFdx =3D=3D 1" corresponds to PCI0646. See this "dev->revision=
< 3" check=20
(this is true for the original PCI0646), where it then zeroes the 'reg'=
field=20
of 'enablebits' to disable its checking?
> James
WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc"=
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-04-20 14:54 UTC|newest]
Thread overview: 31+ 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
2011-04-20 14:28 ` James Bottomley
2011-04-20 14:52 ` James Bottomley
2011-04-20 14:54 ` Sergei Shtylyov [this message]
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=4DAEF3B1.6020304@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox