|
@@ -451,3 +451,182 @@
|
|
|
#define PM_PWR_STA_REG_REG_MASK (0x03FFFFBE)
|
|
|
|
|
|
/* PM_CLK_CTRL_REG */
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_I2S_MCLK (31)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_DDR2_CHG_EN (30)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_PCIE_REF1_EN (29)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_PCIE_REF0_EN (28)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_TIMER_SIM_MODE (27)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_I2SCLK_DIV (24)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_I2SCLK_SEL (22)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_CLKOUT_DIV (20)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_CLKOUT_SEL (16)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_MDC_DIV (14)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_CRYPTO_CLK_SEL (12)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_CPU_PWR_MODE (9)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_PLL_DDR2_SEL (7)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_DIV_IMMEDIATE (6)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV (4)
|
|
|
+#define PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL (0)
|
|
|
+
|
|
|
+#define PM_CPU_CLK_DIV(DIV) { \
|
|
|
+ PM_CLK_CTRL_REG &= ~((0x3) << PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV); \
|
|
|
+ PM_CLK_CTRL_REG |= (((DIV)&0x3) << PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV); \
|
|
|
+}
|
|
|
+
|
|
|
+#define PM_PLL_CPU_SEL(CPU) { \
|
|
|
+ PM_CLK_CTRL_REG &= ~((0xF) << PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL); \
|
|
|
+ PM_CLK_CTRL_REG |= (((CPU)&0xF) << PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL); \
|
|
|
+}
|
|
|
+
|
|
|
+/* PM_PLL_LCD_I2S_CTRL_REG */
|
|
|
+#define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_MCLK_SMC_DIV (22)
|
|
|
+#define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_R_SEL (17)
|
|
|
+#define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_P (11)
|
|
|
+#define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_M (3)
|
|
|
+#define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_S (0)
|
|
|
+
|
|
|
+/* PM_PLL_HM_PD_CTRL_REG */
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY1 (11)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY0 (10)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_I2SCD (6)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_I2S (5)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_LCD (4)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB (3)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_RGMII (2)
|
|
|
+#define PM_PLL_HM_PD_CTRL_REG_MASK (0x00000C7C)
|
|
|
+
|
|
|
+/* PM_WDT_CTRL_REG */
|
|
|
+#define PM_WDT_CTRL_REG_OFFSET_RESET_CPU_ONLY (0)
|
|
|
+
|
|
|
+/* PM_CSR_REG - Clock Scaling Register*/
|
|
|
+#define PM_CSR_REG_OFFSET_CSR_EN (30)
|
|
|
+#define PM_CSR_REG_OFFSET_CSR_NUM (0)
|
|
|
+
|
|
|
+#define CNS3XXX_PWR_CLK_EN(BLOCK) (0x1<<PM_CLK_GATE_REG_OFFSET_##BLOCK)
|
|
|
+
|
|
|
+/* Software reset*/
|
|
|
+#define CNS3XXX_PWR_SOFTWARE_RST(BLOCK) (0x1<<PM_SOFT_RST_REG_OFFST_##BLOCK)
|
|
|
+
|
|
|
+/*
|
|
|
+ * CNS3XXX support several power saving mode as following,
|
|
|
+ * DFS, IDLE, HALT, DOZE, SLEEP, Hibernate
|
|
|
+ */
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_DFS (0)
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_IDLE (1)
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_HALT (2)
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_DOZE (3)
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_SLEEP (4)
|
|
|
+#define CNS3XXX_PWR_CPU_MODE_HIBERNATE (5)
|
|
|
+
|
|
|
+#define CNS3XXX_PWR_PLL(BLOCK) (0x1<<PM_PLL_HM_PD_CTRL_REG_OFFSET_##BLOCK)
|
|
|
+#define CNS3XXX_PWR_PLL_ALL PM_PLL_HM_PD_CTRL_REG_MASK
|
|
|
+
|
|
|
+/* Change CPU frequency and divider */
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_300MHZ (0)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_333MHZ (1)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_366MHZ (2)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_400MHZ (3)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_433MHZ (4)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_466MHZ (5)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_500MHZ (6)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_533MHZ (7)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_566MHZ (8)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_600MHZ (9)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_633MHZ (10)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_666MHZ (11)
|
|
|
+#define CNS3XXX_PWR_PLL_CPU_700MHZ (12)
|
|
|
+
|
|
|
+#define CNS3XXX_PWR_CPU_CLK_DIV_BY1 (0)
|
|
|
+#define CNS3XXX_PWR_CPU_CLK_DIV_BY2 (1)
|
|
|
+#define CNS3XXX_PWR_CPU_CLK_DIV_BY4 (2)
|
|
|
+
|
|
|
+/* Change DDR2 frequency */
|
|
|
+#define CNS3XXX_PWR_PLL_DDR2_200MHZ (0)
|
|
|
+#define CNS3XXX_PWR_PLL_DDR2_266MHZ (1)
|
|
|
+#define CNS3XXX_PWR_PLL_DDR2_333MHZ (2)
|
|
|
+#define CNS3XXX_PWR_PLL_DDR2_400MHZ (3)
|
|
|
+
|
|
|
+void cns3xxx_pwr_soft_rst(unsigned int block);
|
|
|
+void cns3xxx_pwr_clk_en(unsigned int block);
|
|
|
+int cns3xxx_cpu_clock(void);
|
|
|
+
|
|
|
+/*
|
|
|
+ * ARM11 MPCore interrupt sources (primary GIC)
|
|
|
+ */
|
|
|
+#define IRQ_CNS3XXX_PMU (IRQ_TC11MP_GIC_START + 0)
|
|
|
+#define IRQ_CNS3XXX_SDIO (IRQ_TC11MP_GIC_START + 1)
|
|
|
+#define IRQ_CNS3XXX_L2CC (IRQ_TC11MP_GIC_START + 2)
|
|
|
+#define IRQ_CNS3XXX_RTC (IRQ_TC11MP_GIC_START + 3)
|
|
|
+#define IRQ_CNS3XXX_I2S (IRQ_TC11MP_GIC_START + 4)
|
|
|
+#define IRQ_CNS3XXX_PCM (IRQ_TC11MP_GIC_START + 5)
|
|
|
+#define IRQ_CNS3XXX_SPI (IRQ_TC11MP_GIC_START + 6)
|
|
|
+#define IRQ_CNS3XXX_I2C (IRQ_TC11MP_GIC_START + 7)
|
|
|
+#define IRQ_CNS3XXX_CIM (IRQ_TC11MP_GIC_START + 8)
|
|
|
+#define IRQ_CNS3XXX_GPU (IRQ_TC11MP_GIC_START + 9)
|
|
|
+#define IRQ_CNS3XXX_LCD (IRQ_TC11MP_GIC_START + 10)
|
|
|
+#define IRQ_CNS3XXX_GPIOA (IRQ_TC11MP_GIC_START + 11)
|
|
|
+#define IRQ_CNS3XXX_GPIOB (IRQ_TC11MP_GIC_START + 12)
|
|
|
+#define IRQ_CNS3XXX_UART0 (IRQ_TC11MP_GIC_START + 13)
|
|
|
+#define IRQ_CNS3XXX_UART1 (IRQ_TC11MP_GIC_START + 14)
|
|
|
+#define IRQ_CNS3XXX_UART2 (IRQ_TC11MP_GIC_START + 15)
|
|
|
+#define IRQ_CNS3XXX_ARM11 (IRQ_TC11MP_GIC_START + 16)
|
|
|
+
|
|
|
+#define IRQ_CNS3XXX_SW_STATUS (IRQ_TC11MP_GIC_START + 17)
|
|
|
+#define IRQ_CNS3XXX_SW_R0TXC (IRQ_TC11MP_GIC_START + 18)
|
|
|
+#define IRQ_CNS3XXX_SW_R0RXC (IRQ_TC11MP_GIC_START + 19)
|
|
|
+#define IRQ_CNS3XXX_SW_R0QE (IRQ_TC11MP_GIC_START + 20)
|
|
|
+#define IRQ_CNS3XXX_SW_R0QF (IRQ_TC11MP_GIC_START + 21)
|
|
|
+#define IRQ_CNS3XXX_SW_R1TXC (IRQ_TC11MP_GIC_START + 22)
|
|
|
+#define IRQ_CNS3XXX_SW_R1RXC (IRQ_TC11MP_GIC_START + 23)
|
|
|
+#define IRQ_CNS3XXX_SW_R1QE (IRQ_TC11MP_GIC_START + 24)
|
|
|
+#define IRQ_CNS3XXX_SW_R1QF (IRQ_TC11MP_GIC_START + 25)
|
|
|
+#define IRQ_CNS3XXX_SW_PPE (IRQ_TC11MP_GIC_START + 26)
|
|
|
+
|
|
|
+#define IRQ_CNS3XXX_CRYPTO (IRQ_TC11MP_GIC_START + 27)
|
|
|
+#define IRQ_CNS3XXX_HCIE (IRQ_TC11MP_GIC_START + 28)
|
|
|
+#define IRQ_CNS3XXX_PCIE0_DEVICE (IRQ_TC11MP_GIC_START + 29)
|
|
|
+#define IRQ_CNS3XXX_PCIE1_DEVICE (IRQ_TC11MP_GIC_START + 30)
|
|
|
+#define IRQ_CNS3XXX_USB_OTG (IRQ_TC11MP_GIC_START + 31)
|
|
|
+#define IRQ_CNS3XXX_USB_EHCI (IRQ_TC11MP_GIC_START + 32)
|
|
|
+#define IRQ_CNS3XXX_SATA (IRQ_TC11MP_GIC_START + 33)
|
|
|
+#define IRQ_CNS3XXX_RAID (IRQ_TC11MP_GIC_START + 34)
|
|
|
+#define IRQ_CNS3XXX_SMC (IRQ_TC11MP_GIC_START + 35)
|
|
|
+
|
|
|
+#define IRQ_CNS3XXX_DMAC_ABORT (IRQ_TC11MP_GIC_START + 36)
|
|
|
+#define IRQ_CNS3XXX_DMAC0 (IRQ_TC11MP_GIC_START + 37)
|
|
|
+#define IRQ_CNS3XXX_DMAC1 (IRQ_TC11MP_GIC_START + 38)
|
|
|
+#define IRQ_CNS3XXX_DMAC2 (IRQ_TC11MP_GIC_START + 39)
|
|
|
+#define IRQ_CNS3XXX_DMAC3 (IRQ_TC11MP_GIC_START + 40)
|
|
|
+#define IRQ_CNS3XXX_DMAC4 (IRQ_TC11MP_GIC_START + 41)
|
|
|
+#define IRQ_CNS3XXX_DMAC5 (IRQ_TC11MP_GIC_START + 42)
|
|
|
+#define IRQ_CNS3XXX_DMAC6 (IRQ_TC11MP_GIC_START + 43)
|
|
|
+#define IRQ_CNS3XXX_DMAC7 (IRQ_TC11MP_GIC_START + 44)
|
|
|
+#define IRQ_CNS3XXX_DMAC8 (IRQ_TC11MP_GIC_START + 45)
|
|
|
+#define IRQ_CNS3XXX_DMAC9 (IRQ_TC11MP_GIC_START + 46)
|
|
|
+#define IRQ_CNS3XXX_DMAC10 (IRQ_TC11MP_GIC_START + 47)
|
|
|
+#define IRQ_CNS3XXX_DMAC11 (IRQ_TC11MP_GIC_START + 48)
|
|
|
+#define IRQ_CNS3XXX_DMAC12 (IRQ_TC11MP_GIC_START + 49)
|
|
|
+#define IRQ_CNS3XXX_DMAC13 (IRQ_TC11MP_GIC_START + 50)
|
|
|
+#define IRQ_CNS3XXX_DMAC14 (IRQ_TC11MP_GIC_START + 51)
|
|
|
+#define IRQ_CNS3XXX_DMAC15 (IRQ_TC11MP_GIC_START + 52)
|
|
|
+#define IRQ_CNS3XXX_DMAC16 (IRQ_TC11MP_GIC_START + 53)
|
|
|
+#define IRQ_CNS3XXX_DMAC17 (IRQ_TC11MP_GIC_START + 54)
|
|
|
+
|
|
|
+#define IRQ_CNS3XXX_PCIE0_RC (IRQ_TC11MP_GIC_START + 55)
|
|
|
+#define IRQ_CNS3XXX_PCIE1_RC (IRQ_TC11MP_GIC_START + 56)
|
|
|
+#define IRQ_CNS3XXX_TIMER0 (IRQ_TC11MP_GIC_START + 57)
|
|
|
+#define IRQ_CNS3XXX_TIMER1 (IRQ_TC11MP_GIC_START + 58)
|
|
|
+#define IRQ_CNS3XXX_USB_OHCI (IRQ_TC11MP_GIC_START + 59)
|
|
|
+#define IRQ_CNS3XXX_TIMER2 (IRQ_TC11MP_GIC_START + 60)
|
|
|
+#define IRQ_CNS3XXX_EXTERNAL_PIN0 (IRQ_TC11MP_GIC_START + 61)
|
|
|
+#define IRQ_CNS3XXX_EXTERNAL_PIN1 (IRQ_TC11MP_GIC_START + 62)
|
|
|
+#define IRQ_CNS3XXX_EXTERNAL_PIN2 (IRQ_TC11MP_GIC_START + 63)
|
|
|
+
|
|
|
+#define NR_IRQS_CNS3XXX (IRQ_TC11MP_GIC_START + 64)
|
|
|
+
|
|
|
+#if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_CNS3XXX)
|
|
|
+#undef NR_IRQS
|
|
|
+#define NR_IRQS NR_IRQS_CNS3XXX
|
|
|
+#endif
|
|
|
+
|
|
|
+#endif /* __MACH_BOARD_CNS3XXX_H */
|