Lines Matching refs:inno
285 static inline void inno_write(struct inno_mipi_dphy *inno, u32 reg, u32 val) in inno_write() argument
287 writel(val, inno->regs + reg); in inno_write()
290 static inline u32 inno_read(struct inno_mipi_dphy *inno, u32 reg) in inno_read() argument
292 return readl(inno->regs + reg); in inno_read()
295 static inline void inno_update_bits(struct inno_mipi_dphy *inno, u32 reg, in inno_update_bits() argument
300 orig = inno_read(inno, reg); in inno_update_bits()
303 inno_write(inno, reg, tmp); in inno_update_bits()
334 static void inno_mipi_dphy_timing_update(struct inno_mipi_dphy *inno, in inno_mipi_dphy_timing_update() argument
343 inno_update_bits(inno, base + T_HS_PREPARE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
347 inno_update_bits(inno, base + T_HS_ZERO_OFFSET, m, v); in inno_mipi_dphy_timing_update()
351 inno_update_bits(inno, base + T_HS_TRAIL_OFFSET, m, v); in inno_mipi_dphy_timing_update()
355 inno_update_bits(inno, base + T_HS_EXIT_OFFSET, m, v); in inno_mipi_dphy_timing_update()
360 inno_update_bits(inno, base + T_CLK_POST_OFFSET, m, v); in inno_mipi_dphy_timing_update()
363 inno_update_bits(inno, base + T_CLK_POST_OFFSET_H, m, v); in inno_mipi_dphy_timing_update()
366 inno_update_bits(inno, base + T_CLK_PRE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
371 inno_update_bits(inno, base + T_WAKUP_H_OFFSET, m, v); in inno_mipi_dphy_timing_update()
375 inno_update_bits(inno, base + T_WAKUP_L_OFFSET, m, v); in inno_mipi_dphy_timing_update()
379 inno_update_bits(inno, base + T_LPX_OFFSET, m, v); in inno_mipi_dphy_timing_update()
383 inno_update_bits(inno, base + T_TA_GO_OFFSET, m, v); in inno_mipi_dphy_timing_update()
387 inno_update_bits(inno, base + T_TA_SURE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
391 inno_update_bits(inno, base + T_TA_WAIT_OFFSET, m, v); in inno_mipi_dphy_timing_update()
431 static void inno_mipi_dphy_lane_timing_init(struct inno_mipi_dphy *inno, in inno_mipi_dphy_lane_timing_init() argument
435 (struct rockchip_phy *)dev_get_driver_data(inno->dev); in inno_mipi_dphy_lane_timing_init()
444 txbyteclk = inno->lane_mbps * USEC_PER_SEC / 8; in inno_mipi_dphy_lane_timing_init()
447 UI = DIV_ROUND_CLOSEST(NSEC_PER_USEC, inno->lane_mbps); in inno_mipi_dphy_lane_timing_init()
453 inno_mipi_dphy_get_fixed_param(&data, inno->lane_mbps, in inno_mipi_dphy_lane_timing_init()
483 inno_mipi_dphy_timing_update(inno, lane_type, &data); in inno_mipi_dphy_lane_timing_init()
540 static inline void inno_mipi_dphy_reset(struct inno_mipi_dphy *inno) in inno_mipi_dphy_reset() argument
543 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_reset()
546 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_reset()
549 inno_update_bits(inno, INNO_PHY_DIG_CTRL, in inno_mipi_dphy_reset()
552 inno_update_bits(inno, INNO_PHY_DIG_CTRL, in inno_mipi_dphy_reset()
556 static void inno_mipi_dphy_timing_init(struct inno_mipi_dphy *inno) in inno_mipi_dphy_timing_init() argument
558 switch (inno->lanes) { in inno_mipi_dphy_timing_init()
560 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_3); in inno_mipi_dphy_timing_init()
563 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_2); in inno_mipi_dphy_timing_init()
566 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_1); in inno_mipi_dphy_timing_init()
570 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_0); in inno_mipi_dphy_timing_init()
571 inno_mipi_dphy_lane_timing_init(inno, CLOCK_LANE); in inno_mipi_dphy_timing_init()
576 static inline void inno_mipi_dphy_lane_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_lane_enable() argument
580 switch (inno->lanes) { in inno_mipi_dphy_lane_enable()
600 inno_update_bits(inno, INNO_PHY_LANE_CTRL, m, v); in inno_mipi_dphy_lane_enable()
603 static inline void inno_mipi_dphy_pll_ldo_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_pll_ldo_disable() argument
605 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_pll_ldo_disable()
610 static inline void inno_mipi_dphy_pll_ldo_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_pll_ldo_enable() argument
612 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_pll_ldo_enable()
617 static inline void inno_mipi_dphy_da_pwrok_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_da_pwrok_enable() argument
619 inno_update_bits(inno, INNO_PHY_LANE_CTRL, PWROK_BP | PWROK, PWROK); in inno_mipi_dphy_da_pwrok_enable()
622 static inline void inno_mipi_dphy_da_pwrok_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_da_pwrok_disable() argument
624 inno_update_bits(inno, INNO_PHY_LANE_CTRL, PWROK_BP | PWROK, PWROK_BP); in inno_mipi_dphy_da_pwrok_disable()
627 static inline void inno_mipi_dphy_bgpd_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_bgpd_enable() argument
629 inno_update_bits(inno, INNO_PHY_LANE_CTRL, MIPI_BGPD, 0); in inno_mipi_dphy_bgpd_enable()
632 static inline void inno_mipi_dphy_bgpd_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_bgpd_disable() argument
634 inno_update_bits(inno, INNO_PHY_LANE_CTRL, MIPI_BGPD, MIPI_BGPD); in inno_mipi_dphy_bgpd_disable()
635 inno_update_bits(inno, INNO_PHY_LVDS_CTRL, LVDS_BGPD, LVDS_BGPD); in inno_mipi_dphy_bgpd_disable()
640 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_power_on() local
642 inno_mipi_dphy_bgpd_enable(inno); in inno_mipi_dphy_power_on()
643 inno_mipi_dphy_da_pwrok_enable(inno); in inno_mipi_dphy_power_on()
644 inno_mipi_dphy_pll_ldo_enable(inno); in inno_mipi_dphy_power_on()
645 inno_mipi_dphy_lane_enable(inno); in inno_mipi_dphy_power_on()
646 inno_mipi_dphy_reset(inno); in inno_mipi_dphy_power_on()
647 inno_mipi_dphy_timing_init(inno); in inno_mipi_dphy_power_on()
653 static inline void inno_mipi_dphy_lane_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_lane_disable() argument
655 inno_update_bits(inno, INNO_PHY_LANE_CTRL, 0x7c, 0x00); in inno_mipi_dphy_lane_disable()
660 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_power_off() local
662 inno_mipi_dphy_lane_disable(inno); in inno_mipi_dphy_power_off()
663 inno_mipi_dphy_pll_ldo_disable(inno); in inno_mipi_dphy_power_off()
664 inno_mipi_dphy_da_pwrok_disable(inno); in inno_mipi_dphy_power_off()
665 inno_mipi_dphy_bgpd_disable(inno); in inno_mipi_dphy_power_off()
673 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_set_pll() local
687 inno_update_bits(inno, INNO_PHY_PLL_CTRL_0, m, v); in inno_mipi_dphy_set_pll()
691 inno_update_bits(inno, INNO_PHY_PLL_CTRL_1, m, v); in inno_mipi_dphy_set_pll()
694 inno_update_bits(inno, ANALOG_REG_08, in inno_mipi_dphy_set_pll()
696 inno_update_bits(inno, ANALOG_REG_0B, in inno_mipi_dphy_set_pll()
702 inno_update_bits(inno, RK3506_PRE_EMPHASIS, in inno_mipi_dphy_set_pll()
704 inno_update_bits(inno, RK3506_PRE_EMPHASIS, in inno_mipi_dphy_set_pll()
706 inno_update_bits(inno, PRE_EMPHASIS_RANGE, in inno_mipi_dphy_set_pll()
709 inno_update_bits(inno, LANE0_PRE_EMPHASIS_RANGE, in inno_mipi_dphy_set_pll()
712 inno_update_bits(inno, LANE1_PRE_EMPHASIS_RANGE, in inno_mipi_dphy_set_pll()
715 inno_update_bits(inno, ANALOG_REG_0B, in inno_mipi_dphy_set_pll()
720 inno->lane_mbps = fout / USEC_PER_SEC; in inno_mipi_dphy_set_pll()
725 static int inno_mipi_dphy_parse_dt(struct inno_mipi_dphy *inno) in inno_mipi_dphy_parse_dt() argument
727 struct udevice *dev = inno->dev; in inno_mipi_dphy_parse_dt()
730 inno->lanes = ofnode_read_u32_default(dev->node, "inno,lanes", 2); in inno_mipi_dphy_parse_dt()
732 inno->lanes = ofnode_read_u32_default(dev->node, "inno,lanes", 4); in inno_mipi_dphy_parse_dt()
740 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_init() local
743 ret = inno_mipi_dphy_parse_dt(inno); in inno_mipi_dphy_init()
749 inno->regs = dev_read_addr_ptr(inno->dev); in inno_mipi_dphy_init()
753 inno_write(inno, INNO_PHY_MODE_CTRL, MIPI_MODE_ENABLE); in inno_mipi_dphy_init()
784 struct inno_mipi_dphy *inno = dev_get_priv(dev); in inno_mipi_dphy_probe() local
792 inno->dev = dev; in inno_mipi_dphy_probe()