Lines Matching +full:syscon +full:- +full:pcie +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0-only
3 * ST SPEAr1310-miphy driver
12 #include <linux/dma-mapping.h>
14 #include <linux/mfd/syscon.h>
98 PCIE, enumerator
104 /* phy mode: 0 for SATA 1 for PCIe */
105 enum spear1310_miphy_mode mode; member
116 regmap_update_bits(priv->misc, SPEAR1310_PCIE_MIPHY_CFG_1, in spear1310_miphy_pcie_init()
120 switch (priv->id) { in spear1310_miphy_pcie_init()
131 return -EINVAL; in spear1310_miphy_pcie_init()
134 regmap_update_bits(priv->misc, SPEAR1310_PCIE_SATA_CFG, in spear1310_miphy_pcie_init()
135 SPEAR1310_PCIE_CFG_MASK(priv->id), val); in spear1310_miphy_pcie_init()
142 regmap_update_bits(priv->misc, SPEAR1310_PCIE_SATA_CFG, in spear1310_miphy_pcie_exit()
143 SPEAR1310_PCIE_CFG_MASK(priv->id), 0); in spear1310_miphy_pcie_exit()
145 regmap_update_bits(priv->misc, SPEAR1310_PCIE_MIPHY_CFG_1, in spear1310_miphy_pcie_exit()
156 if (priv->mode == PCIE) in spear1310_miphy_init()
167 if (priv->mode == PCIE) in spear1310_miphy_exit()
174 { .compatible = "st,spear1310-miphy" },
190 if (args->args_count < 1) { in spear1310_miphy_xlate()
192 return ERR_PTR(-ENODEV); in spear1310_miphy_xlate()
195 priv->mode = args->args[0]; in spear1310_miphy_xlate()
197 if (priv->mode != SATA && priv->mode != PCIE) { in spear1310_miphy_xlate()
198 dev_err(dev, "DT did not pass correct phy mode\n"); in spear1310_miphy_xlate()
199 return ERR_PTR(-ENODEV); in spear1310_miphy_xlate()
202 return priv->phy; in spear1310_miphy_xlate()
207 struct device *dev = &pdev->dev; in spear1310_miphy_probe()
213 return -ENOMEM; in spear1310_miphy_probe()
215 priv->misc = in spear1310_miphy_probe()
216 syscon_regmap_lookup_by_phandle(dev->of_node, "misc"); in spear1310_miphy_probe()
217 if (IS_ERR(priv->misc)) { in spear1310_miphy_probe()
219 return PTR_ERR(priv->misc); in spear1310_miphy_probe()
222 if (of_property_read_u32(dev->of_node, "phy-id", &priv->id)) { in spear1310_miphy_probe()
224 return -EINVAL; in spear1310_miphy_probe()
227 priv->phy = devm_phy_create(dev, NULL, &spear1310_miphy_ops); in spear1310_miphy_probe()
228 if (IS_ERR(priv->phy)) { in spear1310_miphy_probe()
229 dev_err(dev, "failed to create SATA PCIe PHY\n"); in spear1310_miphy_probe()
230 return PTR_ERR(priv->phy); in spear1310_miphy_probe()
234 phy_set_drvdata(priv->phy, priv); in spear1310_miphy_probe()
249 .name = "spear1310-miphy",
256 MODULE_DESCRIPTION("ST SPEAR1310-MIPHY driver");