Lines Matching refs:rphy

170 static inline struct regmap *get_reg_base(struct rockchip_usb2phy *rphy)  in get_reg_base()  argument
172 return !rphy->usbgrf_base ? rphy->grf_base : rphy->usbgrf_base; in get_reg_base()
241 static void rockchip_chg_enable_dcd(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_dcd() argument
244 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_dcd()
246 property_enable(base, &rphy->phy_cfg->chg_det.rdm_pdwn_en, en); in rockchip_chg_enable_dcd()
247 property_enable(base, &rphy->phy_cfg->chg_det.idp_src_en, en); in rockchip_chg_enable_dcd()
250 static void rockchip_chg_enable_primary_det(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_primary_det() argument
253 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_primary_det()
255 property_enable(base, &rphy->phy_cfg->chg_det.vdp_src_en, en); in rockchip_chg_enable_primary_det()
256 property_enable(base, &rphy->phy_cfg->chg_det.idm_sink_en, en); in rockchip_chg_enable_primary_det()
259 static void rockchip_chg_enable_secondary_det(struct rockchip_usb2phy *rphy, in rockchip_chg_enable_secondary_det() argument
262 struct regmap *base = get_reg_base(rphy); in rockchip_chg_enable_secondary_det()
264 property_enable(base, &rphy->phy_cfg->chg_det.vdm_src_en, en); in rockchip_chg_enable_secondary_det()
265 property_enable(base, &rphy->phy_cfg->chg_det.idp_sink_en, en); in rockchip_chg_enable_secondary_det()
268 static bool rockchip_chg_primary_det_retry(struct rockchip_usb2phy *rphy) in rockchip_chg_primary_det_retry() argument
271 struct regmap *base = get_reg_base(rphy); in rockchip_chg_primary_det_retry()
273 while (rphy->primary_retries--) { in rockchip_chg_primary_det_retry()
275 rockchip_chg_enable_primary_det(rphy, true); in rockchip_chg_primary_det_retry()
277 vout = property_enabled(base, &rphy->phy_cfg->chg_det.cp_det); in rockchip_chg_primary_det_retry()
282 rockchip_chg_enable_primary_det(rphy, false); in rockchip_chg_primary_det_retry()
290 struct rockchip_usb2phy *rphy = dev_get_priv(dev); in rockchip_u2phy_get_vbus_gpio() local
292 rphy->vbus_det_gpio.dev = NULL; in rockchip_u2phy_get_vbus_gpio()
307 &rphy->vbus_det_gpio, GPIOD_IS_IN); in rockchip_u2phy_get_vbus_gpio()
316 struct rockchip_usb2phy *rphy; in rockchip_chg_get_type() local
331 rphy = dev_get_priv(udev); in rockchip_chg_get_type()
332 base = get_reg_base(rphy); in rockchip_chg_get_type()
333 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_chg_get_type()
338 rphy->vbus_det_gpio.dev = NULL; in rockchip_chg_get_type()
342 if (dm_gpio_is_valid(&rphy->vbus_det_gpio)) { in rockchip_chg_get_type()
343 if (dm_gpio_get_value(&rphy->vbus_det_gpio)) { in rockchip_chg_get_type()
361 property_enable(base, &rphy->phy_cfg->chg_det.opmode, false); in rockchip_chg_get_type()
363 rphy->dcd_retries = CHG_DCD_MAX_RETRIES; in rockchip_chg_get_type()
364 rphy->primary_retries = CHG_PRI_MAX_RETRIES; in rockchip_chg_get_type()
367 rockchip_chg_enable_dcd(rphy, true); in rockchip_chg_get_type()
369 while (rphy->dcd_retries--) { in rockchip_chg_get_type()
373 is_dcd = property_enabled(base, &rphy->phy_cfg->chg_det.dp_det); in rockchip_chg_get_type()
375 if (is_dcd || !rphy->dcd_retries) { in rockchip_chg_get_type()
380 rockchip_chg_enable_dcd(rphy, false); in rockchip_chg_get_type()
381 rockchip_chg_enable_primary_det(rphy, true); in rockchip_chg_get_type()
387 vout = property_enabled(base, &rphy->phy_cfg->chg_det.cp_det); in rockchip_chg_get_type()
388 rockchip_chg_enable_primary_det(rphy, false); in rockchip_chg_get_type()
391 rockchip_chg_enable_secondary_det(rphy, true); in rockchip_chg_get_type()
393 if (!rphy->dcd_retries) { in rockchip_chg_get_type()
402 vout = rockchip_chg_primary_det_retry(rphy); in rockchip_chg_get_type()
405 rockchip_chg_enable_secondary_det(rphy, true); in rockchip_chg_get_type()
415 vout = property_enabled(base, &rphy->phy_cfg->chg_det.dcp_det); in rockchip_chg_get_type()
417 rockchip_chg_enable_secondary_det(rphy, false); in rockchip_chg_get_type()
425 property_enable(base, &rphy->phy_cfg->chg_det.opmode, true); in rockchip_chg_get_type()
446 struct rockchip_usb2phy *rphy; in otg_phy_init() local
460 rphy = dev_get_priv(udev); in otg_phy_init()
461 base = get_reg_base(rphy); in otg_phy_init()
462 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in otg_phy_init()
465 if(rphy->phy_cfg->clkout_ctl.disable) in otg_phy_init()
466 property_enable(base, &rphy->phy_cfg->clkout_ctl, true); in otg_phy_init()
475 static int rockchip_usb2phy_reset(struct rockchip_usb2phy *rphy) in rockchip_usb2phy_reset() argument
479 if (rphy->phy_rst.dev) { in rockchip_usb2phy_reset()
480 ret = reset_assert(&rphy->phy_rst); in rockchip_usb2phy_reset()
488 ret = reset_deassert(&rphy->phy_rst); in rockchip_usb2phy_reset()
503 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_init() local
505 struct regmap *base = get_reg_base(rphy); in rockchip_usb2phy_init()
508 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_init()
510 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_init()
527 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_exit() local
529 struct regmap *base = get_reg_base(rphy); in rockchip_usb2phy_exit()
532 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_OTG]; in rockchip_usb2phy_exit()
534 port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST]; in rockchip_usb2phy_exit()
548 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_power_on() local
549 struct udevice *vbus = rphy->vbus_supply[phy->id]; in rockchip_usb2phy_power_on()
566 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_power_off() local
567 struct udevice *vbus = rphy->vbus_supply[phy->id]; in rockchip_usb2phy_power_off()
586 struct rockchip_usb2phy *rphy = dev_get_priv(parent); in rockchip_usb2phy_of_xlate() local
591 &rphy->vbus_supply[USB2PHY_PORT_HOST]); in rockchip_usb2phy_of_xlate()
595 &rphy->vbus_supply[USB2PHY_PORT_OTG]); in rockchip_usb2phy_of_xlate()
596 if (!rphy->vbus_supply[USB2PHY_PORT_OTG]) in rockchip_usb2phy_of_xlate()
598 &rphy->vbus_supply[USB2PHY_PORT_OTG]); in rockchip_usb2phy_of_xlate()
638 struct rockchip_usb2phy *rphy = dev_get_priv(dev); in rockchip_usb2phy_probe() local
645 rphy->phy_base = (void __iomem *)dev_read_addr(dev); in rockchip_usb2phy_probe()
646 if (IS_ERR(rphy->phy_base)) { in rockchip_usb2phy_probe()
659 rphy->grf_base = syscon_get_regmap(syscon); in rockchip_usb2phy_probe()
661 rphy->grf_base = syscon_get_regmap(parent); in rockchip_usb2phy_probe()
664 if (rphy->grf_base <= 0) { in rockchip_usb2phy_probe()
677 rphy->usbgrf_base = syscon_get_regmap(syscon); in rockchip_usb2phy_probe()
678 if (rphy->usbgrf_base <= 0) { in rockchip_usb2phy_probe()
683 rphy->usbgrf_base = NULL; in rockchip_usb2phy_probe()
698 ret = reset_get_by_name(dev, "phy", &rphy->phy_rst); in rockchip_usb2phy_probe()
713 rphy->phy_cfg = &phy_cfgs[index]; in rockchip_usb2phy_probe()
719 if (!rphy->phy_cfg) { in rockchip_usb2phy_probe()
724 if (rphy->phy_cfg->phy_tuning) in rockchip_usb2phy_probe()
725 rphy->phy_cfg->phy_tuning(rphy); in rockchip_usb2phy_probe()
730 static int rk322x_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk322x_usb2phy_tuning() argument
732 struct regmap *base = get_reg_base(rphy); in rk322x_usb2phy_tuning()
736 if (rphy->phy_cfg->reg == 0x760) in rk322x_usb2phy_tuning()
742 static int rk3308_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3308_usb2phy_tuning() argument
744 struct regmap *base = get_reg_base(rphy); in rk3308_usb2phy_tuning()
811 static int rk3328_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3328_usb2phy_tuning() argument
813 struct regmap *base = get_reg_base(rphy); in rk3328_usb2phy_tuning()
864 static int rv1103b_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rv1103b_usb2phy_tuning() argument
867 phy_update_bits(rphy->phy_base + 0x30, GENMASK(2, 0), 0x07); in rv1103b_usb2phy_tuning()
870 phy_update_bits(rphy->phy_base + 0x40, GENMASK(5, 3), (0x01 << 3)); in rv1103b_usb2phy_tuning()
873 phy_update_bits(rphy->phy_base + 0x64, GENMASK(6, 3), (0x00 << 3)); in rv1103b_usb2phy_tuning()
876 phy_clear_bits(rphy->phy_base + 0x100, BIT(6)); in rv1103b_usb2phy_tuning()
879 phy_update_bits(rphy->phy_base + 0x11c, GENMASK(4, 0), 0x17); in rv1103b_usb2phy_tuning()
882 phy_update_bits(rphy->phy_base + 0x124, GENMASK(4, 2), (0x03 << 2)); in rv1103b_usb2phy_tuning()
885 phy_update_bits(rphy->phy_base + 0x1a4, GENMASK(7, 4), (0x01 << 4)); in rv1103b_usb2phy_tuning()
886 phy_update_bits(rphy->phy_base + 0x1b4, GENMASK(7, 4), (0x01 << 4)); in rv1103b_usb2phy_tuning()
889 phy_set_bits(rphy->phy_base + 0x70, BIT(2)); in rv1103b_usb2phy_tuning()
892 phy_update_bits(rphy->phy_base + 0x60, GENMASK(1, 0), 0x0); in rv1103b_usb2phy_tuning()
893 phy_update_bits(rphy->phy_base + 0x64, GENMASK(7, 7), BIT(7)); in rv1103b_usb2phy_tuning()
894 phy_update_bits(rphy->phy_base + 0x68, GENMASK(0, 0), 0x0); in rv1103b_usb2phy_tuning()
899 static int rv1106_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rv1106_usb2phy_tuning() argument
902 phy_set_bits(rphy->phy_base + 0x70, BIT(2)); in rv1106_usb2phy_tuning()
907 static int rv1126b_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rv1126b_usb2phy_tuning() argument
910 phy_clear_bits(rphy->phy_base + 0x0030, BIT(2)); in rv1126b_usb2phy_tuning()
911 phy_clear_bits(rphy->phy_base + 0x0430, BIT(2)); in rv1126b_usb2phy_tuning()
914 phy_update_bits(rphy->phy_base, GENMASK(2, 0), 0x04); in rv1126b_usb2phy_tuning()
915 phy_update_bits(rphy->phy_base + 0x0400, GENMASK(2, 0), 0x04); in rv1126b_usb2phy_tuning()
918 phy_update_bits(rphy->phy_base + 0x0030, GENMASK(6, 4), (0x05 << 4)); in rv1126b_usb2phy_tuning()
919 phy_update_bits(rphy->phy_base + 0x0430, GENMASK(6, 4), (0x05 << 4)); in rv1126b_usb2phy_tuning()
922 phy_update_bits(rphy->phy_base + 0x0004, GENMASK(7, 5), (0x00 << 5)); in rv1126b_usb2phy_tuning()
923 phy_update_bits(rphy->phy_base + 0x0008, GENMASK(0, 0), (0x00 << 0)); in rv1126b_usb2phy_tuning()
924 phy_update_bits(rphy->phy_base + 0x0404, GENMASK(7, 5), (0x00 << 5)); in rv1126b_usb2phy_tuning()
925 phy_update_bits(rphy->phy_base + 0x0408, GENMASK(0, 0), (0x00 << 0)); in rv1126b_usb2phy_tuning()
930 static int rk3506_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3506_usb2phy_tuning() argument
933 phy_clear_bits(rphy->phy_base + 0x30, BIT(2)); in rk3506_usb2phy_tuning()
936 phy_clear_bits(rphy->phy_base + 0x430, BIT(2)); in rk3506_usb2phy_tuning()
939 phy_update_bits(rphy->phy_base + 0x30, GENMASK(6, 4), (0x05 << 4)); in rk3506_usb2phy_tuning()
942 phy_update_bits(rphy->phy_base + 0x430, GENMASK(6, 4), (0x05 << 4)); in rk3506_usb2phy_tuning()
945 phy_update_bits(rphy->phy_base + 0x94, GENMASK(6, 3), (0x03 << 3)); in rk3506_usb2phy_tuning()
948 phy_update_bits(rphy->phy_base + 0x494, GENMASK(6, 3), (0x03 << 3)); in rk3506_usb2phy_tuning()
953 static int rk3528_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3528_usb2phy_tuning() argument
955 if (IS_ERR(rphy->phy_base)) { in rk3528_usb2phy_tuning()
956 return PTR_ERR(rphy->phy_base); in rk3528_usb2phy_tuning()
960 phy_clear_bits(rphy->phy_base + 0x30, BIT(2)); in rk3528_usb2phy_tuning()
963 phy_clear_bits(rphy->phy_base + 0x430, BIT(2)); in rk3528_usb2phy_tuning()
966 phy_update_bits(rphy->phy_base + 0x30, GENMASK(6, 4), (0x00 << 4)); in rk3528_usb2phy_tuning()
969 phy_update_bits(rphy->phy_base + 0x430, GENMASK(6, 4), (0x00 << 4)); in rk3528_usb2phy_tuning()
972 phy_update_bits(rphy->phy_base + 0x94, GENMASK(6, 3), (0x03 << 3)); in rk3528_usb2phy_tuning()
975 phy_update_bits(rphy->phy_base + 0x41c, GENMASK(7, 2), (0x27 << 2)); in rk3528_usb2phy_tuning()
980 static int rk3562_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3562_usb2phy_tuning() argument
982 if (IS_ERR(rphy->phy_base)) { in rk3562_usb2phy_tuning()
983 return PTR_ERR(rphy->phy_base); in rk3562_usb2phy_tuning()
987 phy_clear_bits(rphy->phy_base + 0x0030, BIT(2)); in rk3562_usb2phy_tuning()
988 phy_clear_bits(rphy->phy_base + 0x0430, BIT(2)); in rk3562_usb2phy_tuning()
991 phy_update_bits(rphy->phy_base, GENMASK(2, 0), 0x04); in rk3562_usb2phy_tuning()
992 phy_update_bits(rphy->phy_base + 0x0400, GENMASK(2, 0), 0x04); in rk3562_usb2phy_tuning()
995 phy_update_bits(rphy->phy_base + 0x0030, GENMASK(6, 4), (0x05 << 4)); in rk3562_usb2phy_tuning()
996 phy_update_bits(rphy->phy_base + 0x0430, GENMASK(6, 4), (0x05 << 4)); in rk3562_usb2phy_tuning()
1001 static int rk3576_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3576_usb2phy_tuning() argument
1003 struct regmap *base = get_reg_base(rphy); in rk3576_usb2phy_tuning()
1006 if (rphy->phy_cfg->reg == 0x0) { in rk3576_usb2phy_tuning()
1013 ret = rockchip_usb2phy_reset(rphy); in rk3576_usb2phy_tuning()
1026 } else if (rphy->phy_cfg->reg == 0x2000) { in rk3576_usb2phy_tuning()
1033 ret = rockchip_usb2phy_reset(rphy); in rk3576_usb2phy_tuning()
1051 static int rk3588_usb2phy_tuning(struct rockchip_usb2phy *rphy) in rk3588_usb2phy_tuning() argument
1053 struct regmap *base = get_reg_base(rphy); in rk3588_usb2phy_tuning()
1062 ret = rockchip_usb2phy_reset(rphy); in rk3588_usb2phy_tuning()