"Das U-Boot" Source Tree
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

clk: rockchip: rk3128: Support more mmc clocks

Support setting and getting all required clocks rates for sdmmc and emmc.
Also replace function prefix from rockchip_ to more appropriate rk3128_.

Signed-off-by: Alex Bee <knaerzche@gmail.com>

authored by

Alex Bee and committed by
joshua stein
6d12d063 d03bde81

+14 -13
+14 -13
drivers/clk/rockchip/clk_rk3128.c
··· 277 277 } 278 278 } 279 279 280 - static ulong rockchip_mmc_get_clk(struct rk3128_cru *cru, uint clk_general_rate, 281 - int periph) 280 + static ulong rk3128_mmc_get_clk(struct rk3128_cru *cru, uint clk_general_rate, 281 + int periph) 282 282 { 283 283 uint src_rate; 284 284 uint div, mux; 285 285 u32 con; 286 286 287 287 switch (periph) { 288 - case HCLK_EMMC: 289 288 case SCLK_EMMC: 290 - case SCLK_EMMC_SAMPLE: 291 289 con = readl(&cru->cru_clksel_con[12]); 292 290 mux = (con & EMMC_PLL_MASK) >> EMMC_PLL_SHIFT; 293 291 div = (con & EMMC_DIV_MASK) >> EMMC_DIV_SHIFT; 294 292 break; 295 - case HCLK_SDMMC: 296 293 case SCLK_SDMMC: 297 294 con = readl(&cru->cru_clksel_con[11]); 298 295 mux = (con & MMC0_PLL_MASK) >> MMC0_PLL_SHIFT; ··· 306 303 return DIV_TO_RATE(src_rate, div); 307 304 } 308 305 309 - static ulong rockchip_mmc_set_clk(struct rk3128_cru *cru, uint clk_general_rate, 310 - int periph, uint freq) 306 + static ulong rk3128_mmc_set_clk(struct rk3128_cru *cru, uint clk_general_rate, 307 + int periph, uint freq) 311 308 { 312 309 int src_clk_div; 313 310 int mux; ··· 325 322 } 326 323 327 324 switch (periph) { 328 - case HCLK_EMMC: 325 + case SCLK_EMMC: 329 326 rk_clrsetreg(&cru->cru_clksel_con[12], 330 327 EMMC_PLL_MASK | EMMC_DIV_MASK, 331 328 mux << EMMC_PLL_SHIFT | 332 329 (src_clk_div - 1) << EMMC_DIV_SHIFT); 333 330 break; 334 - case HCLK_SDMMC: 335 331 case SCLK_SDMMC: 336 332 rk_clrsetreg(&cru->cru_clksel_con[11], 337 333 MMC0_PLL_MASK | MMC0_DIV_MASK, ··· 342 338 return -EINVAL; 343 339 } 344 340 345 - return rockchip_mmc_get_clk(cru, clk_general_rate, periph); 341 + return rk3128_mmc_get_clk(cru, clk_general_rate, periph); 346 342 } 347 343 348 344 static ulong rk3128_peri_get_pclk(struct rk3128_cru *cru, ulong clk_id) ··· 483 479 static ulong rk3128_clk_get_rate(struct clk *clk) 484 480 { 485 481 struct rk3128_clk_priv *priv = dev_get_priv(clk->dev); 482 + ulong gclk_rate = rkclk_pll_get_rate(priv->cru, CLK_GENERAL); 486 483 487 484 switch (clk->id) { 488 485 case 0 ... 63: 489 486 return rkclk_pll_get_rate(priv->cru, clk->id); 487 + case SCLK_EMMC: 488 + case SCLK_SDMMC: 489 + return rk3128_mmc_get_clk(priv->cru, gclk_rate, clk->id); 490 490 case PCLK_I2C0: 491 491 case PCLK_I2C1: 492 492 case PCLK_I2C2: ··· 519 519 new_rate = rk3128_vop_set_clk(priv->cru, 520 520 clk->id, rate); 521 521 break; 522 - case HCLK_EMMC: 523 - new_rate = rockchip_mmc_set_clk(priv->cru, gclk_rate, 524 - clk->id, rate); 522 + case SCLK_EMMC: 523 + case SCLK_SDMMC: 524 + new_rate = rk3128_mmc_set_clk(priv->cru, gclk_rate, 525 + clk->id, rate); 525 526 break; 526 527 case PCLK_I2C0: 527 528 case PCLK_I2C1: