Lines Matching refs:rport
415 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_init() local
419 mutex_lock(&rport->mutex); in rockchip_usb2phy_init()
421 if (rport->port_id == USB2PHY_PORT_OTG) { in rockchip_usb2phy_init()
422 if (rport->mode != USB_DR_MODE_HOST && in rockchip_usb2phy_init()
423 rport->mode != USB_DR_MODE_UNKNOWN) { in rockchip_usb2phy_init()
426 &rport->port_cfg->bvalid_det_clr, in rockchip_usb2phy_init()
432 &rport->port_cfg->bvalid_det_en, in rockchip_usb2phy_init()
437 schedule_delayed_work(&rport->otg_sm_work, in rockchip_usb2phy_init()
441 dev_dbg(&rport->phy->dev, "mode %d\n", rport->mode); in rockchip_usb2phy_init()
443 } else if (rport->port_id == USB2PHY_PORT_HOST) { in rockchip_usb2phy_init()
446 &rport->port_cfg->ls_det_clr, true); in rockchip_usb2phy_init()
451 &rport->port_cfg->ls_det_en, true); in rockchip_usb2phy_init()
455 schedule_delayed_work(&rport->sm_work, SCHEDULE_DELAY); in rockchip_usb2phy_init()
459 mutex_unlock(&rport->mutex); in rockchip_usb2phy_init()
465 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_power_on() local
470 dev_dbg(&rport->phy->dev, "port power on\n"); in rockchip_usb2phy_power_on()
472 if (!rport->suspended) in rockchip_usb2phy_power_on()
479 ret = property_enable(base, &rport->port_cfg->phy_sus, false); in rockchip_usb2phy_power_on()
486 rport->suspended = false; in rockchip_usb2phy_power_on()
492 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_power_off() local
497 dev_dbg(&rport->phy->dev, "port power off\n"); in rockchip_usb2phy_power_off()
499 if (rport->suspended) in rockchip_usb2phy_power_off()
502 ret = property_enable(base, &rport->port_cfg->phy_sus, true); in rockchip_usb2phy_power_off()
506 rport->suspended = true; in rockchip_usb2phy_power_off()
514 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_exit() local
516 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_exit()
517 rport->mode != USB_DR_MODE_HOST && in rockchip_usb2phy_exit()
518 rport->mode != USB_DR_MODE_UNKNOWN) { in rockchip_usb2phy_exit()
519 cancel_delayed_work_sync(&rport->otg_sm_work); in rockchip_usb2phy_exit()
520 cancel_delayed_work_sync(&rport->chg_work); in rockchip_usb2phy_exit()
521 } else if (rport->port_id == USB2PHY_PORT_HOST) in rockchip_usb2phy_exit()
522 cancel_delayed_work_sync(&rport->sm_work); in rockchip_usb2phy_exit()
537 struct rockchip_usb2phy_port *rport = in rockchip_usb2phy_otg_sm_work() local
540 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_otg_sm_work()
545 if (rport->utmi_avalid) in rockchip_usb2phy_otg_sm_work()
547 &rport->port_cfg->utmi_avalid); in rockchip_usb2phy_otg_sm_work()
550 &rport->port_cfg->utmi_bvalid); in rockchip_usb2phy_otg_sm_work()
555 dev_dbg(&rport->phy->dev, "%s otg sm work\n", in rockchip_usb2phy_otg_sm_work()
556 usb_otg_state_string(rport->state)); in rockchip_usb2phy_otg_sm_work()
558 switch (rport->state) { in rockchip_usb2phy_otg_sm_work()
560 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
562 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
566 dev_dbg(&rport->phy->dev, "usb otg host connect\n"); in rockchip_usb2phy_otg_sm_work()
567 rport->state = OTG_STATE_A_HOST; in rockchip_usb2phy_otg_sm_work()
568 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
571 dev_dbg(&rport->phy->dev, "vbus_attach\n"); in rockchip_usb2phy_otg_sm_work()
574 schedule_delayed_work(&rport->chg_work, 0); in rockchip_usb2phy_otg_sm_work()
579 dev_dbg(&rport->phy->dev, "sdp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
580 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
581 rport->state = OTG_STATE_B_PERIPHERAL; in rockchip_usb2phy_otg_sm_work()
587 dev_dbg(&rport->phy->dev, "dcp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
588 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
594 dev_dbg(&rport->phy->dev, "cdp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
595 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
596 rport->state = OTG_STATE_B_PERIPHERAL; in rockchip_usb2phy_otg_sm_work()
614 if (rport->vbus_attached != vbus_attach) { in rockchip_usb2phy_otg_sm_work()
615 rport->vbus_attached = vbus_attach; in rockchip_usb2phy_otg_sm_work()
629 dev_dbg(&rport->phy->dev, "usb disconnect\n"); in rockchip_usb2phy_otg_sm_work()
632 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
634 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
640 dev_dbg(&rport->phy->dev, "usb otg host disconnect\n"); in rockchip_usb2phy_otg_sm_work()
641 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
642 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
650 schedule_delayed_work(&rport->otg_sm_work, delay); in rockchip_usb2phy_otg_sm_work()
700 struct rockchip_usb2phy_port *rport = in rockchip_chg_detect_work() local
702 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_chg_detect_work()
707 dev_dbg(&rport->phy->dev, "chg detection work state = %d\n", in rockchip_chg_detect_work()
711 if (!rport->suspended) in rockchip_chg_detect_work()
712 rockchip_usb2phy_power_off(rport->phy); in rockchip_chg_detect_work()
779 rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work); in rockchip_chg_detect_work()
780 dev_info(&rport->phy->dev, "charger = %s\n", in rockchip_chg_detect_work()
787 schedule_delayed_work(&rport->chg_work, delay); in rockchip_chg_detect_work()
805 struct rockchip_usb2phy_port *rport = in rockchip_usb2phy_sm_work() local
807 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_sm_work()
808 unsigned int sh = rport->port_cfg->utmi_hstdet.bitend - in rockchip_usb2phy_sm_work()
809 rport->port_cfg->utmi_hstdet.bitstart + 1; in rockchip_usb2phy_sm_work()
814 mutex_lock(&rport->mutex); in rockchip_usb2phy_sm_work()
816 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_ls.offset, &ul); in rockchip_usb2phy_sm_work()
820 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_hstdet.offset, &uhd); in rockchip_usb2phy_sm_work()
824 uhd_mask = GENMASK(rport->port_cfg->utmi_hstdet.bitend, in rockchip_usb2phy_sm_work()
825 rport->port_cfg->utmi_hstdet.bitstart); in rockchip_usb2phy_sm_work()
826 ul_mask = GENMASK(rport->port_cfg->utmi_ls.bitend, in rockchip_usb2phy_sm_work()
827 rport->port_cfg->utmi_ls.bitstart); in rockchip_usb2phy_sm_work()
830 state = ((uhd & uhd_mask) >> rport->port_cfg->utmi_hstdet.bitstart) | in rockchip_usb2phy_sm_work()
831 (((ul & ul_mask) >> rport->port_cfg->utmi_ls.bitstart) << sh); in rockchip_usb2phy_sm_work()
835 dev_dbg(&rport->phy->dev, "HS online\n"); in rockchip_usb2phy_sm_work()
847 if (!rport->suspended) { in rockchip_usb2phy_sm_work()
849 dev_dbg(&rport->phy->dev, "FS/LS online\n"); in rockchip_usb2phy_sm_work()
854 if (rport->suspended) { in rockchip_usb2phy_sm_work()
855 dev_dbg(&rport->phy->dev, "Connected\n"); in rockchip_usb2phy_sm_work()
856 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_sm_work()
857 rport->suspended = false; in rockchip_usb2phy_sm_work()
860 dev_dbg(&rport->phy->dev, "FS/LS online\n"); in rockchip_usb2phy_sm_work()
864 if (!rport->suspended) { in rockchip_usb2phy_sm_work()
865 dev_dbg(&rport->phy->dev, "Disconnected\n"); in rockchip_usb2phy_sm_work()
866 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_sm_work()
867 rport->suspended = true; in rockchip_usb2phy_sm_work()
874 property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true); in rockchip_usb2phy_sm_work()
875 property_enable(rphy->grf, &rport->port_cfg->ls_det_en, true); in rockchip_usb2phy_sm_work()
881 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
884 dev_dbg(&rport->phy->dev, "unknown phy state\n"); in rockchip_usb2phy_sm_work()
889 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
890 schedule_delayed_work(&rport->sm_work, SCHEDULE_DELAY); in rockchip_usb2phy_sm_work()
895 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_linestate_irq() local
896 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_linestate_irq()
898 if (!property_enabled(rphy->grf, &rport->port_cfg->ls_det_st)) in rockchip_usb2phy_linestate_irq()
901 mutex_lock(&rport->mutex); in rockchip_usb2phy_linestate_irq()
904 property_enable(rphy->grf, &rport->port_cfg->ls_det_en, false); in rockchip_usb2phy_linestate_irq()
905 property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true); in rockchip_usb2phy_linestate_irq()
907 mutex_unlock(&rport->mutex); in rockchip_usb2phy_linestate_irq()
914 if (rport->suspended && rport->port_id == USB2PHY_PORT_HOST) in rockchip_usb2phy_linestate_irq()
915 rockchip_usb2phy_sm_work(&rport->sm_work.work); in rockchip_usb2phy_linestate_irq()
922 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_bvalid_irq() local
923 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_bvalid_irq()
925 if (!property_enabled(rphy->grf, &rport->port_cfg->bvalid_det_st)) in rockchip_usb2phy_bvalid_irq()
928 mutex_lock(&rport->mutex); in rockchip_usb2phy_bvalid_irq()
931 property_enable(rphy->grf, &rport->port_cfg->bvalid_det_clr, true); in rockchip_usb2phy_bvalid_irq()
933 mutex_unlock(&rport->mutex); in rockchip_usb2phy_bvalid_irq()
935 rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work); in rockchip_usb2phy_bvalid_irq()
942 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_otg_mux_irq() local
943 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_otg_mux_irq()
945 if (property_enabled(rphy->grf, &rport->port_cfg->bvalid_det_st)) in rockchip_usb2phy_otg_mux_irq()
952 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_host_port_init() argument
957 rport->port_id = USB2PHY_PORT_HOST; in rockchip_usb2phy_host_port_init()
958 rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_host_port_init()
959 rport->suspended = true; in rockchip_usb2phy_host_port_init()
961 mutex_init(&rport->mutex); in rockchip_usb2phy_host_port_init()
962 INIT_DELAYED_WORK(&rport->sm_work, rockchip_usb2phy_sm_work); in rockchip_usb2phy_host_port_init()
964 rport->ls_irq = of_irq_get_byname(child_np, "linestate"); in rockchip_usb2phy_host_port_init()
965 if (rport->ls_irq < 0) { in rockchip_usb2phy_host_port_init()
967 return rport->ls_irq; in rockchip_usb2phy_host_port_init()
970 ret = devm_request_threaded_irq(rphy->dev, rport->ls_irq, NULL, in rockchip_usb2phy_host_port_init()
973 "rockchip_usb2phy", rport); in rockchip_usb2phy_host_port_init()
985 struct rockchip_usb2phy_port *rport = in rockchip_otg_event() local
988 schedule_delayed_work(&rport->otg_sm_work, OTG_SCHEDULE_DELAY); in rockchip_otg_event()
994 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_otg_port_init() argument
999 rport->port_id = USB2PHY_PORT_OTG; in rockchip_usb2phy_otg_port_init()
1000 rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_otg_port_init()
1001 rport->state = OTG_STATE_UNDEFINED; in rockchip_usb2phy_otg_port_init()
1009 rport->suspended = true; in rockchip_usb2phy_otg_port_init()
1010 rport->vbus_attached = false; in rockchip_usb2phy_otg_port_init()
1012 mutex_init(&rport->mutex); in rockchip_usb2phy_otg_port_init()
1014 rport->mode = of_usb_get_dr_mode_by_phy(child_np, -1); in rockchip_usb2phy_otg_port_init()
1015 if (rport->mode == USB_DR_MODE_HOST || in rockchip_usb2phy_otg_port_init()
1016 rport->mode == USB_DR_MODE_UNKNOWN) { in rockchip_usb2phy_otg_port_init()
1021 INIT_DELAYED_WORK(&rport->chg_work, rockchip_chg_detect_work); in rockchip_usb2phy_otg_port_init()
1022 INIT_DELAYED_WORK(&rport->otg_sm_work, rockchip_usb2phy_otg_sm_work); in rockchip_usb2phy_otg_port_init()
1024 rport->utmi_avalid = in rockchip_usb2phy_otg_port_init()
1032 rport->otg_mux_irq = of_irq_get_byname(child_np, "otg-mux"); in rockchip_usb2phy_otg_port_init()
1033 if (rport->otg_mux_irq > 0) { in rockchip_usb2phy_otg_port_init()
1034 ret = devm_request_threaded_irq(rphy->dev, rport->otg_mux_irq, in rockchip_usb2phy_otg_port_init()
1039 rport); in rockchip_usb2phy_otg_port_init()
1046 rport->bvalid_irq = of_irq_get_byname(child_np, "otg-bvalid"); in rockchip_usb2phy_otg_port_init()
1047 if (rport->bvalid_irq < 0) { in rockchip_usb2phy_otg_port_init()
1049 ret = rport->bvalid_irq; in rockchip_usb2phy_otg_port_init()
1053 ret = devm_request_threaded_irq(rphy->dev, rport->bvalid_irq, in rockchip_usb2phy_otg_port_init()
1058 rport); in rockchip_usb2phy_otg_port_init()
1067 rport->event_nb.notifier_call = rockchip_otg_event; in rockchip_usb2phy_otg_port_init()
1070 EXTCON_USB_HOST, &rport->event_nb); in rockchip_usb2phy_otg_port_init()
1167 struct rockchip_usb2phy_port *rport = &rphy->ports[index]; in rockchip_usb2phy_probe() local
1182 rport->phy = phy; in rockchip_usb2phy_probe()
1183 phy_set_drvdata(rport->phy, rport); in rockchip_usb2phy_probe()
1187 ret = rockchip_usb2phy_host_port_init(rphy, rport, in rockchip_usb2phy_probe()
1192 ret = rockchip_usb2phy_otg_port_init(rphy, rport, in rockchip_usb2phy_probe()