clk: meson: reset mmc clock on probe
On some SoCs, depending on the boot device, the MMC clock block may be left in a weird state by the ROM code, in which no decent clock may be provided. Reset the related register to make sure a sane MMC clock is ready for the controller. Reviewed-by: Neil Armstrong <narmstrong@baylibre.com> Tested-by: Anand Moon <linux.amoon@gmail.com> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
This commit is contained in:
		
							parent
							
								
									0392416fb1
								
							
						
					
					
						commit
						b3d69aa596
					
				|  | @ -291,6 +291,13 @@ static int meson_clk_probe(struct udevice *dev) | ||||||
| 	if (IS_ERR(priv->map)) | 	if (IS_ERR(priv->map)) | ||||||
| 		return PTR_ERR(priv->map); | 		return PTR_ERR(priv->map); | ||||||
| 
 | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * Depending on the boot src, the state of the MMC clock might | ||||||
|  | 	 * be different. Reset it to make sure we won't get stuck | ||||||
|  | 	 */ | ||||||
|  | 	regmap_write(priv->map, HHI_NAND_CLK_CNTL, 0); | ||||||
|  | 	regmap_write(priv->map, HHI_SD_EMMC_CLK_CNTL, 0); | ||||||
|  | 
 | ||||||
| 	debug("meson-clk-axg: probed\n"); | 	debug("meson-clk-axg: probed\n"); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -978,6 +978,13 @@ static int meson_clk_probe(struct udevice *dev) | ||||||
| 	if (IS_ERR(priv->map)) | 	if (IS_ERR(priv->map)) | ||||||
| 		return PTR_ERR(priv->map); | 		return PTR_ERR(priv->map); | ||||||
| 
 | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * Depending on the boot src, the state of the MMC clock might | ||||||
|  | 	 * be different. Reset it to make sure we won't get stuck | ||||||
|  | 	 */ | ||||||
|  | 	regmap_write(priv->map, HHI_NAND_CLK_CNTL, 0); | ||||||
|  | 	regmap_write(priv->map, HHI_SD_EMMC_CLK_CNTL, 0); | ||||||
|  | 
 | ||||||
| 	debug("meson-clk-g12a: probed\n"); | 	debug("meson-clk-g12a: probed\n"); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -887,6 +887,13 @@ static int meson_clk_probe(struct udevice *dev) | ||||||
| 	if (IS_ERR(priv->map)) | 	if (IS_ERR(priv->map)) | ||||||
| 		return PTR_ERR(priv->map); | 		return PTR_ERR(priv->map); | ||||||
| 
 | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * Depending on the boot src, the state of the MMC clock might | ||||||
|  | 	 * be different. Reset it to make sure we won't get stuck | ||||||
|  | 	 */ | ||||||
|  | 	regmap_write(priv->map, HHI_NAND_CLK_CNTL, 0); | ||||||
|  | 	regmap_write(priv->map, HHI_SD_EMMC_CLK_CNTL, 0); | ||||||
|  | 
 | ||||||
| 	debug("meson-clk: probed\n"); | 	debug("meson-clk: probed\n"); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue