Lines Matching refs:gpio_vbus
60 static void set_vbus_draw(struct gpio_vbus_data *gpio_vbus, unsigned mA) in set_vbus_draw() argument
62 struct regulator *vbus_draw = gpio_vbus->vbus_draw; in set_vbus_draw()
69 enabled = gpio_vbus->vbus_draw_enabled; in set_vbus_draw()
76 gpio_vbus->vbus_draw_enabled = 1; in set_vbus_draw()
83 gpio_vbus->vbus_draw_enabled = 0; in set_vbus_draw()
86 gpio_vbus->mA = mA; in set_vbus_draw()
93 vbus = gpio_get_value(pdata->gpio_vbus); in is_vbus_powered()
102 struct gpio_vbus_data *gpio_vbus = in gpio_vbus_work() local
104 struct gpio_vbus_mach_info *pdata = dev_get_platdata(gpio_vbus->dev); in gpio_vbus_work()
107 if (!gpio_vbus->phy.otg->gadget) in gpio_vbus_work()
111 if ((vbus ^ gpio_vbus->vbus) == 0) in gpio_vbus_work()
113 gpio_vbus->vbus = vbus; in gpio_vbus_work()
124 gpio_vbus->phy.otg->state = OTG_STATE_B_PERIPHERAL; in gpio_vbus_work()
125 gpio_vbus->phy.last_event = status; in gpio_vbus_work()
126 usb_gadget_vbus_connect(gpio_vbus->phy.otg->gadget); in gpio_vbus_work()
129 set_vbus_draw(gpio_vbus, 100); in gpio_vbus_work()
135 atomic_notifier_call_chain(&gpio_vbus->phy.notifier, in gpio_vbus_work()
136 status, gpio_vbus->phy.otg->gadget); in gpio_vbus_work()
137 usb_phy_set_event(&gpio_vbus->phy, USB_EVENT_ENUMERATED); in gpio_vbus_work()
143 set_vbus_draw(gpio_vbus, 0); in gpio_vbus_work()
145 usb_gadget_vbus_disconnect(gpio_vbus->phy.otg->gadget); in gpio_vbus_work()
147 gpio_vbus->phy.otg->state = OTG_STATE_B_IDLE; in gpio_vbus_work()
148 gpio_vbus->phy.last_event = status; in gpio_vbus_work()
150 atomic_notifier_call_chain(&gpio_vbus->phy.notifier, in gpio_vbus_work()
151 status, gpio_vbus->phy.otg->gadget); in gpio_vbus_work()
152 usb_phy_set_event(&gpio_vbus->phy, USB_EVENT_NONE); in gpio_vbus_work()
161 struct gpio_vbus_data *gpio_vbus = platform_get_drvdata(pdev); in gpio_vbus_irq() local
162 struct usb_otg *otg = gpio_vbus->phy.otg; in gpio_vbus_irq()
169 schedule_delayed_work(&gpio_vbus->work, msecs_to_jiffies(100)); in gpio_vbus_irq()
180 struct gpio_vbus_data *gpio_vbus; in gpio_vbus_set_peripheral() local
185 gpio_vbus = container_of(otg->usb_phy, struct gpio_vbus_data, phy); in gpio_vbus_set_peripheral()
186 pdev = to_platform_device(gpio_vbus->dev); in gpio_vbus_set_peripheral()
187 pdata = dev_get_platdata(gpio_vbus->dev); in gpio_vbus_set_peripheral()
198 set_vbus_draw(gpio_vbus, 0); in gpio_vbus_set_peripheral()
211 gpio_vbus->vbus = 0; /* start with disconnected */ in gpio_vbus_set_peripheral()
212 gpio_vbus_irq(gpio_vbus->irq, pdev); in gpio_vbus_set_peripheral()
219 struct gpio_vbus_data *gpio_vbus; in gpio_vbus_set_power() local
221 gpio_vbus = container_of(phy, struct gpio_vbus_data, phy); in gpio_vbus_set_power()
224 set_vbus_draw(gpio_vbus, mA); in gpio_vbus_set_power()
231 struct gpio_vbus_data *gpio_vbus; in gpio_vbus_set_suspend() local
233 gpio_vbus = container_of(phy, struct gpio_vbus_data, phy); in gpio_vbus_set_suspend()
241 return gpio_vbus_set_power(phy, suspend ? 0 : gpio_vbus->mA); in gpio_vbus_set_suspend()
249 struct gpio_vbus_data *gpio_vbus; in gpio_vbus_probe() local
254 if (!pdata || !gpio_is_valid(pdata->gpio_vbus)) in gpio_vbus_probe()
256 gpio = pdata->gpio_vbus; in gpio_vbus_probe()
258 gpio_vbus = devm_kzalloc(&pdev->dev, sizeof(struct gpio_vbus_data), in gpio_vbus_probe()
260 if (!gpio_vbus) in gpio_vbus_probe()
263 gpio_vbus->phy.otg = devm_kzalloc(&pdev->dev, sizeof(struct usb_otg), in gpio_vbus_probe()
265 if (!gpio_vbus->phy.otg) in gpio_vbus_probe()
268 platform_set_drvdata(pdev, gpio_vbus); in gpio_vbus_probe()
269 gpio_vbus->dev = &pdev->dev; in gpio_vbus_probe()
270 gpio_vbus->phy.label = "gpio-vbus"; in gpio_vbus_probe()
271 gpio_vbus->phy.dev = gpio_vbus->dev; in gpio_vbus_probe()
272 gpio_vbus->phy.set_power = gpio_vbus_set_power; in gpio_vbus_probe()
273 gpio_vbus->phy.set_suspend = gpio_vbus_set_suspend; in gpio_vbus_probe()
275 gpio_vbus->phy.otg->state = OTG_STATE_UNDEFINED; in gpio_vbus_probe()
276 gpio_vbus->phy.otg->usb_phy = &gpio_vbus->phy; in gpio_vbus_probe()
277 gpio_vbus->phy.otg->set_peripheral = gpio_vbus_set_peripheral; in gpio_vbus_probe()
296 gpio_vbus->irq = irq; in gpio_vbus_probe()
319 INIT_DELAYED_WORK(&gpio_vbus->work, gpio_vbus_work); in gpio_vbus_probe()
321 gpio_vbus->vbus_draw = devm_regulator_get(&pdev->dev, "vbus_draw"); in gpio_vbus_probe()
322 if (IS_ERR(gpio_vbus->vbus_draw)) { in gpio_vbus_probe()
324 PTR_ERR(gpio_vbus->vbus_draw)); in gpio_vbus_probe()
325 gpio_vbus->vbus_draw = NULL; in gpio_vbus_probe()
329 err = usb_add_phy(&gpio_vbus->phy, USB_PHY_TYPE_USB2); in gpio_vbus_probe()
343 struct gpio_vbus_data *gpio_vbus = platform_get_drvdata(pdev); in gpio_vbus_remove() local
346 cancel_delayed_work_sync(&gpio_vbus->work); in gpio_vbus_remove()
348 usb_remove_phy(&gpio_vbus->phy); in gpio_vbus_remove()
356 struct gpio_vbus_data *gpio_vbus = dev_get_drvdata(dev); in gpio_vbus_pm_suspend() local
359 enable_irq_wake(gpio_vbus->irq); in gpio_vbus_pm_suspend()
366 struct gpio_vbus_data *gpio_vbus = dev_get_drvdata(dev); in gpio_vbus_pm_resume() local
369 disable_irq_wake(gpio_vbus->irq); in gpio_vbus_pm_resume()