Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b1d19db4e770a752ec032971388fa69a73c84919
Commit:     b1d19db4e770a752ec032971388fa69a73c84919
Parent:     83a6d4ab3b09c0c1921b657bbaac5ada3c9c3623
Author:     Sergei Shtylyov <[EMAIL PROTECTED]>
AuthorDate: Mon Jul 9 23:17:56 2007 +0200
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Mon Jul 9 23:17:56 2007 +0200

    aec62xx: rework init_setup_aec6x80()
    
    Rework init_setup_aec6x80() so that it won't rewrite the constant name 
strings
    anymore -- in order to do this:
    
    - in aec62xx_init_one(), pass a local copy of 'struct pci_device_id' down 
the
      call chain;
    
    - change the names for in aec62xx_chipsets[] to default to AEC-6280[R];
    
    - override the 'name' field in init_setup_aec6x80() only if bit 4 of the DMA
      status register is set.
    
    While at it, also change the 'udma_mask' field for AEC-6x80R chips in this
    function and remove the code doing the same from the init_hwif() method...
    
    Signed-off-by: Sergei Shtylyov <[EMAIL PROTECTED]>
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/pci/aec62xx.c |   35 +++++++++++++----------------------
 1 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c
index bed32d0..7067df2 100644
--- a/drivers/ide/pci/aec62xx.c
+++ b/drivers/ide/pci/aec62xx.c
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/pci/aec62xx.c             Version 0.21    Apr 21, 2007
+ * linux/drivers/ide/pci/aec62xx.c             Version 0.22    Apr 23, 2007
  *
  * Copyright (C) 1999-2002     Andre Hedrick <[EMAIL PROTECTED]>
  * Copyright (C) 2007          MontaVista Software, Inc. <[EMAIL PROTECTED]>
@@ -239,14 +239,6 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif)
        }
 
        hwif->ultra_mask = hwif->cds->udma_mask;
-
-       /* atp865 and atp865r */
-       if (hwif->ultra_mask == 0x3f) {
-               /* check bit 0x10 of DMA status register */
-               if (inb(pci_resource_start(dev, 4) + 2) & 0x10)
-                       hwif->ultra_mask = 0x7f; /* udma0-6 */
-       }
-
        hwif->mwdma_mask = 0x07;
 
        hwif->ide_dma_check     = &aec62xx_config_drive_xfer_rate;
@@ -287,16 +279,12 @@ static int __devinit init_setup_aec62xx(struct pci_dev 
*dev, ide_pci_device_t *d
 
 static int __devinit init_setup_aec6x80(struct pci_dev *dev, ide_pci_device_t 
*d)
 {
-       unsigned long bar4reg = pci_resource_start(dev, 4);
+       unsigned long dma_base = pci_resource_start(dev, 4);
 
-       if (inb(bar4reg+2) & 0x10) {
-               strcpy(d->name, "AEC6880");
-               if (dev->device == PCI_DEVICE_ID_ARTOP_ATP865R)
-                       strcpy(d->name, "AEC6880R");
-       } else {
-               strcpy(d->name, "AEC6280");
-               if (dev->device == PCI_DEVICE_ID_ARTOP_ATP865R)
-                       strcpy(d->name, "AEC6280R");
+       if (inb(dma_base + 2) & 0x10) {
+               d->name = (dev->device == PCI_DEVICE_ID_ARTOP_ATP865R) ?
+                         "AEC6880R" : "AEC6880";
+               d->udma_mask = 0x7f; /* udma0-6 */
        }
 
        return ide_setup_pci_device(dev, d);
@@ -336,7 +324,7 @@ static ide_pci_device_t aec62xx_chipsets[] __devinitdata = {
                .bootable       = NEVER_BOARD,
                .udma_mask      = 0x1f, /* udma0-4 */
        },{     /* 3 */
-               .name           = "AEC6X80",
+               .name           = "AEC6280",
                .init_setup     = init_setup_aec6x80,
                .init_chipset   = init_chipset_aec62xx,
                .init_hwif      = init_hwif_aec62xx,
@@ -346,7 +334,7 @@ static ide_pci_device_t aec62xx_chipsets[] __devinitdata = {
                .bootable       = OFF_BOARD,
                .udma_mask      = 0x3f, /* udma0-5 */
        },{     /* 4 */
-               .name           = "AEC6X80R",
+               .name           = "AEC6280R",
                .init_setup     = init_setup_aec6x80,
                .init_chipset   = init_chipset_aec62xx,
                .init_hwif      = init_hwif_aec62xx,
@@ -366,13 +354,16 @@ static ide_pci_device_t aec62xx_chipsets[] __devinitdata 
= {
  *
  *     Called when the PCI registration layer (or the IDE initialization)
  *     finds a device matching our IDE device tables.
+ *
+ *     NOTE: since we're going to modify the 'name' field for AEC-6[26]80[R]
+ *     chips, pass a local copy of 'struct pci_device_id' down the call chain.
  */
  
 static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct 
pci_device_id *id)
 {
-       ide_pci_device_t *d = &aec62xx_chipsets[id->driver_data];
+       ide_pci_device_t d = aec62xx_chipsets[id->driver_data];
 
-       return d->init_setup(dev, d);
+       return d.init_setup(dev, &d);
 }
 
 static struct pci_device_id aec62xx_pci_tbl[] = {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to