|
@@ -316,27 +316,29 @@ static int icside_dma_end(ide_drive_t *drive)
|
|
|
|
|
|
drive->waiting_for_dma = 0;
|
|
|
|
|
|
- disable_dma(hwif->hw.dma);
|
|
|
+ disable_dma(state->dev->dma);
|
|
|
|
|
|
/* Teardown mappings after DMA has completed. */
|
|
|
dma_unmap_sg(state->dev, hwif->sg_table, hwif->sg_nents,
|
|
|
hwif->sg_dma_direction);
|
|
|
|
|
|
- return get_dma_residue(hwif->hw.dma) != 0;
|
|
|
+ return get_dma_residue(state->dev->dma) != 0;
|
|
|
}
|
|
|
|
|
|
static void icside_dma_start(ide_drive_t *drive)
|
|
|
{
|
|
|
ide_hwif_t *hwif = HWIF(drive);
|
|
|
+ struct icside_state *state = hwif->hwif_data;
|
|
|
|
|
|
/* We can not enable DMA on both channels simultaneously. */
|
|
|
- BUG_ON(dma_channel_active(hwif->hw.dma));
|
|
|
- enable_dma(hwif->hw.dma);
|
|
|
+ BUG_ON(dma_channel_active(state->dev->dma));
|
|
|
+ enable_dma(state->dev->dma);
|
|
|
}
|
|
|
|
|
|
static int icside_dma_setup(ide_drive_t *drive)
|
|
|
{
|
|
|
ide_hwif_t *hwif = HWIF(drive);
|
|
|
+ struct icside_state *state = hwif->hwif_data;
|
|
|
struct request *rq = hwif->hwgroup->rq;
|
|
|
unsigned int dma_mode;
|
|
|
|
|
@@ -348,7 +350,7 @@ static int icside_dma_setup(ide_drive_t *drive)
|
|
|
/*
|
|
|
* We can not enable DMA on both channels.
|
|
|
*/
|
|
|
- BUG_ON(dma_channel_active(hwif->hw.dma));
|
|
|
+ BUG_ON(dma_channel_active(state->dev->dma));
|
|
|
|
|
|
icside_build_sglist(drive, rq);
|
|
|
|
|
@@ -365,14 +367,14 @@ static int icside_dma_setup(ide_drive_t *drive)
|
|
|
/*
|
|
|
* Select the correct timing for this drive.
|
|
|
*/
|
|
|
- set_dma_speed(hwif->hw.dma, drive->drive_data);
|
|
|
+ set_dma_speed(state->dev->dma, drive->drive_data);
|
|
|
|
|
|
/*
|
|
|
* Tell the DMA engine about the SG table and
|
|
|
* data direction.
|
|
|
*/
|
|
|
- set_dma_sg(hwif->hw.dma, hwif->sg_table, hwif->sg_nents);
|
|
|
- set_dma_mode(hwif->hw.dma, dma_mode);
|
|
|
+ set_dma_sg(state->dev->dma, hwif->sg_table, hwif->sg_nents);
|
|
|
+ set_dma_mode(state->dev->dma, dma_mode);
|
|
|
|
|
|
drive->waiting_for_dma = 1;
|
|
|
|
|
@@ -572,7 +574,6 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
|
|
|
hwif->serialized = 1;
|
|
|
hwif->config_data = (unsigned long)ioc_base;
|
|
|
hwif->select_data = sel;
|
|
|
- hwif->hw.dma = ec->dma;
|
|
|
|
|
|
mate->maskproc = icside_maskproc;
|
|
|
mate->channel = 1;
|
|
@@ -581,7 +582,6 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
|
|
|
mate->serialized = 1;
|
|
|
mate->config_data = (unsigned long)ioc_base;
|
|
|
mate->select_data = sel | 1;
|
|
|
- mate->hw.dma = ec->dma;
|
|
|
|
|
|
if (ec->dma != NO_DMA && !request_dma(ec->dma, hwif->name)) {
|
|
|
icside_dma_init(hwif);
|