Lines Matching +full:ahci +full:- +full:port
2 * AHCI glue platform driver for Marvell EBU SOCs
6 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
20 #include "ahci.h"
22 #define DRV_NAME "ahci-mvebu"
42 writel(0, hpriv->mmio + AHCI_WINDOW_CTRL(i)); in ahci_mvebu_mbus_config()
43 writel(0, hpriv->mmio + AHCI_WINDOW_BASE(i)); in ahci_mvebu_mbus_config()
44 writel(0, hpriv->mmio + AHCI_WINDOW_SIZE(i)); in ahci_mvebu_mbus_config()
47 for (i = 0; i < dram->num_cs; i++) { in ahci_mvebu_mbus_config()
48 const struct mbus_dram_window *cs = dram->cs + i; in ahci_mvebu_mbus_config()
50 writel((cs->mbus_attr << 8) | in ahci_mvebu_mbus_config()
51 (dram->mbus_dram_target_id << 4) | 1, in ahci_mvebu_mbus_config()
52 hpriv->mmio + AHCI_WINDOW_CTRL(i)); in ahci_mvebu_mbus_config()
53 writel(cs->base >> 16, hpriv->mmio + AHCI_WINDOW_BASE(i)); in ahci_mvebu_mbus_config()
54 writel(((cs->size - 1) & 0xffff0000), in ahci_mvebu_mbus_config()
55 hpriv->mmio + AHCI_WINDOW_SIZE(i)); in ahci_mvebu_mbus_config()
66 writel(0x4, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_ADDR); in ahci_mvebu_regret_option()
67 writel(0x80, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_DATA); in ahci_mvebu_regret_option()
79 rc = -ENODEV; in ahci_mvebu_armada_380_config()
90 writel(0, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_ADDR); in ahci_mvebu_armada_3700_config()
92 reg = readl(hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_DATA); in ahci_mvebu_armada_3700_config()
94 writel(reg, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_DATA); in ahci_mvebu_armada_3700_config()
102 * @ap: Target ata port
104 * Errata Ref#226 - SATA Disk HOT swap issue when connected through
105 * Port Multiplier in FIS-based Switching mode.
108 * register PxFBS are cleared when Port Command and Status (0x18) bit[0]
109 * changes its value from 1 to 0, i.e. falling edge of Port
130 /* save the port PxFBS register for later restore */ in ahci_mvebu_stop_engine()
148 return -EIO; in ahci_mvebu_stop_engine()
156 return ahci_platform_suspend_host(&pdev->dev); in ahci_mvebu_suspend()
162 struct ahci_host_priv *hpriv = host->private_data; in ahci_mvebu_resume()
163 const struct ahci_mvebu_plat_data *pdata = hpriv->plat_data; in ahci_mvebu_resume()
165 pdata->plat_config(hpriv); in ahci_mvebu_resume()
167 return ahci_platform_resume_host(&pdev->dev); in ahci_mvebu_resume()
191 pdata = of_device_get_match_data(&pdev->dev); in ahci_mvebu_probe()
193 return -EINVAL; in ahci_mvebu_probe()
199 hpriv->flags |= pdata->flags; in ahci_mvebu_probe()
200 hpriv->plat_data = (void *)pdata; in ahci_mvebu_probe()
206 hpriv->stop_engine = ahci_mvebu_stop_engine; in ahci_mvebu_probe()
208 rc = pdata->plat_config(hpriv); in ahci_mvebu_probe()
235 .compatible = "marvell,armada-380-ahci",
239 .compatible = "marvell,armada-3700-ahci",
258 MODULE_DESCRIPTION("Marvell EBU AHCI SATA driver");
259 MODULE_AUTHOR("Thomas Petazzoni <thomas.petazzoni@free-electrons.com>, Marcin Wojtas <[email protected]…