#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__ */
udelay(10);
}
-void LPCG_ClockOff(u32 lpcg_addr, u8 clk)
+void lpcg_clock_off(u32 lpcg_addr, u8 clk)
{
u32 lpcgVal;
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;
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;
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);
}
}
-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);