Lines Matching refs:twl

115 static inline int twl6030_writeb(struct twl6030_usb *twl, u8 module,  in twl6030_writeb()  argument
122 dev_err(twl->dev, in twl6030_writeb()
127 static inline u8 twl6030_readb(struct twl6030_usb *twl, u8 module, u8 address) in twl6030_readb() argument
136 dev_err(twl->dev, in twl6030_readb()
144 struct twl6030_usb *twl = comparator_to_twl(comparator); in twl6030_start_srp() local
146 twl6030_writeb(twl, TWL_MODULE_USB, 0x24, USB_VBUS_CTRL_SET); in twl6030_start_srp()
147 twl6030_writeb(twl, TWL_MODULE_USB, 0x84, USB_VBUS_CTRL_SET); in twl6030_start_srp()
150 twl6030_writeb(twl, TWL_MODULE_USB, 0xa0, USB_VBUS_CTRL_CLR); in twl6030_start_srp()
155 static int twl6030_usb_ldo_init(struct twl6030_usb *twl) in twl6030_usb_ldo_init() argument
158 twl6030_writeb(twl, TWL6030_MODULE_ID0 , 0x1, TWL6030_BACKUP_REG); in twl6030_usb_ldo_init()
161 twl6030_writeb(twl, TWL6030_MODULE_ID0 , 0x1, TWL6030_CFG_LDO_PD2); in twl6030_usb_ldo_init()
164 twl6030_writeb(twl, TWL6030_MODULE_ID0 , 0x10, TWL6030_MISC2); in twl6030_usb_ldo_init()
166 twl->usb3v3 = regulator_get(twl->dev, twl->regulator); in twl6030_usb_ldo_init()
167 if (IS_ERR(twl->usb3v3)) in twl6030_usb_ldo_init()
171 twl6030_writeb(twl, TWL_MODULE_USB, 0x4, USB_VBUS_CTRL_SET); in twl6030_usb_ldo_init()
177 twl6030_writeb(twl, TWL_MODULE_USB, 0x14, USB_ID_CTRL_SET); in twl6030_usb_ldo_init()
185 struct twl6030_usb *twl = dev_get_drvdata(dev); in twl6030_usb_vbus_show() local
189 spin_lock_irqsave(&twl->lock, flags); in twl6030_usb_vbus_show()
191 switch (twl->linkstat) { in twl6030_usb_vbus_show()
204 spin_unlock_irqrestore(&twl->lock, flags); in twl6030_usb_vbus_show()
212 struct twl6030_usb *twl = _twl; in twl6030_usb_irq() local
217 hw_state = twl6030_readb(twl, TWL6030_MODULE_ID0, STS_HW_CONDITIONS); in twl6030_usb_irq()
219 vbus_state = twl6030_readb(twl, TWL_MODULE_MAIN_CHARGE, in twl6030_usb_irq()
223 ret = regulator_enable(twl->usb3v3); in twl6030_usb_irq()
225 dev_err(twl->dev, "Failed to enable usb3v3\n"); in twl6030_usb_irq()
227 twl->asleep = 1; in twl6030_usb_irq()
229 twl->linkstat = status; in twl6030_usb_irq()
232 if (twl->linkstat != OMAP_MUSB_UNKNOWN) { in twl6030_usb_irq()
234 twl->linkstat = status; in twl6030_usb_irq()
236 if (twl->asleep) { in twl6030_usb_irq()
237 regulator_disable(twl->usb3v3); in twl6030_usb_irq()
238 twl->asleep = 0; in twl6030_usb_irq()
243 sysfs_notify(&twl->dev->kobj, NULL, "vbus"); in twl6030_usb_irq()
250 struct twl6030_usb *twl = _twl; in twl6030_usbotg_irq() local
255 hw_state = twl6030_readb(twl, TWL6030_MODULE_ID0, STS_HW_CONDITIONS); in twl6030_usbotg_irq()
258 ret = regulator_enable(twl->usb3v3); in twl6030_usbotg_irq()
260 dev_err(twl->dev, "Failed to enable usb3v3\n"); in twl6030_usbotg_irq()
262 twl->asleep = 1; in twl6030_usbotg_irq()
263 twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_CLR); in twl6030_usbotg_irq()
264 twl6030_writeb(twl, TWL_MODULE_USB, 0x10, USB_ID_INT_EN_HI_SET); in twl6030_usbotg_irq()
266 twl->linkstat = status; in twl6030_usbotg_irq()
269 twl6030_writeb(twl, TWL_MODULE_USB, 0x10, USB_ID_INT_EN_HI_CLR); in twl6030_usbotg_irq()
270 twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_SET); in twl6030_usbotg_irq()
272 twl6030_writeb(twl, TWL_MODULE_USB, status, USB_ID_INT_LATCH_CLR); in twl6030_usbotg_irq()
277 static int twl6030_enable_irq(struct twl6030_usb *twl) in twl6030_enable_irq() argument
279 twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_SET); in twl6030_enable_irq()
287 twl6030_usb_irq(twl->irq2, twl); in twl6030_enable_irq()
288 twl6030_usbotg_irq(twl->irq1, twl); in twl6030_enable_irq()
295 struct twl6030_usb *twl = container_of(data, struct twl6030_usb, in otg_set_vbus_work() local
303 if (twl->vbus_enable) in otg_set_vbus_work()
304 twl6030_writeb(twl, TWL_MODULE_MAIN_CHARGE , 0x40, in otg_set_vbus_work()
307 twl6030_writeb(twl, TWL_MODULE_MAIN_CHARGE , 0x00, in otg_set_vbus_work()
313 struct twl6030_usb *twl = comparator_to_twl(comparator); in twl6030_set_vbus() local
315 twl->vbus_enable = enabled; in twl6030_set_vbus()
316 schedule_work(&twl->set_vbus_work); in twl6030_set_vbus()
324 struct twl6030_usb *twl; in twl6030_usb_probe() local
330 twl = devm_kzalloc(dev, sizeof(*twl), GFP_KERNEL); in twl6030_usb_probe()
331 if (!twl) in twl6030_usb_probe()
334 twl->dev = &pdev->dev; in twl6030_usb_probe()
335 twl->irq1 = platform_get_irq(pdev, 0); in twl6030_usb_probe()
336 twl->irq2 = platform_get_irq(pdev, 1); in twl6030_usb_probe()
337 twl->linkstat = OMAP_MUSB_UNKNOWN; in twl6030_usb_probe()
339 twl->comparator.set_vbus = twl6030_set_vbus; in twl6030_usb_probe()
340 twl->comparator.start_srp = twl6030_start_srp; in twl6030_usb_probe()
342 ret = omap_usb2_set_comparator(&twl->comparator); in twl6030_usb_probe()
349 twl->regulator = "usb"; in twl6030_usb_probe()
352 twl->regulator = "ldousb"; in twl6030_usb_probe()
354 twl->regulator = "vusb"; in twl6030_usb_probe()
361 spin_lock_init(&twl->lock); in twl6030_usb_probe()
363 err = twl6030_usb_ldo_init(twl); in twl6030_usb_probe()
369 platform_set_drvdata(pdev, twl); in twl6030_usb_probe()
373 INIT_WORK(&twl->set_vbus_work, otg_set_vbus_work); in twl6030_usb_probe()
375 status = request_threaded_irq(twl->irq1, NULL, twl6030_usbotg_irq, in twl6030_usb_probe()
377 "twl6030_usb", twl); in twl6030_usb_probe()
380 twl->irq1, status); in twl6030_usb_probe()
381 device_remove_file(twl->dev, &dev_attr_vbus); in twl6030_usb_probe()
385 status = request_threaded_irq(twl->irq2, NULL, twl6030_usb_irq, in twl6030_usb_probe()
387 "twl6030_usb", twl); in twl6030_usb_probe()
390 twl->irq2, status); in twl6030_usb_probe()
391 free_irq(twl->irq1, twl); in twl6030_usb_probe()
392 device_remove_file(twl->dev, &dev_attr_vbus); in twl6030_usb_probe()
396 twl->asleep = 0; in twl6030_usb_probe()
397 twl6030_enable_irq(twl); in twl6030_usb_probe()
405 struct twl6030_usb *twl = platform_get_drvdata(pdev); in twl6030_usb_remove() local
411 free_irq(twl->irq1, twl); in twl6030_usb_remove()
412 free_irq(twl->irq2, twl); in twl6030_usb_remove()
413 regulator_put(twl->usb3v3); in twl6030_usb_remove()
414 device_remove_file(twl->dev, &dev_attr_vbus); in twl6030_usb_remove()
415 cancel_work_sync(&twl->set_vbus_work); in twl6030_usb_remove()