Lines Matching refs:rphy
167 static inline struct regmap *get_reg_base(struct rockchip_usb2phy *rphy) in get_reg_base() argument
169 return !rphy->usbgrf_base ? rphy->grf_base : rphy->usbgrf_base; in get_reg_base()
213 static void rockchip_chg_enable_dcd(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_dcd() argument
216 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_dcd()
218 property_enable(base, &rphy->phy_cfg->chg_det.rdm_pdwn_en, en); in rockchip_chg_enable_dcd()
219 property_enable(base, &rphy->phy_cfg->chg_det.idp_src_en, en); in rockchip_chg_enable_dcd()
222 static void rockchip_chg_enable_primary_det(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_primary_det() argument
225 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_primary_det()
227 property_enable(base, &rphy->phy_cfg->chg_det.vdp_src_en, en); in rockchip_chg_enable_primary_det()
228 property_enable(base, &rphy->phy_cfg->chg_det.idm_sink_en, en); in rockchip_chg_enable_primary_det()
231 static void rockchip_chg_enable_secondary_det(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_secondary_det() argument
234 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_secondary_det()
236 property_enable(base, &rphy->phy_cfg->chg_det.vdm_src_en, en); in rockchip_chg_enable_secondary_det()
237 property_enable(base, &rphy->phy_cfg->chg_det.idp_sink_en, en); in rockchip_chg_enable_secondary_det()
240 static bool rockchip_chg_primary_det_retry(struct rockchip_usb2phy *rphy) in rockchip_chg_primary_det_retry() argument
243 struct regmap *base = get_reg_base(rphy); in rockchip_chg_primary_det_retry()
245 while (rphy->primary_retries--) { in rockchip_chg_primary_det_retry()
247 rockchip_chg_enable_primary_det(rphy, true); in rockchip_chg_primary_det_retry()
249 vout = property_enabled(base, &rphy->phy_cfg->chg_det.cp_det); in rockchip_chg_primary_det_retry()
254 rockchip_chg_enable_primary_det(rphy, false); in rockchip_chg_primary_det_retry()
262 struct rockchip_usb2phy *rphy; in rockchip_chg_get_type() local
277 rphy = dev_get_priv(udev); in rockchip_chg_get_type()
278 base = get_reg_base(rphy); in rockchip_chg_get_type()
279 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_chg_get_type()
294 property_enable(base, &rphy->phy_cfg->chg_det.opmode, false); in rockchip_chg_get_type()
296 rphy->dcd_retries = CHG_DCD_MAX_RETRIES; in rockchip_chg_get_type()
297 rphy->primary_retries = CHG_PRI_MAX_RETRIES; in rockchip_chg_get_type()
300 rockchip_chg_enable_dcd(rphy, true); in rockchip_chg_get_type()
302 while (rphy->dcd_retries--) { in rockchip_chg_get_type()
306 is_dcd = property_enabled(base, &rphy->phy_cfg->chg_det.dp_det); in rockchip_chg_get_type()
308 if (is_dcd || !rphy->dcd_retries) { in rockchip_chg_get_type()
313 rockchip_chg_enable_dcd(rphy, false); in rockchip_chg_get_type()
314 rockchip_chg_enable_primary_det(rphy, true); in rockchip_chg_get_type()
320 vout = property_enabled(base, &rphy->phy_cfg->chg_det.cp_det); in rockchip_chg_get_type()
321 rockchip_chg_enable_primary_det(rphy, false); in rockchip_chg_get_type()
324 rockchip_chg_enable_secondary_det(rphy, true); in rockchip_chg_get_type()
326 if (!rphy->dcd_retries) { in rockchip_chg_get_type()
335 vout = rockchip_chg_primary_det_retry(rphy); in rockchip_chg_get_type()
338 rockchip_chg_enable_secondary_det(rphy, true); in rockchip_chg_get_type()
348 vout = property_enabled(base, &rphy->phy_cfg->chg_det.dcp_det); in rockchip_chg_get_type()
350 rockchip_chg_enable_secondary_det(rphy, false); in rockchip_chg_get_type()
358 property_enable(base, &rphy->phy_cfg->chg_det.opmode, true); in rockchip_chg_get_type()
379 struct rockchip_usb2phy *rphy; in otg_phy_init() local
393 rphy = dev_get_priv(udev); in otg_phy_init()
394 base = get_reg_base(rphy); in otg_phy_init()
395 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in otg_phy_init()
398 if(rphy->phy_cfg->clkout_ctl.disable) in otg_phy_init()
399 property_enable(base, &rphy->phy_cfg->clkout_ctl, true); in otg_phy_init()
408 static int rockchip_usb2phy_reset(struct rockchip_usb2phy *rphy) in rockchip_usb2phy_reset() argument
412 if (rphy->phy_rst.dev) { in rockchip_usb2phy_reset()
413 ret = reset_assert(&rphy->phy_rst); in rockchip_usb2phy_reset()
421 ret = reset_deassert(&rphy->phy_rst); in rockchip_usb2phy_reset()
436 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_init() local
438 struct regmap *base = get_reg_base(rphy); in rockchip_usb2phy_init()
441 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_init()
443 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_init()
460 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_exit() local
462 struct regmap *base = get_reg_base(rphy); in rockchip_usb2phy_exit()
465 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_exit()
467 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_exit()
481 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_power_on() local
482 struct udevice *vbus = rphy->vbus_supply[phy->id]; in rockchip_usb2phy_power_on()
499 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_power_off() local
500 struct udevice *vbus = rphy->vbus_supply[phy->id]; in rockchip_usb2phy_power_off()
519 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_of_xlate() local
524 &rphy->vbus_supply[USB2PHY_PORT_HOST]); in rockchip_usb2phy_of_xlate()
528 &rphy->vbus_supply[USB2PHY_PORT_OTG]); in rockchip_usb2phy_of_xlate()
529 if (!rphy->vbus_supply[USB2PHY_PORT_OTG]) in rockchip_usb2phy_of_xlate()
531 &rphy->vbus_supply[USB2PHY_PORT_OTG]); in rockchip_usb2phy_of_xlate()
571 struct rockchip_usb2phy *rphy = dev_get_priv(dev); in rockchip_usb2phy_probe() local
578 rphy->phy_base = (void __iomem *)dev_read_addr(dev); in rockchip_usb2phy_probe()
579 if (IS_ERR(rphy->phy_base)) { in rockchip_usb2phy_probe()
592 rphy->grf_base = syscon_get_regmap(syscon); in rockchip_usb2phy_probe()
594 rphy->grf_base = syscon_get_regmap(parent); in rockchip_usb2phy_probe()
597 if (rphy->grf_base <= 0) { in rockchip_usb2phy_probe()
610 rphy->usbgrf_base = syscon_get_regmap(syscon); in rockchip_usb2phy_probe()
611 if (rphy->usbgrf_base <= 0) { in rockchip_usb2phy_probe()
616 rphy->usbgrf_base = NULL; in rockchip_usb2phy_probe()
631 ret = reset_get_by_name(dev, "phy", &rphy->phy_rst); in rockchip_usb2phy_probe()
646 rphy->phy_cfg = &phy_cfgs[index]; in rockchip_usb2phy_probe()
652 if (!rphy->phy_cfg) { in rockchip_usb2phy_probe()
657 if (rphy->phy_cfg->phy_tuning) in rockchip_usb2phy_probe()
658 rphy->phy_cfg->phy_tuning(rphy); in rockchip_usb2phy_probe()
663 static int rk322x_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk322x_usb2phy_tuning() argument
665 struct regmap *base = get_reg_base(rphy); in rk322x_usb2phy_tuning()
669 if (rphy->phy_cfg->reg == 0x760) in rk322x_usb2phy_tuning()
675 static int rk3308_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3308_usb2phy_tuning() argument
677 struct regmap *base = get_reg_base(rphy); in rk3308_usb2phy_tuning()
744 static int rk3328_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3328_usb2phy_tuning() argument
746 struct regmap *base = get_reg_base(rphy); in rk3328_usb2phy_tuning()
813 static int rv1106_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rv1106_usb2phy_tuning() argument
818 reg = readl(rphy->phy_base + 0x70); in rv1106_usb2phy_tuning()
819 writel(reg | BIT(2), rphy->phy_base + 0x70); in rv1106_usb2phy_tuning()
824 static int rk3528_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3528_usb2phy_tuning() argument
829 if (IS_ERR(rphy->phy_base)) { in rk3528_usb2phy_tuning()
830 return PTR_ERR(rphy->phy_base); in rk3528_usb2phy_tuning()
834 reg = readl(rphy->phy_base + 0x30); in rk3528_usb2phy_tuning()
835 writel(reg & ~BIT(2), rphy->phy_base + 0x30); in rk3528_usb2phy_tuning()
838 reg = readl(rphy->phy_base + 0x0430); in rk3528_usb2phy_tuning()
839 writel(reg & ~BIT(2), rphy->phy_base + 0x0430); in rk3528_usb2phy_tuning()
842 reg = readl(rphy->phy_base + 0x30); in rk3528_usb2phy_tuning()
845 writel(reg, rphy->phy_base + 0x30); in rk3528_usb2phy_tuning()
848 reg = readl(rphy->phy_base + 0x430); in rk3528_usb2phy_tuning()
851 writel(reg, rphy->phy_base + 0x430); in rk3528_usb2phy_tuning()
854 reg = readl(rphy->phy_base + 0x94); in rk3528_usb2phy_tuning()
857 writel(reg, rphy->phy_base + 0x94); in rk3528_usb2phy_tuning()
860 reg = readl(rphy->phy_base + 0x41c); in rk3528_usb2phy_tuning()
863 writel(reg, rphy->phy_base + 0x41c); in rk3528_usb2phy_tuning()
868 static int rk3562_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3562_usb2phy_tuning() argument
873 if (IS_ERR(rphy->phy_base)) { in rk3562_usb2phy_tuning()
874 return PTR_ERR(rphy->phy_base); in rk3562_usb2phy_tuning()
878 reg = readl(rphy->phy_base + 0x30); in rk3562_usb2phy_tuning()
879 writel(reg & ~BIT(2), rphy->phy_base + 0x30); in rk3562_usb2phy_tuning()
881 reg = readl(rphy->phy_base + 0x0430); in rk3562_usb2phy_tuning()
882 writel(reg & ~BIT(2), rphy->phy_base + 0x0430); in rk3562_usb2phy_tuning()
885 reg = readl(rphy->phy_base); in rk3562_usb2phy_tuning()
888 writel(reg, rphy->phy_base); in rk3562_usb2phy_tuning()
890 reg = readl(rphy->phy_base + 0x0400); in rk3562_usb2phy_tuning()
893 writel(reg, rphy->phy_base + 0x0400); in rk3562_usb2phy_tuning()
896 reg = readl(rphy->phy_base + 0x0030); in rk3562_usb2phy_tuning()
899 writel(reg, rphy->phy_base + 0x0030); in rk3562_usb2phy_tuning()
901 reg = readl(rphy->phy_base + 0x0430); in rk3562_usb2phy_tuning()
904 writel(reg, rphy->phy_base + 0x0430); in rk3562_usb2phy_tuning()
909 static int rk3588_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3588_usb2phy_tuning() argument
911 struct regmap *base = get_reg_base(rphy); in rk3588_usb2phy_tuning()
920 ret = rockchip_usb2phy_reset(rphy); in rk3588_usb2phy_tuning()