Lines Matching +full:freeze +full:- +full:bridge +full:- +full:controller
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * Copyright 2003-2005 Red Hat, Inc. All rights reserved.
4 * Copyright 2003-2005 Jeff Garzik
7 * as Documentation/driver-api/libata.rst
16 #include <linux/dma-mapping.h>
28 * Define if arch has non-standard setup. This is a _PCI_ standard
32 #include <asm/libata-portmap.h>
39 * compile-time options: to be removed as soon as all the drivers are
69 ATA_ALL_DEVICES = (1 << ATA_MAX_DEVICES) - 1,
72 ATA_SHT_THIS_ID = -1,
75 ATA_TFLAG_LBA48 = (1 << 0), /* enable 48-bit LBA and "HOB" */
78 ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */
98 ATA_DFLAG_CFG_MASK = (1 << 14) - 1,
101 ATA_DFLAG_NCQ_OFF = (1 << 15), /* device limited to non-NCQ mode */
106 ATA_DFLAG_INIT_MASK = (1 << 20) - 1,
166 ATA_FLAG_FPDMA_AA = (1 << 14), /* driver supports Auto-Activate */
168 ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */
170 ATA_FLAG_AN = (1 << 18), /* controller supports AN */
171 ATA_FLAG_PMP = (1 << 19), /* controller supports PMP */
172 ATA_FLAG_FPDMA_AUX = (1 << 20), /* controller supports H2DFIS aux field */
180 /* bits 24:31 of ap->flags are reserved for LLD specific flags */
230 /* bits 24:31 of host->flags are reserved for LLD specific flags */
258 /* If PMP is supported, we have to do follow-up SRST. As some
307 /* return values for ->qc_defer */
316 ATA_EH_SOFTRESET = (1 << 1), /* meaningful only in ->prereset */
317 ATA_EH_HARDRESET = (1 << 2), /* meaningful only in ->prereset */
329 /* ata_eh_info->flags */
335 ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */
336 ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */
346 /* max tries if error condition is still set after ->error_handler */
360 * ata_eh_cmd_timeout_table in libata-eh.c.
364 /* Horkage types. May be set by libata or controller on drives
365 (some horkage may be drive/controller pair dependent */
376 ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */
409 ATAPI_PASS_THRU = 3, /* SAT pass-thru */
434 ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, /* FPDMA non-zero offset */
443 ATA_MASK_PIO = ((1U << ATA_NR_PIO_MODES) - 1) << ATA_SHIFT_PIO,
444 ATA_MASK_MWDMA = ((1U << ATA_NR_MWDMA_MODES) - 1) << ATA_SHIFT_MWDMA,
445 ATA_MASK_UDMA = ((1U << ATA_NR_UDMA_MODES) - 1) << ATA_SHIFT_UDMA,
474 * alter libata-sata.c (for the ascii descriptions)
551 /* ATA-8 ACS-3 */
690 unsigned int max_sectors; /* per-device max sectors */
693 /* per-dev xfer mask */
742 unsigned int err_mask; /* port-wide err_mask */
807 struct Scsi_Host *scsi_host; /* our co-allocated scsi host */
813 /* Flags that change dynamically, protected by ap->lock */
884 * ERR_PTR(-ENOENT). Unfortunately, ERR_PTR doesn't render a constant
887 #define ATA_OP_NULL (void *)(unsigned long)(-ENOENT)
913 void (*freeze)(struct ata_port *ap); member
985 * ->inherits must be the last field and all the preceding
1004 unsigned short act8b; /* t2 for 8-bit I/O */
1005 unsigned short rec8b; /* t2i for 8-bit I/O */
1006 unsigned short cyc8b; /* t0 for 8-bit I/O */
1015 * Core layer - drivers/ata/libata-core.c
1047 return (tf->command == ATA_CMD_READ_MULTI) || in is_multi_taskfile()
1048 (tf->command == ATA_CMD_WRITE_MULTI) || in is_multi_taskfile()
1049 (tf->command == ATA_CMD_READ_MULTI_EXT) || in is_multi_taskfile()
1050 (tf->command == ATA_CMD_WRITE_MULTI_EXT) || in is_multi_taskfile()
1051 (tf->command == ATA_CMD_WRITE_MULTI_FUA_EXT); in is_multi_taskfile()
1056 return ap->ops == &ata_dummy_port_ops; in ata_port_is_dummy()
1061 return ap->pflags & ATA_PFLAG_FROZEN; in ata_port_is_frozen()
1166 * SATA specific code - drivers/ata/libata-sata.c
1176 if (ehc->i.flags & ATA_EHI_HOTPLUGGED) in sata_ehc_deb_timing()
1203 return -EOPNOTSUPP; in sata_scr_read()
1207 return -EOPNOTSUPP; in sata_scr_write()
1211 return -EOPNOTSUPP; in sata_scr_write_flush()
1213 static inline int sata_set_spd(struct ata_link *link) { return -EOPNOTSUPP; } in sata_set_spd()
1222 return -EOPNOTSUPP; in sata_link_hardreset()
1228 return -EOPNOTSUPP; in sata_link_resume()
1232 return -EOPNOTSUPP; in ata_eh_read_sense_success_ncq_log()
1293 * ACPI - drivers/ata/libata-acpi.c
1298 if (ap->pflags & ATA_PFLAG_INIT_GTM_VALID) in ata_acpi_init_gtm()
1299 return &ap->__acpi_init_gtm; in ata_acpi_init_gtm()
1316 return -ENOSYS; in ata_acpi_stm()
1322 return -ENOSYS; in ata_acpi_gtm()
1339 * EH - drivers/ata/libata-eh.c
1444 return ap->flags & ATA_FLAG_PMP; in sata_pmp_supported()
1449 return ap->nr_pmp_links != 0; in sata_pmp_attached()
1454 return link == &link->ap->link || link == link->ap->slave_link; in ata_is_host_link()
1475 if (sata_pmp_supported(link->ap) && ata_is_host_link(link)) in sata_srst_pmp()
1477 return link->pmp; in sata_srst_pmp()
1481 pr_ ## level ("ata%u: " fmt, (ap)->print_id, ##__VA_ARGS__)
1496 if (sata_pmp_attached((link)->ap) || \
1497 (link)->ap->slave_link) \
1499 (link)->ap->print_id, \
1500 (link)->pmp, \
1504 (link)->ap->print_id, \
1521 (dev)->link->ap->print_id, \
1522 (dev)->link->pmp + (dev)->devno, \
1549 ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1; in ata_ehi_hotplugged()
1550 ehi->flags |= ATA_EHI_HOTPLUGGED; in ata_ehi_hotplugged()
1551 ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK; in ata_ehi_hotplugged()
1552 ehi->err_mask |= AC_ERR_ATA_BUS; in ata_ehi_hotplugged()
1567 ata_port_desc(ap, "lpm-pol %d", ap->target_lpm_policy); in ata_port_desc_misc()
1627 return ata_class_enabled(dev->class); in ata_dev_enabled()
1632 return ata_class_disabled(dev->class); in ata_dev_disabled()
1637 return ata_class_absent(dev->class); in ata_dev_absent()
1645 if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS) in ata_link_max_devices()
1652 return ata_tag_valid(link->active_tag) || link->sactive; in ata_link_active()
1702 * impossible to use ATA_LITER_* for device iteration or vice-versa.
1713 * ata_ncq_supported - Test whether NCQ is supported
1726 return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ; in ata_ncq_supported()
1730 * ata_ncq_enabled - Test whether NCQ is enabled
1741 return ata_ncq_supported(dev) && !(dev->flags & ATA_DFLAG_NCQ_OFF); in ata_ncq_enabled()
1746 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_dsm_supported()
1747 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] & in ata_fpdma_dsm_supported()
1753 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_read_log_supported()
1754 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_RD_LOG_OFFSET] & in ata_fpdma_read_log_supported()
1760 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_zac_mgmt_in_supported()
1761 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_OFFSET] & in ata_fpdma_zac_mgmt_in_supported()
1767 return (dev->ncq_non_data_cmds[ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OFFSET] & in ata_fpdma_zac_mgmt_out_supported()
1773 qc->tf.ctl |= ATA_NIEN; in ata_qc_set_polling()
1780 return &ap->qcmd[tag]; in __ata_qc_from_tag()
1792 if ((qc->flags & (ATA_QCFLAG_ACTIVE | in ata_qc_from_tag()
1801 return qc->nbytes - min(qc->extrabytes, qc->nbytes); in ata_qc_raw_nbytes()
1809 tf->ctl = dev->link->ap->ctl; in ata_tf_init()
1811 tf->ctl = ATA_DEVCTL_OBS; in ata_tf_init()
1813 if (dev->devno == 0) in ata_tf_init()
1814 tf->device = ATA_DEVICE_OBS; in ata_tf_init()
1816 tf->device = ATA_DEVICE_OBS | ATA_DEV1; in ata_tf_init()
1821 qc->dma_dir = DMA_NONE; in ata_qc_reinit()
1822 qc->sg = NULL; in ata_qc_reinit()
1823 qc->flags = 0; in ata_qc_reinit()
1824 qc->cursg = NULL; in ata_qc_reinit()
1825 qc->cursg_ofs = 0; in ata_qc_reinit()
1826 qc->nbytes = qc->extrabytes = qc->curbytes = 0; in ata_qc_reinit()
1827 qc->n_elem = 0; in ata_qc_reinit()
1828 qc->err_mask = 0; in ata_qc_reinit()
1829 qc->sect_size = ATA_SECT_SIZE; in ata_qc_reinit()
1831 ata_tf_init(qc->dev, &qc->tf); in ata_qc_reinit()
1834 qc->result_tf.command = ATA_DRDY; in ata_qc_reinit()
1835 qc->result_tf.feature = 0; in ata_qc_reinit()
1840 return ata_id_wcache_enabled(dev->id) || in ata_try_flush_cache()
1841 ata_id_has_flush(dev->id) || in ata_try_flush_cache()
1842 ata_id_has_flush_ext(dev->id); in ata_try_flush_cache()
1864 return *(struct ata_port **)&host->hostdata[0]; in ata_shost_to_port()
1874 return -ENODEV; in ata_check_ready()
1891 return adev->dma_mode >= XFER_MW_DMA_0 && in ata_using_mwdma()
1892 adev->dma_mode <= XFER_MW_DMA_4; in ata_using_mwdma()
1897 return adev->dma_mode >= XFER_UDMA_0 && in ata_using_udma()
1898 adev->dma_mode <= XFER_UDMA_7; in ata_using_udma()
1903 return adev->dma_mode != 0xFF; in ata_dma_enabled()
1907 * PATA timings - drivers/ata/libata-pata-timings.c
1917 * PMP - drivers/ata/libata-pmp.c
1936 * SFF - drivers/ata/libata-sff.c
2043 * ata_sff_busy_wait - Wait for a port status register
2062 status = ap->ops->sff_check_status(ap); in ata_sff_busy_wait()
2063 max--; in ata_sff_busy_wait()
2070 * ata_wait_idle - Wait for a port to be idle.