Lines Matching full:phy

17 #include <linux/phy/phy.h>
56 struct phy *phy;
61 static void u2_phy_w32(struct ralink_usb_phy *phy, u32 val, u32 reg)
63 writel(val, phy->base + reg);
66 static u32 u2_phy_r32(struct ralink_usb_phy *phy, u32 reg)
68 return readl(phy->base + reg);
71 static void ralink_usb_phy_init(struct ralink_usb_phy *phy)
73 u2_phy_r32(phy, OFS_U2_PHY_AC2);
74 u2_phy_r32(phy, OFS_U2_PHY_ACR0);
75 u2_phy_r32(phy, OFS_U2_PHY_DCR0);
77 u2_phy_w32(phy, 0x00ffff02, OFS_U2_PHY_DCR0);
78 u2_phy_r32(phy, OFS_U2_PHY_DCR0);
79 u2_phy_w32(phy, 0x00555502, OFS_U2_PHY_DCR0);
80 u2_phy_r32(phy, OFS_U2_PHY_DCR0);
81 u2_phy_w32(phy, 0x00aaaa02, OFS_U2_PHY_DCR0);
82 u2_phy_r32(phy, OFS_U2_PHY_DCR0);
83 u2_phy_w32(phy, 0x00000402, OFS_U2_PHY_DCR0);
84 u2_phy_r32(phy, OFS_U2_PHY_DCR0);
85 u2_phy_w32(phy, 0x0048086a, OFS_U2_PHY_AC0);
86 u2_phy_w32(phy, 0x4400001c, OFS_U2_PHY_AC1);
87 u2_phy_w32(phy, 0xc0200000, OFS_U2_PHY_ACR3);
88 u2_phy_w32(phy, 0x02000000, OFS_U2_PHY_DTM0);
91 static int ralink_usb_phy_power_on(struct phy *_phy)
93 struct ralink_usb_phy *phy = phy_get_drvdata(_phy);
96 /* enable the phy */
97 regmap_update_bits(phy->sysctl, RT_SYSC_REG_CLKCFG1,
98 phy->clk, phy->clk);
101 regmap_update_bits(phy->sysctl, RT_SYSC_REG_SYSCFG1,
106 reset_control_deassert(phy->rsthost);
107 reset_control_deassert(phy->rstdev);
115 if (phy->base)
116 ralink_usb_phy_init(phy);
119 regmap_read(phy->sysctl, RT_SYSC_REG_USB_PHY_CFG, &t);
120 dev_info(&phy->phy->dev, "remote usb device wakeup %s\n",
123 dev_info(&phy->phy->dev, "UTMI 8bit 60MHz\n");
125 dev_info(&phy->phy->dev, "UTMI 16bit 30MHz\n");
130 static int ralink_usb_phy_power_off(struct phy *_phy)
132 struct ralink_usb_phy *phy = phy_get_drvdata(_phy);
134 /* disable the phy */
135 regmap_update_bits(phy->sysctl, RT_SYSC_REG_CLKCFG1,
136 phy->clk, 0);
139 reset_control_assert(phy->rstdev);
140 reset_control_assert(phy->rsthost);
174 struct ralink_usb_phy *phy;
176 phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL);
177 if (!phy)
180 phy->clk = (uintptr_t)device_get_match_data(&pdev->dev);
181 phy->base = NULL;
183 phy->sysctl = syscon_regmap_lookup_by_phandle(dev->of_node, "ralink,sysctl");
184 if (IS_ERR(phy->sysctl)) {
186 return PTR_ERR(phy->sysctl);
189 /* The MT7628 and MT7688 require extra setup of PHY registers. */
191 phy->base = devm_platform_ioremap_resource(pdev, 0);
192 if (IS_ERR(phy->base)) {
194 return PTR_ERR(phy->base);
198 phy->rsthost = devm_reset_control_get(&pdev->dev, "host");
199 if (IS_ERR(phy->rsthost)) {
201 return PTR_ERR(phy->rsthost);
204 phy->rstdev = devm_reset_control_get(&pdev->dev, "device");
205 if (IS_ERR(phy->rstdev)) {
207 return PTR_ERR(phy->rstdev);
210 phy->phy = devm_phy_create(dev, NULL, &ralink_usb_phy_ops);
211 if (IS_ERR(phy->phy)) {
212 dev_err(dev, "failed to create PHY\n");
213 return PTR_ERR(phy->phy);
215 phy_set_drvdata(phy->phy, phy);
226 .name = "ralink-usb-phy",
231 MODULE_DESCRIPTION("Ralink USB phy driver");