diff --git a/drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c b/drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c index 25c02ebde0f4..0932c20063df 100644 --- a/drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c +++ b/drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c @@ -846,6 +846,12 @@ static int inno_dsidphy_power_on(struct phy *phy) phy_update_bits(inno, REGISTER_PART_ANALOG, 0x00, POWER_WORK_MASK, POWER_WORK_ENABLE); + if (inno->pdata->soc_type == RK3506) { + /* The internal 1.2V LDO power on */ + phy_update_bits(inno, REGISTER_PART_ANALOG, 0x17, BIT(7), 0); + phy_update_bits(inno, REGISTER_PART_ANALOG, 0x1d, BIT(7), 0); + } + switch (mode) { case PHY_MODE_MIPI_DPHY: inno_dsidphy_mipi_mode_enable(inno); @@ -881,6 +887,12 @@ static int inno_dsidphy_power_off(struct phy *phy) LVDS_PLL_POWER_MASK | LVDS_BANDGAP_POWER_MASK, LVDS_PLL_POWER_OFF | LVDS_BANDGAP_POWER_DOWN); + if (inno->pdata->soc_type == RK3506) { + /* The internal 1.2V LDO power off */ + phy_update_bits(inno, REGISTER_PART_ANALOG, 0x17, BIT(7), BIT(7)); + phy_update_bits(inno, REGISTER_PART_ANALOG, 0x1d, BIT(7), BIT(7)); + } + pm_runtime_put(inno->dev); clk_disable_unprepare(inno->ref_clk); clk_disable_unprepare(inno->pclk_phy);