Lines Matching refs:rport
621 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_enable_id_irq() argument
626 ret = property_enable(rphy->grf, &rport->port_cfg->idfall_det_clr, true); in rockchip_usb2phy_enable_id_irq()
630 ret = property_enable(rphy->grf, &rport->port_cfg->idfall_det_en, en); in rockchip_usb2phy_enable_id_irq()
634 ret = property_enable(rphy->grf, &rport->port_cfg->idrise_det_clr, true); in rockchip_usb2phy_enable_id_irq()
638 ret = property_enable(rphy->grf, &rport->port_cfg->idrise_det_en, en); in rockchip_usb2phy_enable_id_irq()
645 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_enable_vbus_irq() argument
650 ret = property_enable(rphy->grf, &rport->port_cfg->bvalid_det_clr, true); in rockchip_usb2phy_enable_vbus_irq()
654 ret = property_enable(rphy->grf, &rport->port_cfg->bvalid_det_en, en); in rockchip_usb2phy_enable_vbus_irq()
660 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_enable_line_irq() argument
665 ret = property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true); in rockchip_usb2phy_enable_line_irq()
669 ret = property_enable(rphy->grf, &rport->port_cfg->ls_det_en, en); in rockchip_usb2phy_enable_line_irq()
675 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_enable_host_disc_irq() argument
680 ret = property_enable(rphy->grf, &rport->port_cfg->disfall_clr, true); in rockchip_usb2phy_enable_host_disc_irq()
684 ret = property_enable(rphy->grf, &rport->port_cfg->disfall_en, en); in rockchip_usb2phy_enable_host_disc_irq()
688 ret = property_enable(rphy->grf, &rport->port_cfg->disrise_clr, true); in rockchip_usb2phy_enable_host_disc_irq()
692 ret = property_enable(rphy->grf, &rport->port_cfg->disrise_en, en); in rockchip_usb2phy_enable_host_disc_irq()
697 static int rockchip_usb_bypass_uart(struct rockchip_usb2phy_port *rport, in rockchip_usb_bypass_uart() argument
700 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb_bypass_uart()
701 const struct usb2phy_reg *iomux = &rport->port_cfg->bypass_iomux; in rockchip_usb_bypass_uart()
705 mutex_lock(&rport->mutex); in rockchip_usb_bypass_uart()
707 if (en == property_enabled(base, &rport->port_cfg->bypass_sel)) { in rockchip_usb_bypass_uart()
708 dev_info(&rport->phy->dev, in rockchip_usb_bypass_uart()
713 dev_info(&rport->phy->dev, "bypass uart %s\n", en ? "on" : "off"); in rockchip_usb_bypass_uart()
727 ret |= property_enable(base, &rport->port_cfg->bypass_sel, in rockchip_usb_bypass_uart()
729 ret |= property_enable(base, &rport->port_cfg->bypass_dm_en, in rockchip_usb_bypass_uart()
737 ret |= property_enable(base, &rport->port_cfg->bypass_sel, in rockchip_usb_bypass_uart()
739 ret |= property_enable(base, &rport->port_cfg->bypass_dm_en, in rockchip_usb_bypass_uart()
748 mutex_unlock(&rport->mutex); in rockchip_usb_bypass_uart()
755 struct rockchip_usb2phy_port *rport = in rockchip_usb_bypass_uart_work() local
758 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb_bypass_uart_work()
762 mutex_lock(&rport->mutex); in rockchip_usb_bypass_uart_work()
764 iddig = property_enabled(rphy->grf, &rport->port_cfg->utmi_iddig); in rockchip_usb_bypass_uart_work()
766 if (rport->utmi_avalid) in rockchip_usb_bypass_uart_work()
767 vbus = property_enabled(rphy->grf, &rport->port_cfg->utmi_avalid); in rockchip_usb_bypass_uart_work()
769 vbus = property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid); in rockchip_usb_bypass_uart_work()
771 mutex_unlock(&rport->mutex); in rockchip_usb_bypass_uart_work()
780 ret = rockchip_usb_bypass_uart(rport, true); in rockchip_usb_bypass_uart_work()
782 dev_warn(&rport->phy->dev, in rockchip_usb_bypass_uart_work()
785 schedule_delayed_work(&rport->bypass_uart_work, in rockchip_usb_bypass_uart_work()
792 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_init() local
797 mutex_lock(&rport->mutex); in rockchip_usb2phy_init()
799 if (rport->sel_pipe_phystatus) in rockchip_usb2phy_init()
801 &rport->port_cfg->pipe_phystatus, true); in rockchip_usb2phy_init()
803 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_init()
804 (rport->mode == USB_DR_MODE_PERIPHERAL || in rockchip_usb2phy_init()
805 rport->mode == USB_DR_MODE_OTG)) { in rockchip_usb2phy_init()
807 if (rport->id_irq > 0 || rport->otg_mux_irq > 0 || in rockchip_usb2phy_init()
809 ret = rockchip_usb2phy_enable_id_irq(rphy, rport, in rockchip_usb2phy_init()
819 if ((rport->bvalid_irq > 0 || rport->otg_mux_irq > 0 || in rockchip_usb2phy_init()
820 rphy->irq > 0) && !rport->vbus_always_on) { in rockchip_usb2phy_init()
821 ret = rockchip_usb2phy_enable_vbus_irq(rphy, rport, in rockchip_usb2phy_init()
828 schedule_delayed_work(&rport->otg_sm_work, in rockchip_usb2phy_init()
829 rport->typec_vbus_det ? 0 : OTG_SCHEDULE_DELAY); in rockchip_usb2phy_init()
831 } else if (rport->port_id == USB2PHY_PORT_HOST) { in rockchip_usb2phy_init()
832 if (rport->port_cfg->disfall_en.offset) { in rockchip_usb2phy_init()
833 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_ls.offset, &ul); in rockchip_usb2phy_init()
836 ul_mask = GENMASK(rport->port_cfg->utmi_ls.bitend, in rockchip_usb2phy_init()
837 rport->port_cfg->utmi_ls.bitstart); in rockchip_usb2phy_init()
838 rport->host_disconnect = (ul & ul_mask) == 0 ? true : false; in rockchip_usb2phy_init()
839 ret = rockchip_usb2phy_enable_host_disc_irq(rphy, rport, true); in rockchip_usb2phy_init()
847 ret = rockchip_usb2phy_enable_line_irq(rphy, rport, true); in rockchip_usb2phy_init()
853 schedule_delayed_work(&rport->sm_work, SCHEDULE_DELAY); in rockchip_usb2phy_init()
857 mutex_unlock(&rport->mutex); in rockchip_usb2phy_init()
863 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_power_on() local
868 dev_dbg(&rport->phy->dev, "port power on\n"); in rockchip_usb2phy_power_on()
870 if (rport->bypass_uart_en) { in rockchip_usb2phy_power_on()
871 ret = rockchip_usb_bypass_uart(rport, false); in rockchip_usb2phy_power_on()
873 dev_warn(&rport->phy->dev, in rockchip_usb2phy_power_on()
879 mutex_lock(&rport->mutex); in rockchip_usb2phy_power_on()
881 if (!rport->suspended) { in rockchip_usb2phy_power_on()
890 ret = property_enable(base, &rport->port_cfg->phy_sus, false); in rockchip_usb2phy_power_on()
902 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_power_on()
912 rport->suspended = false; in rockchip_usb2phy_power_on()
915 mutex_unlock(&rport->mutex); in rockchip_usb2phy_power_on()
918 if (rport->bypass_uart_en) in rockchip_usb2phy_power_on()
919 schedule_delayed_work(&rport->bypass_uart_work, 0); in rockchip_usb2phy_power_on()
927 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_power_off() local
932 dev_dbg(&rport->phy->dev, "port power off\n"); in rockchip_usb2phy_power_off()
934 mutex_lock(&rport->mutex); in rockchip_usb2phy_power_off()
936 if (rport->suspended) { in rockchip_usb2phy_power_off()
941 ret = property_enable(base, &rport->port_cfg->phy_sus, true); in rockchip_usb2phy_power_off()
945 rport->suspended = true; in rockchip_usb2phy_power_off()
949 mutex_unlock(&rport->mutex); in rockchip_usb2phy_power_off()
952 if (rport->bypass_uart_en) in rockchip_usb2phy_power_off()
953 schedule_delayed_work(&rport->bypass_uart_work, 0); in rockchip_usb2phy_power_off()
960 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_exit() local
962 if (rport->port_id == USB2PHY_PORT_HOST) in rockchip_usb2phy_exit()
963 cancel_delayed_work_sync(&rport->sm_work); in rockchip_usb2phy_exit()
964 else if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_exit()
965 rport->otg_sm_work.work.func) in rockchip_usb2phy_exit()
966 flush_delayed_work(&rport->otg_sm_work); in rockchip_usb2phy_exit()
971 static int rockchip_set_vbus_power(struct rockchip_usb2phy_port *rport, in rockchip_set_vbus_power() argument
976 if (!rport->vbus) in rockchip_set_vbus_power()
979 if (en && !rport->vbus_enabled) { in rockchip_set_vbus_power()
980 ret = regulator_enable(rport->vbus); in rockchip_set_vbus_power()
982 dev_err(&rport->phy->dev, in rockchip_set_vbus_power()
984 } else if (!en && rport->vbus_enabled) { in rockchip_set_vbus_power()
985 ret = regulator_disable(rport->vbus); in rockchip_set_vbus_power()
989 rport->vbus_enabled = en; in rockchip_set_vbus_power()
997 struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy); in rockchip_usb2phy_set_mode() local
1002 if (rport->port_id != USB2PHY_PORT_OTG) in rockchip_usb2phy_set_mode()
1026 rockchip_set_vbus_power(rport, false); in rockchip_usb2phy_set_mode()
1029 if (rport->vbus_always_on) in rockchip_usb2phy_set_mode()
1031 rport->perip_connected = true; in rockchip_usb2phy_set_mode()
1036 ret = rockchip_set_vbus_power(rport, true); in rockchip_usb2phy_set_mode()
1038 dev_err(&rport->phy->dev, in rockchip_usb2phy_set_mode()
1045 if (rport->vbus_always_on) in rockchip_usb2phy_set_mode()
1047 rport->perip_connected = false; in rockchip_usb2phy_set_mode()
1053 dev_info(&rport->phy->dev, "illegal mode\n"); in rockchip_usb2phy_set_mode()
1058 rphy->phy_cfg->vbus_detect(rphy, &rport->port_cfg->vbus_det_en, in rockchip_usb2phy_set_mode()
1061 ret = property_enable(rphy->grf, &rport->port_cfg->vbus_det_en, in rockchip_usb2phy_set_mode()
1082 struct rockchip_usb2phy_port *rport = NULL; in otg_mode_show() local
1086 rport = &rphy->ports[index]; in otg_mode_show()
1087 if (rport->port_id == USB2PHY_PORT_OTG) in otg_mode_show()
1091 if (!rport) { in otg_mode_show()
1094 } else if (rport->port_id != USB2PHY_PORT_OTG) { in otg_mode_show()
1099 switch (rport->mode) { in otg_mode_show()
1118 struct rockchip_usb2phy_port *rport = NULL; in otg_mode_store() local
1125 rport = &rphy->ports[index]; in otg_mode_store()
1126 if (rport->port_id == USB2PHY_PORT_OTG) in otg_mode_store()
1130 if (!rport) { in otg_mode_store()
1134 } else if (rport->port_id != USB2PHY_PORT_OTG || in otg_mode_store()
1135 rport->mode == USB_DR_MODE_UNKNOWN) { in otg_mode_store()
1141 mutex_lock(&rport->mutex); in otg_mode_store()
1155 if (rport->mode == new_dr_mode) { in otg_mode_store()
1160 rport->mode = new_dr_mode; in otg_mode_store()
1162 switch (rport->mode) { in otg_mode_store()
1164 rockchip_usb2phy_set_mode(rport->phy, PHY_MODE_USB_HOST, 0); in otg_mode_store()
1165 property_enable(base, &rport->port_cfg->iddig_output, false); in otg_mode_store()
1166 property_enable(base, &rport->port_cfg->iddig_en, true); in otg_mode_store()
1169 rockchip_usb2phy_set_mode(rport->phy, PHY_MODE_USB_DEVICE, 0); in otg_mode_store()
1170 property_enable(base, &rport->port_cfg->iddig_output, true); in otg_mode_store()
1171 property_enable(base, &rport->port_cfg->iddig_en, true); in otg_mode_store()
1174 rockchip_usb2phy_set_mode(rport->phy, PHY_MODE_USB_OTG, 0); in otg_mode_store()
1175 property_enable(base, &rport->port_cfg->iddig_output, false); in otg_mode_store()
1176 property_enable(base, &rport->port_cfg->iddig_en, false); in otg_mode_store()
1183 mutex_unlock(&rport->mutex); in otg_mode_store()
1203 struct rockchip_usb2phy_port *rport = in rockchip_usb2phy_otg_sm_work() local
1206 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_otg_sm_work()
1211 mutex_lock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1213 if (rport->port_cfg->bvalid_grf_con.enable && rport->typec_vbus_det) in rockchip_usb2phy_otg_sm_work()
1214 rport->vbus_attached = in rockchip_usb2phy_otg_sm_work()
1215 property_enabled(rphy->grf, &rport->port_cfg->bvalid_grf_con); in rockchip_usb2phy_otg_sm_work()
1216 else if (rport->utmi_avalid) in rockchip_usb2phy_otg_sm_work()
1217 rport->vbus_attached = in rockchip_usb2phy_otg_sm_work()
1218 property_enabled(rphy->grf, &rport->port_cfg->utmi_avalid); in rockchip_usb2phy_otg_sm_work()
1220 rport->vbus_attached = in rockchip_usb2phy_otg_sm_work()
1221 property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid); in rockchip_usb2phy_otg_sm_work()
1226 dev_dbg(&rport->phy->dev, "%s otg sm work\n", in rockchip_usb2phy_otg_sm_work()
1227 usb_otg_state_string(rport->state)); in rockchip_usb2phy_otg_sm_work()
1229 switch (rport->state) { in rockchip_usb2phy_otg_sm_work()
1231 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
1232 if (!rport->vbus_attached) { in rockchip_usb2phy_otg_sm_work()
1233 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1234 if (!rport->dis_u2_susphy) in rockchip_usb2phy_otg_sm_work()
1235 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
1236 mutex_lock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1242 dev_dbg(&rport->phy->dev, "usb otg host connect\n"); in rockchip_usb2phy_otg_sm_work()
1243 rport->state = OTG_STATE_A_HOST; in rockchip_usb2phy_otg_sm_work()
1246 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1247 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
1249 } else if (rport->vbus_attached) { in rockchip_usb2phy_otg_sm_work()
1250 dev_dbg(&rport->phy->dev, "vbus_attach\n"); in rockchip_usb2phy_otg_sm_work()
1253 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1254 schedule_delayed_work(&rport->chg_work, 0); in rockchip_usb2phy_otg_sm_work()
1259 dev_dbg(&rport->phy->dev, "sdp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
1260 wake_lock(&rport->wakelock); in rockchip_usb2phy_otg_sm_work()
1262 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1263 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
1264 mutex_lock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1265 rport->state = OTG_STATE_B_PERIPHERAL; in rockchip_usb2phy_otg_sm_work()
1266 rport->perip_connected = true; in rockchip_usb2phy_otg_sm_work()
1270 dev_dbg(&rport->phy->dev, "dcp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
1275 dev_dbg(&rport->phy->dev, "cdp cable is connected\n"); in rockchip_usb2phy_otg_sm_work()
1276 wake_lock(&rport->wakelock); in rockchip_usb2phy_otg_sm_work()
1278 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1279 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_otg_sm_work()
1280 mutex_lock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1281 rport->state = OTG_STATE_B_PERIPHERAL; in rockchip_usb2phy_otg_sm_work()
1282 rport->perip_connected = true; in rockchip_usb2phy_otg_sm_work()
1295 rport->perip_connected = false; in rockchip_usb2phy_otg_sm_work()
1296 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1297 if (!rport->dis_u2_susphy) in rockchip_usb2phy_otg_sm_work()
1298 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_otg_sm_work()
1299 mutex_lock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1308 dev_dbg(&rport->phy->dev, "usb otg host connect\n"); in rockchip_usb2phy_otg_sm_work()
1309 rport->state = OTG_STATE_A_HOST; in rockchip_usb2phy_otg_sm_work()
1312 rport->perip_connected = false; in rockchip_usb2phy_otg_sm_work()
1314 wake_unlock(&rport->wakelock); in rockchip_usb2phy_otg_sm_work()
1315 } else if (!rport->vbus_attached) { in rockchip_usb2phy_otg_sm_work()
1316 dev_dbg(&rport->phy->dev, "usb disconnect\n"); in rockchip_usb2phy_otg_sm_work()
1317 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
1318 rport->perip_connected = false; in rockchip_usb2phy_otg_sm_work()
1322 wake_unlock(&rport->wakelock); in rockchip_usb2phy_otg_sm_work()
1327 dev_dbg(&rport->phy->dev, "usb otg host disconnect\n"); in rockchip_usb2phy_otg_sm_work()
1328 rport->state = OTG_STATE_B_IDLE; in rockchip_usb2phy_otg_sm_work()
1331 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1336 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1340 if (extcon_get_state(rphy->edev, cable) != rport->vbus_attached) { in rockchip_usb2phy_otg_sm_work()
1342 cable, rport->vbus_attached); in rockchip_usb2phy_otg_sm_work()
1344 if (!rport->vbus_attached) in rockchip_usb2phy_otg_sm_work()
1346 } else if (rport->state == OTG_STATE_A_HOST && in rockchip_usb2phy_otg_sm_work()
1360 rport->perip_connected)) { in rockchip_usb2phy_otg_sm_work()
1363 rport->perip_connected); in rockchip_usb2phy_otg_sm_work()
1367 schedule_delayed_work(&rport->otg_sm_work, delay); in rockchip_usb2phy_otg_sm_work()
1369 mutex_unlock(&rport->mutex); in rockchip_usb2phy_otg_sm_work()
1419 struct rockchip_usb2phy_port *rport = in rockchip_chg_detect_work() local
1421 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_chg_detect_work()
1429 dev_dbg(&rport->phy->dev, "chg detection work state = %d\n", in rockchip_chg_detect_work()
1442 mutex_lock(&rport->mutex); in rockchip_chg_detect_work()
1444 phy_sus_reg = &rport->port_cfg->phy_sus; in rockchip_chg_detect_work()
1448 dev_err(&rport->phy->dev, in rockchip_chg_detect_work()
1451 mutex_unlock(&rport->mutex); in rockchip_chg_detect_work()
1533 rport->port_cfg->phy_sus.offset) in rockchip_chg_detect_work()
1537 phy_sus_reg = &rport->port_cfg->phy_sus; in rockchip_chg_detect_work()
1542 dev_err(&rport->phy->dev, in rockchip_chg_detect_work()
1545 mutex_unlock(&rport->mutex); in rockchip_chg_detect_work()
1546 rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work); in rockchip_chg_detect_work()
1547 dev_dbg(&rport->phy->dev, "charger = %s\n", in rockchip_chg_detect_work()
1551 mutex_unlock(&rport->mutex); in rockchip_chg_detect_work()
1560 schedule_delayed_work(&rport->chg_work, delay); in rockchip_chg_detect_work()
1578 struct rockchip_usb2phy_port *rport = in rockchip_usb2phy_sm_work() local
1580 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_sm_work()
1585 if (!rport->port_cfg->utmi_ls.offset || in rockchip_usb2phy_sm_work()
1586 (!rport->port_cfg->utmi_hstdet.offset && in rockchip_usb2phy_sm_work()
1587 !rport->port_cfg->disfall_en.offset)) { in rockchip_usb2phy_sm_work()
1588 dev_dbg(&rport->phy->dev, "some property may not be specified\n"); in rockchip_usb2phy_sm_work()
1592 mutex_lock(&rport->mutex); in rockchip_usb2phy_sm_work()
1594 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_ls.offset, &ul); in rockchip_usb2phy_sm_work()
1598 ul_mask = GENMASK(rport->port_cfg->utmi_ls.bitend, in rockchip_usb2phy_sm_work()
1599 rport->port_cfg->utmi_ls.bitstart); in rockchip_usb2phy_sm_work()
1601 if (rport->port_cfg->utmi_hstdet.offset) { in rockchip_usb2phy_sm_work()
1602 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_hstdet.offset, &uhd); in rockchip_usb2phy_sm_work()
1606 uhd_mask = GENMASK(rport->port_cfg->utmi_hstdet.bitend, in rockchip_usb2phy_sm_work()
1607 rport->port_cfg->utmi_hstdet.bitstart); in rockchip_usb2phy_sm_work()
1609 sh = rport->port_cfg->utmi_hstdet.bitend - in rockchip_usb2phy_sm_work()
1610 rport->port_cfg->utmi_hstdet.bitstart + 1; in rockchip_usb2phy_sm_work()
1612 state = ((uhd & uhd_mask) >> rport->port_cfg->utmi_hstdet.bitstart) | in rockchip_usb2phy_sm_work()
1613 (((ul & ul_mask) >> rport->port_cfg->utmi_ls.bitstart) << sh); in rockchip_usb2phy_sm_work()
1615 state = ((ul & ul_mask) >> rport->port_cfg->utmi_ls.bitstart) << 1 | in rockchip_usb2phy_sm_work()
1616 rport->host_disconnect; in rockchip_usb2phy_sm_work()
1621 dev_dbg(&rport->phy->dev, "HS online\n"); in rockchip_usb2phy_sm_work()
1633 if (!rport->suspended) { in rockchip_usb2phy_sm_work()
1635 dev_dbg(&rport->phy->dev, "FS/LS online\n"); in rockchip_usb2phy_sm_work()
1640 if (rport->suspended) { in rockchip_usb2phy_sm_work()
1641 dev_dbg(&rport->phy->dev, "Connected\n"); in rockchip_usb2phy_sm_work()
1642 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
1643 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_sm_work()
1644 mutex_lock(&rport->mutex); in rockchip_usb2phy_sm_work()
1645 rport->suspended = false; in rockchip_usb2phy_sm_work()
1648 dev_dbg(&rport->phy->dev, "FS/LS online\n"); in rockchip_usb2phy_sm_work()
1652 if (rport->suspended) { in rockchip_usb2phy_sm_work()
1653 dev_dbg(&rport->phy->dev, "linestate is SE1, power on phy\n"); in rockchip_usb2phy_sm_work()
1654 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
1655 rockchip_usb2phy_power_on(rport->phy); in rockchip_usb2phy_sm_work()
1656 mutex_lock(&rport->mutex); in rockchip_usb2phy_sm_work()
1657 rport->suspended = false; in rockchip_usb2phy_sm_work()
1661 if (!rport->suspended) { in rockchip_usb2phy_sm_work()
1662 dev_dbg(&rport->phy->dev, "Disconnected\n"); in rockchip_usb2phy_sm_work()
1663 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
1664 rockchip_usb2phy_power_off(rport->phy); in rockchip_usb2phy_sm_work()
1665 mutex_lock(&rport->mutex); in rockchip_usb2phy_sm_work()
1666 rport->suspended = true; in rockchip_usb2phy_sm_work()
1673 rockchip_usb2phy_enable_line_irq(rphy, rport, true); in rockchip_usb2phy_sm_work()
1679 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
1682 dev_dbg(&rport->phy->dev, "unknown phy state %d\n", state); in rockchip_usb2phy_sm_work()
1687 mutex_unlock(&rport->mutex); in rockchip_usb2phy_sm_work()
1688 schedule_delayed_work(&rport->sm_work, SCHEDULE_DELAY); in rockchip_usb2phy_sm_work()
1693 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_linestate_irq() local
1694 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_linestate_irq()
1696 if (!property_enabled(rphy->grf, &rport->port_cfg->ls_det_st) || in rockchip_usb2phy_linestate_irq()
1697 !property_enabled(rphy->grf, &rport->port_cfg->ls_det_en)) in rockchip_usb2phy_linestate_irq()
1700 dev_dbg(&rport->phy->dev, "linestate interrupt\n"); in rockchip_usb2phy_linestate_irq()
1702 mutex_lock(&rport->mutex); in rockchip_usb2phy_linestate_irq()
1705 rockchip_usb2phy_enable_line_irq(rphy, rport, false); in rockchip_usb2phy_linestate_irq()
1712 if (rport->port_id == USB2PHY_PORT_HOST && rport->port_cfg->disfall_en.offset) in rockchip_usb2phy_linestate_irq()
1713 rport->host_disconnect = false; in rockchip_usb2phy_linestate_irq()
1715 mutex_unlock(&rport->mutex); in rockchip_usb2phy_linestate_irq()
1722 if (rport->suspended && rport->port_id == USB2PHY_PORT_HOST) in rockchip_usb2phy_linestate_irq()
1723 rockchip_usb2phy_sm_work(&rport->sm_work.work); in rockchip_usb2phy_linestate_irq()
1730 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_bvalid_irq() local
1731 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_bvalid_irq()
1733 if (!property_enabled(rphy->grf, &rport->port_cfg->bvalid_det_st)) in rockchip_usb2phy_bvalid_irq()
1736 mutex_lock(&rport->mutex); in rockchip_usb2phy_bvalid_irq()
1739 property_enable(rphy->grf, &rport->port_cfg->bvalid_det_clr, true); in rockchip_usb2phy_bvalid_irq()
1741 mutex_unlock(&rport->mutex); in rockchip_usb2phy_bvalid_irq()
1743 if (rport->bypass_uart_en) in rockchip_usb2phy_bvalid_irq()
1744 rockchip_usb_bypass_uart(rport, false); in rockchip_usb2phy_bvalid_irq()
1746 if (rport->otg_sm_work.work.func) { in rockchip_usb2phy_bvalid_irq()
1747 cancel_delayed_work_sync(&rport->otg_sm_work); in rockchip_usb2phy_bvalid_irq()
1748 rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work); in rockchip_usb2phy_bvalid_irq()
1756 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_id_irq() local
1757 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_id_irq()
1760 if (!property_enabled(rphy->grf, &rport->port_cfg->idfall_det_st) && in rockchip_usb2phy_id_irq()
1761 !property_enabled(rphy->grf, &rport->port_cfg->idrise_det_st)) in rockchip_usb2phy_id_irq()
1764 mutex_lock(&rport->mutex); in rockchip_usb2phy_id_irq()
1767 if (property_enabled(rphy->grf, &rport->port_cfg->idfall_det_st)) { in rockchip_usb2phy_id_irq()
1768 property_enable(rphy->grf, &rport->port_cfg->idfall_det_clr, in rockchip_usb2phy_id_irq()
1771 if (!property_enabled(rphy->grf, &rport->port_cfg->utmi_iddig)) in rockchip_usb2phy_id_irq()
1773 } else if (property_enabled(rphy->grf, &rport->port_cfg->idrise_det_st)) { in rockchip_usb2phy_id_irq()
1774 property_enable(rphy->grf, &rport->port_cfg->idrise_det_clr, in rockchip_usb2phy_id_irq()
1785 rockchip_set_vbus_power(rport, cable_vbus_state); in rockchip_usb2phy_id_irq()
1787 mutex_unlock(&rport->mutex); in rockchip_usb2phy_id_irq()
1794 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_host_disc_irq() local
1795 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_host_disc_irq()
1797 if (!property_enabled(rphy->grf, &rport->port_cfg->disfall_st) && in rockchip_usb2phy_host_disc_irq()
1798 !property_enabled(rphy->grf, &rport->port_cfg->disrise_st)) in rockchip_usb2phy_host_disc_irq()
1801 mutex_lock(&rport->mutex); in rockchip_usb2phy_host_disc_irq()
1804 if (property_enabled(rphy->grf, &rport->port_cfg->disfall_st)) { in rockchip_usb2phy_host_disc_irq()
1805 property_enable(rphy->grf, &rport->port_cfg->disfall_clr, in rockchip_usb2phy_host_disc_irq()
1807 rport->host_disconnect = false; in rockchip_usb2phy_host_disc_irq()
1808 } else if (property_enabled(rphy->grf, &rport->port_cfg->disrise_st)) { in rockchip_usb2phy_host_disc_irq()
1809 property_enable(rphy->grf, &rport->port_cfg->disrise_clr, in rockchip_usb2phy_host_disc_irq()
1811 rport->host_disconnect = true; in rockchip_usb2phy_host_disc_irq()
1814 mutex_unlock(&rport->mutex); in rockchip_usb2phy_host_disc_irq()
1833 struct rockchip_usb2phy_port *rport; in rockchip_usb2phy_irq() local
1839 rport = &rphy->ports[index]; in rockchip_usb2phy_irq()
1840 if (!rport->phy) in rockchip_usb2phy_irq()
1847 if (rport->port_id == USB2PHY_PORT_HOST && in rockchip_usb2phy_irq()
1848 rport->port_cfg->disfall_en.offset) in rockchip_usb2phy_irq()
1849 ret |= rockchip_usb2phy_host_disc_irq(irq, rport); in rockchip_usb2phy_irq()
1852 ret |= rockchip_usb2phy_linestate_irq(irq, rport); in rockchip_usb2phy_irq()
1858 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_irq()
1859 rport->mode != USB_DR_MODE_UNKNOWN) { in rockchip_usb2phy_irq()
1860 if (rport->mode == USB_DR_MODE_HOST) { in rockchip_usb2phy_irq()
1870 &rport->port_cfg->iddig_en); in rockchip_usb2phy_irq()
1875 if (!rport->vbus_always_on) in rockchip_usb2phy_irq()
1876 ret |= rockchip_usb2phy_bvalid_irq(irq, rport); in rockchip_usb2phy_irq()
1878 ret |= rockchip_usb2phy_id_irq(irq, rport); in rockchip_usb2phy_irq()
1886 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_port_irq_init() argument
1903 rport->otg_mux_irq = of_irq_get_byname(child_np, "otg-mux"); in rockchip_usb2phy_port_irq_init()
1904 if (rport->otg_mux_irq > 0) { in rockchip_usb2phy_port_irq_init()
1905 ret = devm_request_threaded_irq(rphy->dev, rport->otg_mux_irq, in rockchip_usb2phy_port_irq_init()
1910 rport); in rockchip_usb2phy_port_irq_init()
1919 rport->ls_irq = of_irq_get_byname(child_np, "linestate"); in rockchip_usb2phy_port_irq_init()
1920 if (rport->ls_irq <= 0) { in rockchip_usb2phy_port_irq_init()
1925 ret = devm_request_threaded_irq(rphy->dev, rport->ls_irq, NULL, in rockchip_usb2phy_port_irq_init()
1928 "rockchip_usb2phy_ls", rport); in rockchip_usb2phy_port_irq_init()
1939 if (rport->port_id == USB2PHY_PORT_HOST || in rockchip_usb2phy_port_irq_init()
1940 rport->mode == USB_DR_MODE_HOST || in rockchip_usb2phy_port_irq_init()
1941 rport->mode == USB_DR_MODE_UNKNOWN) in rockchip_usb2phy_port_irq_init()
1945 if (!rport->vbus_always_on) { in rockchip_usb2phy_port_irq_init()
1946 rport->bvalid_irq = of_irq_get_byname(child_np, in rockchip_usb2phy_port_irq_init()
1948 if (rport->bvalid_irq <= 0) { in rockchip_usb2phy_port_irq_init()
1954 rport->bvalid_irq, in rockchip_usb2phy_port_irq_init()
1959 rport); in rockchip_usb2phy_port_irq_init()
1969 rport->id_irq = of_irq_get_byname(child_np, "otg-id"); in rockchip_usb2phy_port_irq_init()
1970 if (rport->id_irq <= 0) { in rockchip_usb2phy_port_irq_init()
1976 rport->id_irq, NULL, in rockchip_usb2phy_port_irq_init()
1980 rport); in rockchip_usb2phy_port_irq_init()
1991 static void rockchip_usb2phy_usb_bvalid_enable(struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_usb_bvalid_enable() argument
1994 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent); in rockchip_usb2phy_usb_bvalid_enable()
1995 const struct rockchip_usb2phy_port_cfg *cfg = rport->port_cfg; in rockchip_usb2phy_usb_bvalid_enable()
2007 struct rockchip_usb2phy_port *rport = typec_switch_get_drvdata(sw); in rockchip_usb2phy_orien_sw_set() local
2009 dev_dbg(&rport->phy->dev, "type-c orientation: %d\n", orien); in rockchip_usb2phy_orien_sw_set()
2011 mutex_lock(&rport->mutex); in rockchip_usb2phy_orien_sw_set()
2012 rockchip_usb2phy_usb_bvalid_enable(rport, orien != TYPEC_ORIENTATION_NONE); in rockchip_usb2phy_orien_sw_set()
2013 mutex_unlock(&rport->mutex); in rockchip_usb2phy_orien_sw_set()
2020 struct rockchip_usb2phy_port *rport) in rockchip_usb2phy_setup_orien_switch() argument
2025 sw_desc.drvdata = rport; in rockchip_usb2phy_setup_orien_switch()
2029 rport->sw = typec_switch_register(dev, &sw_desc); in rockchip_usb2phy_setup_orien_switch()
2030 if (IS_ERR(rport->sw)) { in rockchip_usb2phy_setup_orien_switch()
2032 PTR_ERR(rport->sw)); in rockchip_usb2phy_setup_orien_switch()
2033 return PTR_ERR(rport->sw); in rockchip_usb2phy_setup_orien_switch()
2041 struct rockchip_usb2phy_port *rport = data; in rockchip_usb2phy_orien_switch_unregister() local
2043 typec_switch_unregister(rport->sw); in rockchip_usb2phy_orien_switch_unregister()
2047 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_host_port_init() argument
2053 rport->port_id = USB2PHY_PORT_HOST; in rockchip_usb2phy_host_port_init()
2054 rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_host_port_init()
2057 rport->low_power_en = in rockchip_usb2phy_host_port_init()
2060 mutex_init(&rport->mutex); in rockchip_usb2phy_host_port_init()
2061 INIT_DELAYED_WORK(&rport->sm_work, rockchip_usb2phy_sm_work); in rockchip_usb2phy_host_port_init()
2063 ret = rockchip_usb2phy_port_irq_init(rphy, rport, child_np); in rockchip_usb2phy_host_port_init()
2074 ret = property_enable(base, &rport->port_cfg->phy_sus, true); in rockchip_usb2phy_host_port_init()
2077 rport->suspended = true; in rockchip_usb2phy_host_port_init()
2085 struct rockchip_usb2phy_port *rport = in rockchip_otg_event() local
2088 schedule_delayed_work(&rport->otg_sm_work, OTG_SCHEDULE_DELAY); in rockchip_otg_event()
2099 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_otg_port_init() argument
2106 rport->port_id = USB2PHY_PORT_OTG; in rockchip_usb2phy_otg_port_init()
2107 rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_otg_port_init()
2108 rport->state = OTG_STATE_UNDEFINED; in rockchip_usb2phy_otg_port_init()
2109 rport->vbus_attached = false; in rockchip_usb2phy_otg_port_init()
2110 rport->vbus_enabled = false; in rockchip_usb2phy_otg_port_init()
2111 rport->perip_connected = false; in rockchip_usb2phy_otg_port_init()
2112 rport->prev_iddig = true; in rockchip_usb2phy_otg_port_init()
2114 mutex_init(&rport->mutex); in rockchip_usb2phy_otg_port_init()
2117 rport->bypass_uart_en = in rockchip_usb2phy_otg_port_init()
2119 rport->vbus_always_on = in rockchip_usb2phy_otg_port_init()
2121 rport->utmi_avalid = in rockchip_usb2phy_otg_port_init()
2123 rport->dis_u2_susphy = in rockchip_usb2phy_otg_port_init()
2127 rport->low_power_en = in rockchip_usb2phy_otg_port_init()
2131 rport->typec_vbus_det = in rockchip_usb2phy_otg_port_init()
2134 rport->sel_pipe_phystatus = in rockchip_usb2phy_otg_port_init()
2137 if (rport->sel_pipe_phystatus) { in rockchip_usb2phy_otg_port_init()
2148 rport->vbus = devm_regulator_get_optional(&rport->phy->dev, "vbus"); in rockchip_usb2phy_otg_port_init()
2149 if (IS_ERR(rport->vbus)) { in rockchip_usb2phy_otg_port_init()
2150 ret = PTR_ERR(rport->vbus); in rockchip_usb2phy_otg_port_init()
2154 if (rport->mode == USB_DR_MODE_OTG) in rockchip_usb2phy_otg_port_init()
2155 dev_warn(&rport->phy->dev, "No vbus specified for otg port\n"); in rockchip_usb2phy_otg_port_init()
2156 rport->vbus = NULL; in rockchip_usb2phy_otg_port_init()
2159 rport->mode = of_usb_get_dr_mode_by_phy(child_np, -1); in rockchip_usb2phy_otg_port_init()
2160 iddig = property_enabled(rphy->grf, &rport->port_cfg->utmi_iddig); in rockchip_usb2phy_otg_port_init()
2161 if (rphy->edev_self && (rport->mode == USB_DR_MODE_HOST || in rockchip_usb2phy_otg_port_init()
2162 rport->mode == USB_DR_MODE_UNKNOWN || !iddig)) { in rockchip_usb2phy_otg_port_init()
2167 ret = rockchip_set_vbus_power(rport, true); in rockchip_usb2phy_otg_port_init()
2172 ret = rockchip_usb2phy_port_irq_init(rphy, rport, child_np); in rockchip_usb2phy_otg_port_init()
2180 ret = rockchip_usb2phy_setup_orien_switch(rphy, rport); in rockchip_usb2phy_otg_port_init()
2186 rport); in rockchip_usb2phy_otg_port_init()
2201 if (rport->port_cfg->bvalid_grf_sel.enable != 0) { in rockchip_usb2phy_otg_port_init()
2203 property_enable(base, &rport->port_cfg->bvalid_grf_sel, true); in rockchip_usb2phy_otg_port_init()
2205 property_enable(base, &rport->port_cfg->bvalid_grf_sel, false); in rockchip_usb2phy_otg_port_init()
2208 if (rport->vbus_always_on) in rockchip_usb2phy_otg_port_init()
2211 if (rport->vbus_always_on || rport->mode == USB_DR_MODE_HOST || in rockchip_usb2phy_otg_port_init()
2212 rport->mode == USB_DR_MODE_UNKNOWN) in rockchip_usb2phy_otg_port_init()
2215 wake_lock_init(&rport->wakelock, WAKE_LOCK_SUSPEND, "rockchip_otg"); in rockchip_usb2phy_otg_port_init()
2217 &rport->wakelock); in rockchip_usb2phy_otg_port_init()
2221 INIT_DELAYED_WORK(&rport->bypass_uart_work, in rockchip_usb2phy_otg_port_init()
2223 INIT_DELAYED_WORK(&rport->chg_work, rockchip_chg_detect_work); in rockchip_usb2phy_otg_port_init()
2224 INIT_DELAYED_WORK(&rport->otg_sm_work, rockchip_usb2phy_otg_sm_work); in rockchip_usb2phy_otg_port_init()
2227 rport->event_nb.notifier_call = rockchip_otg_event; in rockchip_usb2phy_otg_port_init()
2230 EXTCON_USB_HOST, &rport->event_nb); in rockchip_usb2phy_otg_port_init()
2243 ret = property_enable(base, &rport->port_cfg->phy_sus, true); in rockchip_usb2phy_otg_port_init()
2246 rport->suspended = true; in rockchip_usb2phy_otg_port_init()
2374 struct rockchip_usb2phy_port *rport = &rphy->ports[index]; in rockchip_usb2phy_probe() local
2389 rport->phy = phy; in rockchip_usb2phy_probe()
2390 phy_set_drvdata(rport->phy, rport); in rockchip_usb2phy_probe()
2394 ret = rockchip_usb2phy_host_port_init(rphy, rport, in rockchip_usb2phy_probe()
2399 ret = rockchip_usb2phy_otg_port_init(rphy, rport, in rockchip_usb2phy_probe()
2462 struct rockchip_usb2phy_port *rport, in rockchip_usb2phy_low_power_enable() argument
2467 if (!rport->low_power_en) in rockchip_usb2phy_low_power_enable()
2470 if (rport->port_id == USB2PHY_PORT_OTG) { in rockchip_usb2phy_low_power_enable()
2471 dev_info(&rport->phy->dev, "set otg port low power state %d\n", in rockchip_usb2phy_low_power_enable()
2473 ret = property_enable(rphy->grf, &rport->port_cfg->bypass_bc, in rockchip_usb2phy_low_power_enable()
2478 ret = property_enable(rphy->grf, &rport->port_cfg->bypass_otg, in rockchip_usb2phy_low_power_enable()
2483 ret = property_enable(rphy->grf, &rport->port_cfg->vbus_det_en, in rockchip_usb2phy_low_power_enable()
2485 } else if (rport->port_id == USB2PHY_PORT_HOST) { in rockchip_usb2phy_low_power_enable()
2486 dev_info(&rport->phy->dev, "set host port low power state %d\n", in rockchip_usb2phy_low_power_enable()
2489 ret = property_enable(rphy->grf, &rport->port_cfg->bypass_host, in rockchip_usb2phy_low_power_enable()
2980 struct rockchip_usb2phy_port *rport; in rockchip_usb2phy_pm_suspend() local
3000 rport = &rphy->ports[index]; in rockchip_usb2phy_pm_suspend()
3001 if (!rport->phy) in rockchip_usb2phy_pm_suspend()
3004 if (rport->port_cfg->port_ls_filter_con.enable) { in rockchip_usb2phy_pm_suspend()
3006 rport->port_cfg->port_ls_filter_con.offset, in rockchip_usb2phy_pm_suspend()
3007 rport->port_cfg->port_ls_filter_con.enable); in rockchip_usb2phy_pm_suspend()
3012 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_pm_suspend()
3013 (rport->id_irq > 0 || rphy->irq > 0)) { in rockchip_usb2phy_pm_suspend()
3014 mutex_lock(&rport->mutex); in rockchip_usb2phy_pm_suspend()
3015 rport->prev_iddig = property_enabled(rphy->grf, in rockchip_usb2phy_pm_suspend()
3016 &rport->port_cfg->utmi_iddig); in rockchip_usb2phy_pm_suspend()
3017 ret = rockchip_usb2phy_enable_id_irq(rphy, rport, in rockchip_usb2phy_pm_suspend()
3019 mutex_unlock(&rport->mutex); in rockchip_usb2phy_pm_suspend()
3027 if (rport->port_id == USB2PHY_PORT_OTG && wakeup_enable && in rockchip_usb2phy_pm_suspend()
3028 rport->bvalid_irq > 0) in rockchip_usb2phy_pm_suspend()
3029 enable_irq_wake(rport->bvalid_irq); in rockchip_usb2phy_pm_suspend()
3032 mutex_lock(&rport->mutex); in rockchip_usb2phy_pm_suspend()
3033 ret = rockchip_usb2phy_enable_line_irq(rphy, rport, true); in rockchip_usb2phy_pm_suspend()
3034 mutex_unlock(&rport->mutex); in rockchip_usb2phy_pm_suspend()
3040 if (wakeup_enable && rport->ls_irq > 0) in rockchip_usb2phy_pm_suspend()
3041 enable_irq_wake(rport->ls_irq); in rockchip_usb2phy_pm_suspend()
3044 rockchip_usb2phy_low_power_enable(rphy, rport, true); in rockchip_usb2phy_pm_suspend()
3057 struct rockchip_usb2phy_port *rport; in rockchip_usb2phy_pm_resume() local
3084 rport = &rphy->ports[index]; in rockchip_usb2phy_pm_resume()
3085 if (!rport->phy) in rockchip_usb2phy_pm_resume()
3088 if (rport->port_cfg->port_ls_filter_con.disable) { in rockchip_usb2phy_pm_resume()
3090 rport->port_cfg->port_ls_filter_con.offset, in rockchip_usb2phy_pm_resume()
3091 rport->port_cfg->port_ls_filter_con.disable); in rockchip_usb2phy_pm_resume()
3096 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_pm_resume()
3097 (rport->id_irq > 0 || rphy->irq > 0)) { in rockchip_usb2phy_pm_resume()
3098 mutex_lock(&rport->mutex); in rockchip_usb2phy_pm_resume()
3100 &rport->port_cfg->utmi_iddig); in rockchip_usb2phy_pm_resume()
3101 ret = rockchip_usb2phy_enable_id_irq(rphy, rport, in rockchip_usb2phy_pm_resume()
3103 mutex_unlock(&rport->mutex); in rockchip_usb2phy_pm_resume()
3110 if (iddig != rport->prev_iddig) { in rockchip_usb2phy_pm_resume()
3111 dev_dbg(&rport->phy->dev, in rockchip_usb2phy_pm_resume()
3113 rport->prev_iddig = iddig; in rockchip_usb2phy_pm_resume()
3120 ret = rockchip_set_vbus_power(rport, !iddig); in rockchip_usb2phy_pm_resume()
3127 if (rport->port_id == USB2PHY_PORT_OTG && in rockchip_usb2phy_pm_resume()
3128 (rport->mode == USB_DR_MODE_PERIPHERAL || in rockchip_usb2phy_pm_resume()
3129 rport->mode == USB_DR_MODE_OTG) && in rockchip_usb2phy_pm_resume()
3130 (rport->bvalid_irq > 0 || rport->otg_mux_irq > 0 || rphy->irq > 0) && in rockchip_usb2phy_pm_resume()
3131 !rport->vbus_always_on) { in rockchip_usb2phy_pm_resume()
3132 ret = rockchip_usb2phy_enable_vbus_irq(rphy, rport, in rockchip_usb2phy_pm_resume()
3140 if (property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid)) in rockchip_usb2phy_pm_resume()
3141 schedule_delayed_work(&rport->otg_sm_work, in rockchip_usb2phy_pm_resume()
3146 if (rport->port_id == USB2PHY_PORT_OTG && wakeup_enable && in rockchip_usb2phy_pm_resume()
3147 rport->bvalid_irq > 0) in rockchip_usb2phy_pm_resume()
3148 disable_irq_wake(rport->bvalid_irq); in rockchip_usb2phy_pm_resume()
3150 if (wakeup_enable && rport->ls_irq > 0) in rockchip_usb2phy_pm_resume()
3151 disable_irq_wake(rport->ls_irq); in rockchip_usb2phy_pm_resume()
3154 rockchip_usb2phy_low_power_enable(rphy, rport, false); in rockchip_usb2phy_pm_resume()