Lines Matching refs:inno

255 static inline void inno_write(struct inno_mipi_dphy *inno, u32 reg, u32 val)  in inno_write()  argument
257 writel(val, inno->regs + reg); in inno_write()
260 static inline u32 inno_read(struct inno_mipi_dphy *inno, u32 reg) in inno_read() argument
262 return readl(inno->regs + reg); in inno_read()
265 static inline void inno_update_bits(struct inno_mipi_dphy *inno, u32 reg, in inno_update_bits() argument
270 orig = inno_read(inno, reg); in inno_update_bits()
273 inno_write(inno, reg, tmp); in inno_update_bits()
304 static void inno_mipi_dphy_timing_update(struct inno_mipi_dphy *inno, in inno_mipi_dphy_timing_update() argument
313 inno_update_bits(inno, base + T_HS_PREPARE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
317 inno_update_bits(inno, base + T_HS_ZERO_OFFSET, m, v); in inno_mipi_dphy_timing_update()
321 inno_update_bits(inno, base + T_HS_TRAIL_OFFSET, m, v); in inno_mipi_dphy_timing_update()
325 inno_update_bits(inno, base + T_HS_EXIT_OFFSET, m, v); in inno_mipi_dphy_timing_update()
330 inno_update_bits(inno, base + T_CLK_POST_OFFSET, m, v); in inno_mipi_dphy_timing_update()
334 inno_update_bits(inno, base + T_CLK_PRE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
339 inno_update_bits(inno, base + T_WAKUP_H_OFFSET, m, v); in inno_mipi_dphy_timing_update()
343 inno_update_bits(inno, base + T_WAKUP_L_OFFSET, m, v); in inno_mipi_dphy_timing_update()
347 inno_update_bits(inno, base + T_LPX_OFFSET, m, v); in inno_mipi_dphy_timing_update()
351 inno_update_bits(inno, base + T_TA_GO_OFFSET, m, v); in inno_mipi_dphy_timing_update()
355 inno_update_bits(inno, base + T_TA_SURE_OFFSET, m, v); in inno_mipi_dphy_timing_update()
359 inno_update_bits(inno, base + T_TA_WAIT_OFFSET, m, v); in inno_mipi_dphy_timing_update()
399 static void inno_mipi_dphy_lane_timing_init(struct inno_mipi_dphy *inno, in inno_mipi_dphy_lane_timing_init() argument
403 (struct rockchip_phy *)dev_get_driver_data(inno->dev); in inno_mipi_dphy_lane_timing_init()
412 txbyteclk = inno->lane_mbps * USEC_PER_SEC / 8; in inno_mipi_dphy_lane_timing_init()
415 UI = DIV_ROUND_CLOSEST(NSEC_PER_USEC, inno->lane_mbps); in inno_mipi_dphy_lane_timing_init()
421 inno_mipi_dphy_get_fixed_param(&data, inno->lane_mbps, in inno_mipi_dphy_lane_timing_init()
451 inno_mipi_dphy_timing_update(inno, lane_type, &data); in inno_mipi_dphy_lane_timing_init()
508 static inline void inno_mipi_dphy_reset(struct inno_mipi_dphy *inno) in inno_mipi_dphy_reset() argument
511 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_reset()
514 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_reset()
517 inno_update_bits(inno, INNO_PHY_DIG_CTRL, in inno_mipi_dphy_reset()
520 inno_update_bits(inno, INNO_PHY_DIG_CTRL, in inno_mipi_dphy_reset()
524 static void inno_mipi_dphy_timing_init(struct inno_mipi_dphy *inno) in inno_mipi_dphy_timing_init() argument
526 switch (inno->lanes) { in inno_mipi_dphy_timing_init()
528 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_3); in inno_mipi_dphy_timing_init()
531 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_2); in inno_mipi_dphy_timing_init()
534 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_1); in inno_mipi_dphy_timing_init()
538 inno_mipi_dphy_lane_timing_init(inno, DATA_LANE_0); in inno_mipi_dphy_timing_init()
539 inno_mipi_dphy_lane_timing_init(inno, CLOCK_LANE); in inno_mipi_dphy_timing_init()
544 static inline void inno_mipi_dphy_lane_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_lane_enable() argument
548 switch (inno->lanes) { in inno_mipi_dphy_lane_enable()
568 inno_update_bits(inno, INNO_PHY_LANE_CTRL, m, v); in inno_mipi_dphy_lane_enable()
571 static inline void inno_mipi_dphy_pll_ldo_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_pll_ldo_disable() argument
573 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_pll_ldo_disable()
578 static inline void inno_mipi_dphy_pll_ldo_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_pll_ldo_enable() argument
580 inno_update_bits(inno, INNO_PHY_POWER_CTRL, in inno_mipi_dphy_pll_ldo_enable()
585 static inline void inno_mipi_dphy_da_pwrok_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_da_pwrok_enable() argument
587 inno_update_bits(inno, INNO_PHY_LANE_CTRL, PWROK_BP | PWROK, PWROK); in inno_mipi_dphy_da_pwrok_enable()
590 static inline void inno_mipi_dphy_da_pwrok_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_da_pwrok_disable() argument
592 inno_update_bits(inno, INNO_PHY_LANE_CTRL, PWROK_BP | PWROK, PWROK_BP); in inno_mipi_dphy_da_pwrok_disable()
595 static inline void inno_mipi_dphy_bgpd_enable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_bgpd_enable() argument
597 inno_update_bits(inno, INNO_PHY_LANE_CTRL, MIPI_BGPD, 0); in inno_mipi_dphy_bgpd_enable()
600 static inline void inno_mipi_dphy_bgpd_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_bgpd_disable() argument
602 inno_update_bits(inno, INNO_PHY_LANE_CTRL, MIPI_BGPD, MIPI_BGPD); in inno_mipi_dphy_bgpd_disable()
603 inno_update_bits(inno, INNO_PHY_LVDS_CTRL, LVDS_BGPD, LVDS_BGPD); in inno_mipi_dphy_bgpd_disable()
608 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_power_on() local
610 inno_mipi_dphy_bgpd_enable(inno); in inno_mipi_dphy_power_on()
611 inno_mipi_dphy_da_pwrok_enable(inno); in inno_mipi_dphy_power_on()
612 inno_mipi_dphy_pll_ldo_enable(inno); in inno_mipi_dphy_power_on()
613 inno_mipi_dphy_lane_enable(inno); in inno_mipi_dphy_power_on()
614 inno_mipi_dphy_reset(inno); in inno_mipi_dphy_power_on()
615 inno_mipi_dphy_timing_init(inno); in inno_mipi_dphy_power_on()
621 static inline void inno_mipi_dphy_lane_disable(struct inno_mipi_dphy *inno) in inno_mipi_dphy_lane_disable() argument
623 inno_update_bits(inno, INNO_PHY_LANE_CTRL, 0x7c, 0x00); in inno_mipi_dphy_lane_disable()
628 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_power_off() local
630 inno_mipi_dphy_lane_disable(inno); in inno_mipi_dphy_power_off()
631 inno_mipi_dphy_pll_ldo_disable(inno); in inno_mipi_dphy_power_off()
632 inno_mipi_dphy_da_pwrok_disable(inno); in inno_mipi_dphy_power_off()
633 inno_mipi_dphy_bgpd_disable(inno); in inno_mipi_dphy_power_off()
641 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_set_pll() local
655 inno_update_bits(inno, INNO_PHY_PLL_CTRL_0, m, v); in inno_mipi_dphy_set_pll()
659 inno_update_bits(inno, INNO_PHY_PLL_CTRL_1, m, v); in inno_mipi_dphy_set_pll()
662 inno_update_bits(inno, ANALOG_REG_08, in inno_mipi_dphy_set_pll()
664 inno_update_bits(inno, ANALOG_REG_0B, in inno_mipi_dphy_set_pll()
669 inno->lane_mbps = fout / USEC_PER_SEC; in inno_mipi_dphy_set_pll()
674 static int inno_mipi_dphy_parse_dt(struct inno_mipi_dphy *inno) in inno_mipi_dphy_parse_dt() argument
676 struct udevice *dev = inno->dev; in inno_mipi_dphy_parse_dt()
678 inno->lanes = ofnode_read_u32_default(dev->node, "inno,lanes", 4); in inno_mipi_dphy_parse_dt()
685 struct inno_mipi_dphy *inno = dev_get_priv(phy->dev); in inno_mipi_dphy_init() local
688 ret = inno_mipi_dphy_parse_dt(inno); in inno_mipi_dphy_init()
694 inno->regs = dev_read_addr_ptr(inno->dev); in inno_mipi_dphy_init()
721 struct inno_mipi_dphy *inno = dev_get_priv(dev); in inno_mipi_dphy_probe() local
729 inno->dev = dev; in inno_mipi_dphy_probe()