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
60 * ata_device->quirks is an unsigned int, so __ATA_QUIRK_MAX must not exceed 32.
72 __ATA_QUIRK_BRIDGE_OK, /* No bridge limits */
110 ATA_ALL_DEVICES = (1 << ATA_MAX_DEVICES) - 1,
113 ATA_SHT_THIS_ID = -1,
116 ATA_TFLAG_LBA48 = (1 << 0), /* enable 48-bit LBA and "HOB" */
119 ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */
139 ATA_DFLAG_CFG_MASK = (1 << 14) - 1,
142 ATA_DFLAG_NCQ_OFF = (1 << 15), /* device limited to non-NCQ mode */
147 ATA_DFLAG_INIT_MASK = (1 << 20) - 1,
208 ATA_FLAG_FPDMA_AA = (1 << 14), /* driver supports Auto-Activate */
210 ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */
212 ATA_FLAG_AN = (1 << 18), /* controller supports AN */
213 ATA_FLAG_PMP = (1 << 19), /* controller supports PMP */
214 ATA_FLAG_FPDMA_AUX = (1 << 20), /* controller supports H2DFIS aux field */
222 /* bits 24:31 of ap->flags are reserved for LLD specific flags */
272 /* bits 24:31 of host->flags are reserved for LLD specific flags */
298 /* If PMP is supported, we have to do follow-up SRST. As some
347 /* return values for ->qc_defer */
356 ATA_EH_SOFTRESET = (1 << 1), /* meaningful only in ->prereset */
357 ATA_EH_HARDRESET = (1 << 2), /* meaningful only in ->prereset */
369 /* ata_eh_info->flags */
375 ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */
376 ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */
387 /* max tries if error condition is still set after ->error_handler */
401 * ata_eh_cmd_timeout_table in libata-eh.c.
406 * Quirk flags: may be set by libata or controller drivers on drives.
407 * Some quirks may be drive/controller pair dependent.
450 ATAPI_PASS_THRU = 3, /* SAT pass-thru */
475 ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, /* FPDMA non-zero offset */
484 ATA_MASK_PIO = ((1U << ATA_NR_PIO_MODES) - 1) << ATA_SHIFT_PIO,
485 ATA_MASK_MWDMA = ((1U << ATA_NR_MWDMA_MODES) - 1) << ATA_SHIFT_MWDMA,
486 ATA_MASK_UDMA = ((1U << ATA_NR_UDMA_MODES) - 1) << ATA_SHIFT_UDMA,
515 * alter libata-sata.c (for the ascii descriptions)
592 /* ATA-8 ACS-3 */
706 * for SCSI-ATA translation.
746 unsigned int max_sectors; /* per-device max sectors */
749 /* per-dev xfer mask */
801 unsigned int err_mask; /* port-wide err_mask */
866 struct Scsi_Host *scsi_host; /* our co-allocated scsi host */
872 /* Flags that change dynamically, protected by ap->lock */
939 * ERR_PTR(-ENOENT). Unfortunately, ERR_PTR doesn't render a constant
942 #define ATA_OP_NULL (void *)(unsigned long)(-ENOENT)
968 void (*freeze)(struct ata_port *ap); member
1040 * ->inherits must be the last field and all the preceding
1059 unsigned short act8b; /* t2 for 8-bit I/O */
1060 unsigned short rec8b; /* t2i for 8-bit I/O */
1061 unsigned short cyc8b; /* t0 for 8-bit I/O */
1070 * Core layer - drivers/ata/libata-core.c
1102 return (tf->command == ATA_CMD_READ_MULTI) || in is_multi_taskfile()
1103 (tf->command == ATA_CMD_WRITE_MULTI) || in is_multi_taskfile()
1104 (tf->command == ATA_CMD_READ_MULTI_EXT) || in is_multi_taskfile()
1105 (tf->command == ATA_CMD_WRITE_MULTI_EXT) || in is_multi_taskfile()
1106 (tf->command == ATA_CMD_WRITE_MULTI_FUA_EXT); in is_multi_taskfile()
1111 return ap->ops == &ata_dummy_port_ops; in ata_port_is_dummy()
1116 return ap->pflags & ATA_PFLAG_FROZEN; in ata_port_is_frozen()
1223 * SATA specific code - drivers/ata/libata-sata.c
1233 if (ehc->i.flags & ATA_EHI_HOTPLUGGED) in sata_ehc_deb_timing()
1261 return -EOPNOTSUPP; in sata_scr_read()
1265 return -EOPNOTSUPP; in sata_scr_write()
1269 return -EOPNOTSUPP; in sata_scr_write_flush()
1271 static inline int sata_set_spd(struct ata_link *link) { return -EOPNOTSUPP; } in sata_set_spd()
1275 return -EOPNOTSUPP; in sata_std_hardreset()
1285 return -EOPNOTSUPP; in sata_link_hardreset()
1291 return -EOPNOTSUPP; in sata_link_resume()
1353 * ACPI - drivers/ata/libata-acpi.c
1358 if (ap->pflags & ATA_PFLAG_INIT_GTM_VALID) in ata_acpi_init_gtm()
1359 return &ap->__acpi_init_gtm; in ata_acpi_init_gtm()
1376 return -ENOSYS; in ata_acpi_stm()
1382 return -ENOSYS; in ata_acpi_gtm()
1399 * EH - drivers/ata/libata-eh.c
1504 return ap->flags & ATA_FLAG_PMP; in sata_pmp_supported()
1509 return ap->nr_pmp_links != 0; in sata_pmp_attached()
1514 return link == &link->ap->link || link == link->ap->slave_link; in ata_is_host_link()
1535 if (sata_pmp_supported(link->ap) && ata_is_host_link(link)) in sata_srst_pmp()
1537 return link->pmp; in sata_srst_pmp()
1541 pr_ ## level ("ata%u: " fmt, (ap)->print_id, ##__VA_ARGS__)
1556 if (sata_pmp_attached((link)->ap) || \
1557 (link)->ap->slave_link) \
1559 (link)->ap->print_id, \
1560 (link)->pmp, \
1564 (link)->ap->print_id, \
1581 (dev)->link->ap->print_id, \
1582 (dev)->link->pmp + (dev)->devno, \
1609 ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1; in ata_ehi_hotplugged()
1610 ehi->flags |= ATA_EHI_HOTPLUGGED; in ata_ehi_hotplugged()
1611 ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK; in ata_ehi_hotplugged()
1612 ehi->err_mask |= AC_ERR_ATA_BUS; in ata_ehi_hotplugged()
1627 ata_port_desc(ap, "lpm-pol %d", ap->target_lpm_policy); in ata_port_desc_misc()
1687 return ata_class_enabled(dev->class); in ata_dev_enabled()
1692 return ata_class_disabled(dev->class); in ata_dev_disabled()
1697 return ata_class_absent(dev->class); in ata_dev_absent()
1705 if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS) in ata_link_max_devices()
1712 return ata_tag_valid(link->active_tag) || link->sactive; in ata_link_active()
1762 * impossible to use ATA_LITER_* for device iteration or vice-versa.
1773 * ata_ncq_supported - Test whether NCQ is supported
1786 return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ; in ata_ncq_supported()
1790 * ata_ncq_enabled - Test whether NCQ is enabled
1801 return ata_ncq_supported(dev) && !(dev->flags & ATA_DFLAG_NCQ_OFF); in ata_ncq_enabled()
1806 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_dsm_supported()
1807 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] & in ata_fpdma_dsm_supported()
1813 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_read_log_supported()
1814 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_RD_LOG_OFFSET] & in ata_fpdma_read_log_supported()
1820 return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) && in ata_fpdma_zac_mgmt_in_supported()
1821 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_OFFSET] & in ata_fpdma_zac_mgmt_in_supported()
1827 return (dev->ncq_non_data_cmds[ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OFFSET] & in ata_fpdma_zac_mgmt_out_supported()
1833 qc->tf.ctl |= ATA_NIEN; in ata_qc_set_polling()
1840 return &ap->qcmd[tag]; in __ata_qc_from_tag()
1852 if ((qc->flags & (ATA_QCFLAG_ACTIVE | in ata_qc_from_tag()
1861 return qc->nbytes - min(qc->extrabytes, qc->nbytes); in ata_qc_raw_nbytes()
1869 tf->ctl = dev->link->ap->ctl; in ata_tf_init()
1871 tf->ctl = ATA_DEVCTL_OBS; in ata_tf_init()
1873 if (dev->devno == 0) in ata_tf_init()
1874 tf->device = ATA_DEVICE_OBS; in ata_tf_init()
1876 tf->device = ATA_DEVICE_OBS | ATA_DEV1; in ata_tf_init()
1881 qc->dma_dir = DMA_NONE; in ata_qc_reinit()
1882 qc->sg = NULL; in ata_qc_reinit()
1883 qc->flags = 0; in ata_qc_reinit()
1884 qc->cursg = NULL; in ata_qc_reinit()
1885 qc->cursg_ofs = 0; in ata_qc_reinit()
1886 qc->nbytes = qc->extrabytes = qc->curbytes = 0; in ata_qc_reinit()
1887 qc->n_elem = 0; in ata_qc_reinit()
1888 qc->err_mask = 0; in ata_qc_reinit()
1889 qc->sect_size = ATA_SECT_SIZE; in ata_qc_reinit()
1891 ata_tf_init(qc->dev, &qc->tf); in ata_qc_reinit()
1894 qc->result_tf.command = ATA_DRDY; in ata_qc_reinit()
1895 qc->result_tf.feature = 0; in ata_qc_reinit()
1900 return ata_id_wcache_enabled(dev->id) || in ata_try_flush_cache()
1901 ata_id_has_flush(dev->id) || in ata_try_flush_cache()
1902 ata_id_has_flush_ext(dev->id); in ata_try_flush_cache()
1924 return *(struct ata_port **)&host->hostdata[0]; in ata_shost_to_port()
1934 return -ENODEV; in ata_check_ready()
1951 return adev->dma_mode >= XFER_MW_DMA_0 && in ata_using_mwdma()
1952 adev->dma_mode <= XFER_MW_DMA_4; in ata_using_mwdma()
1957 return adev->dma_mode >= XFER_UDMA_0 && in ata_using_udma()
1958 adev->dma_mode <= XFER_UDMA_7; in ata_using_udma()
1963 return adev->dma_mode != 0xFF; in ata_dma_enabled()
1967 * PATA timings - drivers/ata/libata-pata-timings.c
1977 * PMP - drivers/ata/libata-pmp.c
1996 * SFF - drivers/ata/libata-sff.c
2102 * ata_sff_busy_wait - Wait for a port status register
2121 status = ap->ops->sff_check_status(ap); in ata_sff_busy_wait()
2122 max--; in ata_sff_busy_wait()
2129 * ata_wait_idle - Wait for a port to be idle.