|
@@ -26,6 +26,7 @@
|
|
|
#define CGU_REG_CPCCR 0x00
|
|
|
#define CGU_REG_LCR 0x04
|
|
|
#define CGU_REG_CPPCR 0x10
|
|
|
+#define CGU_REG_CLKGR 0x20
|
|
|
#define CGU_REG_SCR 0x24
|
|
|
#define CGU_REG_I2SCDR 0x60
|
|
|
#define CGU_REG_LPCDR 0x64
|
|
@@ -47,6 +48,9 @@
|
|
|
/* bits within the LCR register */
|
|
|
#define LCR_SLEEP (1 << 0)
|
|
|
|
|
|
+/* bits within the CLKGR register */
|
|
|
+#define CLKGR_UDC (1 << 11)
|
|
|
+
|
|
|
static struct ingenic_cgu *cgu;
|
|
|
|
|
|
static const s8 pll_od_encoding[4] = {
|
|
@@ -242,3 +246,21 @@ void jz4740_clock_set_wait_mode(enum jz4740_wait_mode mode)
|
|
|
|
|
|
writel(lcr, cgu->base + CGU_REG_LCR);
|
|
|
}
|
|
|
+
|
|
|
+void jz4740_clock_udc_disable_auto_suspend(void)
|
|
|
+{
|
|
|
+ uint32_t clkgr = readl(cgu->base + CGU_REG_CLKGR);
|
|
|
+
|
|
|
+ clkgr &= ~CLKGR_UDC;
|
|
|
+ writel(clkgr, cgu->base + CGU_REG_CLKGR);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(jz4740_clock_udc_disable_auto_suspend);
|
|
|
+
|
|
|
+void jz4740_clock_udc_enable_auto_suspend(void)
|
|
|
+{
|
|
|
+ uint32_t clkgr = readl(cgu->base + CGU_REG_CLKGR);
|
|
|
+
|
|
|
+ clkgr |= CLKGR_UDC;
|
|
|
+ writel(clkgr, cgu->base + CGU_REG_CLKGR);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(jz4740_clock_udc_enable_auto_suspend);
|