Lines Matching refs:phy

45 	struct phy *phy;  member
53 static void sun9i_usb_phy_passby(struct sun9i_usb_phy *phy, int enable) in sun9i_usb_phy_passby() argument
61 if (phy->type == USBPHY_INTERFACE_MODE_HSIC) in sun9i_usb_phy_passby()
65 reg_value = readl(phy->pmu); in sun9i_usb_phy_passby()
72 writel(reg_value, phy->pmu); in sun9i_usb_phy_passby()
75 static int sun9i_usb_phy_init(struct phy *_phy) in sun9i_usb_phy_init()
77 struct sun9i_usb_phy *phy = phy_get_drvdata(_phy); in sun9i_usb_phy_init() local
80 ret = clk_prepare_enable(phy->clk); in sun9i_usb_phy_init()
84 ret = clk_prepare_enable(phy->hsic_clk); in sun9i_usb_phy_init()
88 ret = reset_control_deassert(phy->reset); in sun9i_usb_phy_init()
92 sun9i_usb_phy_passby(phy, 1); in sun9i_usb_phy_init()
96 clk_disable_unprepare(phy->hsic_clk); in sun9i_usb_phy_init()
99 clk_disable_unprepare(phy->clk); in sun9i_usb_phy_init()
105 static int sun9i_usb_phy_exit(struct phy *_phy) in sun9i_usb_phy_exit()
107 struct sun9i_usb_phy *phy = phy_get_drvdata(_phy); in sun9i_usb_phy_exit() local
109 sun9i_usb_phy_passby(phy, 0); in sun9i_usb_phy_exit()
110 reset_control_assert(phy->reset); in sun9i_usb_phy_exit()
111 clk_disable_unprepare(phy->hsic_clk); in sun9i_usb_phy_exit()
112 clk_disable_unprepare(phy->clk); in sun9i_usb_phy_exit()
125 struct sun9i_usb_phy *phy; in sun9i_usb_phy_probe() local
131 phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL); in sun9i_usb_phy_probe()
132 if (!phy) in sun9i_usb_phy_probe()
135 phy->type = of_usb_get_phy_mode(np); in sun9i_usb_phy_probe()
136 if (phy->type == USBPHY_INTERFACE_MODE_HSIC) { in sun9i_usb_phy_probe()
137 phy->clk = devm_clk_get(dev, "hsic_480M"); in sun9i_usb_phy_probe()
138 if (IS_ERR(phy->clk)) { in sun9i_usb_phy_probe()
140 return PTR_ERR(phy->clk); in sun9i_usb_phy_probe()
143 phy->hsic_clk = devm_clk_get(dev, "hsic_12M"); in sun9i_usb_phy_probe()
144 if (IS_ERR(phy->clk)) { in sun9i_usb_phy_probe()
146 return PTR_ERR(phy->clk); in sun9i_usb_phy_probe()
149 phy->reset = devm_reset_control_get(dev, "hsic"); in sun9i_usb_phy_probe()
150 if (IS_ERR(phy->reset)) { in sun9i_usb_phy_probe()
152 return PTR_ERR(phy->reset); in sun9i_usb_phy_probe()
155 phy->clk = devm_clk_get(dev, "phy"); in sun9i_usb_phy_probe()
156 if (IS_ERR(phy->clk)) { in sun9i_usb_phy_probe()
158 return PTR_ERR(phy->clk); in sun9i_usb_phy_probe()
161 phy->reset = devm_reset_control_get(dev, "phy"); in sun9i_usb_phy_probe()
162 if (IS_ERR(phy->reset)) { in sun9i_usb_phy_probe()
164 return PTR_ERR(phy->reset); in sun9i_usb_phy_probe()
169 phy->pmu = devm_ioremap_resource(dev, res); in sun9i_usb_phy_probe()
170 if (IS_ERR(phy->pmu)) in sun9i_usb_phy_probe()
171 return PTR_ERR(phy->pmu); in sun9i_usb_phy_probe()
173 phy->phy = devm_phy_create(dev, NULL, &sun9i_usb_phy_ops); in sun9i_usb_phy_probe()
174 if (IS_ERR(phy->phy)) { in sun9i_usb_phy_probe()
176 return PTR_ERR(phy->phy); in sun9i_usb_phy_probe()
179 phy_set_drvdata(phy->phy, phy); in sun9i_usb_phy_probe()