MLK-21835-1 imx8: lpcg: Update lpcg driver
authorYe Li <ye.li@nxp.com>
Wed, 10 Apr 2019 03:07:37 +0000 (20:07 -0700)
committerYe Li <ye.li@nxp.com>
Fri, 24 May 2019 09:04:55 +0000 (02:04 -0700)
Change the functions names to not camelcase. and add function
to check whether one lpcg gate is on.

Signed-off-by: Ye Li <ye.li@nxp.com>
arch/arm/include/asm/arch-imx8/lpcg.h
arch/arm/mach-imx/imx8/lpcg.c

index 7e551f0..b3a4545 100644 (file)
 #error "No lpcg header"
 #endif
 
-void LPCG_ClockOff(u32 lpcg_addr, u8 clk);
-void LPCG_ClockOn(u32 lpcg_addr, u8 clk);
-void LPCG_ClockAutoGate(u32 lpcg_addr, u8 clk);
-void LPCG_AllClockOff(u32 lpcg_addr);
-void LPCG_AllClockOn(u32 lpcg_addr);
-void LPCG_AllClockAutoGate(u32 lpcg_addr);
+void lpcg_clock_off(u32 lpcg_addr, u8 clk);
+void lpcg_clock_on(u32 lpcg_addr, u8 clk);
+void lpcg_clock_autogate(u32 lpcg_addr, u8 clk);
+bool lpcg_is_clock_on(u32 lpcg_addr, u8 clk);
+void lpcg_all_clock_off(u32 lpcg_addr);
+void lpcg_all_clock_on(u32 lpcg_addr);
+void lpcg_all_clock_autogate(u32 lpcg_addr);
 
 #endif /* __ASM_ARCH_IMX8_LPCG_H__ */
index 22cbc60..5f5d770 100644 (file)
@@ -32,7 +32,7 @@ static inline void lpcg_write(u32 lpcgVal, ulong lpcg_addr)
        udelay(10);
 }
 
-void LPCG_ClockOff(u32 lpcg_addr, u8 clk)
+void lpcg_clock_off(u32 lpcg_addr, u8 clk)
 {
        u32 lpcgVal;
 
@@ -47,7 +47,7 @@ void LPCG_ClockOff(u32 lpcg_addr, u8 clk)
        lpcg_write(lpcgVal, (ulong)lpcg_addr);
 }
 
-void LPCG_ClockOn(u32 lpcg_addr, u8 clk)
+void lpcg_clock_on(u32 lpcg_addr, u8 clk)
 {
        u32 lpcgVal;
 
@@ -62,7 +62,21 @@ void LPCG_ClockOn(u32 lpcg_addr, u8 clk)
        lpcg_write(lpcgVal, (ulong)lpcg_addr);
 }
 
-void LPCG_ClockAutoGate(u32 lpcg_addr, u8 clk)
+bool lpcg_is_clock_on(u32 lpcg_addr, u8 clk)
+{
+       u32 lpcgVal;
+
+       /* Read from LPCG */
+       lpcgVal = readl((ulong)lpcg_addr);
+       lpcgVal = (lpcgVal >> (clk * 4U)) & (u32)(LPCG_CLOCK_MASK);
+
+       if (lpcgVal == LPCG_CLOCK_ON)
+               return true;
+
+       return false;
+}
+
+void lpcg_clock_autogate(u32 lpcg_addr, u8 clk)
 {
        u32 lpcgVal;
 
@@ -77,13 +91,13 @@ void LPCG_ClockAutoGate(u32 lpcg_addr, u8 clk)
        lpcg_write(lpcgVal, (ulong)lpcg_addr);
 }
 
-void LPCG_AllClockOff(u32 lpcg_addr)
+void lpcg_all_clock_off(u32 lpcg_addr)
 {
        /* Write to LPCG */
        lpcg_write(LPCG_ALL_CLOCK_OFF, (ulong)lpcg_addr);
 }
 
-void LPCG_AllClockOn(u32 lpcg_addr)
+void lpcg_all_clock_on(u32 lpcg_addr)
 {
        /* Write to LPCG */
        lpcg_write(LPCG_ALL_CLOCK_ON, (ulong)lpcg_addr);
@@ -94,7 +108,7 @@ void LPCG_AllClockOn(u32 lpcg_addr)
        }
 }
 
-void LPCG_AllClockAutoGate(u32 lpcg_addr)
+void lpcg_all_clock_autogate(u32 lpcg_addr)
 {
        /* Write to LPCG */
        lpcg_write(LPCG_ALL_CLOCK_AUTO, (ulong)lpcg_addr);