mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 11:10:51 +07:00
cs5520: fix ->dma_base equal zero handling
Set hwif->ide_dma_{check,on} and hwif->autodma to 1 after checking that ->dma_base exists. If ->dma_base is not set (== PCI BAR4 cannot be reserved) then DMA hooks shouldn't be initialized or bad things will happen. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
b9d9e61abb
commit
dfb2311226
@ -142,25 +142,24 @@ static void __devinit init_hwif_cs5520(ide_hwif_t *hwif)
|
|||||||
{
|
{
|
||||||
hwif->set_pio_mode = &cs5520_set_pio_mode;
|
hwif->set_pio_mode = &cs5520_set_pio_mode;
|
||||||
hwif->set_dma_mode = &cs5520_set_dma_mode;
|
hwif->set_dma_mode = &cs5520_set_dma_mode;
|
||||||
hwif->ide_dma_check = &cs5520_config_drive_xfer_rate;
|
|
||||||
hwif->ide_dma_on = &cs5520_dma_on;
|
|
||||||
|
|
||||||
if(!noautodma)
|
if (hwif->dma_base == 0) {
|
||||||
hwif->autodma = 1;
|
hwif->drives[1].autotune = hwif->drives[0].autotune = 1;
|
||||||
|
|
||||||
if(!hwif->dma_base)
|
|
||||||
{
|
|
||||||
hwif->drives[0].autotune = 1;
|
|
||||||
hwif->drives[1].autotune = 1;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hwif->ide_dma_check = &cs5520_config_drive_xfer_rate;
|
||||||
|
hwif->ide_dma_on = &cs5520_dma_on;
|
||||||
|
|
||||||
/* ATAPI is harder so leave it for now */
|
/* ATAPI is harder so leave it for now */
|
||||||
hwif->atapi_dma = 0;
|
hwif->atapi_dma = 0;
|
||||||
hwif->ultra_mask = 0;
|
hwif->ultra_mask = 0;
|
||||||
hwif->swdma_mask = 0;
|
hwif->swdma_mask = 0;
|
||||||
hwif->mwdma_mask = 0;
|
hwif->mwdma_mask = 0;
|
||||||
|
|
||||||
|
if (!noautodma)
|
||||||
|
hwif->autodma = 1;
|
||||||
|
|
||||||
hwif->drives[0].autodma = hwif->autodma;
|
hwif->drives[0].autodma = hwif->autodma;
|
||||||
hwif->drives[1].autodma = hwif->autodma;
|
hwif->drives[1].autodma = hwif->autodma;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user