ide: remove write-only hwif->hw

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 18e181fe
...@@ -450,8 +450,6 @@ icside_setup(void __iomem *base, struct cardinfo *info, struct expansion_card *e ...@@ -450,8 +450,6 @@ icside_setup(void __iomem *base, struct cardinfo *info, struct expansion_card *e
if (hwif) { if (hwif) {
int i; int i;
memset(&hwif->hw, 0, sizeof(hw_regs_t));
/* /*
* Ensure we're using MMIO * Ensure we're using MMIO
*/ */
...@@ -459,13 +457,10 @@ icside_setup(void __iomem *base, struct cardinfo *info, struct expansion_card *e ...@@ -459,13 +457,10 @@ icside_setup(void __iomem *base, struct cardinfo *info, struct expansion_card *e
hwif->mmio = 1; hwif->mmio = 1;
for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
hwif->hw.io_ports[i] = port;
hwif->io_ports[i] = port; hwif->io_ports[i] = port;
port += 1 << info->stepping; port += 1 << info->stepping;
} }
hwif->hw.io_ports[IDE_CONTROL_OFFSET] = (unsigned long)base + info->ctrloffset;
hwif->io_ports[IDE_CONTROL_OFFSET] = (unsigned long)base + info->ctrloffset; hwif->io_ports[IDE_CONTROL_OFFSET] = (unsigned long)base + info->ctrloffset;
hwif->hw.irq = ec->irq;
hwif->irq = ec->irq; hwif->irq = ec->irq;
hwif->noprobe = 0; hwif->noprobe = 0;
hwif->chipset = ide_acorn; hwif->chipset = ide_acorn;
......
...@@ -24,13 +24,11 @@ rapide_locate_hwif(void __iomem *base, void __iomem *ctrl, unsigned int sz, int ...@@ -24,13 +24,11 @@ rapide_locate_hwif(void __iomem *base, void __iomem *ctrl, unsigned int sz, int
goto out; goto out;
for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
hwif->hw.io_ports[i] = port;
hwif->io_ports[i] = port; hwif->io_ports[i] = port;
port += sz; port += sz;
} }
hwif->hw.io_ports[IDE_CONTROL_OFFSET] = (unsigned long)ctrl;
hwif->io_ports[IDE_CONTROL_OFFSET] = (unsigned long)ctrl; hwif->io_ports[IDE_CONTROL_OFFSET] = (unsigned long)ctrl;
hwif->hw.irq = hwif->irq = irq; hwif->irq = irq;
hwif->mmio = 1; hwif->mmio = 1;
default_hwif_mmiops(hwif); default_hwif_mmiops(hwif);
out: out:
......
...@@ -168,7 +168,6 @@ static void init_hwif_default(ide_hwif_t *hwif, unsigned int index) ...@@ -168,7 +168,6 @@ static void init_hwif_default(ide_hwif_t *hwif, unsigned int index)
ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, &hwif->irq); ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, &hwif->irq);
memcpy(&hwif->hw, &hw, sizeof(hw));
memcpy(hwif->io_ports, hw.io_ports, sizeof(hw.io_ports)); memcpy(hwif->io_ports, hw.io_ports, sizeof(hw.io_ports));
hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET]; hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET];
...@@ -214,7 +213,7 @@ static void __init init_ide_data (void) ...@@ -214,7 +213,7 @@ static void __init init_ide_data (void)
init_hwif_data(hwif, index); init_hwif_data(hwif, index);
init_hwif_default(hwif, index); init_hwif_default(hwif, index);
#if !defined(CONFIG_PPC32) || !defined(CONFIG_PCI) #if !defined(CONFIG_PPC32) || !defined(CONFIG_PCI)
hwif->irq = hwif->hw.irq = hwif->irq =
ide_init_default_irq(hwif->io_ports[IDE_DATA_OFFSET]); ide_init_default_irq(hwif->io_ports[IDE_DATA_OFFSET]);
#endif #endif
} }
...@@ -730,8 +729,7 @@ found: ...@@ -730,8 +729,7 @@ found:
} }
if (hwif->present) if (hwif->present)
return -1; return -1;
memcpy(&hwif->hw, hw, sizeof(*hw)); memcpy(hwif->io_ports, hw->io_ports, sizeof(hwif->io_ports));
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports));
hwif->irq = hw->irq; hwif->irq = hw->irq;
hwif->noprobe = 0; hwif->noprobe = 0;
hwif->fixup = fixup; hwif->fixup = fixup;
...@@ -1417,6 +1415,9 @@ static int __init ide_setup(char *s) ...@@ -1417,6 +1415,9 @@ static int __init ide_setup(char *s)
"reset", "minus6", "ata66", "minus8", "minus9", "reset", "minus6", "ata66", "minus8", "minus9",
"minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb", "minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
"dtc2278", "umc8672", "ali14xx", NULL }; "dtc2278", "umc8672", "ali14xx", NULL };
hw_regs_t hwregs;
hw = s[3] - '0'; hw = s[3] - '0';
hwif = &ide_hwifs[hw]; hwif = &ide_hwifs[hw];
i = match_parm(&s[4], ide_words, vals, 3); i = match_parm(&s[4], ide_words, vals, 3);
...@@ -1526,9 +1527,9 @@ static int __init ide_setup(char *s) ...@@ -1526,9 +1527,9 @@ static int __init ide_setup(char *s)
case 2: /* base,ctl */ case 2: /* base,ctl */
vals[2] = 0; /* default irq = probe for it */ vals[2] = 0; /* default irq = probe for it */
case 3: /* base,ctl,irq */ case 3: /* base,ctl,irq */
hwif->hw.irq = vals[2]; memset(&hwregs, 0, sizeof(hwregs));
ide_init_hwif_ports(&hwif->hw, (unsigned long) vals[0], (unsigned long) vals[1], &hwif->irq); ide_init_hwif_ports(&hwregs, vals[0], vals[1], &hwif->irq);
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); memcpy(hwif->io_ports, hwregs.io_ports, sizeof(hwif->io_ports));
hwif->irq = vals[2]; hwif->irq = vals[2];
hwif->noprobe = 0; hwif->noprobe = 0;
hwif->chipset = ide_forced; hwif->chipset = ide_forced;
......
...@@ -39,19 +39,18 @@ static ide_hwif_t *__devinit plat_ide_locate_hwif(void __iomem *base, ...@@ -39,19 +39,18 @@ static ide_hwif_t *__devinit plat_ide_locate_hwif(void __iomem *base,
if (hwif == NULL) if (hwif == NULL)
goto out; goto out;
hwif->hw.io_ports[IDE_DATA_OFFSET] = port; hwif->io_ports[IDE_DATA_OFFSET] = port;
port += (1 << pdata->ioport_shift); port += (1 << pdata->ioport_shift);
for (i = IDE_ERROR_OFFSET; i <= IDE_STATUS_OFFSET; for (i = IDE_ERROR_OFFSET; i <= IDE_STATUS_OFFSET;
i++, port += (1 << pdata->ioport_shift)) i++, port += (1 << pdata->ioport_shift))
hwif->hw.io_ports[i] = port; hwif->io_ports[i] = port;
hwif->hw.io_ports[IDE_CONTROL_OFFSET] = (unsigned long)ctrl; hwif->io_ports[IDE_CONTROL_OFFSET] = (unsigned long)ctrl;
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports)); hwif->irq = irq;
hwif->hw.irq = hwif->irq = irq;
hwif->chipset = hwif->hw.chipset = ide_generic; hwif->chipset = ide_generic;
if (mmio) { if (mmio) {
hwif->mmio = 1; hwif->mmio = 1;
......
...@@ -601,9 +601,9 @@ static int au_ide_probe(struct device *dev) ...@@ -601,9 +601,9 @@ static int au_ide_probe(struct device *dev)
_auide_hwif *ahwif = &auide_hwif; _auide_hwif *ahwif = &auide_hwif;
ide_hwif_t *hwif; ide_hwif_t *hwif;
struct resource *res; struct resource *res;
hw_regs_t *hw;
int ret = 0; int ret = 0;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw;
#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
char *mode = "MWDMA2"; char *mode = "MWDMA2";
...@@ -645,12 +645,12 @@ static int au_ide_probe(struct device *dev) ...@@ -645,12 +645,12 @@ static int au_ide_probe(struct device *dev)
/* FIXME: This might possibly break PCMCIA IDE devices */ /* FIXME: This might possibly break PCMCIA IDE devices */
hwif = &ide_hwifs[pdev->id]; hwif = &ide_hwifs[pdev->id];
hw = &hwif->hw; hwif->irq = ahwif->irq;
hwif->irq = hw->irq = ahwif->irq;
hwif->chipset = ide_au1xxx; hwif->chipset = ide_au1xxx;
auide_setup_ports(hw, ahwif); memset(&hw, 0, sizeof(hw));
memcpy(hwif->io_ports, hw->io_ports, sizeof(hwif->io_ports)); auide_setup_ports(&hw, ahwif);
memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
hwif->ultra_mask = 0x0; /* Disable Ultra DMA */ hwif->ultra_mask = 0x0; /* Disable Ultra DMA */
#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
......
...@@ -120,14 +120,11 @@ static int __devinit swarm_ide_probe(struct device *dev) ...@@ -120,14 +120,11 @@ static int __devinit swarm_ide_probe(struct device *dev)
hwif->noprobe = 0; hwif->noprobe = 0;
for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
hwif->hw.io_ports[i] = hwif->io_ports[i] =
(unsigned long)(base + ((0x1f0 + i) << 5)); (unsigned long)(base + ((0x1f0 + i) << 5));
hwif->hw.io_ports[IDE_CONTROL_OFFSET] = hwif->io_ports[IDE_CONTROL_OFFSET] =
(unsigned long)(base + (0x3f6 << 5)); (unsigned long)(base + (0x3f6 << 5));
hwif->hw.irq = K_INT_GB_IDE; hwif->irq = K_INT_GB_IDE;
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports));
hwif->irq = hwif->hw.irq;
idx[0] = hwif->index; idx[0] = hwif->index;
......
...@@ -655,10 +655,12 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) ...@@ -655,10 +655,12 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
} }
if (hwif->io_ports[IDE_DATA_OFFSET] != cmd_base) { if (hwif->io_ports[IDE_DATA_OFFSET] != cmd_base) {
hw_regs_t hw;
/* Initialize the IO registers */ /* Initialize the IO registers */
sgiioc4_init_hwif_ports(&hwif->hw, cmd_base, ctl, irqport); memset(&hw, 0, sizeof(hw));
memcpy(hwif->io_ports, hwif->hw.io_ports, sgiioc4_init_hwif_ports(&hw, cmd_base, ctl, irqport);
sizeof (hwif->io_ports)); memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET]; hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET];
} }
......
...@@ -754,16 +754,11 @@ static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif) ...@@ -754,16 +754,11 @@ static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif)
hwif->sata_misc[SATA_IEN_OFFSET] = base + 0x148; hwif->sata_misc[SATA_IEN_OFFSET] = base + 0x148;
} }
hw.irq = hwif->pci_dev->irq; memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
memcpy(&hwif->hw, &hw, sizeof(hw)); hwif->irq = dev->irq;
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->hw.io_ports));
hwif->irq = hw.irq; hwif->dma_base = (unsigned long)addr + (ch ? 0x08 : 0x00);
base = (unsigned long) addr;
hwif->dma_base = base + (ch ? 0x08 : 0x00);
hwif->mmio = 1; hwif->mmio = 1;
} }
......
...@@ -1040,6 +1040,7 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) ...@@ -1040,6 +1040,7 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
struct device_node *np = pmif->node; struct device_node *np = pmif->node;
const int *bidp; const int *bidp;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
hw_regs_t hw;
pmif->cable_80 = 0; pmif->cable_80 = 0;
pmif->broken_dma = pmif->broken_dma_warn = 0; pmif->broken_dma = pmif->broken_dma_warn = 0;
...@@ -1125,8 +1126,9 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) ...@@ -1125,8 +1126,9 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
/* Tell common code _not_ to mess with resources */ /* Tell common code _not_ to mess with resources */
hwif->mmio = 1; hwif->mmio = 1;
hwif->hwif_data = pmif; hwif->hwif_data = pmif;
pmac_ide_init_hwif_ports(&hwif->hw, pmif->regbase, 0, &hwif->irq); memset(&hw, 0, sizeof(hw));
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); pmac_ide_init_hwif_ports(&hw, pmif->regbase, 0, &hwif->irq);
memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
hwif->chipset = ide_pmac; hwif->chipset = ide_pmac;
hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET] || pmif->mediabay; hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET] || pmif->mediabay;
hwif->hold = pmif->mediabay; hwif->hold = pmif->mediabay;
......
...@@ -387,14 +387,15 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, ide_pci_device_t *d, ...@@ -387,14 +387,15 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, ide_pci_device_t *d,
return NULL; /* no room in ide_hwifs[] */ return NULL; /* no room in ide_hwifs[] */
if (hwif->io_ports[IDE_DATA_OFFSET] != base || if (hwif->io_ports[IDE_DATA_OFFSET] != base ||
hwif->io_ports[IDE_CONTROL_OFFSET] != (ctl | 2)) { hwif->io_ports[IDE_CONTROL_OFFSET] != (ctl | 2)) {
memset(&hwif->hw, 0, sizeof(hwif->hw)); hw_regs_t hw;
memset(&hw, 0, sizeof(hw));
#ifndef CONFIG_IDE_ARCH_OBSOLETE_INIT #ifndef CONFIG_IDE_ARCH_OBSOLETE_INIT
ide_std_init_ports(&hwif->hw, base, (ctl | 2)); ide_std_init_ports(&hw, base, ctl | 2);
hwif->hw.io_ports[IDE_IRQ_OFFSET] = 0;
#else #else
ide_init_hwif_ports(&hwif->hw, base, (ctl | 2), NULL); ide_init_hwif_ports(&hw, base, ctl | 2, NULL);
#endif #endif
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET]; hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET];
} }
hwif->chipset = d->chipset ? d->chipset : ide_pci; hwif->chipset = d->chipset ? d->chipset : ide_pci;
......
...@@ -659,7 +659,6 @@ typedef struct hwif_s { ...@@ -659,7 +659,6 @@ typedef struct hwif_s {
unsigned long sata_scr[SATA_NR_PORTS]; unsigned long sata_scr[SATA_NR_PORTS];
unsigned long sata_misc[SATA_NR_PORTS]; unsigned long sata_misc[SATA_NR_PORTS];
hw_regs_t hw; /* Hardware info */
ide_drive_t drives[MAX_DRIVES]; /* drive info */ ide_drive_t drives[MAX_DRIVES]; /* drive info */
u8 major; /* our major number */ u8 major; /* our major number */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment