• Home
  • Raw
  • Download

Lines Matching refs:rphy

46785 +	int (*phy_tuning)(struct rockchip_usb2phy *rphy);
46786 + int (*vbus_detect)(struct rockchip_usb2phy *rphy, bool en);
46897 +static int rockchip_usb2phy_reset(struct rockchip_usb2phy *rphy)
46901 + ret = reset_control_assert(rphy->phy_reset);
46907 + ret = reset_control_deassert(rphy->phy_reset);
46918 struct rockchip_usb2phy *rphy =
46920 rockchip_usb2phy_clk480m_register(struct rockchip_usb2phy *rphy)
46922 struct device_node *node = rphy->dev->of_node;
46928 @@ -393,6 +512,8 @@ static int rockchip_usb2phy_extcon_register(struct rockchip_usb2phy *rphy)
46929 dev_err(rphy->dev, "failed to register extcon device\n");
46933 + rphy->edev_self = true;
46936 rphy->edev = edev;
46937 @@ -400,6 +521,177 @@ static int rockchip_usb2phy_extcon_register(struct rockchip_usb2phy *rphy)
46942 +static int rockchip_usb2phy_enable_id_irq(struct rockchip_usb2phy *rphy,
46948 + ret = property_enable(rphy->grf, &rport->port_cfg->idfall_det_clr, true);
46952 + ret = property_enable(rphy->grf, &rport->port_cfg->idfall_det_en, en);
46956 + ret = property_enable(rphy->grf, &rport->port_cfg->idrise_det_clr, true);
46960 + ret = property_enable(rphy->grf, &rport->port_cfg->idrise_det_en, en);
46966 +static int rockchip_usb2phy_enable_vbus_irq(struct rockchip_usb2phy *rphy,
46972 + ret = property_enable(rphy->grf, &rport->port_cfg->bvalid_det_clr, true);
46976 + ret = property_enable(rphy->grf, &rport->port_cfg->bvalid_det_en, en);
46981 +static int rockchip_usb2phy_enable_line_irq(struct rockchip_usb2phy *rphy,
46987 + ret = property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true);
46991 + ret = property_enable(rphy->grf, &rport->port_cfg->ls_det_en, en);
46996 +static int rockchip_usb2phy_enable_host_disc_irq(struct rockchip_usb2phy *rphy,
47002 + ret = property_enable(rphy->grf, &rport->port_cfg->disfall_clr, true);
47006 + ret = property_enable(rphy->grf, &rport->port_cfg->disfall_en, en);
47010 + ret = property_enable(rphy->grf, &rport->port_cfg->disrise_clr, true);
47014 + ret = property_enable(rphy->grf, &rport->port_cfg->disrise_en, en);
47022 + struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47024 + struct regmap *base = get_reg_base(rphy);
47056 + ret |= property_enable(rphy->grf, iomux, true);
47066 + ret |= property_enable(rphy->grf, iomux, false);
47080 + struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47086 + iddig = property_enabled(rphy->grf, &rport->port_cfg->utmi_iddig);
47089 + vbus = property_enabled(rphy->grf, &rport->port_cfg->utmi_avalid);
47091 + vbus = property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid);
47123 - ret = property_enable(rphy->grf,
47132 + rphy->irq > 0) {
47133 + ret = rockchip_usb2phy_enable_id_irq(rphy, rport,
47136 + dev_err(rphy->dev,
47142 - ret = property_enable(rphy->grf,
47148 + rphy->irq > 0) && !rport->vbus_always_on) {
47149 + ret = rockchip_usb2phy_enable_vbus_irq(rphy, rport,
47152 + dev_err(rphy->dev,
47166 - ret = property_enable(rphy->grf,
47172 + ret = rockchip_usb2phy_enable_host_disc_irq(rphy, rport, true);
47174 + dev_err(rphy->dev, "failed to enable disconnect irq\n");
47179 - ret = property_enable(rphy->grf,
47183 + ret = rockchip_usb2phy_enable_line_irq(rphy, rport, true);
47185 + dev_err(rphy->dev, "failed to enable linestate irq\n");
47213 ret = clk_prepare_enable(rphy->clk480m);
47231 + ret = rockchip_usb2phy_reset(rphy);
47272 clk_disable_unprepare(rphy->clk480m);
47331 + struct rockchip_usb2phy *rphy = dev_get_drvdata(phy->dev.parent);
47348 + extcon_set_state_sync(rphy->edev, EXTCON_USB_VBUS_EN, false);
47350 + extcon_set_state(rphy->edev, EXTCON_USB, true);
47363 + extcon_set_state_sync(rphy->edev, EXTCON_USB_VBUS_EN, true);
47365 + extcon_set_state(rphy->edev, EXTCON_USB, false);
47376 + if (rphy->phy_cfg->vbus_detect)
47377 + rphy->phy_cfg->vbus_detect(rphy, vbus_det_en);
47379 + ret = property_enable(rphy->grf, &rport->port_cfg->vbus_det_en,
47399 + struct rockchip_usb2phy *rphy = dev_get_drvdata(device);
47403 + for (index = 0; index < rphy->phy_cfg->num_ports; index++) {
47404 + rport = &rphy->ports[index];
47410 + dev_err(rphy->dev, "Fail to get otg port\n");
47413 + dev_err(rphy->dev, "No support otg\n");
47435 + struct rockchip_usb2phy *rphy = dev_get_drvdata(device);
47437 + struct regmap *base = get_reg_base(rphy);
47442 + for (index = 0; index < rphy->phy_cfg->num_ports; index++) {
47443 + rport = &rphy->ports[index];
47449 + dev_err(rphy->dev, "Fail to get otg port\n");
47454 + dev_err(rphy->dev, "No support otg\n");
47468 + dev_err(rphy->dev, "Error mode! Input 'otg' or 'host' or 'peripheral'\n");
47474 + dev_warn(rphy->dev, "Same as current mode\n");
47523 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47531 - vbus_attach = property_enabled(rphy->grf,
47535 + property_enabled(rphy->grf, &rport->port_cfg->bvalid_grf_con);
47538 + property_enabled(rphy->grf, &rport->port_cfg->utmi_avalid);
47541 + property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid);
47561 - if (extcon_get_state(rphy->edev, EXTCON_USB_HOST) > 0) {
47562 + if (extcon_get_state(rphy->edev, EXTCON_USB_HOST) > 0 ||
47563 + extcon_get_state(rphy->edev, EXTCON_USB_VBUS_EN) > 0) {
47566 + rphy->chg_state = USB_CHG_STATE_UNDEFINED;
47567 + rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
47574 switch (rphy->chg_state) {
47580 switch (rphy->chg_type) {
47622 rphy->chg_state = USB_CHG_STATE_UNDEFINED;
47623 rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
47629 - if (notify_charger && rphy->edev) {
47630 - extcon_set_state_sync(rphy->edev,
47633 - extcon_set_state_sync(rphy->edev,
47647 + if (extcon_get_state(rphy->edev, EXTCON_USB_HOST) > 0 ||
47648 + extcon_get_state(rphy->edev,
47652 rphy->chg_state = USB_CHG_STATE_UNDEFINED;
47653 rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
47663 + rphy->chg_state = USB_CHG_STATE_UNDEFINED;
47664 + rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
47671 if (extcon_get_state(rphy->edev, EXTCON_USB_HOST) == 0) {
47687 + if (extcon_get_state(rphy->edev, cable) != rport->vbus_attached) {
47688 + extcon_set_state_sync(rphy->edev,
47694 + extcon_get_state(rphy->edev, cable)) {
47701 + extcon_set_state_sync(rphy->edev, cable, false);
47705 + if (rphy->edev_self &&
47706 + (extcon_get_state(rphy->edev, EXTCON_USB) !=
47708 + extcon_set_state_sync(rphy->edev,
47711 + extcon_sync(rphy->edev, EXTCON_USB_HOST);
47722 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47723 struct regmap *base = get_reg_base(rphy);
47731 rphy->chg_state);
47741 switch (rphy->chg_state) {
47746 - property_enable(base, &rphy->phy_cfg->chg_det.opmode, false);
47751 + &rphy->phy_sus_cfg);
47761 + property_enable(base, &rphy->phy_cfg->chg_det.chg_mode, true);
47763 rockchip_chg_enable_dcd(rphy, true);
47764 rphy->chg_state = USB_CHG_STATE_WAIT_FOR_DCD;
47765 rphy->dcd_retries = 0;
47766 + rphy->primary_retries = 0;
47771 rphy->chg_state = USB_CHG_STATE_DETECTED;
47774 + if (rphy->primary_retries < 2) {
47776 + rockchip_chg_enable_dcd(rphy, false);
47778 + rockchip_chg_enable_primary_det(rphy,
47781 + rphy->chg_state =
47783 + rphy->primary_retries++;
47787 rphy->chg_type = POWER_SUPPLY_TYPE_USB;
47788 rphy->chg_state = USB_CHG_STATE_DETECTED;
47793 rphy->chg_state = USB_CHG_STATE_DETECTED;
47798 - property_enable(base, &rphy->phy_cfg->chg_det.opmode, true);
47799 + if (rphy->phy_cfg->chg_det.chg_mode.offset !=
47801 + property_enable(base, &rphy->phy_cfg->chg_det.chg_mode, false);
47807 + (rphy->phy_sus_cfg | (mask << BIT_WRITEABLE_SHIFT)));
47815 chg_to_string(rphy->chg_type));
47833 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47850 ret = regmap_read(rphy->grf, rport->port_cfg->utmi_ls.offset, &ul);
47854 - ret = regmap_read(rphy->grf, rport->port_cfg->utmi_hstdet.offset, &uhd);
47867 + ret = regmap_read(rphy->grf, rport->port_cfg->utmi_hstdet.offset, &uhd);
47910 - property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true);
47911 - property_enable(rphy->grf, &rport->port_cfg->ls_det_en, true);
47912 + rockchip_usb2phy_enable_line_irq(rphy, rport, true);
47926 if (!property_enabled(rphy->grf, &rport->port_cfg->ls_det_st))
47934 - property_enable(rphy->grf, &rport->port_cfg->ls_det_en, false);
47935 - property_enable(rphy->grf, &rport->port_cfg->ls_det_clr, true);
47936 + rockchip_usb2phy_enable_line_irq(rphy, rport, false);
47957 struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
47960 - if (property_enabled(rphy->grf, &rport->port_cfg->bvalid_det_st))
47963 + if (!property_enabled(rphy->grf, &rport->port_cfg->idfall_det_st) &&
47964 + !property_enabled(rphy->grf, &rport->port_cfg->idrise_det_st))
47970 + if (property_enabled(rphy->grf, &rport->port_cfg->idfall_det_st)) {
47971 + property_enable(rphy->grf, &rport->port_cfg->idfall_det_clr,
47974 + } else if (property_enabled(rphy->grf, &rport->port_cfg->idrise_det_st)) {
47975 + property_enable(rphy->grf, &rport->port_cfg->idrise_det_clr,
47980 + extcon_set_state(rphy->edev, EXTCON_USB_HOST, cable_vbus_state);
47981 + extcon_set_state(rphy->edev, EXTCON_USB_VBUS_EN, cable_vbus_state);
47983 + extcon_sync(rphy->edev, EXTCON_USB_HOST);
47984 + extcon_sync(rphy->edev, EXTCON_USB_VBUS_EN);
47993 -static int rockchip_usb2phy_host_port_init(struct rockchip_usb2phy *rphy,
48000 + struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
48003 - rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST];
48005 + if (!property_enabled(rphy->grf, &rport->port_cfg->disfall_st) &&
48006 + !property_enabled(rphy->grf, &rport->port_cfg->disrise_st))
48015 - dev_err(rphy->dev, "no linestate irq provided\n");
48018 + if (property_enabled(rphy->grf, &rport->port_cfg->disfall_st)) {
48019 + property_enable(rphy->grf, &rport->port_cfg->disfall_clr,
48022 + } else if (property_enabled(rphy->grf, &rport->port_cfg->disrise_st)) {
48023 + property_enable(rphy->grf, &rport->port_cfg->disrise_clr,
48028 - ret = devm_request_threaded_irq(rphy->dev, rport->ls_irq, NULL,
48033 - dev_err(rphy->dev, "failed to request linestate irq handle\n");
48059 -static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
48065 + struct rockchip_usb2phy *rphy = data;
48072 - rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG];
48074 + for (index = 0; index < rphy->phy_cfg->num_ports; index++) {
48075 + rport = &rphy->ports[index];
48115 + force_mode = property_enabled(rphy->grf,
48133 +static int rockchip_usb2phy_port_irq_init(struct rockchip_usb2phy *rphy,
48143 + if (rphy->irq > 0)
48156 @@ -1020,20 +1757,50 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
48162 dev_err(rphy->dev,
48169 - dev_err(rphy->dev, "no vbus valid irq provided\n");
48179 + dev_err(rphy->dev, "no linestate irq provided\n");
48183 + ret = devm_request_threaded_irq(rphy->dev, rport->ls_irq, NULL,
48188 + dev_err(rphy->dev, "failed to request linestate irq handle\n");
48207 + dev_err(rphy->dev, "no bvalid irq provided\n");
48211 - ret = devm_request_threaded_irq(rphy->dev, rport->bvalid_irq,
48212 + ret = devm_request_threaded_irq(rphy->dev,
48217 @@ -1042,187 +1809,1023 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
48219 dev_err(rphy->dev,
48226 - if (!IS_ERR(rphy->edev)) {
48229 + if (rphy->edev_self) {
48232 + dev_err(rphy->dev, "no otg id irq provided\n");
48236 - ret = devm_extcon_register_notifier(rphy->dev, rphy->edev,
48239 - dev_err(rphy->dev, "register USB HOST notifier failed\n");
48240 + ret = devm_request_threaded_irq(rphy->dev,
48247 + dev_err(rphy->dev,
48258 +static int rockchip_usb2phy_host_port_init(struct rockchip_usb2phy *rphy,
48266 - struct rockchip_usb2phy *rphy;
48272 - rphy = devm_kzalloc(dev, sizeof(*rphy), GFP_KERNEL);
48273 - if (!rphy)
48282 + struct regmap *base = get_reg_base(rphy);
48287 + rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST];
48289 - rphy->grf = syscon_node_to_regmap(dev->parent->of_node);
48290 - if (IS_ERR(rphy->grf))
48291 - return PTR_ERR(rphy->grf);
48297 - rphy->usbgrf =
48300 - if (IS_ERR(rphy->usbgrf))
48301 - return PTR_ERR(rphy->usbgrf);
48303 - rphy->usbgrf = NULL;
48312 + ret = rockchip_usb2phy_port_irq_init(rphy, rport, child_np);
48314 + dev_err(rphy->dev, "failed to init irq for host port\n");
48318 - rphy->dev = dev;
48320 - rphy->chg_state = USB_CHG_STATE_UNDEFINED;
48321 - rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
48322 - platform_set_drvdata(pdev, rphy);
48324 - ret = rockchip_usb2phy_extcon_register(rphy);
48339 - rphy->phy_cfg = &phy_cfgs[index];
48353 - if (!rphy->phy_cfg) {
48360 - rphy->clk = of_clk_get_by_name(np, "phyclk");
48361 - if (!IS_ERR(rphy->clk)) {
48365 +static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
48371 + struct regmap *base = get_reg_base(rphy);
48374 + rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG];
48412 + iddig = property_enabled(rphy->grf, &rport->port_cfg->utmi_iddig);
48413 + if (rphy->edev_self && (rport->mode == USB_DR_MODE_HOST ||
48416 + extcon_set_state(rphy->edev, EXTCON_USB, false);
48417 + extcon_set_state(rphy->edev, EXTCON_USB_HOST, true);
48418 + extcon_set_state(rphy->edev, EXTCON_USB_VBUS_EN, true);
48424 + ret = rockchip_usb2phy_port_irq_init(rphy, rport, child_np);
48426 + dev_err(rphy->dev, "failed to init irq for otg port\n");
48444 + if (!IS_ERR(rphy->edev)) {
48447 + ret = devm_extcon_register_notifier(rphy->dev, rphy->edev,
48450 + dev_err(rphy->dev, "register USB HOST notifier failed\n");
48479 + struct rockchip_usb2phy *rphy;
48487 + rphy = devm_kzalloc(dev, sizeof(*rphy), GFP_KERNEL);
48488 + if (!rphy)
48504 + rphy->phy_base = devm_ioremap_resource(dev, res);
48505 + if (IS_ERR(rphy->phy_base))
48506 + return PTR_ERR(rphy->phy_base);
48508 + rphy->grf = syscon_regmap_lookup_by_phandle(np,
48510 + if (IS_ERR(rphy->grf))
48511 + return PTR_ERR(rphy->grf);
48515 + rphy->grf = syscon_node_to_regmap(dev->parent->of_node);
48516 + if (IS_ERR(rphy->grf))
48517 + return PTR_ERR(rphy->grf);
48520 + rphy->usbgrf =
48523 + if (IS_ERR(rphy->usbgrf))
48524 + return PTR_ERR(rphy->usbgrf);
48526 + rphy->usbgrf = NULL;
48536 + rphy->dev = dev;
48538 + rphy->chg_state = USB_CHG_STATE_UNDEFINED;
48539 + rphy->chg_type = POWER_SUPPLY_TYPE_UNKNOWN;
48540 + rphy->edev_self = false;
48541 + rphy->irq = platform_get_irq(pdev, 0);
48542 + platform_set_drvdata(pdev, rphy);
48544 + ret = rockchip_usb2phy_extcon_register(rphy);
48552 + rphy->phy_cfg = &phy_cfgs[index];
48559 + if (!rphy->phy_cfg) {
48570 + rphy->phy_reset = devm_reset_control_get_optional(dev, "phy");
48571 + if (IS_ERR(rphy->phy_reset))
48572 + return PTR_ERR(rphy->phy_reset);
48574 + rphy->clk = of_clk_get_by_name(np, "phyclk");
48575 + if (!IS_ERR(rphy->clk)) {
48576 clk_prepare_enable(rphy->clk);
48579 rphy->clk = NULL;
48582 - ret = rockchip_usb2phy_clk480m_register(rphy);
48587 + if (rphy->phy_cfg->phy_tuning) {
48588 + ret = rphy->phy_cfg->phy_tuning(rphy);
48595 + struct rockchip_usb2phy_port *rport = &rphy->ports[index];
48615 + ret = rockchip_usb2phy_host_port_init(rphy, rport,
48620 + ret = rockchip_usb2phy_otg_port_init(rphy, rport,
48628 + if (++index >= rphy->phy_cfg->num_ports)
48646 + ret = rockchip_usb2phy_clk480m_register(rphy);
48652 + if (rphy->irq > 0) {
48653 + ret = devm_request_threaded_irq(rphy->dev, rphy->irq, NULL,
48657 + rphy);
48659 + dev_err(rphy->dev,
48666 + device_init_wakeup(rphy->dev, true);
48668 + device_init_wakeup(rphy->dev, false);
48677 + if (rphy->clk) {
48678 + clk_disable_unprepare(rphy->clk);
48679 + clk_put(rphy->clk);
48685 +rockchip_usb2phy_low_power_enable(struct rockchip_usb2phy *rphy,
48697 + ret = property_enable(rphy->grf, &rport->port_cfg->bypass_bc,
48702 + ret = property_enable(rphy->grf, &rport->port_cfg->bypass_otg,
48707 + ret = property_enable(rphy->grf, &rport->port_cfg->vbus_det_en,
48713 + ret = property_enable(rphy->grf, &rport->port_cfg->bypass_host,
48720 +static int rk312x_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48725 + ret = regmap_write(rphy->grf, 0x298, 0x00040000);
48732 +static int rk3228_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48737 + if (rphy->phy_cfg->reg == 0x760)
48738 + ret = regmap_write(rphy->grf, 0x76c, 0x00070004);
48743 +static int rk3308_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48748 + ret = regmap_write(rphy->grf, 0x0, 0x00070004);
48753 + ret = regmap_write(rphy->grf, 0x30, 0x00070004);
48758 + ret = regmap_write(rphy->grf, 0x18, 0x00040000);
48765 +static int rk3328_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48770 + ret = regmap_write(rphy->grf, 0x2c, 0xffff0400);
48775 + ret = regmap_write(rphy->grf, 0x0, 0x00070004);
48780 + ret = regmap_write(rphy->grf, 0x30, 0x00070004);
48785 + ret = regmap_write(rphy->grf, 0x18, 0x00040000);
48792 +static int rk3366_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48800 + ret |= regmap_write(rphy->grf, 0x0780, open_pre_emphasize);
48801 + ret |= regmap_write(rphy->grf, 0x079c, eye_height_tuning);
48802 + ret |= regmap_write(rphy->grf, 0x07b0, open_pre_emphasize);
48803 + ret |= regmap_write(rphy->grf, 0x07cc, eye_height_tuning);
48806 + ret |= regmap_write(rphy->grf, 0x078c, compensation_tuning);
48811 +static int rk3399_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48813 + struct device_node *node = rphy->dev->of_node;
48816 + if (rphy->phy_cfg->reg == 0xe450) {
48823 + ret |= regmap_write(rphy->grf, 0x4480,
48825 + ret |= regmap_write(rphy->grf, 0x44b4,
48834 + ret |= regmap_write(rphy->grf, 0x4500,
48836 + ret |= regmap_write(rphy->grf, 0x4534,
48843 + if (rphy->phy_cfg->reg == 0xe450) {
48848 + ret |= regmap_write(rphy->grf, 0x448c,
48852 + ret |= regmap_write(rphy->grf, 0x44b0,
48858 + ret |= regmap_write(rphy->grf, 0x4480,
48865 + ret |= regmap_write(rphy->grf, 0x450c,
48869 + ret |= regmap_write(rphy->grf, 0x4530,
48875 + ret |= regmap_write(rphy->grf, 0x4500,
48882 +static int rk3568_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48887 + reg = readl(rphy->phy_base + 0x30);
48889 + writel(reg & ~BIT(2), rphy->phy_base + 0x30);
48891 + reg = readl(rphy->phy_base);
48895 + writel(reg, rphy->phy_base);
48897 + reg = readl(rphy->phy_base + 0x0400);
48901 + writel(reg, rphy->phy_base + 0x0400);
48903 + if (rphy->phy_cfg->reg == 0xfe8a0000) {
48905 + reg = readl(rphy->phy_base + 0x30);
48908 + writel(reg, rphy->phy_base + 0x30);
48914 + ret |= regmap_write(rphy->grf, 0x0048, FILTER_COUNTER);
48920 + ret |= regmap_write(rphy->grf, 0x004c, FILTER_COUNTER);
48926 +static int rk3568_vbus_detect_control(struct rockchip_usb2phy *rphy, bool en)
48931 + reg = readl(rphy->phy_base + 0x3c);
48933 + writel(reg & ~BIT(7), rphy->phy_base + 0x3c);
48935 + reg = readl(rphy->phy_base + 0x3c);
48937 + writel(reg | BIT(7), rphy->phy_base + 0x3c);
48943 +static int rk3588_usb2phy_tuning(struct rockchip_usb2phy *rphy)
48948 + ret = regmap_write(rphy->grf, 0x0008,
48954 + ret = rockchip_usb2phy_reset(rphy);
48958 + if (rphy->phy_cfg->reg == 0x0000) {
48965 + ret |= regmap_write(rphy->grf, 0x000c,
48969 + ret |= regmap_write(rphy->grf, 0x0004,
48974 - struct rockchip_usb2phy_port *rport = &rphy->ports[index];
48977 + ret |= regmap_write(rphy->grf, 0x0008,
48985 + ret |= regmap_write(rphy->grf, 0x0010,
48987 + } else if (rphy->phy_cfg->reg == 0x4000) {
48994 + ret |= regmap_write(rphy->grf, 0x000c,
49003 + ret |= regmap_write(rphy->grf, 0x0004,
49007 + ret |= regmap_write(rphy->grf, 0x0008,
49011 + ret |= regmap_write(rphy->grf, 0x0010,
49013 + } else if (rphy->phy_cfg->reg == 0x8000) {
49020 + ret |= regmap_write(rphy->grf, 0x000c,
49024 + ret |= regmap_write(rphy->grf, 0x0004,
49028 + ret |= regmap_write(rphy->grf, 0x0008,
49030 + } else if (rphy->phy_cfg->reg == 0xc000) {
49037 + ret |= regmap_write(rphy->grf, 0x000c,
49041 + ret |= regmap_write(rphy->grf, 0x0004,
49045 + ret |= regmap_write(rphy->grf, 0x0008,
49055 + struct rockchip_usb2phy *rphy = dev_get_drvdata(dev);
49061 + if (device_may_wakeup(rphy->dev))
49064 + for (index = 0; index < rphy->phy_cfg->num_ports; index++) {
49065 + rport = &rphy->ports[index];
49070 + (rport->id_irq > 0 || rphy->irq > 0)) {
49072 + rport->prev_iddig = property_enabled(rphy->grf,
49074 + ret = rockchip_usb2phy_enable_id_irq(rphy, rport,
49078 + dev_err(rphy->dev,
49092 - ret = rockchip_usb2phy_host_port_init(rphy, rport,
49097 - ret = rockchip_usb2phy_otg_port_init(rphy, rport,
49103 + ret = rockchip_usb2phy_enable_line_irq(rphy, rport, true);
49106 + dev_err(rphy->dev, "failed to enable linestate irq\n");
49112 - if (++index >= rphy->phy_cfg->num_ports)
49118 + rockchip_usb2phy_low_power_enable(rphy, rport, true);
49129 - if (rphy->clk) {
49130 - clk_disable_unprepare(rphy->clk);
49131 - clk_put(rphy->clk);
49134 + struct rockchip_usb2phy *rphy = dev_get_drvdata(dev);
49141 + if (device_may_wakeup(rphy->dev))
49144 + if (rphy->phy_cfg->phy_tuning)
49145 + ret = rphy->phy_cfg->phy_tuning(rphy);
49147 + for (index = 0; index < rphy->phy_cfg->num_ports; index++) {
49148 + rport = &rphy->ports[index];
49153 + (rport->id_irq > 0 || rphy->irq > 0)) {
49155 + iddig = property_enabled(rphy->grf,
49157 + ret = rockchip_usb2phy_enable_id_irq(rphy, rport,
49161 + dev_err(rphy->dev,
49170 + extcon_set_state_sync(rphy->edev,
49173 + extcon_set_state_sync(rphy->edev,
49190 + rockchip_usb2phy_low_power_enable(rphy, rport, false);