ide: keep pointer to struct device instead of struct pci_dev in ide_hwif_t

Keep pointer to struct device instead of struct pci_dev in ide_hwif_t.

While on it:
* Use *dev->dma_mask instead of pci_dev->dma_mask in ide_toggle_bounce().

There should be no functionality changes caused by this patch.
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent f6fb786d
...@@ -184,6 +184,7 @@ static int ide_dma_good_drive(ide_drive_t *drive) ...@@ -184,6 +184,7 @@ static int ide_dma_good_drive(ide_drive_t *drive)
int ide_build_sglist(ide_drive_t *drive, struct request *rq) int ide_build_sglist(ide_drive_t *drive, struct request *rq)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *pdev = to_pci_dev(hwif->dev);
struct scatterlist *sg = hwif->sg_table; struct scatterlist *sg = hwif->sg_table;
ide_map_sg(drive, rq); ide_map_sg(drive, rq);
...@@ -193,7 +194,7 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq) ...@@ -193,7 +194,7 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq)
else else
hwif->sg_dma_direction = PCI_DMA_TODEVICE; hwif->sg_dma_direction = PCI_DMA_TODEVICE;
return pci_map_sg(hwif->pci_dev, sg, hwif->sg_nents, hwif->sg_dma_direction); return pci_map_sg(pdev, sg, hwif->sg_nents, hwif->sg_dma_direction);
} }
EXPORT_SYMBOL_GPL(ide_build_sglist); EXPORT_SYMBOL_GPL(ide_build_sglist);
...@@ -306,11 +307,11 @@ EXPORT_SYMBOL_GPL(ide_build_dmatable); ...@@ -306,11 +307,11 @@ EXPORT_SYMBOL_GPL(ide_build_dmatable);
void ide_destroy_dmatable (ide_drive_t *drive) void ide_destroy_dmatable (ide_drive_t *drive)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; ide_hwif_t *hwif = drive->hwif;
struct scatterlist *sg = HWIF(drive)->sg_table; struct pci_dev *pdev = to_pci_dev(hwif->dev);
int nents = HWIF(drive)->sg_nents;
pci_unmap_sg(dev, sg, nents, HWIF(drive)->sg_dma_direction); pci_unmap_sg(pdev, hwif->sg_table, hwif->sg_nents,
hwif->sg_dma_direction);
} }
EXPORT_SYMBOL_GPL(ide_destroy_dmatable); EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
...@@ -843,10 +844,10 @@ EXPORT_SYMBOL(ide_dma_timeout); ...@@ -843,10 +844,10 @@ EXPORT_SYMBOL(ide_dma_timeout);
static void ide_release_dma_engine(ide_hwif_t *hwif) static void ide_release_dma_engine(ide_hwif_t *hwif)
{ {
if (hwif->dmatable_cpu) { if (hwif->dmatable_cpu) {
pci_free_consistent(hwif->pci_dev, struct pci_dev *pdev = to_pci_dev(hwif->dev);
PRD_ENTRIES * PRD_BYTES,
hwif->dmatable_cpu, pci_free_consistent(pdev, PRD_ENTRIES * PRD_BYTES,
hwif->dmatable_dma); hwif->dmatable_cpu, hwif->dmatable_dma);
hwif->dmatable_cpu = NULL; hwif->dmatable_cpu = NULL;
} }
} }
...@@ -874,7 +875,9 @@ int ide_release_dma(ide_hwif_t *hwif) ...@@ -874,7 +875,9 @@ int ide_release_dma(ide_hwif_t *hwif)
static int ide_allocate_dma_engine(ide_hwif_t *hwif) static int ide_allocate_dma_engine(ide_hwif_t *hwif)
{ {
hwif->dmatable_cpu = pci_alloc_consistent(hwif->pci_dev, struct pci_dev *pdev = to_pci_dev(hwif->dev);
hwif->dmatable_cpu = pci_alloc_consistent(pdev,
PRD_ENTRIES * PRD_BYTES, PRD_ENTRIES * PRD_BYTES,
&hwif->dmatable_dma); &hwif->dmatable_dma);
......
...@@ -358,8 +358,10 @@ void ide_toggle_bounce(ide_drive_t *drive, int on) ...@@ -358,8 +358,10 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
if (!PCI_DMA_BUS_IS_PHYS) { if (!PCI_DMA_BUS_IS_PHYS) {
addr = BLK_BOUNCE_ANY; addr = BLK_BOUNCE_ANY;
} else if (on && drive->media == ide_disk) { } else if (on && drive->media == ide_disk) {
if (HWIF(drive)->pci_dev) struct device *dev = drive->hwif->dev;
addr = HWIF(drive)->pci_dev->dma_mask;
if (dev && dev->dma_mask)
addr = *dev->dma_mask;
} }
if (drive->queue) if (drive->queue)
......
...@@ -622,8 +622,8 @@ static void hwif_register (ide_hwif_t *hwif) ...@@ -622,8 +622,8 @@ static void hwif_register (ide_hwif_t *hwif)
strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE); strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE);
hwif->gendev.driver_data = hwif; hwif->gendev.driver_data = hwif;
if (hwif->gendev.parent == NULL) { if (hwif->gendev.parent == NULL) {
if (hwif->pci_dev) if (hwif->dev)
hwif->gendev.parent = &hwif->pci_dev->dev; hwif->gendev.parent = hwif->dev;
else else
/* Would like to do = &device_legacy */ /* Would like to do = &device_legacy */
hwif->gendev.parent = NULL; hwif->gendev.parent = NULL;
......
...@@ -405,8 +405,9 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif) ...@@ -405,8 +405,9 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif)
hwif->chipset = tmp_hwif->chipset; hwif->chipset = tmp_hwif->chipset;
hwif->hold = tmp_hwif->hold; hwif->hold = tmp_hwif->hold;
hwif->dev = tmp_hwif->dev;
#ifdef CONFIG_BLK_DEV_IDEPCI #ifdef CONFIG_BLK_DEV_IDEPCI
hwif->pci_dev = tmp_hwif->pci_dev;
hwif->cds = tmp_hwif->cds; hwif->cds = tmp_hwif->cds;
#endif #endif
......
...@@ -90,7 +90,7 @@ static u8 pci_bus_clock_list_ultra (u8 speed, struct chipset_bus_clock_list_entr ...@@ -90,7 +90,7 @@ static u8 pci_bus_clock_list_ultra (u8 speed, struct chipset_bus_clock_list_entr
static void aec6210_set_mode(ide_drive_t *drive, const u8 speed) static void aec6210_set_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 d_conf = 0; u16 d_conf = 0;
u8 ultra = 0, ultra_conf = 0; u8 ultra = 0, ultra_conf = 0;
u8 tmp0 = 0, tmp1 = 0, tmp2 = 0; u8 tmp0 = 0, tmp1 = 0, tmp2 = 0;
...@@ -116,7 +116,7 @@ static void aec6210_set_mode(ide_drive_t *drive, const u8 speed) ...@@ -116,7 +116,7 @@ static void aec6210_set_mode(ide_drive_t *drive, const u8 speed)
static void aec6260_set_mode(ide_drive_t *drive, const u8 speed) static void aec6260_set_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 unit = (drive->select.b.unit & 0x01); u8 unit = (drive->select.b.unit & 0x01);
u8 tmp1 = 0, tmp2 = 0; u8 tmp1 = 0, tmp2 = 0;
u8 ultra = 0, drive_conf = 0, ultra_conf = 0; u8 ultra = 0, drive_conf = 0, ultra_conf = 0;
...@@ -170,7 +170,7 @@ static unsigned int __devinit init_chipset_aec62xx(struct pci_dev *dev, const ch ...@@ -170,7 +170,7 @@ static unsigned int __devinit init_chipset_aec62xx(struct pci_dev *dev, const ch
static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->set_pio_mode = &aec_set_pio_mode; hwif->set_pio_mode = &aec_set_pio_mode;
...@@ -188,7 +188,7 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) ...@@ -188,7 +188,7 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif)
if (hwif->cbl != ATA_CBL_PATA40_SHORT) { if (hwif->cbl != ATA_CBL_PATA40_SHORT) {
u8 ata66 = 0, mask = hwif->channel ? 0x02 : 0x01; u8 ata66 = 0, mask = hwif->channel ? 0x02 : 0x01;
pci_read_config_byte(hwif->pci_dev, 0x49, &ata66); pci_read_config_byte(dev, 0x49, &ata66);
hwif->cbl = (ata66 & mask) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; hwif->cbl = (ata66 & mask) ? ATA_CBL_PATA40 : ATA_CBL_PATA80;
} }
......
...@@ -293,7 +293,7 @@ static int ali_get_info (char *buffer, char **addr, off_t offset, int count) ...@@ -293,7 +293,7 @@ static int ali_get_info (char *buffer, char **addr, off_t offset, int count)
static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int s_time, a_time, c_time; int s_time, a_time, c_time;
u8 s_clc, a_clc, r_clc; u8 s_clc, a_clc, r_clc;
unsigned long flags; unsigned long flags;
...@@ -396,7 +396,7 @@ static u8 ali_udma_filter(ide_drive_t *drive) ...@@ -396,7 +396,7 @@ static u8 ali_udma_filter(ide_drive_t *drive)
static void ali_set_dma_mode(ide_drive_t *drive, const u8 speed) static void ali_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 speed1 = speed; u8 speed1 = speed;
u8 unit = (drive->select.b.unit & 0x01); u8 unit = (drive->select.b.unit & 0x01);
u8 tmpbyte = 0x00; u8 tmpbyte = 0x00;
...@@ -625,7 +625,7 @@ static int ali_cable_override(struct pci_dev *pdev) ...@@ -625,7 +625,7 @@ static int ali_cable_override(struct pci_dev *pdev)
static u8 __devinit ata66_ali15x3(ide_hwif_t *hwif) static u8 __devinit ata66_ali15x3(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned long flags; unsigned long flags;
u8 cbl = ATA_CBL_PATA40, tmpbyte; u8 cbl = ATA_CBL_PATA40, tmpbyte;
...@@ -688,12 +688,13 @@ static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif) ...@@ -688,12 +688,13 @@ static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif)
static void __devinit init_hwif_ali15x3 (ide_hwif_t *hwif) static void __devinit init_hwif_ali15x3 (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 ideic, inmir; u8 ideic, inmir;
s8 irq_routing_table[] = { -1, 9, 3, 10, 4, 5, 7, 6, s8 irq_routing_table[] = { -1, 9, 3, 10, 4, 5, 7, 6,
1, 11, 0, 12, 0, 14, 0, 15 }; 1, 11, 0, 12, 0, 14, 0, 15 };
int irq = -1; int irq = -1;
if (hwif->pci_dev->device == PCI_DEVICE_ID_AL_M5229) if (dev->device == PCI_DEVICE_ID_AL_M5229)
hwif->irq = hwif->channel ? 15 : 14; hwif->irq = hwif->channel ? 15 : 14;
if (isa_dev) { if (isa_dev) {
......
...@@ -86,6 +86,7 @@ static void amd_set_speed(struct pci_dev *dev, u8 dn, u8 udma_mask, ...@@ -86,6 +86,7 @@ static void amd_set_speed(struct pci_dev *dev, u8 dn, u8 udma_mask,
static void amd_set_drive(ide_drive_t *drive, const u8 speed) static void amd_set_drive(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
ide_drive_t *peer = hwif->drives + (~drive->dn & 1); ide_drive_t *peer = hwif->drives + (~drive->dn & 1);
struct ide_timing t, p; struct ide_timing t, p;
int T, UT; int T, UT;
...@@ -104,7 +105,7 @@ static void amd_set_drive(ide_drive_t *drive, const u8 speed) ...@@ -104,7 +105,7 @@ static void amd_set_drive(ide_drive_t *drive, const u8 speed)
if (speed == XFER_UDMA_5 && amd_clock <= 33333) t.udma = 1; if (speed == XFER_UDMA_5 && amd_clock <= 33333) t.udma = 1;
if (speed == XFER_UDMA_6 && amd_clock <= 33333) t.udma = 15; if (speed == XFER_UDMA_6 && amd_clock <= 33333) t.udma = 15;
amd_set_speed(hwif->pci_dev, drive->dn, udma_mask, &t); amd_set_speed(dev, drive->dn, udma_mask, &t);
} }
/* /*
...@@ -202,8 +203,10 @@ static unsigned int __devinit init_chipset_amd74xx(struct pci_dev *dev, ...@@ -202,8 +203,10 @@ static unsigned int __devinit init_chipset_amd74xx(struct pci_dev *dev,
static void __devinit init_hwif_amd74xx(ide_hwif_t *hwif) static void __devinit init_hwif_amd74xx(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
if (hwif->irq == 0) /* 0 is bogus but will do for now */ if (hwif->irq == 0) /* 0 is bogus but will do for now */
hwif->irq = pci_get_legacy_ide_irq(hwif->pci_dev, hwif->channel); hwif->irq = pci_get_legacy_ide_irq(dev, hwif->channel);
hwif->set_pio_mode = &amd_set_pio_mode; hwif->set_pio_mode = &amd_set_pio_mode;
hwif->set_dma_mode = &amd_set_drive; hwif->set_dma_mode = &amd_set_drive;
......
...@@ -55,7 +55,7 @@ static DEFINE_SPINLOCK(atiixp_lock); ...@@ -55,7 +55,7 @@ static DEFINE_SPINLOCK(atiixp_lock);
static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio) static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
unsigned long flags; unsigned long flags;
int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8; int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
u32 pio_timing_data; u32 pio_timing_data;
...@@ -88,7 +88,7 @@ static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -88,7 +88,7 @@ static void atiixp_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void atiixp_set_dma_mode(ide_drive_t *drive, const u8 speed) static void atiixp_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
unsigned long flags; unsigned long flags;
int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8; int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
u32 tmp32; u32 tmp32;
...@@ -133,9 +133,8 @@ static void atiixp_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -133,9 +133,8 @@ static void atiixp_set_dma_mode(ide_drive_t *drive, const u8 speed)
static void __devinit init_hwif_atiixp(ide_hwif_t *hwif) static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
{ {
u8 udma_mode = 0; struct pci_dev *pdev = to_pci_dev(hwif->dev);
u8 ch = hwif->channel; u8 udma_mode = 0, ch = hwif->channel;
struct pci_dev *pdev = hwif->pci_dev;
hwif->set_pio_mode = &atiixp_set_pio_mode; hwif->set_pio_mode = &atiixp_set_pio_mode;
hwif->set_dma_mode = &atiixp_set_dma_mode; hwif->set_dma_mode = &atiixp_set_dma_mode;
......
...@@ -71,7 +71,7 @@ static u8 quantize_timing(int timing, int quant) ...@@ -71,7 +71,7 @@ static u8 quantize_timing(int timing, int quant)
*/ */
static void program_cycle_times (ide_drive_t *drive, int cycle_time, int active_time) static void program_cycle_times (ide_drive_t *drive, int cycle_time, int active_time)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
int clock_time = 1000 / system_bus_clock(); int clock_time = 1000 / system_bus_clock();
u8 cycle_count, active_count, recovery_count, drwtim; u8 cycle_count, active_count, recovery_count, drwtim;
static const u8 recovery_values[] = static const u8 recovery_values[] =
...@@ -118,7 +118,7 @@ static void program_cycle_times (ide_drive_t *drive, int cycle_time, int active_ ...@@ -118,7 +118,7 @@ static void program_cycle_times (ide_drive_t *drive, int cycle_time, int active_
static void cmd64x_tune_pio(ide_drive_t *drive, const u8 pio) static void cmd64x_tune_pio(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned int cycle_time; unsigned int cycle_time;
u8 setup_count, arttim = 0; u8 setup_count, arttim = 0;
...@@ -183,7 +183,7 @@ static void cmd64x_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -183,7 +183,7 @@ static void cmd64x_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void cmd64x_set_dma_mode(ide_drive_t *drive, const u8 speed) static void cmd64x_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 unit = drive->dn & 0x01; u8 unit = drive->dn & 0x01;
u8 regU = 0, pciU = hwif->channel ? UDIDETCR1 : UDIDETCR0; u8 regU = 0, pciU = hwif->channel ? UDIDETCR1 : UDIDETCR0;
...@@ -245,7 +245,7 @@ static int cmd648_ide_dma_end (ide_drive_t *drive) ...@@ -245,7 +245,7 @@ static int cmd648_ide_dma_end (ide_drive_t *drive)
static int cmd64x_ide_dma_end (ide_drive_t *drive) static int cmd64x_ide_dma_end (ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int irq_reg = hwif->channel ? ARTTIM23 : CFR; int irq_reg = hwif->channel ? ARTTIM23 : CFR;
u8 irq_mask = hwif->channel ? ARTTIM23_INTR_CH1 : u8 irq_mask = hwif->channel ? ARTTIM23_INTR_CH1 :
CFR_INTR_CH0; CFR_INTR_CH0;
...@@ -285,7 +285,7 @@ static int cmd648_ide_dma_test_irq (ide_drive_t *drive) ...@@ -285,7 +285,7 @@ static int cmd648_ide_dma_test_irq (ide_drive_t *drive)
static int cmd64x_ide_dma_test_irq (ide_drive_t *drive) static int cmd64x_ide_dma_test_irq (ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int irq_reg = hwif->channel ? ARTTIM23 : CFR; int irq_reg = hwif->channel ? ARTTIM23 : CFR;
u8 irq_mask = hwif->channel ? ARTTIM23_INTR_CH1 : u8 irq_mask = hwif->channel ? ARTTIM23_INTR_CH1 :
CFR_INTR_CH0; CFR_INTR_CH0;
...@@ -375,7 +375,7 @@ static unsigned int __devinit init_chipset_cmd64x(struct pci_dev *dev, const cha ...@@ -375,7 +375,7 @@ static unsigned int __devinit init_chipset_cmd64x(struct pci_dev *dev, const cha
static u8 __devinit ata66_cmd64x(ide_hwif_t *hwif) static u8 __devinit ata66_cmd64x(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 bmidecsr = 0, mask = hwif->channel ? 0x02 : 0x01; u8 bmidecsr = 0, mask = hwif->channel ? 0x02 : 0x01;
switch (dev->device) { switch (dev->device) {
...@@ -390,7 +390,7 @@ static u8 __devinit ata66_cmd64x(ide_hwif_t *hwif) ...@@ -390,7 +390,7 @@ static u8 __devinit ata66_cmd64x(ide_hwif_t *hwif)
static void __devinit init_hwif_cmd64x(ide_hwif_t *hwif) static void __devinit init_hwif_cmd64x(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->set_pio_mode = &cmd64x_set_pio_mode; hwif->set_pio_mode = &cmd64x_set_pio_mode;
hwif->set_dma_mode = &cmd64x_set_dma_mode; hwif->set_dma_mode = &cmd64x_set_dma_mode;
......
...@@ -69,7 +69,7 @@ static struct pio_clocks cs5520_pio_clocks[]={ ...@@ -69,7 +69,7 @@ static struct pio_clocks cs5520_pio_clocks[]={
static void cs5520_set_pio_mode(ide_drive_t *drive, const u8 pio) static void cs5520_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
int controller = drive->dn > 1 ? 1 : 0; int controller = drive->dn > 1 ? 1 : 0;
/* FIXME: if DMA = 1 do we need to set the DMA bit here ? */ /* FIXME: if DMA = 1 do we need to set the DMA bit here ? */
......
...@@ -177,13 +177,15 @@ static u8 __devinit cs5535_cable_detect(struct pci_dev *dev) ...@@ -177,13 +177,15 @@ static u8 __devinit cs5535_cable_detect(struct pci_dev *dev)
*/ */
static void __devinit init_hwif_cs5535(ide_hwif_t *hwif) static void __devinit init_hwif_cs5535(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->set_pio_mode = &cs5535_set_pio_mode; hwif->set_pio_mode = &cs5535_set_pio_mode;
hwif->set_dma_mode = &cs5535_set_dma_mode; hwif->set_dma_mode = &cs5535_set_dma_mode;
if (hwif->dma_base == 0) if (hwif->dma_base == 0)
return; return;
hwif->cbl = cs5535_cable_detect(hwif->pci_dev); hwif->cbl = cs5535_cable_detect(dev);
} }
static const struct ide_port_info cs5535_chipset __devinitdata = { static const struct ide_port_info cs5535_chipset __devinitdata = {
......
...@@ -228,7 +228,7 @@ static void cy82c693_set_dma_mode(ide_drive_t *drive, const u8 mode) ...@@ -228,7 +228,7 @@ static void cy82c693_set_dma_mode(ide_drive_t *drive, const u8 mode)
static void cy82c693_set_pio_mode(ide_drive_t *drive, const u8 pio) static void cy82c693_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
pio_clocks_t pclk; pio_clocks_t pclk;
unsigned int addrCtrl; unsigned int addrCtrl;
...@@ -397,8 +397,9 @@ static void __devinit init_hwif_cy82c693(ide_hwif_t *hwif) ...@@ -397,8 +397,9 @@ static void __devinit init_hwif_cy82c693(ide_hwif_t *hwif)
static void __devinit init_iops_cy82c693(ide_hwif_t *hwif) static void __devinit init_iops_cy82c693(ide_hwif_t *hwif)
{ {
static ide_hwif_t *primary; static ide_hwif_t *primary;
struct pci_dev *dev = to_pci_dev(hwif->dev);
if (PCI_FUNC(hwif->pci_dev->devfn) == 1) if (PCI_FUNC(dev->devfn) == 1)
primary = hwif; primary = hwif;
else { else {
hwif->mate = primary; hwif->mate = primary;
......
...@@ -87,7 +87,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) ...@@ -87,7 +87,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
return -ENODEV; return -ENODEV;
} }
pci_set_drvdata(dev, hwif); pci_set_drvdata(dev, hwif);
hwif->pci_dev = dev; hwif->dev = &dev->dev;
drive = &hwif->drives[0]; drive = &hwif->drives[0];
if (drive->present) { if (drive->present) {
drive->io_32bit = 1; drive->io_32bit = 1;
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
static void hpt34x_set_mode(ide_drive_t *drive, const u8 speed) static void hpt34x_set_mode(ide_drive_t *drive, const u8 speed)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 reg1= 0, tmp1 = 0, reg2 = 0, tmp2 = 0; u32 reg1= 0, tmp1 = 0, reg2 = 0, tmp2 = 0;
u8 hi_speed, lo_speed; u8 hi_speed, lo_speed;
......
...@@ -626,7 +626,8 @@ static int check_in_drive_list(ide_drive_t *drive, const char **list) ...@@ -626,7 +626,8 @@ static int check_in_drive_list(ide_drive_t *drive, const char **list)
static u8 hpt3xx_udma_filter(ide_drive_t *drive) static u8 hpt3xx_udma_filter(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct hpt_info *info = pci_get_drvdata(hwif->pci_dev); struct pci_dev *dev = to_pci_dev(hwif->dev);
struct hpt_info *info = pci_get_drvdata(dev);
u8 mask = hwif->ultra_mask; u8 mask = hwif->ultra_mask;
switch (info->chip_type) { switch (info->chip_type) {
...@@ -665,7 +666,8 @@ static u8 hpt3xx_udma_filter(ide_drive_t *drive) ...@@ -665,7 +666,8 @@ static u8 hpt3xx_udma_filter(ide_drive_t *drive)
static u8 hpt3xx_mdma_filter(ide_drive_t *drive) static u8 hpt3xx_mdma_filter(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct hpt_info *info = pci_get_drvdata(hwif->pci_dev); struct pci_dev *dev = to_pci_dev(hwif->dev);
struct hpt_info *info = pci_get_drvdata(dev);
switch (info->chip_type) { switch (info->chip_type) {
case HPT372 : case HPT372 :
...@@ -699,7 +701,7 @@ static u32 get_speed_setting(u8 speed, struct hpt_info *info) ...@@ -699,7 +701,7 @@ static u32 get_speed_setting(u8 speed, struct hpt_info *info)
static void hpt3xx_set_mode(ide_drive_t *drive, const u8 speed) static void hpt3xx_set_mode(ide_drive_t *drive, const u8 speed)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
struct hpt_info *info = pci_get_drvdata(dev); struct hpt_info *info = pci_get_drvdata(dev);
struct hpt_timings *t = info->timings; struct hpt_timings *t = info->timings;
u8 itr_addr = 0x40 + (drive->dn * 4); u8 itr_addr = 0x40 + (drive->dn * 4);
...@@ -742,7 +744,7 @@ static void hpt3xx_quirkproc(ide_drive_t *drive) ...@@ -742,7 +744,7 @@ static void hpt3xx_quirkproc(ide_drive_t *drive)
static void hpt3xx_maskproc(ide_drive_t *drive, int mask) static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
struct hpt_info *info = pci_get_drvdata(dev); struct hpt_info *info = pci_get_drvdata(dev);
if (drive->quirk_list) { if (drive->quirk_list) {
...@@ -774,7 +776,7 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask) ...@@ -774,7 +776,7 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
*/ */
static void hpt366_dma_lost_irq(ide_drive_t *drive) static void hpt366_dma_lost_irq(ide_drive_t *drive)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u8 mcr1 = 0, mcr3 = 0, scr1 = 0; u8 mcr1 = 0, mcr3 = 0, scr1 = 0;
pci_read_config_byte(dev, 0x50, &mcr1); pci_read_config_byte(dev, 0x50, &mcr1);
...@@ -790,18 +792,20 @@ static void hpt366_dma_lost_irq(ide_drive_t *drive) ...@@ -790,18 +792,20 @@ static void hpt366_dma_lost_irq(ide_drive_t *drive)
static void hpt370_clear_engine(ide_drive_t *drive) static void hpt370_clear_engine(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
pci_write_config_byte(hwif->pci_dev, hwif->select_data, 0x37); pci_write_config_byte(dev, hwif->select_data, 0x37);
udelay(10); udelay(10);
} }
static void hpt370_irq_timeout(ide_drive_t *drive) static void hpt370_irq_timeout(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 bfifo = 0; u16 bfifo = 0;
u8 dma_cmd; u8 dma_cmd;
pci_read_config_word(hwif->pci_dev, hwif->select_data + 2, &bfifo); pci_read_config_word(dev, hwif->select_data + 2, &bfifo);
printk(KERN_DEBUG "%s: %d bytes in FIFO\n", drive->name, bfifo & 0x1ff); printk(KERN_DEBUG "%s: %d bytes in FIFO\n", drive->name, bfifo & 0x1ff);
/* get DMA command mode */ /* get DMA command mode */
...@@ -844,10 +848,11 @@ static void hpt370_dma_timeout(ide_drive_t *drive) ...@@ -844,10 +848,11 @@ static void hpt370_dma_timeout(ide_drive_t *drive)
static int hpt374_ide_dma_test_irq(ide_drive_t *drive) static int hpt374_ide_dma_test_irq(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 bfifo = 0; u16 bfifo = 0;
u8 dma_stat; u8 dma_stat;
pci_read_config_word(hwif->pci_dev, hwif->select_data + 2, &bfifo); pci_read_config_word(dev, hwif->select_data + 2, &bfifo);
if (bfifo & 0x1FF) { if (bfifo & 0x1FF) {
// printk("%s: %d bytes in FIFO\n", drive->name, bfifo); // printk("%s: %d bytes in FIFO\n", drive->name, bfifo);
return 0; return 0;
...@@ -867,7 +872,7 @@ static int hpt374_ide_dma_test_irq(ide_drive_t *drive) ...@@ -867,7 +872,7 @@ static int hpt374_ide_dma_test_irq(ide_drive_t *drive)
static int hpt374_ide_dma_end(ide_drive_t *drive) static int hpt374_ide_dma_end(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 mcr = 0, mcr_addr = hwif->select_data; u8 mcr = 0, mcr_addr = hwif->select_data;
u8 bwsr = 0, mask = hwif->channel ? 0x02 : 0x01; u8 bwsr = 0, mask = hwif->channel ? 0x02 : 0x01;
...@@ -942,7 +947,7 @@ static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq) ...@@ -942,7 +947,7 @@ static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq)
static int hpt3xx_busproc(ide_drive_t *drive, int state) static int hpt3xx_busproc(ide_drive_t *drive, int state)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 mcr_addr = hwif->select_data + 2; u8 mcr_addr = hwif->select_data + 2;
u8 resetmask = hwif->channel ? 0x80 : 0x40; u8 resetmask = hwif->channel ? 0x80 : 0x40;
u8 bsr2 = 0; u8 bsr2 = 0;
...@@ -1278,7 +1283,7 @@ static unsigned int __devinit init_chipset_hpt366(struct pci_dev *dev, const cha ...@@ -1278,7 +1283,7 @@ static unsigned int __devinit init_chipset_hpt366(struct pci_dev *dev, const cha
static void __devinit init_hwif_hpt366(ide_hwif_t *hwif) static void __devinit init_hwif_hpt366(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
struct hpt_info *info = pci_get_drvdata(dev); struct hpt_info *info = pci_get_drvdata(dev);
int serialize = HPT_SERIALIZE_IO; int serialize = HPT_SERIALIZE_IO;
u8 scr1 = 0, ata66 = hwif->channel ? 0x01 : 0x02; u8 scr1 = 0, ata66 = hwif->channel ? 0x01 : 0x02;
...@@ -1393,7 +1398,7 @@ static void __devinit init_hwif_hpt366(ide_hwif_t *hwif) ...@@ -1393,7 +1398,7 @@ static void __devinit init_hwif_hpt366(ide_hwif_t *hwif)
static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase) static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 masterdma = 0, slavedma = 0; u8 masterdma = 0, slavedma = 0;
u8 dma_new = 0, dma_old = 0; u8 dma_new = 0, dma_old = 0;
unsigned long flags; unsigned long flags;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
static void it8213_set_pio_mode(ide_drive_t *drive, const u8 pio) static void it8213_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int is_slave = drive->dn & 1; int is_slave = drive->dn & 1;
int master_port = 0x40; int master_port = 0x40;
int slave_port = 0x44; int slave_port = 0x44;
...@@ -85,7 +85,7 @@ static void it8213_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -85,7 +85,7 @@ static void it8213_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 maslave = 0x40; u8 maslave = 0x40;
int a_speed = 3 << (drive->dn * 4); int a_speed = 3 << (drive->dn * 4);
int u_flag = 1 << drive->dn; int u_flag = 1 << drive->dn;
...@@ -152,6 +152,7 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -152,6 +152,7 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed)
static void __devinit init_hwif_it8213(ide_hwif_t *hwif) static void __devinit init_hwif_it8213(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 reg42h = 0; u8 reg42h = 0;
hwif->set_dma_mode = &it8213_set_dma_mode; hwif->set_dma_mode = &it8213_set_dma_mode;
...@@ -160,7 +161,7 @@ static void __devinit init_hwif_it8213(ide_hwif_t *hwif) ...@@ -160,7 +161,7 @@ static void __devinit init_hwif_it8213(ide_hwif_t *hwif)
if (!hwif->dma_base) if (!hwif->dma_base)
return; return;
pci_read_config_byte(hwif->pci_dev, 0x42, &reg42h); pci_read_config_byte(dev, 0x42, &reg42h);
if (hwif->cbl != ATA_CBL_PATA40_SHORT) if (hwif->cbl != ATA_CBL_PATA40_SHORT)
hwif->cbl = (reg42h & 0x02) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; hwif->cbl = (reg42h & 0x02) ? ATA_CBL_PATA40 : ATA_CBL_PATA80;
......
...@@ -114,6 +114,7 @@ static int it8212_noraid; ...@@ -114,6 +114,7 @@ static int it8212_noraid;
static void it821x_program(ide_drive_t *drive, u16 timing) static void it821x_program(ide_drive_t *drive, u16 timing)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *itdev = ide_get_hwifdata(hwif); struct it821x_dev *itdev = ide_get_hwifdata(hwif);
int channel = hwif->channel; int channel = hwif->channel;
u8 conf; u8 conf;
...@@ -123,7 +124,8 @@ static void it821x_program(ide_drive_t *drive, u16 timing) ...@@ -123,7 +124,8 @@ static void it821x_program(ide_drive_t *drive, u16 timing)
conf = timing >> 8; conf = timing >> 8;
else else
conf = timing & 0xFF; conf = timing & 0xFF;
pci_write_config_byte(hwif->pci_dev, 0x54 + 4 * channel, conf);
pci_write_config_byte(dev, 0x54 + 4 * channel, conf);
} }
/** /**
...@@ -138,6 +140,7 @@ static void it821x_program(ide_drive_t *drive, u16 timing) ...@@ -138,6 +140,7 @@ static void it821x_program(ide_drive_t *drive, u16 timing)
static void it821x_program_udma(ide_drive_t *drive, u16 timing) static void it821x_program_udma(ide_drive_t *drive, u16 timing)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *itdev = ide_get_hwifdata(hwif); struct it821x_dev *itdev = ide_get_hwifdata(hwif);
int channel = hwif->channel; int channel = hwif->channel;
int unit = drive->select.b.unit; int unit = drive->select.b.unit;
...@@ -148,11 +151,12 @@ static void it821x_program_udma(ide_drive_t *drive, u16 timing) ...@@ -148,11 +151,12 @@ static void it821x_program_udma(ide_drive_t *drive, u16 timing)
conf = timing >> 8; conf = timing >> 8;
else else
conf = timing & 0xFF; conf = timing & 0xFF;
if(itdev->timing10 == 0)
pci_write_config_byte(hwif->pci_dev, 0x56 + 4 * channel + unit, conf); if (itdev->timing10 == 0)
pci_write_config_byte(dev, 0x56 + 4 * channel + unit, conf);
else { else {
pci_write_config_byte(hwif->pci_dev, 0x56 + 4 * channel, conf); pci_write_config_byte(dev, 0x56 + 4 * channel, conf);
pci_write_config_byte(hwif->pci_dev, 0x56 + 4 * channel + 1, conf); pci_write_config_byte(dev, 0x56 + 4 * channel + 1, conf);
} }
} }
...@@ -167,6 +171,7 @@ static void it821x_program_udma(ide_drive_t *drive, u16 timing) ...@@ -167,6 +171,7 @@ static void it821x_program_udma(ide_drive_t *drive, u16 timing)
static void it821x_clock_strategy(ide_drive_t *drive) static void it821x_clock_strategy(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *itdev = ide_get_hwifdata(hwif); struct it821x_dev *itdev = ide_get_hwifdata(hwif);
u8 unit = drive->select.b.unit; u8 unit = drive->select.b.unit;
...@@ -205,10 +210,11 @@ static void it821x_clock_strategy(ide_drive_t *drive) ...@@ -205,10 +210,11 @@ static void it821x_clock_strategy(ide_drive_t *drive)
itdev->clock_mode = ATA_50; itdev->clock_mode = ATA_50;
sel = 1; sel = 1;
} }
pci_read_config_byte(hwif->pci_dev, 0x50, &v);
pci_read_config_byte(dev, 0x50, &v);
v &= ~(1 << (1 + hwif->channel)); v &= ~(1 << (1 + hwif->channel));
v |= sel << (1 + hwif->channel); v |= sel << (1 + hwif->channel);
pci_write_config_byte(hwif->pci_dev, 0x50, v); pci_write_config_byte(dev, 0x50, v);
/* /*
* Reprogram the UDMA/PIO of the pair drive for the switch * Reprogram the UDMA/PIO of the pair drive for the switch
...@@ -283,6 +289,7 @@ static void it821x_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -283,6 +289,7 @@ static void it821x_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted) static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *itdev = (void *)ide_get_hwifdata(hwif); struct it821x_dev *itdev = (void *)ide_get_hwifdata(hwif);
int unit = drive->select.b.unit; int unit = drive->select.b.unit;
int channel = hwif->channel; int channel = hwif->channel;
...@@ -297,12 +304,12 @@ static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted) ...@@ -297,12 +304,12 @@ static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted)
itdev->udma[unit] = UDMA_OFF; itdev->udma[unit] = UDMA_OFF;
/* UDMA bits off - Revision 0x10 do them in pairs */ /* UDMA bits off - Revision 0x10 do them in pairs */
pci_read_config_byte(hwif->pci_dev, 0x50, &conf); pci_read_config_byte(dev, 0x50, &conf);
if(itdev->timing10) if (itdev->timing10)
conf |= channel ? 0x60: 0x18; conf |= channel ? 0x60: 0x18;
else else
conf |= 1 << (3 + 2 * channel + unit); conf |= 1 << (3 + 2 * channel + unit);
pci_write_config_byte(hwif->pci_dev, 0x50, conf); pci_write_config_byte(dev, 0x50, conf);
it821x_clock_strategy(drive); it821x_clock_strategy(drive);
/* FIXME: do we need to program this ? */ /* FIXME: do we need to program this ? */
...@@ -321,6 +328,7 @@ static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted) ...@@ -321,6 +328,7 @@ static void it821x_tune_mwdma (ide_drive_t *drive, byte mode_wanted)
static void it821x_tune_udma (ide_drive_t *drive, byte mode_wanted) static void it821x_tune_udma (ide_drive_t *drive, byte mode_wanted)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *itdev = ide_get_hwifdata(hwif); struct it821x_dev *itdev = ide_get_hwifdata(hwif);
int unit = drive->select.b.unit; int unit = drive->select.b.unit;
int channel = hwif->channel; int channel = hwif->channel;
...@@ -337,12 +345,12 @@ static void it821x_tune_udma (ide_drive_t *drive, byte mode_wanted) ...@@ -337,12 +345,12 @@ static void it821x_tune_udma (ide_drive_t *drive, byte mode_wanted)
itdev->udma[unit] |= 0x8080; /* UDMA 5/6 select on */ itdev->udma[unit] |= 0x8080; /* UDMA 5/6 select on */
/* UDMA on. Again revision 0x10 must do the pair */ /* UDMA on. Again revision 0x10 must do the pair */
pci_read_config_byte(hwif->pci_dev, 0x50, &conf); pci_read_config_byte(dev, 0x50, &conf);
if(itdev->timing10) if (itdev->timing10)
conf &= channel ? 0x9F: 0xE7; conf &= channel ? 0x9F: 0xE7;
else else
conf &= ~ (1 << (3 + 2 * channel + unit)); conf &= ~ (1 << (3 + 2 * channel + unit));
pci_write_config_byte(hwif->pci_dev, 0x50, conf); pci_write_config_byte(dev, 0x50, conf);
it821x_clock_strategy(drive); it821x_clock_strategy(drive);
it821x_program_udma(drive, itdev->udma[unit]); it821x_program_udma(drive, itdev->udma[unit]);
...@@ -520,6 +528,7 @@ static void __devinit it821x_quirkproc(ide_drive_t *drive) ...@@ -520,6 +528,7 @@ static void __devinit it821x_quirkproc(ide_drive_t *drive)
static void __devinit init_hwif_it821x(ide_hwif_t *hwif) static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct it821x_dev *idev = kzalloc(sizeof(struct it821x_dev), GFP_KERNEL); struct it821x_dev *idev = kzalloc(sizeof(struct it821x_dev), GFP_KERNEL);
u8 conf; u8 conf;
...@@ -532,7 +541,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif) ...@@ -532,7 +541,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
ide_set_hwifdata(hwif, idev); ide_set_hwifdata(hwif, idev);
pci_read_config_byte(hwif->pci_dev, 0x50, &conf); pci_read_config_byte(dev, 0x50, &conf);
if (conf & 1) { if (conf & 1) {
idev->smart = 1; idev->smart = 1;
hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA; hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
...@@ -555,7 +564,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif) ...@@ -555,7 +564,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
* this is necessary. * this is necessary.
*/ */
pci_read_config_byte(hwif->pci_dev, 0x08, &conf); pci_read_config_byte(dev, 0x08, &conf);
if (conf == 0x10) { if (conf == 0x10) {
idev->timing10 = 1; idev->timing10 = 1;
hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA; hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
......
...@@ -30,7 +30,7 @@ typedef enum { ...@@ -30,7 +30,7 @@ typedef enum {
static u8 __devinit ata66_jmicron(ide_hwif_t *hwif) static u8 __devinit ata66_jmicron(ide_hwif_t *hwif)
{ {
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
u32 control; u32 control;
u32 control5; u32 control5;
......
...@@ -71,10 +71,9 @@ static u8 superio_ide_inb (unsigned long port) ...@@ -71,10 +71,9 @@ static u8 superio_ide_inb (unsigned long port)
static void __devinit superio_ide_init_iops (struct hwif_s *hwif) static void __devinit superio_ide_init_iops (struct hwif_s *hwif)
{ {
struct pci_dev *pdev = to_pci_dev(hwif->dev);
u32 base, dmabase; u32 base, dmabase;
u8 tmp; u8 port = hwif->channel, tmp;
struct pci_dev *pdev = hwif->pci_dev;
u8 port = hwif->channel;
base = pci_resource_start(pdev, port * 2) & ~3; base = pci_resource_start(pdev, port * 2) & ~3;
dmabase = pci_resource_start(pdev, 4) & ~3; dmabase = pci_resource_start(pdev, 4) & ~3;
...@@ -93,10 +92,11 @@ static void __devinit superio_ide_init_iops (struct hwif_s *hwif) ...@@ -93,10 +92,11 @@ static void __devinit superio_ide_init_iops (struct hwif_s *hwif)
static void __devinit init_iops_ns87415(ide_hwif_t *hwif) static void __devinit init_iops_ns87415(ide_hwif_t *hwif)
{ {
if (PCI_SLOT(hwif->pci_dev->devfn) == 0xE) { struct pci_dev *dev = to_pci_dev(hwif->dev);
if (PCI_SLOT(dev->devfn) == 0xE)
/* Built-in - assume it's under superio. */ /* Built-in - assume it's under superio. */
superio_ide_init_iops(hwif); superio_ide_init_iops(hwif);
}
} }
#endif #endif
...@@ -110,8 +110,8 @@ static unsigned int ns87415_count = 0, ns87415_control[MAX_HWIFS] = { 0 }; ...@@ -110,8 +110,8 @@ static unsigned int ns87415_count = 0, ns87415_control[MAX_HWIFS] = { 0 };
static void ns87415_prepare_drive (ide_drive_t *drive, unsigned int use_dma) static void ns87415_prepare_drive (ide_drive_t *drive, unsigned int use_dma)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned int bit, other, new, *old = (unsigned int *) hwif->select_data; unsigned int bit, other, new, *old = (unsigned int *) hwif->select_data;
struct pci_dev *dev = hwif->pci_dev;
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
...@@ -189,7 +189,7 @@ static int ns87415_ide_dma_setup(ide_drive_t *drive) ...@@ -189,7 +189,7 @@ static int ns87415_ide_dma_setup(ide_drive_t *drive)
static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif) static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned int ctrl, using_inta; unsigned int ctrl, using_inta;
u8 progif; u8 progif;
#ifdef __sparc_v9__ #ifdef __sparc_v9__
......
...@@ -149,6 +149,7 @@ static struct udma_timing { ...@@ -149,6 +149,7 @@ static struct udma_timing {
static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed) static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 adj = (drive->dn & 1) ? 0x08 : 0x00; u8 adj = (drive->dn & 1) ? 0x08 : 0x00;
/* /*
...@@ -159,7 +160,7 @@ static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -159,7 +160,7 @@ static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed)
* As we set up the PLL to output 133 MHz for UltraDMA/133 capable * As we set up the PLL to output 133 MHz for UltraDMA/133 capable
* chips, we must override the default register settings... * chips, we must override the default register settings...
*/ */
if (max_dma_rate(hwif->pci_dev) == 4) { if (max_dma_rate(dev) == 4) {
u8 mode = speed & 0x07; u8 mode = speed & 0x07;
if (speed >= XFER_UDMA_0) { if (speed >= XFER_UDMA_0) {
...@@ -186,9 +187,10 @@ static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -186,9 +187,10 @@ static void pdcnew_set_dma_mode(ide_drive_t *drive, const u8 speed)
static void pdcnew_set_pio_mode(ide_drive_t *drive, const u8 pio) static void pdcnew_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 adj = (drive->dn & 1) ? 0x08 : 0x00; u8 adj = (drive->dn & 1) ? 0x08 : 0x00;
if (max_dma_rate(hwif->pci_dev) == 4) { if (max_dma_rate(dev) == 4) {
set_indexed_reg(hwif, 0x0c + adj, pio_timings[pio].reg0c); set_indexed_reg(hwif, 0x0c + adj, pio_timings[pio].reg0c);
set_indexed_reg(hwif, 0x0d + adj, pio_timings[pio].reg0d); set_indexed_reg(hwif, 0x0d + adj, pio_timings[pio].reg0d);
set_indexed_reg(hwif, 0x13 + adj, pio_timings[pio].reg13); set_indexed_reg(hwif, 0x13 + adj, pio_timings[pio].reg13);
......
...@@ -66,7 +66,7 @@ static void pdc_old_disable_66MHz_clock(ide_hwif_t *); ...@@ -66,7 +66,7 @@ static void pdc_old_disable_66MHz_clock(ide_hwif_t *);
static void pdc202xx_set_mode(ide_drive_t *drive, const u8 speed) static void pdc202xx_set_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 drive_pci = 0x60 + (drive->dn << 2); u8 drive_pci = 0x60 + (drive->dn << 2);
u8 AP = 0, BP = 0, CP = 0; u8 AP = 0, BP = 0, CP = 0;
...@@ -144,9 +144,10 @@ static void pdc202xx_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -144,9 +144,10 @@ static void pdc202xx_set_pio_mode(ide_drive_t *drive, const u8 pio)
static u8 pdc202xx_old_cable_detect (ide_hwif_t *hwif) static u8 pdc202xx_old_cable_detect (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 CIS = 0, mask = (hwif->channel) ? (1<<11) : (1<<10); u16 CIS = 0, mask = (hwif->channel) ? (1<<11) : (1<<10);
pci_read_config_word(hwif->pci_dev, 0x50, &CIS); pci_read_config_word(dev, 0x50, &CIS);
return (CIS & mask) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; return (CIS & mask) ? ATA_CBL_PATA40 : ATA_CBL_PATA80;
} }
...@@ -305,12 +306,14 @@ static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev, ...@@ -305,12 +306,14 @@ static unsigned int __devinit init_chipset_pdc202xx(struct pci_dev *dev,
static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->set_pio_mode = &pdc202xx_set_pio_mode; hwif->set_pio_mode = &pdc202xx_set_pio_mode;
hwif->set_dma_mode = &pdc202xx_set_mode; hwif->set_dma_mode = &pdc202xx_set_mode;
hwif->quirkproc = &pdc202xx_quirkproc; hwif->quirkproc = &pdc202xx_quirkproc;
if (hwif->pci_dev->device != PCI_DEVICE_ID_PROMISE_20246) if (dev->device != PCI_DEVICE_ID_PROMISE_20246)
hwif->resetproc = &pdc202xx_reset; hwif->resetproc = &pdc202xx_reset;
if (hwif->dma_base == 0) if (hwif->dma_base == 0)
...@@ -319,7 +322,7 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) ...@@ -319,7 +322,7 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
hwif->dma_lost_irq = &pdc202xx_dma_lost_irq; hwif->dma_lost_irq = &pdc202xx_dma_lost_irq;
hwif->dma_timeout = &pdc202xx_dma_timeout; hwif->dma_timeout = &pdc202xx_dma_timeout;
if (hwif->pci_dev->device != PCI_DEVICE_ID_PROMISE_20246) { if (dev->device != PCI_DEVICE_ID_PROMISE_20246) {
if (hwif->cbl != ATA_CBL_PATA40_SHORT) if (hwif->cbl != ATA_CBL_PATA40_SHORT)
hwif->cbl = pdc202xx_old_cable_detect(hwif); hwif->cbl = pdc202xx_old_cable_detect(hwif);
......
...@@ -71,7 +71,7 @@ static int no_piix_dma; ...@@ -71,7 +71,7 @@ static int no_piix_dma;
static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio) static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int is_slave = drive->dn & 1; int is_slave = drive->dn & 1;
int master_port = hwif->channel ? 0x42 : 0x40; int master_port = hwif->channel ? 0x42 : 0x40;
int slave_port = 0x44; int slave_port = 0x44;
...@@ -140,7 +140,7 @@ static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -140,7 +140,7 @@ static void piix_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void piix_set_dma_mode(ide_drive_t *drive, const u8 speed) static void piix_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 maslave = hwif->channel ? 0x42 : 0x40; u8 maslave = hwif->channel ? 0x42 : 0x40;
int a_speed = 3 << (drive->dn * 4); int a_speed = 3 << (drive->dn * 4);
int u_flag = 1 << drive->dn; int u_flag = 1 << drive->dn;
...@@ -260,7 +260,7 @@ static const struct ich_laptop ich_laptop[] = { ...@@ -260,7 +260,7 @@ static const struct ich_laptop ich_laptop[] = {
static u8 __devinit piix_cable_detect(ide_hwif_t *hwif) static u8 __devinit piix_cable_detect(ide_hwif_t *hwif)
{ {
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
const struct ich_laptop *lap = &ich_laptop[0]; const struct ich_laptop *lap = &ich_laptop[0];
u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30; u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30;
......
...@@ -32,8 +32,8 @@ ...@@ -32,8 +32,8 @@
static void __devinit init_hwif_rz1000 (ide_hwif_t *hwif) static void __devinit init_hwif_rz1000 (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 reg; u16 reg;
struct pci_dev *dev = hwif->pci_dev;
if (!pci_read_config_word (dev, 0x40, &reg) && if (!pci_read_config_word (dev, 0x40, &reg) &&
!pci_write_config_word(dev, 0x40, reg & 0xdfff)) { !pci_write_config_word(dev, 0x40, reg & 0xdfff)) {
......
...@@ -87,7 +87,7 @@ static const unsigned int sc1200_pio_timings[4][5] = ...@@ -87,7 +87,7 @@ static const unsigned int sc1200_pio_timings[4][5] =
static void sc1200_tunepio(ide_drive_t *drive, u8 pio) static void sc1200_tunepio(ide_drive_t *drive, u8 pio)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
unsigned int basereg = hwif->channel ? 0x50 : 0x40, format = 0; unsigned int basereg = hwif->channel ? 0x50 : 0x40, format = 0;
pci_read_config_dword(pdev, basereg + 4, &format); pci_read_config_dword(pdev, basereg + 4, &format);
...@@ -130,6 +130,7 @@ static u8 sc1200_udma_filter(ide_drive_t *drive) ...@@ -130,6 +130,7 @@ static u8 sc1200_udma_filter(ide_drive_t *drive)
static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode) static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
int unit = drive->select.b.unit; int unit = drive->select.b.unit;
unsigned int reg, timings; unsigned int reg, timings;
unsigned short pci_clock; unsigned short pci_clock;
...@@ -160,12 +161,11 @@ static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode) ...@@ -160,12 +161,11 @@ static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode)
timings = mwdma_timing[pci_clock][mode - XFER_MW_DMA_0]; timings = mwdma_timing[pci_clock][mode - XFER_MW_DMA_0];
if (unit == 0) { /* are we configuring drive0? */ if (unit == 0) { /* are we configuring drive0? */
pci_read_config_dword(hwif->pci_dev, basereg+4, &reg); pci_read_config_dword(dev, basereg + 4, &reg);
timings |= reg & 0x80000000; /* preserve PIO format bit */ timings |= reg & 0x80000000; /* preserve PIO format bit */
pci_write_config_dword(hwif->pci_dev, basereg+4, timings); pci_write_config_dword(dev, basereg + 4, timings);
} else { } else
pci_write_config_dword(hwif->pci_dev, basereg+12, timings); pci_write_config_dword(dev, basereg + 12, timings);
}
} }
/* Replacement for the standard ide_dma_end action in /* Replacement for the standard ide_dma_end action in
......
...@@ -594,7 +594,7 @@ static int __devinit init_setup_scc(struct pci_dev *dev, ...@@ -594,7 +594,7 @@ static int __devinit init_setup_scc(struct pci_dev *dev,
static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif) static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
struct scc_ports *ports = pci_get_drvdata(dev); struct scc_ports *ports = pci_get_drvdata(dev);
unsigned long dma_base = ports->dma; unsigned long dma_base = ports->dma;
...@@ -620,7 +620,7 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif) ...@@ -620,7 +620,7 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif)
hwif->io_ports[IDE_STATUS_OFFSET] = dma_base + 0x3c; hwif->io_ports[IDE_STATUS_OFFSET] = dma_base + 0x3c;
hwif->io_ports[IDE_CONTROL_OFFSET] = dma_base + 0x40; hwif->io_ports[IDE_CONTROL_OFFSET] = dma_base + 0x40;
hwif->irq = hwif->pci_dev->irq; hwif->irq = dev->irq;
hwif->dma_base = dma_base; hwif->dma_base = dma_base;
hwif->config_data = ports->ctl; hwif->config_data = ports->ctl;
hwif->mmio = 1; hwif->mmio = 1;
...@@ -636,7 +636,8 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif) ...@@ -636,7 +636,8 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif)
static void __devinit init_iops_scc(ide_hwif_t *hwif) static void __devinit init_iops_scc(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->hwif_data = NULL; hwif->hwif_data = NULL;
if (pci_get_drvdata(dev) == NULL) if (pci_get_drvdata(dev) == NULL)
return; return;
...@@ -726,10 +727,8 @@ static void __devexit scc_remove(struct pci_dev *dev) ...@@ -726,10 +727,8 @@ static void __devexit scc_remove(struct pci_dev *dev)
unsigned long dma_size = pci_resource_len(dev, 1); unsigned long dma_size = pci_resource_len(dev, 1);
if (hwif->dmatable_cpu) { if (hwif->dmatable_cpu) {
pci_free_consistent(hwif->pci_dev, pci_free_consistent(dev, PRD_ENTRIES * PRD_BYTES,
PRD_ENTRIES * PRD_BYTES, hwif->dmatable_cpu, hwif->dmatable_dma);
hwif->dmatable_cpu,
hwif->dmatable_dma);
hwif->dmatable_cpu = NULL; hwif->dmatable_cpu = NULL;
} }
......
...@@ -67,7 +67,7 @@ static int check_in_drive_lists (ide_drive_t *drive, const char **list) ...@@ -67,7 +67,7 @@ static int check_in_drive_lists (ide_drive_t *drive, const char **list)
static u8 svwks_udma_filter(ide_drive_t *drive) static u8 svwks_udma_filter(ide_drive_t *drive)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u8 mask = 0; u8 mask = 0;
if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE)
...@@ -130,7 +130,7 @@ static void svwks_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -130,7 +130,7 @@ static void svwks_set_pio_mode(ide_drive_t *drive, const u8 pio)
static const u8 pio_modes[] = { 0x5d, 0x47, 0x34, 0x22, 0x20 }; static const u8 pio_modes[] = { 0x5d, 0x47, 0x34, 0x22, 0x20 };
static const u8 drive_pci[] = { 0x41, 0x40, 0x43, 0x42 }; static const u8 drive_pci[] = { 0x41, 0x40, 0x43, 0x42 };
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
pci_write_config_byte(dev, drive_pci[drive->dn], pio_modes[pio]); pci_write_config_byte(dev, drive_pci[drive->dn], pio_modes[pio]);
...@@ -153,7 +153,7 @@ static void svwks_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -153,7 +153,7 @@ static void svwks_set_dma_mode(ide_drive_t *drive, const u8 speed)
static const u8 drive_pci2[] = { 0x45, 0x44, 0x47, 0x46 }; static const u8 drive_pci2[] = { 0x45, 0x44, 0x47, 0x46 };
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 unit = (drive->select.b.unit & 0x01); u8 unit = (drive->select.b.unit & 0x01);
u8 ultra_enable = 0, ultra_timing = 0, dma_timing = 0; u8 ultra_enable = 0, ultra_timing = 0, dma_timing = 0;
...@@ -287,7 +287,8 @@ static u8 __devinit ata66_svwks_svwks(ide_hwif_t *hwif) ...@@ -287,7 +287,8 @@ static u8 __devinit ata66_svwks_svwks(ide_hwif_t *hwif)
*/ */
static u8 __devinit ata66_svwks_dell(ide_hwif_t *hwif) static u8 __devinit ata66_svwks_dell(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL && if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL &&
dev->vendor == PCI_VENDOR_ID_SERVERWORKS && dev->vendor == PCI_VENDOR_ID_SERVERWORKS &&
(dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE || (dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE ||
...@@ -305,7 +306,8 @@ static u8 __devinit ata66_svwks_dell(ide_hwif_t *hwif) ...@@ -305,7 +306,8 @@ static u8 __devinit ata66_svwks_dell(ide_hwif_t *hwif)
*/ */
static u8 __devinit ata66_svwks_cobalt(ide_hwif_t *hwif) static u8 __devinit ata66_svwks_cobalt(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN && if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN &&
dev->vendor == PCI_VENDOR_ID_SERVERWORKS && dev->vendor == PCI_VENDOR_ID_SERVERWORKS &&
dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE)
...@@ -316,7 +318,7 @@ static u8 __devinit ata66_svwks_cobalt(ide_hwif_t *hwif) ...@@ -316,7 +318,7 @@ static u8 __devinit ata66_svwks_cobalt(ide_hwif_t *hwif)
static u8 __devinit ata66_svwks(ide_hwif_t *hwif) static u8 __devinit ata66_svwks(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
/* Server Works */ /* Server Works */
if (dev->subsystem_vendor == PCI_VENDOR_ID_SERVERWORKS) if (dev->subsystem_vendor == PCI_VENDOR_ID_SERVERWORKS)
...@@ -340,6 +342,8 @@ static u8 __devinit ata66_svwks(ide_hwif_t *hwif) ...@@ -340,6 +342,8 @@ static u8 __devinit ata66_svwks(ide_hwif_t *hwif)
static void __devinit init_hwif_svwks (ide_hwif_t *hwif) static void __devinit init_hwif_svwks (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->set_pio_mode = &svwks_set_pio_mode; hwif->set_pio_mode = &svwks_set_pio_mode;
hwif->set_dma_mode = &svwks_set_dma_mode; hwif->set_dma_mode = &svwks_set_dma_mode;
hwif->udma_filter = &svwks_udma_filter; hwif->udma_filter = &svwks_udma_filter;
...@@ -347,7 +351,7 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif) ...@@ -347,7 +351,7 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif)
if (!hwif->dma_base) if (!hwif->dma_base)
return; return;
if (hwif->pci_dev->device != PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) { if (dev->device != PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) {
if (hwif->cbl != ATA_CBL_PATA40_SHORT) if (hwif->cbl != ATA_CBL_PATA40_SHORT)
hwif->cbl = ata66_svwks(hwif); hwif->cbl = ata66_svwks(hwif);
} }
......
...@@ -159,6 +159,7 @@ sgiioc4_clearirq(ide_drive_t * drive) ...@@ -159,6 +159,7 @@ sgiioc4_clearirq(ide_drive_t * drive)
} }
if (intr_reg & 0x02) { if (intr_reg & 0x02) {
struct pci_dev *dev = to_pci_dev(hwif->dev);
/* Error when transferring DMA data on PCI bus */ /* Error when transferring DMA data on PCI bus */
u32 pci_err_addr_low, pci_err_addr_high, u32 pci_err_addr_low, pci_err_addr_high,
pci_stat_cmd_reg; pci_stat_cmd_reg;
...@@ -167,7 +168,7 @@ sgiioc4_clearirq(ide_drive_t * drive) ...@@ -167,7 +168,7 @@ sgiioc4_clearirq(ide_drive_t * drive)
readl((void __iomem *)hwif->io_ports[IDE_IRQ_OFFSET]); readl((void __iomem *)hwif->io_ports[IDE_IRQ_OFFSET]);
pci_err_addr_high = pci_err_addr_high =
readl((void __iomem *)(hwif->io_ports[IDE_IRQ_OFFSET] + 4)); readl((void __iomem *)(hwif->io_ports[IDE_IRQ_OFFSET] + 4));
pci_read_config_dword(hwif->pci_dev, PCI_COMMAND, pci_read_config_dword(dev, PCI_COMMAND,
&pci_stat_cmd_reg); &pci_stat_cmd_reg);
printk(KERN_ERR printk(KERN_ERR
"%s(%s) : PCI Bus Error when doing DMA:" "%s(%s) : PCI Bus Error when doing DMA:"
...@@ -178,8 +179,7 @@ sgiioc4_clearirq(ide_drive_t * drive) ...@@ -178,8 +179,7 @@ sgiioc4_clearirq(ide_drive_t * drive)
__FUNCTION__, drive->name, __FUNCTION__, drive->name,
pci_err_addr_high, pci_err_addr_low); pci_err_addr_high, pci_err_addr_low);
/* Clear the PCI Error indicator */ /* Clear the PCI Error indicator */
pci_write_config_dword(hwif->pci_dev, PCI_COMMAND, pci_write_config_dword(dev, PCI_COMMAND, 0x00000146);
0x00000146);
} }
/* Clear the Interrupt, Error bits on the IOC4 */ /* Clear the Interrupt, Error bits on the IOC4 */
...@@ -334,6 +334,7 @@ sgiioc4_INB(unsigned long port) ...@@ -334,6 +334,7 @@ sgiioc4_INB(unsigned long port)
static int __devinit static int __devinit
ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base) ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
void __iomem *virt_dma_base; void __iomem *virt_dma_base;
int num_ports = sizeof (ioc4_dma_regs_t); int num_ports = sizeof (ioc4_dma_regs_t);
void *pad; void *pad;
...@@ -359,7 +360,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base) ...@@ -359,7 +360,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base)
} }
hwif->dma_base = (unsigned long) virt_dma_base; hwif->dma_base = (unsigned long) virt_dma_base;
hwif->dmatable_cpu = pci_alloc_consistent(hwif->pci_dev, hwif->dmatable_cpu = pci_alloc_consistent(dev,
IOC4_PRD_ENTRIES * IOC4_PRD_BYTES, IOC4_PRD_ENTRIES * IOC4_PRD_BYTES,
&hwif->dmatable_dma); &hwif->dmatable_dma);
...@@ -368,7 +369,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base) ...@@ -368,7 +369,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base)
hwif->sg_max_nents = IOC4_PRD_ENTRIES; hwif->sg_max_nents = IOC4_PRD_ENTRIES;
pad = pci_alloc_consistent(hwif->pci_dev, IOC4_IDE_CACHELINE_SIZE, pad = pci_alloc_consistent(dev, IOC4_IDE_CACHELINE_SIZE,
(dma_addr_t *) &(hwif->dma_status)); (dma_addr_t *) &(hwif->dma_status));
if (pad) { if (pad) {
...@@ -376,8 +377,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base) ...@@ -376,8 +377,7 @@ ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base)
return 0; return 0;
} }
pci_free_consistent(hwif->pci_dev, pci_free_consistent(dev, IOC4_PRD_ENTRIES * IOC4_PRD_BYTES,
IOC4_PRD_ENTRIES * IOC4_PRD_BYTES,
hwif->dmatable_cpu, hwif->dmatable_dma); hwif->dmatable_cpu, hwif->dmatable_dma);
printk(KERN_INFO printk(KERN_INFO
"%s() -- Error! Unable to allocate DMA Maps for drive %s\n", "%s() -- Error! Unable to allocate DMA Maps for drive %s\n",
...@@ -640,7 +640,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) ...@@ -640,7 +640,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
hw.dev = &dev->dev; hw.dev = &dev->dev;
ide_init_port_hw(hwif, &hw); ide_init_port_hw(hwif, &hw);
hwif->pci_dev = dev; hwif->dev = &dev->dev;
hwif->channel = 0; /* Single Channel chip */ hwif->channel = 0; /* Single Channel chip */
/* The IOC4 uses MMIO rather than Port IO. */ /* The IOC4 uses MMIO rather than Port IO. */
......
...@@ -79,7 +79,7 @@ static int pdev_is_sata(struct pci_dev *pdev) ...@@ -79,7 +79,7 @@ static int pdev_is_sata(struct pci_dev *pdev)
static inline int is_sata(ide_hwif_t *hwif) static inline int is_sata(ide_hwif_t *hwif)
{ {
return pdev_is_sata(hwif->pci_dev); return pdev_is_sata(to_pci_dev(hwif->dev));
} }
/** /**
...@@ -140,13 +140,14 @@ static inline unsigned long siimage_seldev(ide_drive_t *drive, int r) ...@@ -140,13 +140,14 @@ static inline unsigned long siimage_seldev(ide_drive_t *drive, int r)
static u8 sil_pata_udma_filter(ide_drive_t *drive) static u8 sil_pata_udma_filter(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned long base = (unsigned long) hwif->hwif_data; unsigned long base = (unsigned long) hwif->hwif_data;
u8 mask = 0, scsc = 0; u8 mask = 0, scsc = 0;
if (hwif->mmio) if (hwif->mmio)
scsc = hwif->INB(base + 0x4A); scsc = hwif->INB(base + 0x4A);
else else
pci_read_config_byte(hwif->pci_dev, 0x8A, &scsc); pci_read_config_byte(dev, 0x8A, &scsc);
if ((scsc & 0x30) == 0x10) /* 133 */ if ((scsc & 0x30) == 0x10) /* 133 */
mask = ATA_UDMA6; mask = ATA_UDMA6;
...@@ -219,19 +220,21 @@ static void sil_set_pio_mode(ide_drive_t *drive, u8 pio) ...@@ -219,19 +220,21 @@ static void sil_set_pio_mode(ide_drive_t *drive, u8 pio)
mode |= (unit ? 0x10 : 0x01); mode |= (unit ? 0x10 : 0x01);
hwif->OUTB(mode, base + addr_mask); hwif->OUTB(mode, base + addr_mask);
} else { } else {
pci_write_config_word(hwif->pci_dev, addr, speedp); struct pci_dev *dev = to_pci_dev(hwif->dev);
pci_write_config_word(hwif->pci_dev, tfaddr, speedt);
pci_read_config_word(hwif->pci_dev, tfaddr-2, &speedp); pci_write_config_word(dev, addr, speedp);
pci_write_config_word(dev, tfaddr, speedt);
pci_read_config_word(dev, tfaddr - 2, &speedp);
speedp &= ~0x200; speedp &= ~0x200;
/* Set IORDY for mode 3 or 4 */ /* Set IORDY for mode 3 or 4 */
if (pio > 2) if (pio > 2)
speedp |= 0x200; speedp |= 0x200;
pci_write_config_word(hwif->pci_dev, tfaddr-2, speedp); pci_write_config_word(dev, tfaddr - 2, speedp);
pci_read_config_byte(hwif->pci_dev, addr_mask, &mode); pci_read_config_byte(dev, addr_mask, &mode);
mode &= ~(unit ? 0x30 : 0x03); mode &= ~(unit ? 0x30 : 0x03);
mode |= (unit ? 0x10 : 0x01); mode |= (unit ? 0x10 : 0x01);
pci_write_config_byte(hwif->pci_dev, addr_mask, mode); pci_write_config_byte(dev, addr_mask, mode);
} }
} }
...@@ -250,6 +253,7 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -250,6 +253,7 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed)
u16 dma[] = { 0x2208, 0x10C2, 0x10C1 }; u16 dma[] = { 0x2208, 0x10C2, 0x10C1 };
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u16 ultra = 0, multi = 0; u16 ultra = 0, multi = 0;
u8 mode = 0, unit = drive->select.b.unit; u8 mode = 0, unit = drive->select.b.unit;
unsigned long base = (unsigned long)hwif->hwif_data; unsigned long base = (unsigned long)hwif->hwif_data;
...@@ -266,10 +270,10 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -266,10 +270,10 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed)
multi = hwif->INW(ma); multi = hwif->INW(ma);
ultra = hwif->INW(ua); ultra = hwif->INW(ua);
} else { } else {
pci_read_config_byte(hwif->pci_dev, 0x8A, &scsc); pci_read_config_byte(dev, 0x8A, &scsc);
pci_read_config_byte(hwif->pci_dev, addr_mask, &mode); pci_read_config_byte(dev, addr_mask, &mode);
pci_read_config_word(hwif->pci_dev, ma, &multi); pci_read_config_word(dev, ma, &multi);
pci_read_config_word(hwif->pci_dev, ua, &ultra); pci_read_config_word(dev, ua, &ultra);
} }
mode &= ~((unit) ? 0x30 : 0x03); mode &= ~((unit) ? 0x30 : 0x03);
...@@ -293,9 +297,9 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -293,9 +297,9 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed)
hwif->OUTW(multi, ma); hwif->OUTW(multi, ma);
hwif->OUTW(ultra, ua); hwif->OUTW(ultra, ua);
} else { } else {
pci_write_config_byte(hwif->pci_dev, addr_mask, mode); pci_write_config_byte(dev, addr_mask, mode);
pci_write_config_word(hwif->pci_dev, ma, multi); pci_write_config_word(dev, ma, multi);
pci_write_config_word(hwif->pci_dev, ua, ultra); pci_write_config_word(dev, ua, ultra);
} }
} }
...@@ -303,6 +307,7 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -303,6 +307,7 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed)
static int siimage_io_ide_dma_test_irq (ide_drive_t *drive) static int siimage_io_ide_dma_test_irq (ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 dma_altstat = 0; u8 dma_altstat = 0;
unsigned long addr = siimage_selreg(hwif, 1); unsigned long addr = siimage_selreg(hwif, 1);
...@@ -311,7 +316,7 @@ static int siimage_io_ide_dma_test_irq (ide_drive_t *drive) ...@@ -311,7 +316,7 @@ static int siimage_io_ide_dma_test_irq (ide_drive_t *drive)
return 1; return 1;
/* return 1 if Device INTR asserted */ /* return 1 if Device INTR asserted */
pci_read_config_byte(hwif->pci_dev, addr, &dma_altstat); pci_read_config_byte(dev, addr, &dma_altstat);
if (dma_altstat & 8) if (dma_altstat & 8)
return 0; //return 1; return 0; //return 1;
return 0; return 0;
...@@ -377,13 +382,14 @@ static int siimage_mmio_ide_dma_test_irq (ide_drive_t *drive) ...@@ -377,13 +382,14 @@ static int siimage_mmio_ide_dma_test_irq (ide_drive_t *drive)
static int sil_sata_busproc(ide_drive_t * drive, int state) static int sil_sata_busproc(ide_drive_t * drive, int state)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = to_pci_dev(hwif->dev);
u32 stat_config = 0; u32 stat_config = 0;
unsigned long addr = siimage_selreg(hwif, 0); unsigned long addr = siimage_selreg(hwif, 0);
if (hwif->mmio) if (hwif->mmio)
stat_config = readl((void __iomem *)addr); stat_config = readl((void __iomem *)addr);
else else
pci_read_config_dword(hwif->pci_dev, addr, &stat_config); pci_read_config_dword(dev, addr, &stat_config);
switch (state) { switch (state) {
case BUSSTATE_ON: case BUSSTATE_ON:
...@@ -643,7 +649,7 @@ static unsigned int __devinit init_chipset_siimage(struct pci_dev *dev, const ch ...@@ -643,7 +649,7 @@ static unsigned int __devinit init_chipset_siimage(struct pci_dev *dev, const ch
static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif) static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
void *addr = pci_get_drvdata(dev); void *addr = pci_get_drvdata(dev);
u8 ch = hwif->channel; u8 ch = hwif->channel;
hw_regs_t hw; hw_regs_t hw;
...@@ -756,12 +762,14 @@ static void __devinit sil_quirkproc(ide_drive_t *drive) ...@@ -756,12 +762,14 @@ static void __devinit sil_quirkproc(ide_drive_t *drive)
static void __devinit init_iops_siimage(ide_hwif_t *hwif) static void __devinit init_iops_siimage(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
hwif->hwif_data = NULL; hwif->hwif_data = NULL;
/* Pessimal until we finish probing */ /* Pessimal until we finish probing */
hwif->rqsize = 15; hwif->rqsize = 15;
if (pci_get_drvdata(hwif->pci_dev) == NULL) if (pci_get_drvdata(dev) == NULL)
return; return;
init_mmio_iops_siimage(hwif); init_mmio_iops_siimage(hwif);
...@@ -777,11 +785,12 @@ static void __devinit init_iops_siimage(ide_hwif_t *hwif) ...@@ -777,11 +785,12 @@ static void __devinit init_iops_siimage(ide_hwif_t *hwif)
static u8 __devinit ata66_siimage(ide_hwif_t *hwif) static u8 __devinit ata66_siimage(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned long addr = siimage_selreg(hwif, 0); unsigned long addr = siimage_selreg(hwif, 0);
u8 ata66 = 0; u8 ata66 = 0;
if (pci_get_drvdata(hwif->pci_dev) == NULL) if (pci_get_drvdata(dev) == NULL)
pci_read_config_byte(hwif->pci_dev, addr, &ata66); pci_read_config_byte(dev, addr, &ata66);
else else
ata66 = hwif->INB(addr); ata66 = hwif->INB(addr);
......
...@@ -197,7 +197,7 @@ static char* chipset_capability[] = { ...@@ -197,7 +197,7 @@ static char* chipset_capability[] = {
static u8 sis_ata133_get_base(ide_drive_t *drive) static u8 sis_ata133_get_base(ide_drive_t *drive)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 reg54 = 0; u32 reg54 = 0;
pci_read_config_dword(dev, 0x54, &reg54); pci_read_config_dword(dev, 0x54, &reg54);
...@@ -207,7 +207,7 @@ static u8 sis_ata133_get_base(ide_drive_t *drive) ...@@ -207,7 +207,7 @@ static u8 sis_ata133_get_base(ide_drive_t *drive)
static void sis_ata16_program_timings(ide_drive_t *drive, const u8 mode) static void sis_ata16_program_timings(ide_drive_t *drive, const u8 mode)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u16 t1 = 0; u16 t1 = 0;
u8 drive_pci = 0x40 + drive->dn * 2; u8 drive_pci = 0x40 + drive->dn * 2;
...@@ -230,7 +230,7 @@ static void sis_ata16_program_timings(ide_drive_t *drive, const u8 mode) ...@@ -230,7 +230,7 @@ static void sis_ata16_program_timings(ide_drive_t *drive, const u8 mode)
static void sis_ata100_program_timings(ide_drive_t *drive, const u8 mode) static void sis_ata100_program_timings(ide_drive_t *drive, const u8 mode)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u8 t1, drive_pci = 0x40 + drive->dn * 2; u8 t1, drive_pci = 0x40 + drive->dn * 2;
/* timing bits: 7:4 active 3:0 recovery */ /* timing bits: 7:4 active 3:0 recovery */
...@@ -253,7 +253,7 @@ static void sis_ata100_program_timings(ide_drive_t *drive, const u8 mode) ...@@ -253,7 +253,7 @@ static void sis_ata100_program_timings(ide_drive_t *drive, const u8 mode)
static void sis_ata133_program_timings(ide_drive_t *drive, const u8 mode) static void sis_ata133_program_timings(ide_drive_t *drive, const u8 mode)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 t1 = 0; u32 t1 = 0;
u8 drive_pci = sis_ata133_get_base(drive), clk, idx; u8 drive_pci = sis_ata133_get_base(drive), clk, idx;
...@@ -286,7 +286,7 @@ static void sis_program_timings(ide_drive_t *drive, const u8 mode) ...@@ -286,7 +286,7 @@ static void sis_program_timings(ide_drive_t *drive, const u8 mode)
static void config_drive_art_rwp (ide_drive_t *drive) static void config_drive_art_rwp (ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 reg4bh = 0; u8 reg4bh = 0;
u8 rw_prefetch = 0; u8 rw_prefetch = 0;
...@@ -307,7 +307,7 @@ static void sis_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -307,7 +307,7 @@ static void sis_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void sis_ata133_program_udma_timings(ide_drive_t *drive, const u8 mode) static void sis_ata133_program_udma_timings(ide_drive_t *drive, const u8 mode)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 regdw = 0; u32 regdw = 0;
u8 drive_pci = sis_ata133_get_base(drive), clk, idx; u8 drive_pci = sis_ata133_get_base(drive), clk, idx;
...@@ -326,7 +326,7 @@ static void sis_ata133_program_udma_timings(ide_drive_t *drive, const u8 mode) ...@@ -326,7 +326,7 @@ static void sis_ata133_program_udma_timings(ide_drive_t *drive, const u8 mode)
static void sis_ata33_program_udma_timings(ide_drive_t *drive, const u8 mode) static void sis_ata33_program_udma_timings(ide_drive_t *drive, const u8 mode)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u8 drive_pci = 0x40 + drive->dn * 2, reg = 0, i = chipset_family; u8 drive_pci = 0x40 + drive->dn * 2, reg = 0, i = chipset_family;
pci_read_config_byte(dev, drive_pci + 1, &reg); pci_read_config_byte(dev, drive_pci + 1, &reg);
...@@ -359,7 +359,7 @@ static void sis_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -359,7 +359,7 @@ static void sis_set_dma_mode(ide_drive_t *drive, const u8 speed)
static u8 sis5513_ata133_udma_filter(ide_drive_t *drive) static u8 sis5513_ata133_udma_filter(ide_drive_t *drive)
{ {
struct pci_dev *dev = drive->hwif->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 regdw = 0; u32 regdw = 0;
u8 drive_pci = sis_ata133_get_base(drive); u8 drive_pci = sis_ata133_get_base(drive);
...@@ -530,7 +530,7 @@ static const struct sis_laptop sis_laptop[] = { ...@@ -530,7 +530,7 @@ static const struct sis_laptop sis_laptop[] = {
static u8 __devinit ata66_sis5513(ide_hwif_t *hwif) static u8 __devinit ata66_sis5513(ide_hwif_t *hwif)
{ {
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
const struct sis_laptop *lap = &sis_laptop[0]; const struct sis_laptop *lap = &sis_laptop[0];
u8 ata66 = 0; u8 ata66 = 0;
...@@ -545,12 +545,12 @@ static u8 __devinit ata66_sis5513(ide_hwif_t *hwif) ...@@ -545,12 +545,12 @@ static u8 __devinit ata66_sis5513(ide_hwif_t *hwif)
if (chipset_family >= ATA_133) { if (chipset_family >= ATA_133) {
u16 regw = 0; u16 regw = 0;
u16 reg_addr = hwif->channel ? 0x52: 0x50; u16 reg_addr = hwif->channel ? 0x52: 0x50;
pci_read_config_word(hwif->pci_dev, reg_addr, &regw); pci_read_config_word(pdev, reg_addr, &regw);
ata66 = (regw & 0x8000) ? 0 : 1; ata66 = (regw & 0x8000) ? 0 : 1;
} else if (chipset_family >= ATA_66) { } else if (chipset_family >= ATA_66) {
u8 reg48h = 0; u8 reg48h = 0;
u8 mask = hwif->channel ? 0x20 : 0x10; u8 mask = hwif->channel ? 0x20 : 0x10;
pci_read_config_byte(hwif->pci_dev, 0x48, &reg48h); pci_read_config_byte(pdev, 0x48, &reg48h);
ata66 = (reg48h & mask) ? 0 : 1; ata66 = (reg48h & mask) ? 0 : 1;
} }
......
...@@ -78,7 +78,7 @@ static unsigned int get_pio_timings(ide_drive_t *drive, u8 pio) ...@@ -78,7 +78,7 @@ static unsigned int get_pio_timings(ide_drive_t *drive, u8 pio)
*/ */
static void sl82c105_set_pio_mode(ide_drive_t *drive, const u8 pio) static void sl82c105_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
int reg = 0x44 + drive->dn * 4; int reg = 0x44 + drive->dn * 4;
u16 drv_ctrl; u16 drv_ctrl;
...@@ -147,7 +147,7 @@ static inline void sl82c105_reset_host(struct pci_dev *dev) ...@@ -147,7 +147,7 @@ static inline void sl82c105_reset_host(struct pci_dev *dev)
static void sl82c105_dma_lost_irq(ide_drive_t *drive) static void sl82c105_dma_lost_irq(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u32 val, mask = hwif->channel ? CTRL_IDE_IRQB : CTRL_IDE_IRQA; u32 val, mask = hwif->channel ? CTRL_IDE_IRQB : CTRL_IDE_IRQA;
u8 dma_cmd; u8 dma_cmd;
...@@ -184,7 +184,7 @@ static void sl82c105_dma_lost_irq(ide_drive_t *drive) ...@@ -184,7 +184,7 @@ static void sl82c105_dma_lost_irq(ide_drive_t *drive)
static void sl82c105_dma_start(ide_drive_t *drive) static void sl82c105_dma_start(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int reg = 0x44 + drive->dn * 4; int reg = 0x44 + drive->dn * 4;
DBG(("%s(drive:%s)\n", __FUNCTION__, drive->name)); DBG(("%s(drive:%s)\n", __FUNCTION__, drive->name));
...@@ -197,15 +197,17 @@ static void sl82c105_dma_start(ide_drive_t *drive) ...@@ -197,15 +197,17 @@ static void sl82c105_dma_start(ide_drive_t *drive)
static void sl82c105_dma_timeout(ide_drive_t *drive) static void sl82c105_dma_timeout(ide_drive_t *drive)
{ {
struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
DBG(("sl82c105_dma_timeout(drive:%s)\n", drive->name)); DBG(("sl82c105_dma_timeout(drive:%s)\n", drive->name));
sl82c105_reset_host(HWIF(drive)->pci_dev); sl82c105_reset_host(dev);
ide_dma_timeout(drive); ide_dma_timeout(drive);
} }
static int sl82c105_dma_end(ide_drive_t *drive) static int sl82c105_dma_end(ide_drive_t *drive)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
int reg = 0x44 + drive->dn * 4; int reg = 0x44 + drive->dn * 4;
int ret; int ret;
...@@ -224,7 +226,7 @@ static int sl82c105_dma_end(ide_drive_t *drive) ...@@ -224,7 +226,7 @@ static int sl82c105_dma_end(ide_drive_t *drive)
*/ */
static void sl82c105_resetproc(ide_drive_t *drive) static void sl82c105_resetproc(ide_drive_t *drive)
{ {
struct pci_dev *dev = HWIF(drive)->pci_dev; struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
u32 val; u32 val;
DBG(("sl82c105_resetproc(drive:%s)\n", drive->name)); DBG(("sl82c105_resetproc(drive:%s)\n", drive->name));
...@@ -293,6 +295,7 @@ static unsigned int __devinit init_chipset_sl82c105(struct pci_dev *dev, const c ...@@ -293,6 +295,7 @@ static unsigned int __devinit init_chipset_sl82c105(struct pci_dev *dev, const c
*/ */
static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif) static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned int rev; unsigned int rev;
DBG(("init_hwif_sl82c105(hwif: ide%d)\n", hwif->index)); DBG(("init_hwif_sl82c105(hwif: ide%d)\n", hwif->index));
...@@ -304,7 +307,7 @@ static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif) ...@@ -304,7 +307,7 @@ static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif)
if (!hwif->dma_base) if (!hwif->dma_base)
return; return;
rev = sl82c105_bridge_revision(hwif->pci_dev); rev = sl82c105_bridge_revision(dev);
if (rev <= 5) { if (rev <= 5) {
/* /*
* Never ever EVER under any circumstances enable * Never ever EVER under any circumstances enable
......
...@@ -26,7 +26,7 @@ static DEFINE_SPINLOCK(slc90e66_lock); ...@@ -26,7 +26,7 @@ static DEFINE_SPINLOCK(slc90e66_lock);
static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio) static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
int is_slave = drive->dn & 1; int is_slave = drive->dn & 1;
int master_port = hwif->channel ? 0x42 : 0x40; int master_port = hwif->channel ? 0x42 : 0x40;
int slave_port = 0x44; int slave_port = 0x44;
...@@ -79,7 +79,7 @@ static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -79,7 +79,7 @@ static void slc90e66_set_pio_mode(ide_drive_t *drive, const u8 pio)
static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed) static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 maslave = hwif->channel ? 0x42 : 0x40; u8 maslave = hwif->channel ? 0x42 : 0x40;
int sitre = 0, a_speed = 7 << (drive->dn * 4); int sitre = 0, a_speed = 7 << (drive->dn * 4);
int u_speed = 0, u_flag = 1 << drive->dn; int u_speed = 0, u_flag = 1 << drive->dn;
...@@ -122,13 +122,14 @@ static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed) ...@@ -122,13 +122,14 @@ static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed)
static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif) static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 reg47 = 0; u8 reg47 = 0;
u8 mask = hwif->channel ? 0x01 : 0x02; /* bit0:Primary */ u8 mask = hwif->channel ? 0x01 : 0x02; /* bit0:Primary */
hwif->set_pio_mode = &slc90e66_set_pio_mode; hwif->set_pio_mode = &slc90e66_set_pio_mode;
hwif->set_dma_mode = &slc90e66_set_dma_mode; hwif->set_dma_mode = &slc90e66_set_dma_mode;
pci_read_config_byte(hwif->pci_dev, 0x47, &reg47); pci_read_config_byte(dev, 0x47, &reg47);
if (hwif->dma_base == 0) if (hwif->dma_base == 0)
return; return;
......
...@@ -164,7 +164,8 @@ static int tc86c001_busproc(ide_drive_t *drive, int state) ...@@ -164,7 +164,8 @@ static int tc86c001_busproc(ide_drive_t *drive, int state)
static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif)
{ {
unsigned long sc_base = pci_resource_start(hwif->pci_dev, 5); struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned long sc_base = pci_resource_start(dev, 5);
u16 scr1 = inw(sc_base + 0x00); u16 scr1 = inw(sc_base + 0x00);
/* System Control 1 Register bit 15 (Soft Reset) set */ /* System Control 1 Register bit 15 (Soft Reset) set */
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
static void triflex_set_mode(ide_drive_t *drive, const u8 speed) static void triflex_set_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
u8 channel_offset = hwif->channel ? 0x74 : 0x70; u8 channel_offset = hwif->channel ? 0x74 : 0x70;
u16 timing = 0; u16 timing = 0;
u32 triflex_timings = 0; u32 triflex_timings = 0;
......
...@@ -245,7 +245,7 @@ static void trm290_dma_host_set(ide_drive_t *drive, int on) ...@@ -245,7 +245,7 @@ static void trm290_dma_host_set(ide_drive_t *drive, int on)
static void __devinit init_hwif_trm290(ide_hwif_t *hwif) static void __devinit init_hwif_trm290(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned int cfg_base = pci_resource_start(dev, 4); unsigned int cfg_base = pci_resource_start(dev, 4);
unsigned long flags; unsigned long flags;
u8 reg = 0; u8 reg = 0;
......
...@@ -121,8 +121,8 @@ struct via82cxxx_dev ...@@ -121,8 +121,8 @@ struct via82cxxx_dev
static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing) static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev); struct via82cxxx_dev *vdev = pci_get_drvdata(dev);
u8 t; u8 t;
if (~vdev->via_config->flags & VIA_BAD_AST) { if (~vdev->via_config->flags & VIA_BAD_AST) {
...@@ -159,8 +159,10 @@ static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing) ...@@ -159,8 +159,10 @@ static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing)
static void via_set_drive(ide_drive_t *drive, const u8 speed) static void via_set_drive(ide_drive_t *drive, const u8 speed)
{ {
ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1); ide_hwif_t *hwif = drive->hwif;
struct via82cxxx_dev *vdev = pci_get_drvdata(drive->hwif->pci_dev); ide_drive_t *peer = hwif->drives + (~drive->dn & 1);
struct pci_dev *dev = to_pci_dev(hwif->dev);
struct via82cxxx_dev *vdev = pci_get_drvdata(dev);
struct ide_timing t, p; struct ide_timing t, p;
unsigned int T, UT; unsigned int T, UT;
...@@ -408,7 +410,7 @@ static int via_cable_override(struct pci_dev *pdev) ...@@ -408,7 +410,7 @@ static int via_cable_override(struct pci_dev *pdev)
static u8 __devinit via82cxxx_cable_detect(ide_hwif_t *hwif) static u8 __devinit via82cxxx_cable_detect(ide_hwif_t *hwif)
{ {
struct pci_dev *pdev = hwif->pci_dev; struct pci_dev *pdev = to_pci_dev(hwif->dev);
struct via82cxxx_dev *vdev = pci_get_drvdata(pdev); struct via82cxxx_dev *vdev = pci_get_drvdata(pdev);
if (via_cable_override(pdev)) if (via_cable_override(pdev))
......
...@@ -1200,7 +1200,7 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match) ...@@ -1200,7 +1200,7 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match)
base = ioremap(macio_resource_start(mdev, 0), 0x400); base = ioremap(macio_resource_start(mdev, 0), 0x400);
regbase = (unsigned long) base; regbase = (unsigned long) base;
hwif->pci_dev = mdev->bus->pdev; hwif->dev = &mdev->bus->pdev->dev;
pmif->mdev = mdev; pmif->mdev = mdev;
pmif->node = mdev->ofdev.node; pmif->node = mdev->ofdev.node;
...@@ -1315,7 +1315,7 @@ pmac_ide_pci_attach(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -1315,7 +1315,7 @@ pmac_ide_pci_attach(struct pci_dev *pdev, const struct pci_device_id *id)
return -ENXIO; return -ENXIO;
} }
hwif->pci_dev = pdev; hwif->dev = &pdev->dev;
pmif->mdev = NULL; pmif->mdev = NULL;
pmif->node = np; pmif->node = np;
...@@ -1725,10 +1725,12 @@ pmac_ide_dma_lost_irq (ide_drive_t *drive) ...@@ -1725,10 +1725,12 @@ pmac_ide_dma_lost_irq (ide_drive_t *drive)
static void __devinit static void __devinit
pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
/* We won't need pci_dev if we switch to generic consistent /* We won't need pci_dev if we switch to generic consistent
* DMA routines ... * DMA routines ...
*/ */
if (hwif->pci_dev == NULL) if (dev == NULL)
return; return;
/* /*
* Allocate space for the DBDMA commands. * Allocate space for the DBDMA commands.
...@@ -1736,7 +1738,7 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) ...@@ -1736,7 +1738,7 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
* aligning the start address to a multiple of 16 bytes. * aligning the start address to a multiple of 16 bytes.
*/ */
pmif->dma_table_cpu = (struct dbdma_cmd*)pci_alloc_consistent( pmif->dma_table_cpu = (struct dbdma_cmd*)pci_alloc_consistent(
hwif->pci_dev, dev,
(MAX_DCMDS + 2) * sizeof(struct dbdma_cmd), (MAX_DCMDS + 2) * sizeof(struct dbdma_cmd),
&hwif->dmatable_dma); &hwif->dmatable_dma);
if (pmif->dma_table_cpu == NULL) { if (pmif->dma_table_cpu == NULL) {
......
...@@ -162,8 +162,8 @@ static void ide_pci_clear_simplex(unsigned long dma_base, const char *name) ...@@ -162,8 +162,8 @@ static void ide_pci_clear_simplex(unsigned long dma_base, const char *name)
static unsigned long ide_get_or_set_dma_base(const struct ide_port_info *d, ide_hwif_t *hwif) static unsigned long ide_get_or_set_dma_base(const struct ide_port_info *d, ide_hwif_t *hwif)
{ {
struct pci_dev *dev = to_pci_dev(hwif->dev);
unsigned long dma_base = 0; unsigned long dma_base = 0;
struct pci_dev *dev = hwif->pci_dev;
u8 dma_stat = 0; u8 dma_stat = 0;
if (hwif->mmio) if (hwif->mmio)
...@@ -391,7 +391,7 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, const struct ide_port ...@@ -391,7 +391,7 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev, const struct ide_port
hwif->noprobe = oldnoprobe; hwif->noprobe = oldnoprobe;
hwif->pci_dev = dev; hwif->dev = &dev->dev;
hwif->cds = d; hwif->cds = d;
hwif->channel = port; hwif->channel = port;
......
...@@ -503,7 +503,8 @@ typedef struct hwif_s { ...@@ -503,7 +503,8 @@ typedef struct hwif_s {
hwif_chipset_t chipset; /* sub-module for tuning.. */ hwif_chipset_t chipset; /* sub-module for tuning.. */
struct pci_dev *pci_dev; /* for pci chipsets */ struct device *dev;
const struct ide_port_info *cds; /* chipset device struct */ const struct ide_port_info *cds; /* chipset device struct */
ide_ack_intr_t *ack_intr; ide_ack_intr_t *ack_intr;
...@@ -1299,7 +1300,7 @@ static inline void ide_dump_identify(u8 *id) ...@@ -1299,7 +1300,7 @@ static inline void ide_dump_identify(u8 *id)
static inline int hwif_to_node(ide_hwif_t *hwif) static inline int hwif_to_node(ide_hwif_t *hwif)
{ {
struct pci_dev *dev = hwif->pci_dev; struct pci_dev *dev = to_pci_dev(hwif->dev);
return dev ? pcibus_to_node(dev->bus) : -1; return dev ? pcibus_to_node(dev->bus) : -1;
} }
......
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