phy: phy-mtk-hdmi: Add generic phy configure callback
authorGuillaume Ranquet <granquet@baylibre.com>
Thu, 16 Feb 2023 16:02:26 +0000 (17:02 +0100)
committerVinod Koul <vkoul@kernel.org>
Wed, 12 Apr 2023 16:26:40 +0000 (21:56 +0530)
Some phys, such as mt8195, needs to have a configure callback defined.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
Signed-off-by: Guillaume Ranquet <granquet@baylibre.com>
Link: https://lore.kernel.org/r/20220919-v8-2-a84c80468fe9@baylibre.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/mediatek/phy-mtk-hdmi.c
drivers/phy/mediatek/phy-mtk-hdmi.h

index b16d437d67219c322414557e26e9eeea57793cbd..32f713301768ece9e77f071450696b4aa01018e3 100644 (file)
@@ -8,10 +8,12 @@
 
 static int mtk_hdmi_phy_power_on(struct phy *phy);
 static int mtk_hdmi_phy_power_off(struct phy *phy);
+static int mtk_hdmi_phy_configure(struct phy *phy, union phy_configure_opts *opts);
 
 static const struct phy_ops mtk_hdmi_phy_dev_ops = {
        .power_on = mtk_hdmi_phy_power_on,
        .power_off = mtk_hdmi_phy_power_off,
+       .configure = mtk_hdmi_phy_configure,
        .owner = THIS_MODULE,
 };
 
@@ -43,6 +45,16 @@ static int mtk_hdmi_phy_power_off(struct phy *phy)
        return 0;
 }
 
+static int mtk_hdmi_phy_configure(struct phy *phy, union phy_configure_opts *opts)
+{
+       struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(phy);
+
+       if (hdmi_phy->conf->hdmi_phy_configure)
+               return hdmi_phy->conf->hdmi_phy_configure(phy, opts);
+
+       return 0;
+}
+
 static const struct phy_ops *
 mtk_hdmi_phy_dev_get_ops(const struct mtk_hdmi_phy *hdmi_phy)
 {
index c7fa65cff989151507c613d3789f351eee47f578..f5aac9d352d808ea4c31fc2bf3fe8da04f7a2e9a 100644 (file)
@@ -24,6 +24,7 @@ struct mtk_hdmi_phy_conf {
        const struct clk_ops *hdmi_phy_clk_ops;
        void (*hdmi_phy_enable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
        void (*hdmi_phy_disable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
+       int (*hdmi_phy_configure)(struct phy *phy, union phy_configure_opts *opts);
 };
 
 struct mtk_hdmi_phy {