aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-core.c
diff options
context:
space:
mode:
author <jgarzik@pretzel.yyz.us>2005-06-03 23:54:56 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-06-03 23:54:56 -0400
commit73561695b2e77473e353a5ae63bab81ed5098d8e (patch)
treed039affaa54d38985e41566e4d62e0aa6a170287 /drivers/scsi/libata-core.c
parent6f2f38128170814e151cfedf79532e19cd179567 (diff)
parent8be3de3fd8469154a2b3e18a4712032dac5b4a53 (diff)
Automatic merge of /spare/repo/linux-2.6/.git branch HEAD
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r--drivers/scsi/libata-core.c510
1 files changed, 452 insertions, 58 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 8b5a3f00083d..84c4770e5bb4 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -186,6 +186,28 @@ static void ata_tf_load_mmio(struct ata_port *ap, struct ata_taskfile *tf)
186 ata_wait_idle(ap); 186 ata_wait_idle(ap);
187} 187}
188 188
189
190/**
191 * ata_tf_load - send taskfile registers to host controller
192 * @ap: Port to which output is sent
193 * @tf: ATA taskfile register set
194 *
195 * Outputs ATA taskfile to standard ATA host controller using MMIO
196 * or PIO as indicated by the ATA_FLAG_MMIO flag.
197 * Writes the control, feature, nsect, lbal, lbam, and lbah registers.
198 * Optionally (ATA_TFLAG_LBA48) writes hob_feature, hob_nsect,
199 * hob_lbal, hob_lbam, and hob_lbah.
200 *
201 * This function waits for idle (!BUSY and !DRQ) after writing
202 * registers. If the control register has a new value, this
203 * function also waits for idle after writing control and before
204 * writing the remaining registers.
205 *
206 * May be used as the tf_load() entry in ata_port_operations.
207 *
208 * LOCKING:
209 * Inherited from caller.
210 */
189void ata_tf_load(struct ata_port *ap, struct ata_taskfile *tf) 211void ata_tf_load(struct ata_port *ap, struct ata_taskfile *tf)
190{ 212{
191 if (ap->flags & ATA_FLAG_MMIO) 213 if (ap->flags & ATA_FLAG_MMIO)
@@ -195,11 +217,11 @@ void ata_tf_load(struct ata_port *ap, struct ata_taskfile *tf)
195} 217}
196 218
197/** 219/**
198 * ata_exec_command - issue ATA command to host controller 220 * ata_exec_command_pio - issue ATA command to host controller
199 * @ap: port to which command is being issued 221 * @ap: port to which command is being issued
200 * @tf: ATA taskfile register set 222 * @tf: ATA taskfile register set
201 * 223 *
202 * Issues PIO/MMIO write to ATA command register, with proper 224 * Issues PIO write to ATA command register, with proper
203 * synchronization with interrupt handler / other threads. 225 * synchronization with interrupt handler / other threads.
204 * 226 *
205 * LOCKING: 227 * LOCKING:
@@ -235,6 +257,18 @@ static void ata_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf)
235 ata_pause(ap); 257 ata_pause(ap);
236} 258}
237 259
260
261/**
262 * ata_exec_command - issue ATA command to host controller
263 * @ap: port to which command is being issued
264 * @tf: ATA taskfile register set
265 *
266 * Issues PIO/MMIO write to ATA command register, with proper
267 * synchronization with interrupt handler / other threads.
268 *
269 * LOCKING:
270 * spin_lock_irqsave(host_set lock)
271 */
238void ata_exec_command(struct ata_port *ap, struct ata_taskfile *tf) 272void ata_exec_command(struct ata_port *ap, struct ata_taskfile *tf)
239{ 273{
240 if (ap->flags & ATA_FLAG_MMIO) 274 if (ap->flags & ATA_FLAG_MMIO)
@@ -305,7 +339,7 @@ void ata_tf_to_host_nolock(struct ata_port *ap, struct ata_taskfile *tf)
305} 339}
306 340
307/** 341/**
308 * ata_tf_read - input device's ATA taskfile shadow registers 342 * ata_tf_read_pio - input device's ATA taskfile shadow registers
309 * @ap: Port from which input is read 343 * @ap: Port from which input is read
310 * @tf: ATA taskfile register set for storing input 344 * @tf: ATA taskfile register set for storing input
311 * 345 *
@@ -368,6 +402,23 @@ static void ata_tf_read_mmio(struct ata_port *ap, struct ata_taskfile *tf)
368 } 402 }
369} 403}
370 404
405
406/**
407 * ata_tf_read - input device's ATA taskfile shadow registers
408 * @ap: Port from which input is read
409 * @tf: ATA taskfile register set for storing input
410 *
411 * Reads ATA taskfile registers for currently-selected device
412 * into @tf.
413 *
414 * Reads nsect, lbal, lbam, lbah, and device. If ATA_TFLAG_LBA48
415 * is set, also reads the hob registers.
416 *
417 * May be used as the tf_read() entry in ata_port_operations.
418 *
419 * LOCKING:
420 * Inherited from caller.
421 */
371void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf) 422void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
372{ 423{
373 if (ap->flags & ATA_FLAG_MMIO) 424 if (ap->flags & ATA_FLAG_MMIO)
@@ -381,7 +432,7 @@ void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
381 * @ap: port where the device is 432 * @ap: port where the device is
382 * 433 *
383 * Reads ATA taskfile status register for currently-selected device 434 * Reads ATA taskfile status register for currently-selected device
384 * and return it's value. This also clears pending interrupts 435 * and return its value. This also clears pending interrupts
385 * from this device 436 * from this device
386 * 437 *
387 * LOCKING: 438 * LOCKING:
@@ -397,7 +448,7 @@ static u8 ata_check_status_pio(struct ata_port *ap)
397 * @ap: port where the device is 448 * @ap: port where the device is
398 * 449 *
399 * Reads ATA taskfile status register for currently-selected device 450 * Reads ATA taskfile status register for currently-selected device
400 * via MMIO and return it's value. This also clears pending interrupts 451 * via MMIO and return its value. This also clears pending interrupts
401 * from this device 452 * from this device
402 * 453 *
403 * LOCKING: 454 * LOCKING:
@@ -408,6 +459,20 @@ static u8 ata_check_status_mmio(struct ata_port *ap)
408 return readb((void __iomem *) ap->ioaddr.status_addr); 459 return readb((void __iomem *) ap->ioaddr.status_addr);
409} 460}
410 461
462
463/**
464 * ata_check_status - Read device status reg & clear interrupt
465 * @ap: port where the device is
466 *
467 * Reads ATA taskfile status register for currently-selected device
468 * and return its value. This also clears pending interrupts
469 * from this device
470 *
471 * May be used as the check_status() entry in ata_port_operations.
472 *
473 * LOCKING:
474 * Inherited from caller.
475 */
411u8 ata_check_status(struct ata_port *ap) 476u8 ata_check_status(struct ata_port *ap)
412{ 477{
413 if (ap->flags & ATA_FLAG_MMIO) 478 if (ap->flags & ATA_FLAG_MMIO)
@@ -415,6 +480,20 @@ u8 ata_check_status(struct ata_port *ap)
415 return ata_check_status_pio(ap); 480 return ata_check_status_pio(ap);
416} 481}
417 482
483
484/**
485 * ata_altstatus - Read device alternate status reg
486 * @ap: port where the device is
487 *
488 * Reads ATA taskfile alternate status register for
489 * currently-selected device and return its value.
490 *
491 * Note: may NOT be used as the check_altstatus() entry in
492 * ata_port_operations.
493 *
494 * LOCKING:
495 * Inherited from caller.
496 */
418u8 ata_altstatus(struct ata_port *ap) 497u8 ata_altstatus(struct ata_port *ap)
419{ 498{
420 if (ap->ops->check_altstatus) 499 if (ap->ops->check_altstatus)
@@ -425,6 +504,20 @@ u8 ata_altstatus(struct ata_port *ap)
425 return inb(ap->ioaddr.altstatus_addr); 504 return inb(ap->ioaddr.altstatus_addr);
426} 505}
427 506
507
508/**
509 * ata_chk_err - Read device error reg
510 * @ap: port where the device is
511 *
512 * Reads ATA taskfile error register for
513 * currently-selected device and return its value.
514 *
515 * Note: may NOT be used as the check_err() entry in
516 * ata_port_operations.
517 *
518 * LOCKING:
519 * Inherited from caller.
520 */
428u8 ata_chk_err(struct ata_port *ap) 521u8 ata_chk_err(struct ata_port *ap)
429{ 522{
430 if (ap->ops->check_err) 523 if (ap->ops->check_err)
@@ -873,10 +966,24 @@ void ata_dev_id_string(u16 *id, unsigned char *s,
873 } 966 }
874} 967}
875 968
969
970/**
971 * ata_noop_dev_select - Select device 0/1 on ATA bus
972 * @ap: ATA channel to manipulate
973 * @device: ATA device (numbered from zero) to select
974 *
975 * This function performs no actual function.
976 *
977 * May be used as the dev_select() entry in ata_port_operations.
978 *
979 * LOCKING:
980 * caller.
981 */
876void ata_noop_dev_select (struct ata_port *ap, unsigned int device) 982void ata_noop_dev_select (struct ata_port *ap, unsigned int device)
877{ 983{
878} 984}
879 985
986
880/** 987/**
881 * ata_std_dev_select - Select device 0/1 on ATA bus 988 * ata_std_dev_select - Select device 0/1 on ATA bus
882 * @ap: ATA channel to manipulate 989 * @ap: ATA channel to manipulate
@@ -884,7 +991,9 @@ void ata_noop_dev_select (struct ata_port *ap, unsigned int device)
884 * 991 *
885 * Use the method defined in the ATA specification to 992 * Use the method defined in the ATA specification to
886 * make either device 0, or device 1, active on the 993 * make either device 0, or device 1, active on the
887 * ATA channel. 994 * ATA channel. Works with both PIO and MMIO.
995 *
996 * May be used as the dev_select() entry in ata_port_operations.
888 * 997 *
889 * LOCKING: 998 * LOCKING:
890 * caller. 999 * caller.
@@ -1221,7 +1330,12 @@ void ata_dev_config(struct ata_port *ap, unsigned int i)
1221 * ata_bus_probe - Reset and probe ATA bus 1330 * ata_bus_probe - Reset and probe ATA bus
1222 * @ap: Bus to probe 1331 * @ap: Bus to probe
1223 * 1332 *
1333 * Master ATA bus probing function. Initiates a hardware-dependent
1334 * bus reset, then attempts to identify any devices found on
1335 * the bus.
1336 *
1224 * LOCKING: 1337 * LOCKING:
1338 * PCI/etc. bus probe sem.
1225 * 1339 *
1226 * RETURNS: 1340 * RETURNS:
1227 * Zero on success, non-zero on error. 1341 * Zero on success, non-zero on error.
@@ -1259,10 +1373,14 @@ err_out:
1259} 1373}
1260 1374
1261/** 1375/**
1262 * ata_port_probe - 1376 * ata_port_probe - Mark port as enabled
1263 * @ap: 1377 * @ap: Port for which we indicate enablement
1264 * 1378 *
1265 * LOCKING: 1379 * Modify @ap data structure such that the system
1380 * thinks that the entire port is enabled.
1381 *
1382 * LOCKING: host_set lock, or some other form of
1383 * serialization.
1266 */ 1384 */
1267 1385
1268void ata_port_probe(struct ata_port *ap) 1386void ata_port_probe(struct ata_port *ap)
@@ -1271,10 +1389,15 @@ void ata_port_probe(struct ata_port *ap)
1271} 1389}
1272 1390
1273/** 1391/**
1274 * __sata_phy_reset - 1392 * __sata_phy_reset - Wake/reset a low-level SATA PHY
1275 * @ap: 1393 * @ap: SATA port associated with target SATA PHY.
1394 *
1395 * This function issues commands to standard SATA Sxxx
1396 * PHY registers, to wake up the phy (and device), and
1397 * clear any reset condition.
1276 * 1398 *
1277 * LOCKING: 1399 * LOCKING:
1400 * PCI/etc. bus probe sem.
1278 * 1401 *
1279 */ 1402 */
1280void __sata_phy_reset(struct ata_port *ap) 1403void __sata_phy_reset(struct ata_port *ap)
@@ -1283,11 +1406,11 @@ void __sata_phy_reset(struct ata_port *ap)
1283 unsigned long timeout = jiffies + (HZ * 5); 1406 unsigned long timeout = jiffies + (HZ * 5);
1284 1407
1285 if (ap->flags & ATA_FLAG_SATA_RESET) { 1408 if (ap->flags & ATA_FLAG_SATA_RESET) {
1286 scr_write(ap, SCR_CONTROL, 0x301); /* issue phy wake/reset */ 1409 /* issue phy wake/reset */
1287 scr_read(ap, SCR_STATUS); /* dummy read; flush */ 1410 scr_write_flush(ap, SCR_CONTROL, 0x301);
1288 udelay(400); /* FIXME: a guess */ 1411 udelay(400); /* FIXME: a guess */
1289 } 1412 }
1290 scr_write(ap, SCR_CONTROL, 0x300); /* issue phy wake/clear reset */ 1413 scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */
1291 1414
1292 /* wait for phy to become ready, if necessary */ 1415 /* wait for phy to become ready, if necessary */
1293 do { 1416 do {
@@ -1319,10 +1442,14 @@ void __sata_phy_reset(struct ata_port *ap)
1319} 1442}
1320 1443
1321/** 1444/**
1322 * __sata_phy_reset - 1445 * sata_phy_reset - Reset SATA bus.
1323 * @ap: 1446 * @ap: SATA port associated with target SATA PHY.
1447 *
1448 * This function resets the SATA bus, and then probes
1449 * the bus for devices.
1324 * 1450 *
1325 * LOCKING: 1451 * LOCKING:
1452 * PCI/etc. bus probe sem.
1326 * 1453 *
1327 */ 1454 */
1328void sata_phy_reset(struct ata_port *ap) 1455void sata_phy_reset(struct ata_port *ap)
@@ -1334,10 +1461,16 @@ void sata_phy_reset(struct ata_port *ap)
1334} 1461}
1335 1462
1336/** 1463/**
1337 * ata_port_disable - 1464 * ata_port_disable - Disable port.
1338 * @ap: 1465 * @ap: Port to be disabled.
1339 * 1466 *
1340 * LOCKING: 1467 * Modify @ap data structure such that the system
1468 * thinks that the entire port is disabled, and should
1469 * never attempt to probe or communicate with devices
1470 * on this port.
1471 *
1472 * LOCKING: host_set lock, or some other form of
1473 * serialization.
1341 */ 1474 */
1342 1475
1343void ata_port_disable(struct ata_port *ap) 1476void ata_port_disable(struct ata_port *ap)
@@ -1446,7 +1579,10 @@ static void ata_host_set_dma(struct ata_port *ap, u8 xfer_mode,
1446 * ata_set_mode - Program timings and issue SET FEATURES - XFER 1579 * ata_set_mode - Program timings and issue SET FEATURES - XFER
1447 * @ap: port on which timings will be programmed 1580 * @ap: port on which timings will be programmed
1448 * 1581 *
1582 * Set ATA device disk transfer mode (PIO3, UDMA6, etc.).
1583 *
1449 * LOCKING: 1584 * LOCKING:
1585 * PCI/etc. bus probe sem.
1450 * 1586 *
1451 */ 1587 */
1452static void ata_set_mode(struct ata_port *ap) 1588static void ata_set_mode(struct ata_port *ap)
@@ -1497,7 +1633,10 @@ err_out:
1497 * @tmout_pat: impatience timeout 1633 * @tmout_pat: impatience timeout
1498 * @tmout: overall timeout 1634 * @tmout: overall timeout
1499 * 1635 *
1500 * LOCKING: 1636 * Sleep until ATA Status register bit BSY clears,
1637 * or a timeout occurs.
1638 *
1639 * LOCKING: None.
1501 * 1640 *
1502 */ 1641 */
1503 1642
@@ -1583,10 +1722,14 @@ static void ata_bus_post_reset(struct ata_port *ap, unsigned int devmask)
1583} 1722}
1584 1723
1585/** 1724/**
1586 * ata_bus_edd - 1725 * ata_bus_edd - Issue EXECUTE DEVICE DIAGNOSTIC command.
1587 * @ap: 1726 * @ap: Port to reset and probe
1727 *
1728 * Use the EXECUTE DEVICE DIAGNOSTIC command to reset and
1729 * probe the bus. Not often used these days.
1588 * 1730 *
1589 * LOCKING: 1731 * LOCKING:
1732 * PCI/etc. bus probe sem.
1590 * 1733 *
1591 */ 1734 */
1592 1735
@@ -1663,8 +1806,8 @@ static unsigned int ata_bus_softreset(struct ata_port *ap,
1663 * the device is ATA or ATAPI. 1806 * the device is ATA or ATAPI.
1664 * 1807 *
1665 * LOCKING: 1808 * LOCKING:
1666 * Inherited from caller. Some functions called by this function 1809 * PCI/etc. bus probe sem.
1667 * obtain the host_set lock. 1810 * Obtains host_set lock.
1668 * 1811 *
1669 * SIDE EFFECTS: 1812 * SIDE EFFECTS:
1670 * Sets ATA_FLAG_PORT_DISABLED if bus reset fails. 1813 * Sets ATA_FLAG_PORT_DISABLED if bus reset fails.
@@ -1906,7 +2049,11 @@ static int fgb(u32 bitmap)
1906 * @xfer_mode_out: (output) SET FEATURES - XFER MODE code 2049 * @xfer_mode_out: (output) SET FEATURES - XFER MODE code
1907 * @xfer_shift_out: (output) bit shift that selects this mode 2050 * @xfer_shift_out: (output) bit shift that selects this mode
1908 * 2051 *
2052 * Based on host and device capabilities, determine the
2053 * maximum transfer mode that is amenable to all.
2054 *
1909 * LOCKING: 2055 * LOCKING:
2056 * PCI/etc. bus probe sem.
1910 * 2057 *
1911 * RETURNS: 2058 * RETURNS:
1912 * Zero on success, negative on error. 2059 * Zero on success, negative on error.
@@ -1939,7 +2086,11 @@ static int ata_choose_xfer_mode(struct ata_port *ap,
1939 * @ap: Port associated with device @dev 2086 * @ap: Port associated with device @dev
1940 * @dev: Device to which command will be sent 2087 * @dev: Device to which command will be sent
1941 * 2088 *
2089 * Issue SET FEATURES - XFER MODE command to device @dev
2090 * on port @ap.
2091 *
1942 * LOCKING: 2092 * LOCKING:
2093 * PCI/etc. bus probe sem.
1943 */ 2094 */
1944 2095
1945static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev) 2096static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev)
@@ -1977,10 +2128,13 @@ static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev)
1977} 2128}
1978 2129
1979/** 2130/**
1980 * ata_sg_clean - 2131 * ata_sg_clean - Unmap DMA memory associated with command
1981 * @qc: 2132 * @qc: Command containing DMA memory to be released
2133 *
2134 * Unmap all mapped DMA memory associated with this command.
1982 * 2135 *
1983 * LOCKING: 2136 * LOCKING:
2137 * spin_lock_irqsave(host_set lock)
1984 */ 2138 */
1985 2139
1986static void ata_sg_clean(struct ata_queued_cmd *qc) 2140static void ata_sg_clean(struct ata_queued_cmd *qc)
@@ -2011,7 +2165,11 @@ static void ata_sg_clean(struct ata_queued_cmd *qc)
2011 * ata_fill_sg - Fill PCI IDE PRD table 2165 * ata_fill_sg - Fill PCI IDE PRD table
2012 * @qc: Metadata associated with taskfile to be transferred 2166 * @qc: Metadata associated with taskfile to be transferred
2013 * 2167 *
2168 * Fill PCI IDE PRD (scatter-gather) table with segments
2169 * associated with the current disk command.
2170 *
2014 * LOCKING: 2171 * LOCKING:
2172 * spin_lock_irqsave(host_set lock)
2015 * 2173 *
2016 */ 2174 */
2017static void ata_fill_sg(struct ata_queued_cmd *qc) 2175static void ata_fill_sg(struct ata_queued_cmd *qc)
@@ -2058,7 +2216,13 @@ static void ata_fill_sg(struct ata_queued_cmd *qc)
2058 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported 2216 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported
2059 * @qc: Metadata associated with taskfile to check 2217 * @qc: Metadata associated with taskfile to check
2060 * 2218 *
2219 * Allow low-level driver to filter ATA PACKET commands, returning
2220 * a status indicating whether or not it is OK to use DMA for the
2221 * supplied PACKET command.
2222 *
2061 * LOCKING: 2223 * LOCKING:
2224 * spin_lock_irqsave(host_set lock)
2225 *
2062 * RETURNS: 0 when ATAPI DMA can be used 2226 * RETURNS: 0 when ATAPI DMA can be used
2063 * nonzero otherwise 2227 * nonzero otherwise
2064 */ 2228 */
@@ -2076,6 +2240,8 @@ int ata_check_atapi_dma(struct ata_queued_cmd *qc)
2076 * ata_qc_prep - Prepare taskfile for submission 2240 * ata_qc_prep - Prepare taskfile for submission
2077 * @qc: Metadata associated with taskfile to be prepared 2241 * @qc: Metadata associated with taskfile to be prepared
2078 * 2242 *
2243 * Prepare ATA taskfile for submission.
2244 *
2079 * LOCKING: 2245 * LOCKING:
2080 * spin_lock_irqsave(host_set lock) 2246 * spin_lock_irqsave(host_set lock)
2081 */ 2247 */
@@ -2087,6 +2253,32 @@ void ata_qc_prep(struct ata_queued_cmd *qc)
2087 ata_fill_sg(qc); 2253 ata_fill_sg(qc);
2088} 2254}
2089 2255
2256/**
2257 * ata_sg_init_one - Associate command with memory buffer
2258 * @qc: Command to be associated
2259 * @buf: Memory buffer
2260 * @buflen: Length of memory buffer, in bytes.
2261 *
2262 * Initialize the data-related elements of queued_cmd @qc
2263 * to point to a single memory buffer, @buf of byte length @buflen.
2264 *
2265 * LOCKING:
2266 * spin_lock_irqsave(host_set lock)
2267 */
2268
2269
2270
2271/**
2272 * ata_sg_init_one - Prepare a one-entry scatter-gather list.
2273 * @qc: Queued command
2274 * @buf: transfer buffer
2275 * @buflen: length of buf
2276 *
2277 * Builds a single-entry scatter-gather list to initiate a
2278 * transfer utilizing the specified buffer.
2279 *
2280 * LOCKING:
2281 */
2090void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen) 2282void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen)
2091{ 2283{
2092 struct scatterlist *sg; 2284 struct scatterlist *sg;
@@ -2101,9 +2293,35 @@ void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen)
2101 sg = qc->sg; 2293 sg = qc->sg;
2102 sg->page = virt_to_page(buf); 2294 sg->page = virt_to_page(buf);
2103 sg->offset = (unsigned long) buf & ~PAGE_MASK; 2295 sg->offset = (unsigned long) buf & ~PAGE_MASK;
2104 sg_dma_len(sg) = buflen; 2296 sg->length = buflen;
2105} 2297}
2106 2298
2299/**
2300 * ata_sg_init - Associate command with scatter-gather table.
2301 * @qc: Command to be associated
2302 * @sg: Scatter-gather table.
2303 * @n_elem: Number of elements in s/g table.
2304 *
2305 * Initialize the data-related elements of queued_cmd @qc
2306 * to point to a scatter-gather table @sg, containing @n_elem
2307 * elements.
2308 *
2309 * LOCKING:
2310 * spin_lock_irqsave(host_set lock)
2311 */
2312
2313
2314/**
2315 * ata_sg_init - Assign a scatter gather list to a queued command
2316 * @qc: Queued command
2317 * @sg: Scatter-gather list
2318 * @n_elem: length of sg list
2319 *
2320 * Attaches a scatter-gather list to a queued command.
2321 *
2322 * LOCKING:
2323 */
2324
2107void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg, 2325void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
2108 unsigned int n_elem) 2326 unsigned int n_elem)
2109{ 2327{
@@ -2113,14 +2331,16 @@ void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
2113} 2331}
2114 2332
2115/** 2333/**
2116 * ata_sg_setup_one - 2334 * ata_sg_setup_one - DMA-map the memory buffer associated with a command.
2117 * @qc: 2335 * @qc: Command with memory buffer to be mapped.
2336 *
2337 * DMA-map the memory buffer associated with queued_cmd @qc.
2118 * 2338 *
2119 * LOCKING: 2339 * LOCKING:
2120 * spin_lock_irqsave(host_set lock) 2340 * spin_lock_irqsave(host_set lock)
2121 * 2341 *
2122 * RETURNS: 2342 * RETURNS:
2123 * 2343 * Zero on success, negative on error.
2124 */ 2344 */
2125 2345
2126static int ata_sg_setup_one(struct ata_queued_cmd *qc) 2346static int ata_sg_setup_one(struct ata_queued_cmd *qc)
@@ -2131,11 +2351,12 @@ static int ata_sg_setup_one(struct ata_queued_cmd *qc)
2131 dma_addr_t dma_address; 2351 dma_addr_t dma_address;
2132 2352
2133 dma_address = dma_map_single(ap->host_set->dev, qc->buf_virt, 2353 dma_address = dma_map_single(ap->host_set->dev, qc->buf_virt,
2134 sg_dma_len(sg), dir); 2354 sg->length, dir);
2135 if (dma_mapping_error(dma_address)) 2355 if (dma_mapping_error(dma_address))
2136 return -1; 2356 return -1;
2137 2357
2138 sg_dma_address(sg) = dma_address; 2358 sg_dma_address(sg) = dma_address;
2359 sg_dma_len(sg) = sg->length;
2139 2360
2140 DPRINTK("mapped buffer of %d bytes for %s\n", sg_dma_len(sg), 2361 DPRINTK("mapped buffer of %d bytes for %s\n", sg_dma_len(sg),
2141 qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read"); 2362 qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
@@ -2144,13 +2365,16 @@ static int ata_sg_setup_one(struct ata_queued_cmd *qc)
2144} 2365}
2145 2366
2146/** 2367/**
2147 * ata_sg_setup - 2368 * ata_sg_setup - DMA-map the scatter-gather table associated with a command.
2148 * @qc: 2369 * @qc: Command with scatter-gather table to be mapped.
2370 *
2371 * DMA-map the scatter-gather table associated with queued_cmd @qc.
2149 * 2372 *
2150 * LOCKING: 2373 * LOCKING:
2151 * spin_lock_irqsave(host_set lock) 2374 * spin_lock_irqsave(host_set lock)
2152 * 2375 *
2153 * RETURNS: 2376 * RETURNS:
2377 * Zero on success, negative on error.
2154 * 2378 *
2155 */ 2379 */
2156 2380
@@ -2180,6 +2404,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
2180 * @ap: 2404 * @ap:
2181 * 2405 *
2182 * LOCKING: 2406 * LOCKING:
2407 * None. (executing in kernel thread context)
2183 * 2408 *
2184 * RETURNS: 2409 * RETURNS:
2185 * 2410 *
@@ -2227,6 +2452,7 @@ static unsigned long ata_pio_poll(struct ata_port *ap)
2227 * @ap: 2452 * @ap:
2228 * 2453 *
2229 * LOCKING: 2454 * LOCKING:
2455 * None. (executing in kernel thread context)
2230 */ 2456 */
2231 2457
2232static void ata_pio_complete (struct ata_port *ap) 2458static void ata_pio_complete (struct ata_port *ap)
@@ -2269,6 +2495,18 @@ static void ata_pio_complete (struct ata_port *ap)
2269 ata_qc_complete(qc, drv_stat); 2495 ata_qc_complete(qc, drv_stat);
2270} 2496}
2271 2497
2498
2499/**
2500 * swap_buf_le16 -
2501 * @buf: Buffer to swap
2502 * @buf_words: Number of 16-bit words in buffer.
2503 *
2504 * Swap halves of 16-bit words if needed to convert from
2505 * little-endian byte order to native cpu byte order, or
2506 * vice-versa.
2507 *
2508 * LOCKING:
2509 */
2272void swap_buf_le16(u16 *buf, unsigned int buf_words) 2510void swap_buf_le16(u16 *buf, unsigned int buf_words)
2273{ 2511{
2274#ifdef __BIG_ENDIAN 2512#ifdef __BIG_ENDIAN
@@ -2340,7 +2578,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
2340 qc->cursect++; 2578 qc->cursect++;
2341 qc->cursg_ofs++; 2579 qc->cursg_ofs++;
2342 2580
2343 if ((qc->cursg_ofs * ATA_SECT_SIZE) == sg_dma_len(&sg[qc->cursg])) { 2581 if ((qc->cursg_ofs * ATA_SECT_SIZE) == (&sg[qc->cursg])->length) {
2344 qc->cursg++; 2582 qc->cursg++;
2345 qc->cursg_ofs = 0; 2583 qc->cursg_ofs = 0;
2346 } 2584 }
@@ -2377,7 +2615,7 @@ next_page:
2377 page = nth_page(page, (offset >> PAGE_SHIFT)); 2615 page = nth_page(page, (offset >> PAGE_SHIFT));
2378 offset %= PAGE_SIZE; 2616 offset %= PAGE_SIZE;
2379 2617
2380 count = min(sg_dma_len(sg) - qc->cursg_ofs, bytes); 2618 count = min(sg->length - qc->cursg_ofs, bytes);
2381 2619
2382 /* don't cross page boundaries */ 2620 /* don't cross page boundaries */
2383 count = min(count, (unsigned int)PAGE_SIZE - offset); 2621 count = min(count, (unsigned int)PAGE_SIZE - offset);
@@ -2388,7 +2626,7 @@ next_page:
2388 qc->curbytes += count; 2626 qc->curbytes += count;
2389 qc->cursg_ofs += count; 2627 qc->cursg_ofs += count;
2390 2628
2391 if (qc->cursg_ofs == sg_dma_len(sg)) { 2629 if (qc->cursg_ofs == sg->length) {
2392 qc->cursg++; 2630 qc->cursg++;
2393 qc->cursg_ofs = 0; 2631 qc->cursg_ofs = 0;
2394 } 2632 }
@@ -2401,7 +2639,7 @@ next_page:
2401 kunmap(page); 2639 kunmap(page);
2402 2640
2403 if (bytes) { 2641 if (bytes) {
2404 if (qc->cursg_ofs < sg_dma_len(sg)) 2642 if (qc->cursg_ofs < sg->length)
2405 goto next_page; 2643 goto next_page;
2406 goto next_sg; 2644 goto next_sg;
2407 } 2645 }
@@ -2444,6 +2682,7 @@ err_out:
2444 * @ap: 2682 * @ap:
2445 * 2683 *
2446 * LOCKING: 2684 * LOCKING:
2685 * None. (executing in kernel thread context)
2447 */ 2686 */
2448 2687
2449static void ata_pio_block(struct ata_port *ap) 2688static void ata_pio_block(struct ata_port *ap)
@@ -2569,7 +2808,7 @@ static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev,
2569 ata_sg_init_one(qc, cmd->sense_buffer, sizeof(cmd->sense_buffer)); 2808 ata_sg_init_one(qc, cmd->sense_buffer, sizeof(cmd->sense_buffer));
2570 qc->dma_dir = DMA_FROM_DEVICE; 2809 qc->dma_dir = DMA_FROM_DEVICE;
2571 2810
2572 memset(&qc->cdb, 0, sizeof(ap->cdb_len)); 2811 memset(&qc->cdb, 0, ap->cdb_len);
2573 qc->cdb[0] = REQUEST_SENSE; 2812 qc->cdb[0] = REQUEST_SENSE;
2574 qc->cdb[4] = SCSI_SENSE_BUFFERSIZE; 2813 qc->cdb[4] = SCSI_SENSE_BUFFERSIZE;
2575 2814
@@ -2612,6 +2851,7 @@ static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev,
2612 * transaction completed successfully. 2851 * transaction completed successfully.
2613 * 2852 *
2614 * LOCKING: 2853 * LOCKING:
2854 * Inherited from SCSI layer (none, can sleep)
2615 */ 2855 */
2616 2856
2617static void ata_qc_timeout(struct ata_queued_cmd *qc) 2857static void ata_qc_timeout(struct ata_queued_cmd *qc)
@@ -2721,6 +2961,7 @@ out:
2721 * @dev: Device from whom we request an available command structure 2961 * @dev: Device from whom we request an available command structure
2722 * 2962 *
2723 * LOCKING: 2963 * LOCKING:
2964 * None.
2724 */ 2965 */
2725 2966
2726static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap) 2967static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
@@ -2746,6 +2987,7 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
2746 * @dev: Device from whom we request an available command structure 2987 * @dev: Device from whom we request an available command structure
2747 * 2988 *
2748 * LOCKING: 2989 * LOCKING:
2990 * None.
2749 */ 2991 */
2750 2992
2751struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, 2993struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap,
@@ -2810,6 +3052,7 @@ static void __ata_qc_complete(struct ata_queued_cmd *qc)
2810 * in case something prevents using it. 3052 * in case something prevents using it.
2811 * 3053 *
2812 * LOCKING: 3054 * LOCKING:
3055 * spin_lock_irqsave(host_set lock)
2813 * 3056 *
2814 */ 3057 */
2815void ata_qc_free(struct ata_queued_cmd *qc) 3058void ata_qc_free(struct ata_queued_cmd *qc)
@@ -2823,9 +3066,13 @@ void ata_qc_free(struct ata_queued_cmd *qc)
2823/** 3066/**
2824 * ata_qc_complete - Complete an active ATA command 3067 * ata_qc_complete - Complete an active ATA command
2825 * @qc: Command to complete 3068 * @qc: Command to complete
2826 * @drv_stat: ATA status register contents 3069 * @drv_stat: ATA Status register contents
3070 *
3071 * Indicate to the mid and upper layers that an ATA
3072 * command has completed, with either an ok or not-ok status.
2827 * 3073 *
2828 * LOCKING: 3074 * LOCKING:
3075 * spin_lock_irqsave(host_set lock)
2829 * 3076 *
2830 */ 3077 */
2831 3078
@@ -2841,6 +3088,7 @@ void ata_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat)
2841 3088
2842 /* call completion callback */ 3089 /* call completion callback */
2843 rc = qc->complete_fn(qc, drv_stat); 3090 rc = qc->complete_fn(qc, drv_stat);
3091 qc->flags &= ~ATA_QCFLAG_ACTIVE;
2844 3092
2845 /* if callback indicates not to complete command (non-zero), 3093 /* if callback indicates not to complete command (non-zero),
2846 * return immediately 3094 * return immediately
@@ -2920,6 +3168,7 @@ err_out:
2920 return -1; 3168 return -1;
2921} 3169}
2922 3170
3171
2923/** 3172/**
2924 * ata_qc_issue_prot - issue taskfile to device in proto-dependent manner 3173 * ata_qc_issue_prot - issue taskfile to device in proto-dependent manner
2925 * @qc: command to issue to device 3174 * @qc: command to issue to device
@@ -2929,6 +3178,8 @@ err_out:
2929 * classes called "protocols", and issuing each type of protocol 3178 * classes called "protocols", and issuing each type of protocol
2930 * is slightly different. 3179 * is slightly different.
2931 * 3180 *
3181 * May be used as the qc_issue() entry in ata_port_operations.
3182 *
2932 * LOCKING: 3183 * LOCKING:
2933 * spin_lock_irqsave(host_set lock) 3184 * spin_lock_irqsave(host_set lock)
2934 * 3185 *
@@ -2986,7 +3237,7 @@ int ata_qc_issue_prot(struct ata_queued_cmd *qc)
2986} 3237}
2987 3238
2988/** 3239/**
2989 * ata_bmdma_setup - Set up PCI IDE BMDMA transaction 3240 * ata_bmdma_setup_mmio - Set up PCI IDE BMDMA transaction
2990 * @qc: Info associated with this ATA transaction. 3241 * @qc: Info associated with this ATA transaction.
2991 * 3242 *
2992 * LOCKING: 3243 * LOCKING:
@@ -3093,6 +3344,18 @@ static void ata_bmdma_start_pio (struct ata_queued_cmd *qc)
3093 ap->ioaddr.bmdma_addr + ATA_DMA_CMD); 3344 ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3094} 3345}
3095 3346
3347
3348/**
3349 * ata_bmdma_start - Start a PCI IDE BMDMA transaction
3350 * @qc: Info associated with this ATA transaction.
3351 *
3352 * Writes the ATA_DMA_START flag to the DMA command register.
3353 *
3354 * May be used as the bmdma_start() entry in ata_port_operations.
3355 *
3356 * LOCKING:
3357 * spin_lock_irqsave(host_set lock)
3358 */
3096void ata_bmdma_start(struct ata_queued_cmd *qc) 3359void ata_bmdma_start(struct ata_queued_cmd *qc)
3097{ 3360{
3098 if (qc->ap->flags & ATA_FLAG_MMIO) 3361 if (qc->ap->flags & ATA_FLAG_MMIO)
@@ -3101,6 +3364,20 @@ void ata_bmdma_start(struct ata_queued_cmd *qc)
3101 ata_bmdma_start_pio(qc); 3364 ata_bmdma_start_pio(qc);
3102} 3365}
3103 3366
3367
3368/**
3369 * ata_bmdma_setup - Set up PCI IDE BMDMA transaction
3370 * @qc: Info associated with this ATA transaction.
3371 *
3372 * Writes address of PRD table to device's PRD Table Address
3373 * register, sets the DMA control register, and calls
3374 * ops->exec_command() to start the transfer.
3375 *
3376 * May be used as the bmdma_setup() entry in ata_port_operations.
3377 *
3378 * LOCKING:
3379 * spin_lock_irqsave(host_set lock)
3380 */
3104void ata_bmdma_setup(struct ata_queued_cmd *qc) 3381void ata_bmdma_setup(struct ata_queued_cmd *qc)
3105{ 3382{
3106 if (qc->ap->flags & ATA_FLAG_MMIO) 3383 if (qc->ap->flags & ATA_FLAG_MMIO)
@@ -3109,6 +3386,19 @@ void ata_bmdma_setup(struct ata_queued_cmd *qc)
3109 ata_bmdma_setup_pio(qc); 3386 ata_bmdma_setup_pio(qc);
3110} 3387}
3111 3388
3389
3390/**
3391 * ata_bmdma_irq_clear - Clear PCI IDE BMDMA interrupt.
3392 * @ap: Port associated with this ATA transaction.
3393 *
3394 * Clear interrupt and error flags in DMA status register.
3395 *
3396 * May be used as the irq_clear() entry in ata_port_operations.
3397 *
3398 * LOCKING:
3399 * spin_lock_irqsave(host_set lock)
3400 */
3401
3112void ata_bmdma_irq_clear(struct ata_port *ap) 3402void ata_bmdma_irq_clear(struct ata_port *ap)
3113{ 3403{
3114 if (ap->flags & ATA_FLAG_MMIO) { 3404 if (ap->flags & ATA_FLAG_MMIO) {
@@ -3121,6 +3411,19 @@ void ata_bmdma_irq_clear(struct ata_port *ap)
3121 3411
3122} 3412}
3123 3413
3414
3415/**
3416 * ata_bmdma_status - Read PCI IDE BMDMA status
3417 * @ap: Port associated with this ATA transaction.
3418 *
3419 * Read and return BMDMA status register.
3420 *
3421 * May be used as the bmdma_status() entry in ata_port_operations.
3422 *
3423 * LOCKING:
3424 * spin_lock_irqsave(host_set lock)
3425 */
3426
3124u8 ata_bmdma_status(struct ata_port *ap) 3427u8 ata_bmdma_status(struct ata_port *ap)
3125{ 3428{
3126 u8 host_stat; 3429 u8 host_stat;
@@ -3132,6 +3435,19 @@ u8 ata_bmdma_status(struct ata_port *ap)
3132 return host_stat; 3435 return host_stat;
3133} 3436}
3134 3437
3438
3439/**
3440 * ata_bmdma_stop - Stop PCI IDE BMDMA transfer
3441 * @ap: Port associated with this ATA transaction.
3442 *
3443 * Clears the ATA_DMA_START flag in the dma control register
3444 *
3445 * May be used as the bmdma_stop() entry in ata_port_operations.
3446 *
3447 * LOCKING:
3448 * spin_lock_irqsave(host_set lock)
3449 */
3450
3135void ata_bmdma_stop(struct ata_port *ap) 3451void ata_bmdma_stop(struct ata_port *ap)
3136{ 3452{
3137 if (ap->flags & ATA_FLAG_MMIO) { 3453 if (ap->flags & ATA_FLAG_MMIO) {
@@ -3231,13 +3547,18 @@ idle_irq:
3231 3547
3232/** 3548/**
3233 * ata_interrupt - Default ATA host interrupt handler 3549 * ata_interrupt - Default ATA host interrupt handler
3234 * @irq: irq line 3550 * @irq: irq line (unused)
3235 * @dev_instance: pointer to our host information structure 3551 * @dev_instance: pointer to our ata_host_set information structure
3236 * @regs: unused 3552 * @regs: unused
3237 * 3553 *
3554 * Default interrupt handler for PCI IDE devices. Calls
3555 * ata_host_intr() for each port that is not disabled.
3556 *
3238 * LOCKING: 3557 * LOCKING:
3558 * Obtains host_set lock during operation.
3239 * 3559 *
3240 * RETURNS: 3560 * RETURNS:
3561 * IRQ_NONE or IRQ_HANDLED.
3241 * 3562 *
3242 */ 3563 */
3243 3564
@@ -3259,7 +3580,8 @@ irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
3259 struct ata_queued_cmd *qc; 3580 struct ata_queued_cmd *qc;
3260 3581
3261 qc = ata_qc_from_tag(ap, ap->active_tag); 3582 qc = ata_qc_from_tag(ap, ap->active_tag);
3262 if (qc && (!(qc->tf.ctl & ATA_NIEN))) 3583 if (qc && (!(qc->tf.ctl & ATA_NIEN)) &&
3584 (qc->flags & ATA_QCFLAG_ACTIVE))
3263 handled |= ata_host_intr(ap, qc); 3585 handled |= ata_host_intr(ap, qc);
3264 } 3586 }
3265 } 3587 }
@@ -3329,6 +3651,19 @@ err_out:
3329 ata_qc_complete(qc, ATA_ERR); 3651 ata_qc_complete(qc, ATA_ERR);
3330} 3652}
3331 3653
3654
3655/**
3656 * ata_port_start - Set port up for dma.
3657 * @ap: Port to initialize
3658 *
3659 * Called just after data structures for each port are
3660 * initialized. Allocates space for PRD table.
3661 *
3662 * May be used as the port_start() entry in ata_port_operations.
3663 *
3664 * LOCKING:
3665 */
3666
3332int ata_port_start (struct ata_port *ap) 3667int ata_port_start (struct ata_port *ap)
3333{ 3668{
3334 struct device *dev = ap->host_set->dev; 3669 struct device *dev = ap->host_set->dev;
@@ -3342,6 +3677,18 @@ int ata_port_start (struct ata_port *ap)
3342 return 0; 3677 return 0;
3343} 3678}
3344 3679
3680
3681/**
3682 * ata_port_stop - Undo ata_port_start()
3683 * @ap: Port to shut down
3684 *
3685 * Frees the PRD table.
3686 *
3687 * May be used as the port_stop() entry in ata_port_operations.
3688 *
3689 * LOCKING:
3690 */
3691
3345void ata_port_stop (struct ata_port *ap) 3692void ata_port_stop (struct ata_port *ap)
3346{ 3693{
3347 struct device *dev = ap->host_set->dev; 3694 struct device *dev = ap->host_set->dev;
@@ -3349,6 +3696,13 @@ void ata_port_stop (struct ata_port *ap)
3349 dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma); 3696 dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
3350} 3697}
3351 3698
3699void ata_host_stop (struct ata_host_set *host_set)
3700{
3701 if (host_set->mmio_base)
3702 iounmap(host_set->mmio_base);
3703}
3704
3705
3352/** 3706/**
3353 * ata_host_remove - Unregister SCSI host structure with upper layers 3707 * ata_host_remove - Unregister SCSI host structure with upper layers
3354 * @ap: Port to unregister 3708 * @ap: Port to unregister
@@ -3377,7 +3731,11 @@ static void ata_host_remove(struct ata_port *ap, unsigned int do_unregister)
3377 * @ent: Probe information provided by low-level driver 3731 * @ent: Probe information provided by low-level driver
3378 * @port_no: Port number associated with this ata_port 3732 * @port_no: Port number associated with this ata_port
3379 * 3733 *
3734 * Initialize a new ata_port structure, and its associated
3735 * scsi_host.
3736 *
3380 * LOCKING: 3737 * LOCKING:
3738 * Inherited from caller.
3381 * 3739 *
3382 */ 3740 */
3383 3741
@@ -3432,9 +3790,13 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
3432 * @host_set: Collections of ports to which we add 3790 * @host_set: Collections of ports to which we add
3433 * @port_no: Port number associated with this host 3791 * @port_no: Port number associated with this host
3434 * 3792 *
3793 * Attach low-level ATA driver to system.
3794 *
3435 * LOCKING: 3795 * LOCKING:
3796 * PCI/etc. bus probe sem.
3436 * 3797 *
3437 * RETURNS: 3798 * RETURNS:
3799 * New ata_port on success, for NULL on error.
3438 * 3800 *
3439 */ 3801 */
3440 3802
@@ -3467,12 +3829,22 @@ err_out:
3467} 3829}
3468 3830
3469/** 3831/**
3470 * ata_device_add - 3832 * ata_device_add - Register hardware device with ATA and SCSI layers
3471 * @ent: 3833 * @ent: Probe information describing hardware device to be registered
3834 *
3835 * This function processes the information provided in the probe
3836 * information struct @ent, allocates the necessary ATA and SCSI
3837 * host information structures, initializes them, and registers
3838 * everything with requisite kernel subsystems.
3839 *
3840 * This function requests irqs, probes the ATA bus, and probes
3841 * the SCSI bus.
3472 * 3842 *
3473 * LOCKING: 3843 * LOCKING:
3844 * PCI/etc. bus probe sem.
3474 * 3845 *
3475 * RETURNS: 3846 * RETURNS:
3847 * Number of ports registered. Zero on error (no ports registered).
3476 * 3848 *
3477 */ 3849 */
3478 3850
@@ -3624,7 +3996,15 @@ int ata_scsi_release(struct Scsi_Host *host)
3624/** 3996/**
3625 * ata_std_ports - initialize ioaddr with standard port offsets. 3997 * ata_std_ports - initialize ioaddr with standard port offsets.
3626 * @ioaddr: IO address structure to be initialized 3998 * @ioaddr: IO address structure to be initialized
3999 *
4000 * Utility function which initializes data_addr, error_addr,
4001 * feature_addr, nsect_addr, lbal_addr, lbam_addr, lbah_addr,
4002 * device_addr, status_addr, and command_addr to standard offsets
4003 * relative to cmd_addr.
4004 *
4005 * Does not set ctl_addr, altstatus_addr, bmdma_addr, or scr_addr.
3627 */ 4006 */
4007
3628void ata_std_ports(struct ata_ioports *ioaddr) 4008void ata_std_ports(struct ata_ioports *ioaddr)
3629{ 4009{
3630 ioaddr->data_addr = ioaddr->cmd_addr + ATA_REG_DATA; 4010 ioaddr->data_addr = ioaddr->cmd_addr + ATA_REG_DATA;
@@ -3666,6 +4046,20 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port)
3666 return probe_ent; 4046 return probe_ent;
3667} 4047}
3668 4048
4049
4050
4051/**
4052 * ata_pci_init_native_mode - Initialize native-mode driver
4053 * @pdev: pci device to be initialized
4054 * @port: array[2] of pointers to port info structures.
4055 *
4056 * Utility function which allocates and initializes an
4057 * ata_probe_ent structure for a standard dual-port
4058 * PIO-based IDE controller. The returned ata_probe_ent
4059 * structure can be passed to ata_device_add(). The returned
4060 * ata_probe_ent structure should then be freed with kfree().
4061 */
4062
3669#ifdef CONFIG_PCI 4063#ifdef CONFIG_PCI
3670struct ata_probe_ent * 4064struct ata_probe_ent *
3671ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) 4065ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port)
@@ -3747,10 +4141,19 @@ ata_pci_init_legacy_mode(struct pci_dev *pdev, struct ata_port_info **port,
3747 * @port_info: Information from low-level host driver 4141 * @port_info: Information from low-level host driver
3748 * @n_ports: Number of ports attached to host controller 4142 * @n_ports: Number of ports attached to host controller
3749 * 4143 *
4144 * This is a helper function which can be called from a driver's
4145 * xxx_init_one() probe function if the hardware uses traditional
4146 * IDE taskfile registers.
4147 *
4148 * This function calls pci_enable_device(), reserves its register
4149 * regions, sets the dma mask, enables bus master mode, and calls
4150 * ata_device_add()
4151 *
3750 * LOCKING: 4152 * LOCKING:
3751 * Inherited from PCI layer (may sleep). 4153 * Inherited from PCI layer (may sleep).
3752 * 4154 *
3753 * RETURNS: 4155 * RETURNS:
4156 * Zero on success, negative on errno-based value on error.
3754 * 4157 *
3755 */ 4158 */
3756 4159
@@ -3905,10 +4308,6 @@ void ata_pci_remove_one (struct pci_dev *pdev)
3905 } 4308 }
3906 4309
3907 free_irq(host_set->irq, host_set); 4310 free_irq(host_set->irq, host_set);
3908 if (host_set->ops->host_stop)
3909 host_set->ops->host_stop(host_set);
3910 if (host_set->mmio_base)
3911 iounmap(host_set->mmio_base);
3912 4311
3913 for (i = 0; i < host_set->n_ports; i++) { 4312 for (i = 0; i < host_set->n_ports; i++) {
3914 ap = host_set->ports[i]; 4313 ap = host_set->ports[i];
@@ -3927,6 +4326,9 @@ void ata_pci_remove_one (struct pci_dev *pdev)
3927 scsi_host_put(ap->host); 4326 scsi_host_put(ap->host);
3928 } 4327 }
3929 4328
4329 if (host_set->ops->host_stop)
4330 host_set->ops->host_stop(host_set);
4331
3930 kfree(host_set); 4332 kfree(host_set);
3931 4333
3932 pci_release_regions(pdev); 4334 pci_release_regions(pdev);
@@ -3970,15 +4372,6 @@ int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits)
3970#endif /* CONFIG_PCI */ 4372#endif /* CONFIG_PCI */
3971 4373
3972 4374
3973/**
3974 * ata_init -
3975 *
3976 * LOCKING:
3977 *
3978 * RETURNS:
3979 *
3980 */
3981
3982static int __init ata_init(void) 4375static int __init ata_init(void)
3983{ 4376{
3984 ata_wq = create_workqueue("ata"); 4377 ata_wq = create_workqueue("ata");
@@ -4024,6 +4417,7 @@ EXPORT_SYMBOL_GPL(ata_chk_err);
4024EXPORT_SYMBOL_GPL(ata_exec_command); 4417EXPORT_SYMBOL_GPL(ata_exec_command);
4025EXPORT_SYMBOL_GPL(ata_port_start); 4418EXPORT_SYMBOL_GPL(ata_port_start);
4026EXPORT_SYMBOL_GPL(ata_port_stop); 4419EXPORT_SYMBOL_GPL(ata_port_stop);
4420EXPORT_SYMBOL_GPL(ata_host_stop);
4027EXPORT_SYMBOL_GPL(ata_interrupt); 4421EXPORT_SYMBOL_GPL(ata_interrupt);
4028EXPORT_SYMBOL_GPL(ata_qc_prep); 4422EXPORT_SYMBOL_GPL(ata_qc_prep);
4029EXPORT_SYMBOL_GPL(ata_bmdma_setup); 4423EXPORT_SYMBOL_GPL(ata_bmdma_setup);