Lines Matching refs:otg_sx
124 int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on) in ssusb_set_vbus() argument
127 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_set_vbus()
128 struct regulator *vbus = otg_sx->vbus; in ssusb_set_vbus()
154 static void ssusb_set_mailbox(struct otg_switch_mtk *otg_sx, in ssusb_set_mailbox() argument
158 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_set_mailbox()
167 ssusb_set_vbus(otg_sx, 1); in ssusb_set_mailbox()
172 ssusb_set_vbus(otg_sx, 0); in ssusb_set_mailbox()
191 struct otg_switch_mtk *otg_sx = in ssusb_id_work() local
194 if (otg_sx->id_event) in ssusb_id_work()
195 ssusb_set_mailbox(otg_sx, MTU3_ID_GROUND); in ssusb_id_work()
197 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_id_work()
202 struct otg_switch_mtk *otg_sx = in ssusb_vbus_work() local
205 if (otg_sx->vbus_event) in ssusb_vbus_work()
206 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_vbus_work()
208 ssusb_set_mailbox(otg_sx, MTU3_VBUS_OFF); in ssusb_vbus_work()
218 struct otg_switch_mtk *otg_sx = in ssusb_id_notifier() local
221 otg_sx->id_event = event; in ssusb_id_notifier()
222 schedule_work(&otg_sx->id_work); in ssusb_id_notifier()
230 struct otg_switch_mtk *otg_sx = in ssusb_vbus_notifier() local
233 otg_sx->vbus_event = event; in ssusb_vbus_notifier()
234 schedule_work(&otg_sx->vbus_work); in ssusb_vbus_notifier()
239 static int ssusb_extcon_register(struct otg_switch_mtk *otg_sx) in ssusb_extcon_register() argument
242 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_extcon_register()
243 struct extcon_dev *edev = otg_sx->edev; in ssusb_extcon_register()
250 otg_sx->vbus_nb.notifier_call = ssusb_vbus_notifier; in ssusb_extcon_register()
252 &otg_sx->vbus_nb); in ssusb_extcon_register()
258 otg_sx->id_nb.notifier_call = ssusb_id_notifier; in ssusb_extcon_register()
260 &otg_sx->id_nb); in ssusb_extcon_register()
272 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_extcon_register()
274 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_extcon_register()
287 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_mode_switch() local
291 ssusb_set_mailbox(otg_sx, MTU3_VBUS_OFF); in ssusb_mode_switch()
292 ssusb_set_mailbox(otg_sx, MTU3_ID_GROUND); in ssusb_mode_switch()
295 ssusb_set_mailbox(otg_sx, MTU3_ID_FLOAT); in ssusb_mode_switch()
296 ssusb_set_mailbox(otg_sx, MTU3_VBUS_VALID); in ssusb_mode_switch()
347 static int ssusb_role_sw_register(struct otg_switch_mtk *otg_sx) in ssusb_role_sw_register() argument
351 container_of(otg_sx, struct ssusb_mtk, otg_switch); in ssusb_role_sw_register()
353 if (!otg_sx->role_sw_used) in ssusb_role_sw_register()
359 otg_sx->role_sw = usb_role_switch_register(ssusb->dev, &role_sx_desc); in ssusb_role_sw_register()
361 return PTR_ERR_OR_ZERO(otg_sx->role_sw); in ssusb_role_sw_register()
366 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_otg_switch_init() local
369 INIT_WORK(&otg_sx->id_work, ssusb_id_work); in ssusb_otg_switch_init()
370 INIT_WORK(&otg_sx->vbus_work, ssusb_vbus_work); in ssusb_otg_switch_init()
372 if (otg_sx->manual_drd_enabled) in ssusb_otg_switch_init()
374 else if (otg_sx->role_sw_used) in ssusb_otg_switch_init()
375 ret = ssusb_role_sw_register(otg_sx); in ssusb_otg_switch_init()
377 ret = ssusb_extcon_register(otg_sx); in ssusb_otg_switch_init()
384 struct otg_switch_mtk *otg_sx = &ssusb->otg_switch; in ssusb_otg_switch_exit() local
386 cancel_work_sync(&otg_sx->id_work); in ssusb_otg_switch_exit()
387 cancel_work_sync(&otg_sx->vbus_work); in ssusb_otg_switch_exit()
388 usb_role_switch_unregister(otg_sx->role_sw); in ssusb_otg_switch_exit()