Re: [PATCH] pata_via: add via_fixup()

From: Sergei Shtylyov
Date: Thu Oct 13 2011 - 08:23:48 EST


Hello.

On 13-10-2011 15:10, Bartlomiej Zolnierkiewicz wrote:

From: Bartlomiej Zolnierkiewicz<bzolnier@xxxxxxxxx>
Subject: [PATCH] pata_via: add via_fixup()

Factor out common code from via_[re]init_one() to via_fixup().

Signed-off-by: Bartlomiej Zolnierkiewicz<bzolnier@xxxxxxxxx>
---
earlier references:
https://lkml.org/lkml/2009/11/25/381

drivers/ata/pata_via.c | 49 +++++++++++++++++++++++--------------------------
1 file changed, 23 insertions(+), 26 deletions(-)

Index: b/drivers/ata/pata_via.c
===================================================================
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -491,6 +491,27 @@ static void via_config_fifo(struct pci_d
}
}

+static void via_fixup(struct pci_dev *pdev, const struct via_isa_bridge *config)
+{
+ u32 timing;
+
+ /* Initialise the FIFO for the enabled channels. */
+ via_config_fifo(pdev, config->flags);
+
+ if (config->udma_mask == ATA_UDMA4) {
+ /* The 66 MHz devices require we enable the clock */
+ pci_read_config_dword(pdev, 0x50,&timing);
+ timing |= 0x80008;
+ pci_write_config_dword(pdev, 0x50, timing);
+ }

Hm, via_init_one() doesn't do this now... but used to do this before your patch:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=460f5318460a9a3b2562d8055b9fb1c60b768e1f

Was that patch wrong or am I misundertanding?

+ if (config->flags& VIA_BAD_CLK66) {
+ /* Disable the 66MHz clock on problem devices */
+ pci_read_config_dword(pdev, 0x50,&timing);
+ timing&= ~0x80008;
+ pci_write_config_dword(pdev, 0x50, timing);
+ }
+}
+
/**
* via_init_one - discovery callback
* @pdev: PCI device
@@ -553,7 +574,6 @@ static int via_init_one(struct pci_dev *
const struct via_isa_bridge *config;
static int printed_version;
u8 enable;
- u32 timing;
unsigned long flags = id->driver_data;
int rc;

@@ -593,9 +613,6 @@ static int via_init_one(struct pci_dev *
return -ENODEV;
}

- /* Initialise the FIFO for the enabled channels. */
- via_config_fifo(pdev, config->flags);
-
/* Clock set up */
switch (config->udma_mask) {
case 0x00:
@@ -621,12 +638,7 @@ static int via_init_one(struct pci_dev *
return -ENODEV;
}

- if (config->flags& VIA_BAD_CLK66) {
- /* Disable the 66MHz clock on problem devices */
- pci_read_config_dword(pdev, 0x50,&timing);
- timing&= ~0x80008;
- pci_write_config_dword(pdev, 0x50, timing);
- }
+ via_fixup(pdev, config);

/* We have established the device type, now fire it up */
return ata_pci_bmdma_init_one(pdev, ppi,&via_sht, (void *)config, 0);

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/