]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
clk: rk3328: Add get hdmiphy clock
authorJagan Teki <jagan@edgeble.ai>
Wed, 17 Jan 2024 07:51:47 +0000 (13:21 +0530)
committerAnatolij Gustschin <agust@denx.de>
Sun, 21 Apr 2024 07:07:00 +0000 (09:07 +0200)
Add support to get the hdmiphy clock for RK3328 PCLK_HDMIPHY.

Signed-off-by: Jagan Teki <jagan@edgeble.ai>
drivers/clk/rockchip/clk_rk3328.c

index df6076e4dcbe08f541c56610e61119ceca0fba3e..87075ec71340ee6c49d1998adb4ab0879d3bd9cf 100644 (file)
@@ -178,6 +178,10 @@ enum {
        CLK_I2C3_DIV_CON_SHIFT          = 8,
        CLK_I2C2_PLL_SEL_SHIFT          = 7,
        CLK_I2C2_DIV_CON_SHIFT          = 0,
+
+       /* CLKSEL_CON40 */
+       CLK_HDMIPHY_DIV_CON_SHIFT       = 3,
+       CLK_HDMIPHY_DIV_CON_MASK        = 0x7 << CLK_HDMIPHY_DIV_CON_SHIFT,
 };
 
 #define VCO_MAX_KHZ    (3200 * (MHz / KHz))
@@ -660,6 +664,16 @@ static ulong rk3328_vop_set_clk(struct rk3328_clk_priv *priv,
 }
 #endif
 
+static ulong rk3328_hdmiphy_get_clk(struct rk3328_cru *cru)
+{
+       u32 div, con;
+
+       con = readl(&cru->clksel_con[40]);
+       div = (con & CLK_HDMIPHY_DIV_CON_MASK) >> CLK_HDMIPHY_DIV_CON_SHIFT;
+
+       return DIV_TO_RATE(GPLL_HZ, div);
+}
+
 static ulong rk3328_clk_get_rate(struct clk *clk)
 {
        struct rk3328_clk_priv *priv = dev_get_priv(clk->dev);
@@ -689,6 +703,9 @@ static ulong rk3328_clk_get_rate(struct clk *clk)
        case SCLK_SPI:
                rate = rk3328_spi_get_clk(priv->cru);
                break;
+       case PCLK_HDMIPHY:
+               rate = rk3328_hdmiphy_get_clk(priv->cru);
+               break;
        default:
                return -ENOENT;
        }