Lines Matching full:isp
3 * isp1301_omap - ISP 1301 USB transceiver, talking to OMAP OTG controller
55 # define WORK_UPDATE_ISP 0 /* update ISP from OTG */
56 # define WORK_UPDATE_OTG 1 /* update OTG from ISP */
98 static void enable_vbus_draw(struct isp1301 *isp, unsigned mA) in enable_vbus_draw() argument
107 static void enable_vbus_draw(struct isp1301 *isp, unsigned mA) in enable_vbus_draw() argument
117 static void enable_vbus_source(struct isp1301 *isp) in enable_vbus_source() argument
126 static inline void notresponding(struct isp1301 *isp) in notresponding() argument
139 isp1301_get_u8(struct isp1301 *isp, u8 reg) in isp1301_get_u8() argument
141 return i2c_smbus_read_byte_data(isp->client, reg + 0); in isp1301_get_u8()
145 isp1301_get_u16(struct isp1301 *isp, u8 reg) in isp1301_get_u16() argument
147 return i2c_smbus_read_word_data(isp->client, reg); in isp1301_get_u16()
151 isp1301_set_bits(struct isp1301 *isp, u8 reg, u8 bits) in isp1301_set_bits() argument
153 return i2c_smbus_write_byte_data(isp->client, reg + 0, bits); in isp1301_set_bits()
157 isp1301_clear_bits(struct isp1301 *isp, u8 reg, u8 bits) in isp1301_clear_bits() argument
159 return i2c_smbus_write_byte_data(isp->client, reg + 1, bits); in isp1301_clear_bits()
222 static inline const char *state_name(struct isp1301 *isp) in state_name() argument
224 return usb_otg_state_string(isp->phy.otg->state); in state_name()
237 static void power_down(struct isp1301 *isp) in power_down() argument
239 isp->phy.otg->state = OTG_STATE_UNDEFINED; in power_down()
241 // isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN); in power_down()
242 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND); in power_down()
244 isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_ID_PULLDOWN); in power_down()
245 isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0); in power_down()
248 static void __maybe_unused power_up(struct isp1301 *isp) in power_up() argument
250 // isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN); in power_up()
251 isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND); in power_up()
256 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0); in power_up()
261 static int host_suspend(struct isp1301 *isp) in host_suspend() argument
268 if (!isp->phy.otg->host) in host_suspend()
274 dev = isp->phy.otg->host->controller; in host_suspend()
279 static int host_resume(struct isp1301 *isp) in host_resume() argument
286 if (!isp->phy.otg->host) in host_resume()
289 dev = isp->phy.otg->host->controller; in host_resume()
294 static int gadget_suspend(struct isp1301 *isp) in gadget_suspend() argument
296 isp->phy.otg->gadget->b_hnp_enable = 0; in gadget_suspend()
297 isp->phy.otg->gadget->a_hnp_support = 0; in gadget_suspend()
298 isp->phy.otg->gadget->a_alt_hnp_support = 0; in gadget_suspend()
299 return usb_gadget_vbus_disconnect(isp->phy.otg->gadget); in gadget_suspend()
311 static void isp1301_defer_work(struct isp1301 *isp, int work) in isp1301_defer_work() argument
315 if (isp && !test_and_set_bit(work, &isp->todo)) { in isp1301_defer_work()
316 (void) get_device(&isp->client->dev); in isp1301_defer_work()
317 status = schedule_work(&isp->work); in isp1301_defer_work()
318 if (!status && !isp->working) in isp1301_defer_work()
319 dev_vdbg(&isp->client->dev, in isp1301_defer_work()
325 static void a_idle(struct isp1301 *isp, const char *tag) in a_idle() argument
329 if (isp->phy.otg->state == OTG_STATE_A_IDLE) in a_idle()
332 isp->phy.otg->default_a = 1; in a_idle()
333 if (isp->phy.otg->host) { in a_idle()
334 isp->phy.otg->host->is_b_host = 0; in a_idle()
335 host_suspend(isp); in a_idle()
337 if (isp->phy.otg->gadget) { in a_idle()
338 isp->phy.otg->gadget->is_a_peripheral = 1; in a_idle()
339 gadget_suspend(isp); in a_idle()
341 isp->phy.otg->state = OTG_STATE_A_IDLE; in a_idle()
344 isp->last_otg_ctrl = l; in a_idle()
345 pr_debug(" --> %s/%s\n", state_name(isp), tag); in a_idle()
349 static void b_idle(struct isp1301 *isp, const char *tag) in b_idle() argument
353 if (isp->phy.otg->state == OTG_STATE_B_IDLE) in b_idle()
356 isp->phy.otg->default_a = 0; in b_idle()
357 if (isp->phy.otg->host) { in b_idle()
358 isp->phy.otg->host->is_b_host = 1; in b_idle()
359 host_suspend(isp); in b_idle()
361 if (isp->phy.otg->gadget) { in b_idle()
362 isp->phy.otg->gadget->is_a_peripheral = 0; in b_idle()
363 gadget_suspend(isp); in b_idle()
365 isp->phy.otg->state = OTG_STATE_B_IDLE; in b_idle()
368 isp->last_otg_ctrl = l; in b_idle()
369 pr_debug(" --> %s/%s\n", state_name(isp), tag); in b_idle()
373 dump_regs(struct isp1301 *isp, const char *label) in dump_regs() argument
375 u8 ctrl = isp1301_get_u8(isp, ISP1301_OTG_CONTROL_1); in dump_regs()
376 u8 status = isp1301_get_u8(isp, ISP1301_OTG_STATUS); in dump_regs()
377 u8 src = isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE); in dump_regs()
380 omap_readl(OTG_CTRL), label, state_name(isp), in dump_regs()
399 static void check_state(struct isp1301 *isp, const char *tag) in check_state() argument
464 if (isp->phy.otg->state == state && !extra) in check_state()
467 usb_otg_state_string(state), fsm, state_name(isp), in check_state()
473 static inline void check_state(struct isp1301 *isp, const char *tag) { } in check_state() argument
478 static void update_otg1(struct isp1301 *isp, u8 int_src) in update_otg1() argument
488 else if (isp->phy.otg->state == OTG_STATE_A_WAIT_VFALL) { in update_otg1()
489 a_idle(isp, "vfall"); in update_otg1()
495 if (isp->phy.otg->state == OTG_STATE_B_IDLE in update_otg1()
496 || isp->phy.otg->state in update_otg1()
498 a_idle(isp, "init"); in update_otg1()
503 if (isp->phy.otg->state == OTG_STATE_A_IDLE in update_otg1()
504 || isp->phy.otg->state == OTG_STATE_UNDEFINED) { in update_otg1()
505 b_idle(isp, "init"); in update_otg1()
513 static void update_otg2(struct isp1301 *isp, u8 otg_status) in update_otg2() argument
528 static void otg_update_isp(struct isp1301 *isp) in otg_update_isp() argument
534 otg_change = otg_ctrl ^ isp->last_otg_ctrl; in otg_update_isp()
535 isp->last_otg_ctrl = otg_ctrl; in otg_update_isp()
538 switch (isp->phy.otg->state) { in otg_update_isp()
544 if (isp->phy.otg->gadget->b_hnp_enable) { in otg_update_isp()
545 isp->phy.otg->state = OTG_STATE_B_WAIT_ACON; in otg_update_isp()
567 # define toggle(OTG,ISP) do { \ in otg_update_isp() argument
568 if (otg_ctrl & OTG) set |= ISP; \ in otg_update_isp()
569 else clr |= ISP; \ in otg_update_isp()
572 if (!(isp->phy.otg->host)) in otg_update_isp()
575 switch (isp->phy.otg->state) { in otg_update_isp()
582 notresponding(isp); in otg_update_isp()
586 isp->phy.otg->state = OTG_STATE_A_WAIT_VFALL; in otg_update_isp()
595 isp->phy.otg->state = OTG_STATE_A_WAIT_VRISE; in otg_update_isp()
608 isp1301_set_bits(isp, ISP1301_OTG_CONTROL_1, set); in otg_update_isp()
609 isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, clr); in otg_update_isp()
615 switch (isp->phy.otg->state) { in otg_update_isp()
619 isp->phy.otg->state = OTG_STATE_B_PERIPHERAL; in otg_update_isp()
625 isp->phy.otg->state = OTG_STATE_A_PERIPHERAL; in otg_update_isp()
636 check_state(isp, __func__); in otg_update_isp()
637 dump_regs(isp, "otg->isp1301"); in otg_update_isp()
645 struct isp1301 *isp = _isp; in omap_otg_irq() local
646 struct usb_otg *otg = isp->phy.otg; in omap_otg_irq()
651 isp1301_defer_work(isp, WORK_UPDATE_ISP); in omap_otg_irq()
657 notresponding(isp); in omap_otg_irq()
663 if (isp->phy.otg->state == OTG_STATE_B_SRP_INIT) in omap_otg_irq()
664 b_idle(isp, "srp_timeout"); in omap_otg_irq()
672 state_name(isp), omap_readl(OTG_CTRL)); in omap_otg_irq()
673 notresponding(isp); in omap_otg_irq()
681 isp->phy.otg->state = OTG_STATE_B_PERIPHERAL; in omap_otg_irq()
690 state_name(isp), omap_readl(OTG_CTRL)); in omap_otg_irq()
692 isp1301_defer_work(isp, WORK_UPDATE_OTG); in omap_otg_irq()
693 switch (isp->phy.otg->state) { in omap_otg_irq()
697 isp1301_defer_work(isp, WORK_HOST_RESUME); in omap_otg_irq()
718 state_name(isp), otg_ctrl); in omap_otg_irq()
719 notresponding(isp); in omap_otg_irq()
724 isp->phy.otg->state = OTG_STATE_A_WAIT_VFALL; in omap_otg_irq()
733 state_name(isp), otg_irq, otg_ctrl); in omap_otg_irq()
738 isp->phy.otg->state = OTG_STATE_A_VBUS_ERR; in omap_otg_irq()
751 state_name(isp), in omap_otg_irq()
755 isp1301_defer_work(isp, WORK_UPDATE_ISP); in omap_otg_irq()
759 switch (isp->phy.otg->state) { in omap_otg_irq()
761 b_idle(isp, __func__); in omap_otg_irq()
766 isp1301_defer_work(isp, WORK_UPDATE_ISP); in omap_otg_irq()
776 switch (isp->phy.otg->state) { in omap_otg_irq()
778 isp->phy.otg->state = OTG_STATE_B_HOST; in omap_otg_irq()
783 isp->phy.otg->state = OTG_STATE_A_HOST; in omap_otg_irq()
787 isp->phy.otg->state = OTG_STATE_A_WAIT_BCON; in omap_otg_irq()
793 isp1301_defer_work(isp, WORK_HOST_RESUME); in omap_otg_irq()
804 check_state(isp, __func__); in omap_otg_irq()
810 static int isp1301_otg_init(struct isp1301 *isp) in isp1301_otg_init() argument
817 dump_regs(isp, __func__); in isp1301_otg_init()
832 update_otg1(isp, isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE)); in isp1301_otg_init()
833 update_otg2(isp, isp1301_get_u8(isp, ISP1301_OTG_STATUS)); in isp1301_otg_init()
835 check_state(isp, __func__); in isp1301_otg_init()
837 state_name(isp), __func__, omap_readl(OTG_CTRL)); in isp1301_otg_init()
872 static int otg_bind(struct isp1301 *isp) in otg_bind() argument
885 0, DRIVER_NAME, isp); in otg_bind()
894 static void otg_unbind(struct isp1301 *isp) in otg_unbind() argument
898 free_irq(otg_dev->resource[1].start, isp); in otg_unbind()
909 static void b_peripheral(struct isp1301 *isp) in b_peripheral() argument
916 usb_gadget_vbus_connect(isp->phy.otg->gadget); in b_peripheral()
919 enable_vbus_draw(isp, 8); in b_peripheral()
920 otg_update_isp(isp); in b_peripheral()
922 enable_vbus_draw(isp, 100); in b_peripheral()
924 isp1301_set_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_DP_PULLUP); in b_peripheral()
925 isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_DP_PULLDOWN); in b_peripheral()
926 isp->phy.otg->state = OTG_STATE_B_PERIPHERAL; in b_peripheral()
928 dump_regs(isp, "2periph"); in b_peripheral()
932 static void isp_update_otg(struct isp1301 *isp, u8 stat) in isp_update_otg() argument
934 struct usb_otg *otg = isp->phy.otg; in isp_update_otg()
936 enum usb_otg_state state = isp->phy.otg->state; in isp_update_otg()
939 pr_debug("OTG: BDIS_ACON, %s\n", state_name(isp)); in isp_update_otg()
942 isp_stat = isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE); in isp_update_otg()
947 a_idle(isp, "idle"); in isp_update_otg()
950 enable_vbus_source(isp); in isp_update_otg()
959 isp->phy.otg->state = OTG_STATE_A_HOST; in isp_update_otg()
963 a_idle(isp, "vfell"); in isp_update_otg()
967 isp->phy.otg->state = OTG_STATE_A_VBUS_ERR; in isp_update_otg()
970 isp_bstat = isp1301_get_u8(isp, ISP1301_OTG_STATUS); in isp_update_otg()
982 a_idle(isp, "id"); in isp_update_otg()
984 isp1301_defer_work(isp, WORK_HOST_RESUME); in isp_update_otg()
996 isp->phy.otg->state = OTG_STATE_A_WAIT_VFALL; in isp_update_otg()
1006 host_suspend(isp); in isp_update_otg()
1007 isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, in isp_update_otg()
1009 isp->phy.otg->state = OTG_STATE_B_IDLE; in isp_update_otg()
1018 isp_bstat = isp1301_get_u8(isp, ISP1301_OTG_STATUS); in isp_update_otg()
1020 switch (isp->phy.otg->state) { in isp_update_otg()
1026 enable_vbus_draw(isp, 0); in isp_update_otg()
1029 isp1301_set_bits(isp, ISP1301_OTG_CONTROL_1, in isp_update_otg()
1031 isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, in isp_update_otg()
1033 dump_regs(isp, __func__); in isp_update_otg()
1037 b_idle(isp, __func__); in isp_update_otg()
1044 update_otg1(isp, isp_stat); in isp_update_otg()
1045 update_otg2(isp, isp_bstat); in isp_update_otg()
1047 b_peripheral(isp); in isp_update_otg()
1055 state_name(isp)); in isp_update_otg()
1060 if (state != isp->phy.otg->state) in isp_update_otg()
1061 pr_debug(" isp, %s -> %s\n", in isp_update_otg()
1062 usb_otg_state_string(state), state_name(isp)); in isp_update_otg()
1068 update_otg1(isp, isp_stat); in isp_update_otg()
1069 update_otg2(isp, isp_bstat); in isp_update_otg()
1070 check_state(isp, __func__); in isp_update_otg()
1073 dump_regs(isp, "isp1301->otg"); in isp_update_otg()
1078 static u8 isp1301_clear_latch(struct isp1301 *isp) in isp1301_clear_latch() argument
1080 u8 latch = isp1301_get_u8(isp, ISP1301_INTERRUPT_LATCH); in isp1301_clear_latch()
1081 isp1301_clear_bits(isp, ISP1301_INTERRUPT_LATCH, latch); in isp1301_clear_latch()
1088 struct isp1301 *isp = container_of(work, struct isp1301, work); in isp1301_work() local
1092 isp->working = 1; in isp1301_work()
1094 stop = test_bit(WORK_STOP, &isp->todo); in isp1301_work()
1098 if (test_and_clear_bit(WORK_UPDATE_ISP, &isp->todo)) { in isp1301_work()
1099 otg_update_isp(isp); in isp1301_work()
1100 put_device(&isp->client->dev); in isp1301_work()
1104 if (test_and_clear_bit(WORK_UPDATE_OTG, &isp->todo)) { in isp1301_work()
1105 u8 stat = isp1301_clear_latch(isp); in isp1301_work()
1107 isp_update_otg(isp, stat); in isp1301_work()
1108 put_device(&isp->client->dev); in isp1301_work()
1111 if (test_and_clear_bit(WORK_HOST_RESUME, &isp->todo)) { in isp1301_work()
1118 switch (isp->phy.otg->state) { in isp1301_work()
1121 isp->phy.otg->state = OTG_STATE_A_HOST; in isp1301_work()
1130 isp->phy.otg->state = OTG_STATE_B_HOST; in isp1301_work()
1139 state_name(isp)); in isp1301_work()
1141 host_resume(isp); in isp1301_work()
1143 put_device(&isp->client->dev); in isp1301_work()
1146 if (test_and_clear_bit(WORK_TIMER, &isp->todo)) { in isp1301_work()
1148 dump_regs(isp, "timer"); in isp1301_work()
1150 mod_timer(&isp->timer, jiffies + TIMER_JIFFIES); in isp1301_work()
1152 put_device(&isp->client->dev); in isp1301_work()
1155 if (isp->todo) in isp1301_work()
1156 dev_vdbg(&isp->client->dev, in isp1301_work()
1158 isp->todo); in isp1301_work()
1160 dev_dbg(&isp->client->dev, "stop\n"); in isp1301_work()
1163 } while (isp->todo); in isp1301_work()
1164 isp->working = 0; in isp1301_work()
1167 static irqreturn_t isp1301_irq(int irq, void *isp) in isp1301_irq() argument
1169 isp1301_defer_work(isp, WORK_UPDATE_OTG); in isp1301_irq()
1175 struct isp1301 *isp = from_timer(isp, t, timer); in isp1301_timer() local
1177 isp1301_defer_work(isp, WORK_TIMER); in isp1301_timer()
1184 struct isp1301 *isp; in isp1301_release() local
1186 isp = dev_get_drvdata(dev); in isp1301_release()
1191 if (isp->i2c_release) in isp1301_release()
1192 isp->i2c_release(dev); in isp1301_release()
1193 kfree(isp->phy.otg); in isp1301_release()
1194 kfree (isp); in isp1301_release()
1201 struct isp1301 *isp; in isp1301_remove() local
1203 isp = i2c_get_clientdata(i2c); in isp1301_remove()
1205 isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0); in isp1301_remove()
1206 isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0); in isp1301_remove()
1207 free_irq(i2c->irq, isp); in isp1301_remove()
1209 otg_unbind(isp); in isp1301_remove()
1211 set_bit(WORK_STOP, &isp->todo); in isp1301_remove()
1212 del_timer_sync(&isp->timer); in isp1301_remove()
1213 flush_work(&isp->work); in isp1301_remove()
1236 static int isp1301_otg_enable(struct isp1301 *isp) in isp1301_otg_enable() argument
1238 power_up(isp); in isp1301_otg_enable()
1239 isp1301_otg_init(isp); in isp1301_otg_enable()
1244 isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING, in isp1301_otg_enable()
1246 isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, in isp1301_otg_enable()
1249 dev_info(&isp->client->dev, "ready for dual-role USB ...\n"); in isp1301_otg_enable()
1260 struct isp1301 *isp = container_of(otg->usb_phy, struct isp1301, phy); in isp1301_set_host() local
1262 if (isp != the_transceiver) in isp1301_set_host()
1267 power_down(isp); in isp1301_set_host()
1274 dev_dbg(&isp->client->dev, "registered host\n"); in isp1301_set_host()
1275 host_suspend(isp); in isp1301_set_host()
1277 return isp1301_otg_enable(isp); in isp1301_set_host()
1284 power_up(isp); in isp1301_set_host()
1287 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0); in isp1301_set_host()
1289 dev_info(&isp->client->dev, "A-Host sessions ok\n"); in isp1301_set_host()
1290 isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING, in isp1301_set_host()
1292 isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, in isp1301_set_host()
1300 isp1301_set_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_VBUS_DRV); in isp1301_set_host()
1302 dump_regs(isp, __func__); in isp1301_set_host()
1307 dev_dbg(&isp->client->dev, "host sessions not allowed\n"); in isp1301_set_host()
1316 struct isp1301 *isp = container_of(otg->usb_phy, struct isp1301, phy); in isp1301_set_peripheral() local
1318 if (isp != the_transceiver) in isp1301_set_peripheral()
1324 enable_vbus_draw(isp, 0); in isp1301_set_peripheral()
1327 power_down(isp); in isp1301_set_peripheral()
1333 dev_dbg(&isp->client->dev, "registered gadget\n"); in isp1301_set_peripheral()
1336 return isp1301_otg_enable(isp); in isp1301_set_peripheral()
1352 power_up(isp); in isp1301_set_peripheral()
1353 isp->phy.otg->state = OTG_STATE_B_IDLE; in isp1301_set_peripheral()
1356 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0); in isp1301_set_peripheral()
1358 isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING, in isp1301_set_peripheral()
1360 isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, in isp1301_set_peripheral()
1362 dev_info(&isp->client->dev, "B-Peripheral sessions ok\n"); in isp1301_set_peripheral()
1363 dump_regs(isp, __func__); in isp1301_set_peripheral()
1369 if (isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE) & INTR_VBUS_VLD) in isp1301_set_peripheral()
1370 b_peripheral(isp); in isp1301_set_peripheral()
1375 dev_dbg(&isp->client->dev, "peripheral sessions not allowed\n"); in isp1301_set_peripheral()
1396 struct isp1301 *isp = container_of(otg->usb_phy, struct isp1301, phy); in isp1301_start_srp() local
1399 if (isp != the_transceiver || isp->phy.otg->state != OTG_STATE_B_IDLE) in isp1301_start_srp()
1409 isp->phy.otg->state = OTG_STATE_B_SRP_INIT; in isp1301_start_srp()
1411 pr_debug("otg: SRP, %s ... %06x\n", state_name(isp), in isp1301_start_srp()
1414 check_state(isp, __func__); in isp1301_start_srp()
1423 struct isp1301 *isp = container_of(otg->usb_phy, struct isp1301, phy); in isp1301_start_hnp() local
1426 if (isp != the_transceiver) in isp1301_start_hnp()
1437 switch (isp->phy.otg->state) { in isp1301_start_hnp()
1439 isp->phy.otg->state = OTG_STATE_B_PERIPHERAL; in isp1301_start_hnp()
1445 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, in isp1301_start_hnp()
1462 state_name(isp), omap_readl(OTG_CTRL)); in isp1301_start_hnp()
1463 check_state(isp, __func__); in isp1301_start_hnp()
1477 struct isp1301 *isp; in isp1301_probe() local
1483 isp = kzalloc(sizeof *isp, GFP_KERNEL); in isp1301_probe()
1484 if (!isp) in isp1301_probe()
1487 isp->phy.otg = kzalloc(sizeof *isp->phy.otg, GFP_KERNEL); in isp1301_probe()
1488 if (!isp->phy.otg) { in isp1301_probe()
1489 kfree(isp); in isp1301_probe()
1493 INIT_WORK(&isp->work, isp1301_work); in isp1301_probe()
1494 timer_setup(&isp->timer, isp1301_timer, 0); in isp1301_probe()
1496 i2c_set_clientdata(i2c, isp); in isp1301_probe()
1497 isp->client = i2c; in isp1301_probe()
1500 status = isp1301_get_u16(isp, ISP1301_VENDOR_ID); in isp1301_probe()
1505 status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID); in isp1301_probe()
1510 isp->i2c_release = i2c->dev.release; in isp1301_probe()
1519 isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_MASK); in isp1301_probe()
1521 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, MC2_BI_DI); in isp1301_probe()
1522 isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_2, ~MC2_BI_DI); in isp1301_probe()
1524 isp1301_set_bits(isp, ISP1301_OTG_CONTROL_1, in isp1301_probe()
1526 isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, in isp1301_probe()
1529 isp1301_clear_bits(isp, ISP1301_INTERRUPT_LATCH, ~0); in isp1301_probe()
1530 isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0); in isp1301_probe()
1531 isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0); in isp1301_probe()
1534 status = otg_bind(isp); in isp1301_probe()
1545 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, in isp1301_probe()
1547 isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, in isp1301_probe()
1557 isp->irq_type = IRQF_TRIGGER_FALLING; in isp1301_probe()
1563 isp->irq_type, DRIVER_NAME, isp); in isp1301_probe()
1570 isp->phy.dev = &i2c->dev; in isp1301_probe()
1571 isp->phy.label = DRIVER_NAME; in isp1301_probe()
1572 isp->phy.set_power = isp1301_set_power; in isp1301_probe()
1574 isp->phy.otg->usb_phy = &isp->phy; in isp1301_probe()
1575 isp->phy.otg->set_host = isp1301_set_host; in isp1301_probe()
1576 isp->phy.otg->set_peripheral = isp1301_set_peripheral; in isp1301_probe()
1577 isp->phy.otg->start_srp = isp1301_start_srp; in isp1301_probe()
1578 isp->phy.otg->start_hnp = isp1301_start_hnp; in isp1301_probe()
1580 enable_vbus_draw(isp, 0); in isp1301_probe()
1581 power_down(isp); in isp1301_probe()
1582 the_transceiver = isp; in isp1301_probe()
1585 update_otg1(isp, isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE)); in isp1301_probe()
1586 update_otg2(isp, isp1301_get_u8(isp, ISP1301_OTG_STATUS)); in isp1301_probe()
1589 dump_regs(isp, __func__); in isp1301_probe()
1592 mod_timer(&isp->timer, jiffies + TIMER_JIFFIES); in isp1301_probe()
1596 status = usb_add_phy(&isp->phy, USB_PHY_TYPE_USB2); in isp1301_probe()
1604 kfree(isp->phy.otg); in isp1301_probe()
1605 kfree(isp); in isp1301_probe()