Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ata/chipsets/ata-intel.c
Show First 20 Lines • Show All 550 Lines • ▼ Show 20 Lines | ata_intel_sch_setmode(device_t dev, int target, int mode) | ||||
device_t parent = device_get_parent(dev); | device_t parent = device_get_parent(dev); | ||||
struct ata_pci_controller *ctlr = device_get_softc(parent); | struct ata_pci_controller *ctlr = device_get_softc(parent); | ||||
u_int8_t dtim = 0x80 + (target << 2); | u_int8_t dtim = 0x80 + (target << 2); | ||||
u_int32_t tim = pci_read_config(parent, dtim, 4); | u_int32_t tim = pci_read_config(parent, dtim, 4); | ||||
int piomode; | int piomode; | ||||
mode = min(mode, ctlr->chip->max_dma); | mode = min(mode, ctlr->chip->max_dma); | ||||
if (mode >= ATA_UDMA0) { | if (mode >= ATA_UDMA0) { | ||||
tim |= (0x1 << 31); | tim |= (0x1U << 31); | ||||
tim &= ~(0x7 << 16); | tim &= ~(0x7 << 16); | ||||
tim |= ((mode & ATA_MODE_MASK) << 16); | tim |= ((mode & ATA_MODE_MASK) << 16); | ||||
piomode = ATA_PIO4; | piomode = ATA_PIO4; | ||||
} else if (mode >= ATA_WDMA0) { | } else if (mode >= ATA_WDMA0) { | ||||
tim &= ~(0x1 << 31); | tim &= ~(0x1U << 31); | ||||
tim &= ~(0x3 << 8); | tim &= ~(0x3 << 8); | ||||
tim |= ((mode & ATA_MODE_MASK) << 8); | tim |= ((mode & ATA_MODE_MASK) << 8); | ||||
piomode = (mode == ATA_WDMA0) ? ATA_PIO0 : | piomode = (mode == ATA_WDMA0) ? ATA_PIO0 : | ||||
(mode == ATA_WDMA1) ? ATA_PIO3 : ATA_PIO4; | (mode == ATA_WDMA1) ? ATA_PIO3 : ATA_PIO4; | ||||
} else | } else | ||||
piomode = mode; | piomode = mode; | ||||
tim &= ~(0x7); | tim &= ~(0x7); | ||||
tim |= (piomode & 0x7); | tim |= (piomode & 0x7); | ||||
▲ Show 20 Lines • Show All 356 Lines • Show Last 20 Lines |