Lines Matching defs:tu

65 	struct tahvo_usb *tu = dev_get_drvdata(device);
66 return sprintf(buf, "%s\n", tu->vbus_state ? "on" : "off");
70 static void check_vbus_state(struct tahvo_usb *tu)
72 struct retu_dev *rdev = dev_get_drvdata(tu->pt_dev->dev.parent);
77 switch (tu->phy.otg->state) {
80 if (tu->phy.otg->gadget)
81 usb_gadget_vbus_connect(tu->phy.otg->gadget);
82 tu->phy.otg->state = OTG_STATE_B_PERIPHERAL;
83 usb_phy_set_event(&tu->phy, USB_EVENT_ENUMERATED);
90 tu->phy.otg->state = OTG_STATE_A_HOST;
95 dev_info(&tu->pt_dev->dev, "USB cable connected\n");
97 switch (tu->phy.otg->state) {
99 if (tu->phy.otg->gadget)
100 usb_gadget_vbus_disconnect(tu->phy.otg->gadget);
101 tu->phy.otg->state = OTG_STATE_B_IDLE;
102 usb_phy_set_event(&tu->phy, USB_EVENT_NONE);
105 tu->phy.otg->state = OTG_STATE_A_IDLE;
110 dev_info(&tu->pt_dev->dev, "USB cable disconnected\n");
113 prev_state = tu->vbus_state;
114 tu->vbus_state = reg & TAHVO_STAT_VBUS;
115 if (prev_state != tu->vbus_state) {
116 extcon_set_state_sync(tu->extcon, EXTCON_USB, tu->vbus_state);
117 sysfs_notify(&tu->pt_dev->dev.kobj, NULL, "vbus_state");
121 static void tahvo_usb_become_host(struct tahvo_usb *tu)
123 struct retu_dev *rdev = dev_get_drvdata(tu->pt_dev->dev.parent);
125 extcon_set_state_sync(tu->extcon, EXTCON_USB_HOST, true);
130 tu->phy.otg->state = OTG_STATE_A_IDLE;
132 check_vbus_state(tu);
135 static void tahvo_usb_stop_host(struct tahvo_usb *tu)
137 tu->phy.otg->state = OTG_STATE_A_IDLE;
140 static void tahvo_usb_become_peripheral(struct tahvo_usb *tu)
142 struct retu_dev *rdev = dev_get_drvdata(tu->pt_dev->dev.parent);
144 extcon_set_state_sync(tu->extcon, EXTCON_USB_HOST, false);
149 tu->phy.otg->state = OTG_STATE_B_IDLE;
151 check_vbus_state(tu);
154 static void tahvo_usb_stop_peripheral(struct tahvo_usb *tu)
156 if (tu->phy.otg->gadget)
157 usb_gadget_vbus_disconnect(tu->phy.otg->gadget);
158 tu->phy.otg->state = OTG_STATE_B_IDLE;
161 static void tahvo_usb_power_off(struct tahvo_usb *tu)
163 struct retu_dev *rdev = dev_get_drvdata(tu->pt_dev->dev.parent);
166 if (tu->phy.otg->gadget)
167 usb_gadget_vbus_disconnect(tu->phy.otg->gadget);
171 tu->phy.otg->state = OTG_STATE_UNDEFINED;
176 struct tahvo_usb *tu = container_of(dev, struct tahvo_usb, phy);
177 struct retu_dev *rdev = dev_get_drvdata(tu->pt_dev->dev.parent);
180 dev_dbg(&tu->pt_dev->dev, "%s\n", __func__);
194 struct tahvo_usb *tu = container_of(otg->usb_phy, struct tahvo_usb,
197 mutex_lock(&tu->serialize);
200 if (tu->tahvo_mode == TAHVO_MODE_HOST)
201 tahvo_usb_power_off(tu);
203 mutex_unlock(&tu->serialize);
207 if (tu->tahvo_mode == TAHVO_MODE_HOST) {
209 tahvo_usb_become_host(tu);
214 mutex_unlock(&tu->serialize);
222 struct tahvo_usb *tu = container_of(otg->usb_phy, struct tahvo_usb,
225 mutex_lock(&tu->serialize);
228 if (tu->tahvo_mode == TAHVO_MODE_PERIPHERAL)
229 tahvo_usb_power_off(tu);
230 tu->phy.otg->gadget = NULL;
231 mutex_unlock(&tu->serialize);
235 tu->phy.otg->gadget = gadget;
236 if (tu->tahvo_mode == TAHVO_MODE_PERIPHERAL)
237 tahvo_usb_become_peripheral(tu);
239 mutex_unlock(&tu->serialize);
246 struct tahvo_usb *tu = _tu;
248 mutex_lock(&tu->serialize);
249 check_vbus_state(tu);
250 mutex_unlock(&tu->serialize);
258 struct tahvo_usb *tu = dev_get_drvdata(device);
260 switch (tu->tahvo_mode) {
274 struct tahvo_usb *tu = dev_get_drvdata(device);
277 mutex_lock(&tu->serialize);
279 if (tu->tahvo_mode == TAHVO_MODE_PERIPHERAL)
280 tahvo_usb_stop_peripheral(tu);
281 tu->tahvo_mode = TAHVO_MODE_HOST;
282 if (tu->phy.otg->host) {
284 tahvo_usb_become_host(tu);
287 tahvo_usb_power_off(tu);
291 if (tu->tahvo_mode == TAHVO_MODE_HOST)
292 tahvo_usb_stop_host(tu);
293 tu->tahvo_mode = TAHVO_MODE_PERIPHERAL;
294 if (tu->phy.otg->gadget) {
296 tahvo_usb_become_peripheral(tu);
299 tahvo_usb_power_off(tu);
305 mutex_unlock(&tu->serialize);
321 struct tahvo_usb *tu;
324 tu = devm_kzalloc(&pdev->dev, sizeof(*tu), GFP_KERNEL);
325 if (!tu)
328 tu->phy.otg = devm_kzalloc(&pdev->dev, sizeof(*tu->phy.otg),
330 if (!tu->phy.otg)
333 tu->pt_dev = pdev;
337 tu->tahvo_mode = TAHVO_MODE_HOST;
339 tu->tahvo_mode = TAHVO_MODE_PERIPHERAL;
342 mutex_init(&tu->serialize);
344 tu->ick = devm_clk_get(&pdev->dev, "usb_l4_ick");
345 if (!IS_ERR(tu->ick))
346 clk_enable(tu->ick);
351 tu->vbus_state = retu_read(rdev, TAHVO_REG_IDSR) & TAHVO_STAT_VBUS;
353 tu->extcon = devm_extcon_dev_allocate(&pdev->dev, tahvo_cable);
354 if (IS_ERR(tu->extcon)) {
356 ret = PTR_ERR(tu->extcon);
360 ret = devm_extcon_dev_register(&pdev->dev, tu->extcon);
368 extcon_set_state_sync(tu->extcon, EXTCON_USB_HOST,
369 tu->tahvo_mode == TAHVO_MODE_HOST);
370 extcon_set_state_sync(tu->extcon, EXTCON_USB, tu->vbus_state);
373 tahvo_usb_power_off(tu);
374 tu->phy.dev = &pdev->dev;
375 tu->phy.otg->state = OTG_STATE_UNDEFINED;
376 tu->phy.label = DRIVER_NAME;
377 tu->phy.set_suspend = tahvo_usb_set_suspend;
379 tu->phy.otg->usb_phy = &tu->phy;
380 tu->phy.otg->set_host = tahvo_usb_set_host;
381 tu->phy.otg->set_peripheral = tahvo_usb_set_peripheral;
383 ret = usb_add_phy(&tu->phy, USB_PHY_TYPE_USB2);
390 dev_set_drvdata(&pdev->dev, tu);
392 tu->irq = ret = platform_get_irq(pdev, 0);
395 ret = request_threaded_irq(tu->irq, NULL, tahvo_usb_vbus_interrupt,
397 "tahvo-vbus", tu);
407 usb_remove_phy(&tu->phy);
409 if (!IS_ERR(tu->ick))
410 clk_disable(tu->ick);
417 struct tahvo_usb *tu = platform_get_drvdata(pdev);
419 free_irq(tu->irq, tu);
420 usb_remove_phy(&tu->phy);
421 if (!IS_ERR(tu->ick))
422 clk_disable(tu->ick);