|
@@ -49,6 +49,8 @@ typedef volatile unsigned int * dv_reg_p;
|
|
|
* on other DaVinci chips. Double check them before you try
|
|
|
* using the addresses ... or PSC module identifiers, etc.
|
|
|
*/
|
|
|
+#ifndef CONFIG_SOC_DA8XX
|
|
|
+
|
|
|
#define DAVINCI_DMA_3PCC_BASE (0x01c00000)
|
|
|
#define DAVINCI_DMA_3PTC0_BASE (0x01c10000)
|
|
|
#define DAVINCI_DMA_3PTC1_BASE (0x01c10400)
|
|
@@ -116,10 +118,46 @@ typedef volatile unsigned int * dv_reg_p;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
+#else /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
+#define DAVINCI_UART0_BASE 0x01c42000
|
|
|
+#define DAVINCI_UART1_BASE 0x01d0c000
|
|
|
+#define DAVINCI_UART2_BASE 0x01d0d000
|
|
|
+#define DAVINCI_I2C0_BASE 0x01c22000
|
|
|
+#define DAVINCI_I2C1_BASE 0x01e28000
|
|
|
+#define DAVINCI_TIMER0_BASE 0x01c20000
|
|
|
+#define DAVINCI_TIMER1_BASE 0x01c21000
|
|
|
+#define DAVINCI_WDOG_BASE 0x01c21000
|
|
|
+#define DAVINCI_PLL_CNTRL0_BASE 0x01c11000
|
|
|
+#define DAVINCI_PSC0_BASE 0x01c10000
|
|
|
+#define DAVINCI_PSC1_BASE 0x01e27000
|
|
|
+#define DAVINCI_SPI0_BASE 0x01c41000
|
|
|
+#define DAVINCI_USB_OTG_BASE 0x01e00000
|
|
|
+#define DAVINCI_SPI1_BASE 0x01e12000
|
|
|
+#define DAVINCI_GPIO_BASE 0x01e26000
|
|
|
+#define DAVINCI_EMAC_CNTRL_REGS_BASE 0x01e23000
|
|
|
+#define DAVINCI_EMAC_WRAPPER_CNTRL_REGS_BASE 0x01e22000
|
|
|
+#define DAVINCI_EMAC_WRAPPER_RAM_BASE 0x01e20000
|
|
|
+#define DAVINCI_MDIO_CNTRL_REGS_BASE 0x01e24000
|
|
|
+#define DAVINCI_ASYNC_EMIF_CNTRL_BASE 0x68000000
|
|
|
+#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x40000000
|
|
|
+#define DAVINCI_ASYNC_EMIF_DATA_CE2_BASE 0x60000000
|
|
|
+#define DAVINCI_ASYNC_EMIF_DATA_CE3_BASE 0x62000000
|
|
|
+#define DAVINCI_ASYNC_EMIF_DATA_CE4_BASE 0x64000000
|
|
|
+#define DAVINCI_ASYNC_EMIF_DATA_CE5_BASE 0x66000000
|
|
|
+#define DAVINCI_DDR_EMIF_CTRL_BASE 0xb0000000
|
|
|
+#define DAVINCI_DDR_EMIF_DATA_BASE 0xc0000000
|
|
|
+#define DAVINCI_INTC_BASE 0xfffee000
|
|
|
+#define DAVINCI_BOOTCFG_BASE 0x01c14000
|
|
|
+
|
|
|
+#endif /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
/* Power and Sleep Controller (PSC) Domains */
|
|
|
#define DAVINCI_GPSC_ARMDOMAIN 0
|
|
|
#define DAVINCI_GPSC_DSPDOMAIN 1
|
|
|
|
|
|
+#ifndef CONFIG_SOC_DA8XX
|
|
|
+
|
|
|
#define DAVINCI_LPSC_VPSSMSTR 0
|
|
|
#define DAVINCI_LPSC_VPSSSLV 1
|
|
|
#define DAVINCI_LPSC_TPCC 2
|
|
@@ -166,6 +204,52 @@ typedef volatile unsigned int * dv_reg_p;
|
|
|
#define DAVINCI_DM646X_LPSC_UART0 26
|
|
|
#define DAVINCI_DM646X_LPSC_I2C 31
|
|
|
|
|
|
+#else /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
+enum davinci_lpsc_ids {
|
|
|
+ DAVINCI_LPSC_TPCC = 0,
|
|
|
+ DAVINCI_LPSC_TPTC0,
|
|
|
+ DAVINCI_LPSC_TPTC1,
|
|
|
+ DAVINCI_LPSC_AEMIF,
|
|
|
+ DAVINCI_LPSC_SPI0,
|
|
|
+ DAVINCI_LPSC_MMC_SD,
|
|
|
+ DAVINCI_LPSC_AINTC,
|
|
|
+ DAVINCI_LPSC_ARM_RAM_ROM,
|
|
|
+ DAVINCI_LPSC_SECCTL_KEYMGR,
|
|
|
+ DAVINCI_LPSC_UART0,
|
|
|
+ DAVINCI_LPSC_SCR0,
|
|
|
+ DAVINCI_LPSC_SCR1,
|
|
|
+ DAVINCI_LPSC_SCR2,
|
|
|
+ DAVINCI_LPSC_DMAX,
|
|
|
+ DAVINCI_LPSC_ARM,
|
|
|
+ DAVINCI_LPSC_GEM,
|
|
|
+ /* for LPSCs in PSC1, offset from 32 for differentiation */
|
|
|
+ DAVINCI_LPSC_PSC1_BASE = 32,
|
|
|
+ DAVINCI_LPSC_USB11,
|
|
|
+ DAVINCI_LPSC_USB20,
|
|
|
+ DAVINCI_LPSC_GPIO,
|
|
|
+ DAVINCI_LPSC_UHPI,
|
|
|
+ DAVINCI_LPSC_EMAC,
|
|
|
+ DAVINCI_LPSC_DDR_EMIF,
|
|
|
+ DAVINCI_LPSC_McASP0,
|
|
|
+ DAVINCI_LPSC_McASP1,
|
|
|
+ DAVINCI_LPSC_McASP2,
|
|
|
+ DAVINCI_LPSC_SPI1,
|
|
|
+ DAVINCI_LPSC_I2C1,
|
|
|
+ DAVINCI_LPSC_UART1,
|
|
|
+ DAVINCI_LPSC_UART2,
|
|
|
+ DAVINCI_LPSC_LCDC,
|
|
|
+ DAVINCI_LPSC_ePWM,
|
|
|
+ DAVINCI_LPSC_eCAP,
|
|
|
+ DAVINCI_LPSC_eQEP,
|
|
|
+ DAVINCI_LPSC_SCR_P0,
|
|
|
+ DAVINCI_LPSC_SCR_P1,
|
|
|
+ DAVINCI_LPSC_CR_P3,
|
|
|
+ DAVINCI_LPSC_L3_CBA_RAM
|
|
|
+};
|
|
|
+
|
|
|
+#endif /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
void lpsc_on(unsigned int id);
|
|
|
void dsp_on(void);
|
|
|
|
|
@@ -174,6 +258,8 @@ void davinci_enable_emac(void);
|
|
|
void davinci_enable_i2c(void);
|
|
|
void davinci_errata_workarounds(void);
|
|
|
|
|
|
+#ifndef CONFIG_SOC_DA8XX
|
|
|
+
|
|
|
/* Some PSC defines */
|
|
|
#define PSC_CHP_SHRTSW (0x01c40038)
|
|
|
#define PSC_GBLCTL (0x01c41010)
|
|
@@ -194,6 +280,39 @@ void davinci_errata_workarounds(void);
|
|
|
|
|
|
#define PSC_SILVER_BULLET (0x01c41a20)
|
|
|
|
|
|
+#else /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
+#define PSC_PSC0_MODULE_ID_CNT 16
|
|
|
+#define PSC_PSC1_MODULE_ID_CNT 32
|
|
|
+
|
|
|
+struct davinci_psc_regs {
|
|
|
+ dv_reg revid;
|
|
|
+ dv_reg rsvd0[71];
|
|
|
+ dv_reg ptcmd;
|
|
|
+ dv_reg rsvd1;
|
|
|
+ dv_reg ptstat;
|
|
|
+ dv_reg rsvd2[437];
|
|
|
+ union {
|
|
|
+ struct {
|
|
|
+ dv_reg mdstat[PSC_PSC0_MODULE_ID_CNT];
|
|
|
+ dv_reg rsvd3[112];
|
|
|
+ dv_reg mdctl[PSC_PSC0_MODULE_ID_CNT];
|
|
|
+ } psc0;
|
|
|
+ struct {
|
|
|
+ dv_reg mdstat[PSC_PSC1_MODULE_ID_CNT];
|
|
|
+ dv_reg rsvd3[96];
|
|
|
+ dv_reg mdctl[PSC_PSC1_MODULE_ID_CNT];
|
|
|
+ } psc1;
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+#define davinci_psc0_regs ((struct davinci_psc_regs *)DAVINCI_PSC0_BASE)
|
|
|
+#define davinci_psc1_regs ((struct davinci_psc_regs *)DAVINCI_PSC1_BASE)
|
|
|
+
|
|
|
+#endif /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
+#ifndef CONFIG_SOC_DA8XX
|
|
|
+
|
|
|
/* Miscellania... */
|
|
|
#define VBPR (0x20000020)
|
|
|
|
|
@@ -206,4 +325,122 @@ void davinci_errata_workarounds(void);
|
|
|
#define PINMUX3 0x01c4000c
|
|
|
#define PINMUX4 0x01c40010
|
|
|
|
|
|
+#else /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
+struct davinci_pllc_regs {
|
|
|
+ dv_reg revid;
|
|
|
+ dv_reg rsvd1[56];
|
|
|
+ dv_reg rstype;
|
|
|
+ dv_reg rsvd2[6];
|
|
|
+ dv_reg pllctl;
|
|
|
+ dv_reg ocsel;
|
|
|
+ dv_reg rsvd3[2];
|
|
|
+ dv_reg pllm;
|
|
|
+ dv_reg prediv;
|
|
|
+ dv_reg plldiv1;
|
|
|
+ dv_reg plldiv2;
|
|
|
+ dv_reg plldiv3;
|
|
|
+ dv_reg oscdiv;
|
|
|
+ dv_reg postdiv;
|
|
|
+ dv_reg rsvd4[3];
|
|
|
+ dv_reg pllcmd;
|
|
|
+ dv_reg pllstat;
|
|
|
+ dv_reg alnctl;
|
|
|
+ dv_reg dchange;
|
|
|
+ dv_reg cken;
|
|
|
+ dv_reg ckstat;
|
|
|
+ dv_reg systat;
|
|
|
+ dv_reg rsvd5[3];
|
|
|
+ dv_reg plldiv4;
|
|
|
+ dv_reg plldiv5;
|
|
|
+ dv_reg plldiv6;
|
|
|
+ dv_reg plldiv7;
|
|
|
+ dv_reg rsvd6[32];
|
|
|
+ dv_reg emucnt0;
|
|
|
+ dv_reg emucnt1;
|
|
|
+};
|
|
|
+
|
|
|
+#define davinci_pllc_regs ((struct davinci_pllc_regs *)DAVINCI_PLL_CNTRL0_BASE)
|
|
|
+#define DAVINCI_PLLC_DIV_MASK 0x1f
|
|
|
+
|
|
|
+/* Clock IDs */
|
|
|
+enum davinci_clk_ids {
|
|
|
+ DAVINCI_SPI0_CLKID = 2,
|
|
|
+ DAVINCI_UART2_CLKID = 2,
|
|
|
+ DAVINCI_MDIO_CLKID = 4,
|
|
|
+ DAVINCI_ARM_CLKID = 6,
|
|
|
+ DAVINCI_PLLM_CLKID = 0xff,
|
|
|
+ DAVINCI_PLLC_CLKID = 0x100,
|
|
|
+ DAVINCI_AUXCLK_CLKID = 0x101
|
|
|
+};
|
|
|
+
|
|
|
+int clk_get(enum davinci_clk_ids id);
|
|
|
+
|
|
|
+/* Boot config */
|
|
|
+struct davinci_syscfg_regs {
|
|
|
+ dv_reg revid;
|
|
|
+ dv_reg rsvd[71];
|
|
|
+ dv_reg pinmux[20];
|
|
|
+ dv_reg suspsrc;
|
|
|
+ dv_reg chipsig;
|
|
|
+ dv_reg chipsig_clr;
|
|
|
+ dv_reg cfgchip0;
|
|
|
+ dv_reg cfgchip1;
|
|
|
+ dv_reg cfgchip2;
|
|
|
+ dv_reg cfgchip3;
|
|
|
+ dv_reg cfgchip4;
|
|
|
+};
|
|
|
+
|
|
|
+#define davinci_syscfg_regs \
|
|
|
+ ((struct davinci_syscfg_regs *)DAVINCI_BOOTCFG_BASE)
|
|
|
+
|
|
|
+/* Emulation suspend bits */
|
|
|
+#define DAVINCI_SYSCFG_SUSPSRC_EMAC (1 << 5)
|
|
|
+#define DAVINCI_SYSCFG_SUSPSRC_I2C (1 << 16)
|
|
|
+#define DAVINCI_SYSCFG_SUSPSRC_SPI0 (1 << 21)
|
|
|
+#define DAVINCI_SYSCFG_SUSPSRC_UART2 (1 << 20)
|
|
|
+#define DAVINCI_SYSCFG_SUSPSRC_TIMER0 (1 << 27)
|
|
|
+
|
|
|
+/* Interrupt controller */
|
|
|
+struct davinci_aintc_regs {
|
|
|
+ dv_reg revid;
|
|
|
+ dv_reg cr;
|
|
|
+ dv_reg dummy0[2];
|
|
|
+ dv_reg ger;
|
|
|
+ dv_reg dummy1[219];
|
|
|
+ dv_reg ecr1;
|
|
|
+ dv_reg ecr2;
|
|
|
+ dv_reg ecr3;
|
|
|
+ dv_reg dummy2[1117];
|
|
|
+ dv_reg hier;
|
|
|
+};
|
|
|
+
|
|
|
+#define davinci_aintc_regs ((struct davinci_aintc_regs *)DAVINCI_INTC_BASE)
|
|
|
+
|
|
|
+struct davinci_uart_ctrl_regs {
|
|
|
+ dv_reg revid1;
|
|
|
+ dv_reg revid2;
|
|
|
+ dv_reg pwremu_mgmt;
|
|
|
+ dv_reg mdr;
|
|
|
+};
|
|
|
+
|
|
|
+#define DAVINCI_UART_CTRL_BASE 0x28
|
|
|
+#define DAVINCI_UART0_CTRL_ADDR (DAVINCI_UART0_BASE + DAVINCI_UART_CTRL_BASE)
|
|
|
+#define DAVINCI_UART1_CTRL_ADDR (DAVINCI_UART1_BASE + DAVINCI_UART_CTRL_BASE)
|
|
|
+#define DAVINCI_UART2_CTRL_ADDR (DAVINCI_UART2_BASE + DAVINCI_UART_CTRL_BASE)
|
|
|
+
|
|
|
+#define davinci_uart0_ctrl_regs \
|
|
|
+ ((struct davinci_uart_ctrl_regs *)DAVINCI_UART0_CTRL_ADDR)
|
|
|
+#define davinci_uart1_ctrl_regs \
|
|
|
+ ((struct davinci_uart_ctrl_regs *)DAVINCI_UART1_CTRL_ADDR)
|
|
|
+#define davinci_uart2_ctrl_regs \
|
|
|
+ ((struct davinci_uart_ctrl_regs *)DAVINCI_UART2_CTRL_ADDR)
|
|
|
+
|
|
|
+/* UART PWREMU_MGMT definitions */
|
|
|
+#define DAVINCI_UART_PWREMU_MGMT_FREE (1 << 0)
|
|
|
+#define DAVINCI_UART_PWREMU_MGMT_URRST (1 << 13)
|
|
|
+#define DAVINCI_UART_PWREMU_MGMT_UTRST (1 << 14)
|
|
|
+
|
|
|
+#endif /* CONFIG_SOC_DA8XX */
|
|
|
+
|
|
|
#endif /* __ASM_ARCH_HARDWARE_H */
|