]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
vybrid: clock: Provide enable_i2c_clk() function for Vybrid
authorLukasz Majewski <lukma@denx.de>
Wed, 13 Feb 2019 21:46:41 +0000 (22:46 +0100)
committerStefano Babic <sbabic@denx.de>
Sat, 13 Apr 2019 18:30:08 +0000 (20:30 +0200)
Provide function to enable I2C clocks for vf610 - in the generic code.
This function overrides the default weak function implementation (which
only returns 1).

Signed-off-by: Lukasz Majewski <lukma@denx.de>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
arch/arm/cpu/armv7/vf610/generic.c
arch/arm/include/asm/arch-vf610/clock.h

index cbd3391918cdf163740211d99736937f209d77c5..e0c0b1bcb078bee623f9f5c67de0d787f78f49c0 100644 (file)
@@ -375,3 +375,25 @@ void enable_caches(void)
        mmu_set_region_dcache_behaviour(IRAM_BASE_ADDR, IRAM_SIZE, option);
 }
 #endif
+
+#ifdef CONFIG_SYS_I2C_MXC
+/* i2c_num can be from 0 - 3 */
+int enable_i2c_clk(unsigned char enable, unsigned int i2c_num)
+{
+       struct ccm_reg *ccm = (struct ccm_reg *)CCM_BASE_ADDR;
+
+       switch (i2c_num) {
+       case 0:
+               clrsetbits_le32(&ccm->ccgr4, CCM_CCGR4_I2C0_CTRL_MASK,
+                               CCM_CCGR4_I2C0_CTRL_MASK);
+       case 2:
+               clrsetbits_le32(&ccm->ccgr10, CCM_CCGR10_I2C2_CTRL_MASK,
+                               CCM_CCGR10_I2C2_CTRL_MASK);
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+#endif
index 3bd73a01f3bf939ce99bdfc9fcbd0e3decfbd0d2..72184fd60834db22d0d7b6489f6fc2340951abca 100644 (file)
@@ -22,6 +22,9 @@ enum mxc_clock {
 void enable_ocotp_clk(unsigned char enable);
 unsigned int mxc_get_clock(enum mxc_clock clk);
 u32 get_lpuart_clk(void);
+#ifdef CONFIG_SYS_I2C_MXC
+int enable_i2c_clk(unsigned char enable, unsigned int i2c_num);
+#endif
 
 #define imx_get_fecclk() mxc_get_clock(MXC_FEC_CLK)