Lines Matching refs:otg_sx

122 int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on)  in ssusb_set_vbus()  argument
125 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_set_vbus()
126 struct regulator *vbus = otg_sx->vbus; in ssusb_set_vbus()
152 static void ssusb_set_mailbox(struct otg_switch_mtk *otg_sx, in ssusb_set_mailbox() argument
156 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_set_mailbox()
165 ssusb_set_vbus(otg_sx, 1); in ssusb_set_mailbox()
170 ssusb_set_vbus(otg_sx, 0); in ssusb_set_mailbox()
189 struct otg_switch_mtk *otg_sx = in ssusb_id_work() local
192 if (otg_sx->id_event) in ssusb_id_work()
193 ssusb_set_mailbox(otg_sx, MTU3_ID_GROUND); in ssusb_id_work()
195 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_id_work()
200 struct otg_switch_mtk *otg_sx = in ssusb_vbus_work() local
203 if (otg_sx->vbus_event) in ssusb_vbus_work()
204 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_vbus_work()
206 ssusb_set_mailbox(otg_sx, MTU3_VBUS_OFF); in ssusb_vbus_work()
216 struct otg_switch_mtk *otg_sx = in ssusb_id_notifier() local
219 otg_sx->id_event = event; in ssusb_id_notifier()
220 schedule_work(&otg_sx->id_work); in ssusb_id_notifier()
228 struct otg_switch_mtk *otg_sx = in ssusb_vbus_notifier() local
231 otg_sx->vbus_event = event; in ssusb_vbus_notifier()
232 schedule_work(&otg_sx->vbus_work); in ssusb_vbus_notifier()
237 static int ssusb_extcon_register(struct otg_switch_mtk *otg_sx) in ssusb_extcon_register() argument
240 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_extcon_register()
241 struct extcon_dev *edev = otg_sx->edev; in ssusb_extcon_register()
248 otg_sx->vbus_nb.notifier_call = ssusb_vbus_notifier; in ssusb_extcon_register()
250 &otg_sx->vbus_nb); in ssusb_extcon_register()
256 otg_sx->id_nb.notifier_call = ssusb_id_notifier; in ssusb_extcon_register()
258 &otg_sx->id_nb); in ssusb_extcon_register()
270 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_extcon_register()
272 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_extcon_register()
285 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_mode_switch() local
289 ssusb_set_mailbox(otg_sx, MTU3_VBUS_OFF); in ssusb_mode_switch()
290 ssusb_set_mailbox(otg_sx, MTU3_ID_GROUND); in ssusb_mode_switch()
293 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_mode_switch()
294 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_mode_switch()
345 static int ssusb_role_sw_register(struct otg_switch_mtk *otg_sx) in ssusb_role_sw_register() argument
349 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_role_sw_register()
351 if (!otg_sx->role_sw_used) in ssusb_role_sw_register()
358 otg_sx->role_sw = usb_role_switch_register(ssusb->dev, &role_sx_desc); in ssusb_role_sw_register()
360 return PTR_ERR_OR_ZERO(otg_sx->role_sw); in ssusb_role_sw_register()
365 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_otg_switch_init() local
368 INIT_WORK(&otg_sx->id_work, ssusb_id_work); in ssusb_otg_switch_init()
369 INIT_WORK(&otg_sx->vbus_work, ssusb_vbus_work); in ssusb_otg_switch_init()
371 if (otg_sx->manual_drd_enabled) in ssusb_otg_switch_init()
373 else if (otg_sx->role_sw_used) in ssusb_otg_switch_init()
374 ret = ssusb_role_sw_register(otg_sx); in ssusb_otg_switch_init()
376 ret = ssusb_extcon_register(otg_sx); in ssusb_otg_switch_init()
383 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_otg_switch_exit() local
385 cancel_work_sync(&otg_sx->id_work); in ssusb_otg_switch_exit()
386 cancel_work_sync(&otg_sx->vbus_work); in ssusb_otg_switch_exit()
387 usb_role_switch_unregister(otg_sx->role_sw); in ssusb_otg_switch_exit()