[PATCH v4 07/12] drm/mediatek: mtk_dp: Use PHY API for PHY power sequences
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Thu Jul 9 04:31:43 PDT 2026
The PHY driver has gained support for .power_on() and .power_off()
callbacks: use the API provided phy_power_on(), phy_power_off()
functions instead of writing into PHY registers from this driver.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
---
drivers/gpu/drm/mediatek/mtk_dp.c | 31 ++++++++++++++++++++++++-------
1 file changed, 24 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index b2e5fa0914bc..383c8e66b527 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -1404,6 +1404,8 @@ static void mtk_dp_aux_panel_poweron(struct mtk_dp *mtk_dp, bool pwron)
static void mtk_dp_power_enable(struct mtk_dp *mtk_dp)
{
+ int ret;
+
mtk_dp_update_bits(mtk_dp, MTK_DP_TOP_RESET_AND_PROBE,
0, SW_RST_B_PHYD);
@@ -1414,20 +1416,35 @@ static void mtk_dp_power_enable(struct mtk_dp *mtk_dp)
SW_RST_B_PHYD, SW_RST_B_PHYD);
mtk_dp_update_bits(mtk_dp, MTK_DP_TOP_PWR_STATE,
DP_PWR_STATE_BANDGAP_TPLL, DP_PWR_STATE_MASK);
- regmap_write(mtk_dp->regs, DP_PHY_AUX_RX_CTL,
- RG_DPAUX_RX_VALID_DEGLITCH_EN | RG_XTP_GLB_CKDET_EN |
- RG_DPAUX_RX_EN);
- regmap_clear_bits(mtk_dp->regs, MTK_DP_0034, DA_CKM_CKTX0_EN_FORCE_EN);
+
+ if (mtk_dp->phy_dev) {
+ regmap_write(mtk_dp->regs, DP_PHY_AUX_RX_CTL,
+ RG_DPAUX_RX_VALID_DEGLITCH_EN | RG_XTP_GLB_CKDET_EN |
+ RG_DPAUX_RX_EN);
+ regmap_clear_bits(mtk_dp->regs, MTK_DP_0034, DA_CKM_CKTX0_EN_FORCE_EN);
+ } else {
+ ret = phy_power_on(mtk_dp->phy);
+ if (ret)
+ dev_warn(mtk_dp->dev, "Could not power on PHY!\n");
+ }
}
static void mtk_dp_power_disable(struct mtk_dp *mtk_dp)
{
+ int ret;
+
mtk_dp_write(mtk_dp, MTK_DP_TOP_PWR_STATE, 0);
- regmap_set_bits(mtk_dp->regs, MTK_DP_0034, DA_CKM_CKTX0_EN_FORCE_EN);
+ if (unlikely(mtk_dp->phy_dev)) {
+ regmap_set_bits(mtk_dp->regs, MTK_DP_0034, DA_CKM_CKTX0_EN_FORCE_EN);
- /* Disable RX */
- regmap_write(mtk_dp->regs, DP_PHY_AUX_RX_CTL, 0);
+ /* Disable RX */
+ regmap_write(mtk_dp->regs, DP_PHY_AUX_RX_CTL, 0);
+ } else {
+ ret = phy_power_off(mtk_dp->phy);
+ if (ret)
+ dev_warn(mtk_dp->dev, "Could not power off PHY!\n");
+ }
mtk_dp_write(mtk_dp, MTK_DP_TOP_MEM_PD,
0x550 | FUSE_SEL | MEM_ISO_EN);
--
2.54.0
More information about the Linux-mediatek
mailing list