ACK: [PATCH] ata: make DVD drive recognisable on systems with Sandybridge CPT chipset
Tim Gardner
tim.gardner at canonical.com
Thu Sep 15 13:12:52 UTC 2011
On 09/14/2011 08:27 PM, ming.lei at canonical.com wrote:
> From: Ming Lei<tom.leiming at gmail.com>
>
> This quirk patch fixes one kind of bug inside Intel Sandybridge CPT
> chipset, see reports from LP794642, LP737388, LP758433, ...
>
> Many guys have reported the problem.
>
> With help from upstream ata maintainer Tejun[1], the problem is found to be
> caused by 32bit PIO mode, which is introduced in the commit below:
>
> commit 0b67c7439fe2a5d76602de36854c88e2beab00b0
> Author: Tejun Heo<tj at kernel.org>
> Date: Mon Jan 11 17:03:11 2010 +0900
>
> ata_piix: enable 32bit PIO on SATA piix
>
> Commit 871af1210f13966ab911ed2166e4ab2ce775b99d enabled 32bit PIO
> for PATA piix but didn't for SATA. There's no reason not to use 32bit
> PIO on SATA piix. Enable it.
>
> Signed-off-by: Tejun Heo<tj at kernel.org>
> Cc: Alan Cox<alan at lxorguk.ukuu.org.uk>
> Signed-off-by: Jeff Garzik<jgarzik at redhat.com>
>
> so introduce the quirk patch to disable 32bit PIO on SATA piix for Sandybridge CPT
> chipset, Alan Cox has agreed on the patch[2].
>
> SRU Justification:
>
> Impact:
> - without the patch, DVD drive can't be recognized on Dell
> optiplex 390.
> Fix:
> - After applying the patch, DVD drive can be recognized well
> on Dell optiplex 390.
>
> BugLink: http://bugs.launchpad.net/bugs/794642
>
> Upstream: [1]/[2]
>
> [1], https://bugzilla.kernel.org/show_bug.cgi?id=40592
> [2], http://marc.info/?t=131528297300002&r=1&w=2
>
> Signed-off-by: Ming Lei<tom.leiming at gmail.com>
> ---
> drivers/ata/ata_piix.c | 12 +++++++++++-
> 1 files changed, 11 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index 43107e9..eb7ea56 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -341,11 +341,12 @@ static struct ata_port_operations piix_sata_ops = {
> };
>
> static struct ata_port_operations piix_pata_ops = {
> - .inherits =&piix_sata_ops,
> + .inherits =&ata_bmdma32_port_ops,
> .cable_detect = ata_cable_40wire,
> .set_piomode = piix_set_piomode,
> .set_dmamode = piix_set_dmamode,
> .prereset = piix_pata_prereset,
> + .sff_irq_check = piix_irq_check,
> };
>
> static struct ata_port_operations piix_vmw_ops = {
> @@ -1585,6 +1586,15 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
> "on poweroff and hibernation\n");
> }
>
> + /*
> + * Sandybridge chipset H61/P67/H67 have broken 32 mode up to now
> + * see https://bugzilla.kernel.org/show_bug.cgi?id=40592
> + */
> + if (pdev->vendor == PCI_VENDOR_ID_INTEL&& pdev->device == 0x1c00)
> + piix_sata_ops.inherits =&ata_bmdma_port_ops;
> + else
> + piix_sata_ops.inherits =&ata_bmdma32_port_ops;
> +
> port_info[0] = piix_port_info[ent->driver_data];
> port_info[1] = piix_port_info[ent->driver_data];
>
Acked-by: Tim Gardner <tim.gardner at canonical.com>
--
Tim Gardner tim.gardner at canonical.com
More information about the kernel-team
mailing list