Lines Matching refs:ioaddr
32 static u8 sata_busy_wait (struct sata_ioports *ioaddr, int bits,
34 static u8 sata_chk_status (struct sata_ioports *ioaddr, u8 usealtstatus);
41 static void output_data (struct sata_ioports *ioaddr, u16 * sect_buf, int words) in output_data() argument
44 __raw_writew (*sect_buf++, (void *)ioaddr->data_addr); in output_data()
48 static int input_data (struct sata_ioports *ioaddr, u16 * sect_buf, int words) in input_data() argument
51 *sect_buf++ = __raw_readw ((void *)ioaddr->data_addr); in input_data()
63 writeb (port[num].ctl_reg, port[num].ioaddr.ctl_addr); in sata_bus_softreset()
65 writeb (port[num].ctl_reg | ATA_SRST, port[num].ioaddr.ctl_addr); in sata_bus_softreset()
67 writeb (port[num].ctl_reg, port[num].ioaddr.ctl_addr); in sata_bus_softreset()
78 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 300, 0); in sata_bus_softreset()
81 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 3, 0); in sata_bus_softreset()
90 status = sata_chk_status (&port[num].ioaddr, 0); in sata_bus_softreset()
119 writeb (cmd, port[num].ioaddr.command_addr); in sata_identify()
120 readb (port[num].ioaddr.altstatus_addr); in sata_identify()
123 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 1000, 0); in sata_identify()
130 input_data (&port[num].ioaddr, iobuf, ATA_SECTOR_WORDS); in sata_identify()
185 writeb (SETFEATURES_XFER, port[num].ioaddr.feature_addr); in set_Feature_cmd()
186 writeb (XFER_PIO_4, port[num].ioaddr.nsect_addr); in set_Feature_cmd()
187 writeb (0, port[num].ioaddr.lbal_addr); in set_Feature_cmd()
188 writeb (0, port[num].ioaddr.lbam_addr); in set_Feature_cmd()
189 writeb (0, port[num].ioaddr.lbah_addr); in set_Feature_cmd()
191 writeb (ATA_DEVICE_OBS, port[num].ioaddr.device_addr); in set_Feature_cmd()
192 writeb (ATA_CMD_SET_FEATURES, port[num].ioaddr.command_addr); in set_Feature_cmd()
197 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 5000, 0); in set_Feature_cmd()
225 if (!((status = sata_chk_status (&port[num].ioaddr, 0)) & ATA_DRDY)) { in sil3114_spin_down()
230 writeb (0x00, port[num].ioaddr.feature_addr); in sil3114_spin_down()
232 writeb (0x00, port[num].ioaddr.nsect_addr); in sil3114_spin_down()
233 writeb (0x00, port[num].ioaddr.lbal_addr); in sil3114_spin_down()
234 writeb (0x00, port[num].ioaddr.lbam_addr); in sil3114_spin_down()
235 writeb (0x00, port[num].ioaddr.lbah_addr); in sil3114_spin_down()
237 writeb (ATA_DEVICE_OBS, port[num].ioaddr.device_addr); in sil3114_spin_down()
238 writeb (ATA_CMD_STANDBY, port[num].ioaddr.command_addr); in sil3114_spin_down()
240 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 30000, 0); in sil3114_spin_down()
271 if (!((status = sata_chk_status (&port[num].ioaddr, 0)) & ATA_DRDY)) { in sil3114_spin_up()
278 writeb (0x00, port[num].ioaddr.feature_addr); in sil3114_spin_up()
280 writeb (0x00, port[num].ioaddr.nsect_addr); in sil3114_spin_up()
281 writeb (0x00, port[num].ioaddr.lbal_addr); in sil3114_spin_up()
282 writeb (0x00, port[num].ioaddr.lbam_addr); in sil3114_spin_up()
283 writeb (0x00, port[num].ioaddr.lbah_addr); in sil3114_spin_up()
285 writeb (ATA_DEVICE_OBS, port[num].ioaddr.device_addr); in sil3114_spin_up()
286 writeb (ATA_CMD_IDLE, port[num].ioaddr.command_addr); in sil3114_spin_up()
288 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 30000, 0); in sil3114_spin_up()
325 if (!(sata_chk_status (&port[num].ioaddr, 0) & ATA_DRDY)) { in check_power_mode()
330 writeb (0, port[num].ioaddr.feature_addr); in check_power_mode()
331 writeb (0, port[num].ioaddr.nsect_addr); in check_power_mode()
332 writeb (0, port[num].ioaddr.lbal_addr); in check_power_mode()
333 writeb (0, port[num].ioaddr.lbam_addr); in check_power_mode()
334 writeb (0, port[num].ioaddr.lbah_addr); in check_power_mode()
336 writeb (ATA_DEVICE_OBS, port[num].ioaddr.device_addr); in check_power_mode()
337 writeb (ATA_CMD_CHK_POWER, port[num].ioaddr.command_addr); in check_power_mode()
339 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 5000, 0); in check_power_mode()
347 res = readb (port[num].ioaddr.nsect_addr); in check_power_mode()
399 static u8 sata_busy_wait (struct sata_ioports *ioaddr, int bits, in sata_busy_wait() argument
405 if (!((status = sata_chk_status (ioaddr, usealtstatus)) & bits)) { in sata_busy_wait()
415 static u8 sata_chk_status (struct sata_ioports *ioaddr, u8 usealtstatus) in sata_chk_status() argument
418 return readb (ioaddr->status_addr); in sata_chk_status()
420 return readb (ioaddr->altstatus_addr); in sata_chk_status()
444 if (!(sata_chk_status (&port[device].ioaddr, 0) & ATA_DRDY)) { in do_one_read()
453 writeb (0, port[device].ioaddr.nsect_addr); in do_one_read()
454 writeb ((blknr >> 24) & 0xFF, port[device].ioaddr.lbal_addr); in do_one_read()
455 writeb ((blknr >> 32) & 0xFF, port[device].ioaddr.lbam_addr); in do_one_read()
456 writeb ((blknr >> 40) & 0xFF, port[device].ioaddr.lbah_addr); in do_one_read()
459 writeb (blkcnt, port[device].ioaddr.nsect_addr); in do_one_read()
460 writeb (((blknr) >> 0) & 0xFF, port[device].ioaddr.lbal_addr); in do_one_read()
461 writeb ((blknr >> 8) & 0xFF, port[device].ioaddr.lbam_addr); in do_one_read()
462 writeb ((blknr >> 16) & 0xFF, port[device].ioaddr.lbah_addr); in do_one_read()
466 writeb (ATA_LBA, port[device].ioaddr.device_addr); in do_one_read()
467 writeb (ATA_CMD_PIO_READ_EXT, port[device].ioaddr.command_addr); in do_one_read()
472 port[device].ioaddr.device_addr); in do_one_read()
473 writeb (ATA_CMD_PIO_READ, port[device].ioaddr.command_addr); in do_one_read()
476 status = sata_busy_wait (&port[device].ioaddr, ATA_BUSY, 10000, 1); in do_one_read()
482 err = readb (port[device].ioaddr.error_addr); in do_one_read()
494 status = sata_chk_status (&port[device].ioaddr, 0); in do_one_read()
497 readb (port[device].ioaddr.error_addr)); in do_one_read()
501 input_data (&port[device].ioaddr, buff, ATA_SECTOR_WORDS); in do_one_read()
572 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 500, 0); in sata_write()
580 writeb (0, port[num].ioaddr.nsect_addr); in sata_write()
582 port[num].ioaddr.lbal_addr); in sata_write()
584 port[num].ioaddr.lbam_addr); in sata_write()
586 port[num].ioaddr.lbah_addr); in sata_write()
589 writeb (1, port[num].ioaddr.nsect_addr); in sata_write()
590 writeb ((blknr >> 0) & 0xFF, port[num].ioaddr.lbal_addr); in sata_write()
591 writeb ((blknr >> 8) & 0xFF, port[num].ioaddr.lbam_addr); in sata_write()
592 writeb ((blknr >> 16) & 0xFF, port[num].ioaddr.lbah_addr); in sata_write()
595 writeb (ATA_LBA, port[num].ioaddr.device_addr); in sata_write()
596 writeb (ATA_CMD_PIO_WRITE_EXT, port[num].ioaddr.command_addr); in sata_write()
601 port[num].ioaddr.device_addr); in sata_write()
602 writeb (ATA_CMD_PIO_WRITE, port[num].ioaddr.command_addr); in sata_write()
607 status = sata_busy_wait (&port[num].ioaddr, ATA_BUSY, 4000, 0); in sata_write()
614 output_data (&port[num].ioaddr, buffer, ATA_SECTOR_WORDS); in sata_write()
615 readb (port[num].ioaddr.altstatus_addr); in sata_write()
771 port[0].ioaddr.cmd_addr = iobase[5] + VND_TF0_CH0; in scan_sata()
772 port[0].ioaddr.altstatus_addr = port[0].ioaddr.ctl_addr = in scan_sata()
774 port[0].ioaddr.bmdma_addr = iobase[5] + VND_BMDMA_CH0; in scan_sata()
779 port[1].ioaddr.cmd_addr = iobase[5] + VND_TF0_CH1; in scan_sata()
780 port[1].ioaddr.altstatus_addr = port[1].ioaddr.ctl_addr = in scan_sata()
782 port[1].ioaddr.bmdma_addr = iobase[5] + VND_BMDMA_CH1; in scan_sata()
787 port[2].ioaddr.cmd_addr = iobase[5] + VND_TF0_CH2; in scan_sata()
788 port[2].ioaddr.altstatus_addr = port[2].ioaddr.ctl_addr = in scan_sata()
790 port[2].ioaddr.bmdma_addr = iobase[5] + VND_BMDMA_CH2; in scan_sata()
795 port[3].ioaddr.cmd_addr = iobase[5] + VND_TF0_CH3; in scan_sata()
796 port[3].ioaddr.altstatus_addr = port[3].ioaddr.ctl_addr = in scan_sata()
798 port[3].ioaddr.bmdma_addr = iobase[5] + VND_BMDMA_CH3; in scan_sata()
807 sata_port (&port[dev].ioaddr); in scan_sata()