1dc7de222SMasahiro Yamada /* 2dc7de222SMasahiro Yamada * Keystone2: Common SoC definitions, structures etc. 3dc7de222SMasahiro Yamada * 4dc7de222SMasahiro Yamada * (C) Copyright 2012-2014 5dc7de222SMasahiro Yamada * Texas Instruments Incorporated, <www.ti.com> 6dc7de222SMasahiro Yamada * 7dc7de222SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 8dc7de222SMasahiro Yamada */ 9dc7de222SMasahiro Yamada #ifndef __ASM_ARCH_HARDWARE_H 10dc7de222SMasahiro Yamada #define __ASM_ARCH_HARDWARE_H 11dc7de222SMasahiro Yamada 12dc7de222SMasahiro Yamada #include <config.h> 13dc7de222SMasahiro Yamada 14dc7de222SMasahiro Yamada #ifndef __ASSEMBLY__ 15dc7de222SMasahiro Yamada 16dc7de222SMasahiro Yamada #include <linux/sizes.h> 17dc7de222SMasahiro Yamada #include <asm/io.h> 18dc7de222SMasahiro Yamada 19dc7de222SMasahiro Yamada #define REG(addr) (*(volatile unsigned int *)(addr)) 20dc7de222SMasahiro Yamada #define REG_P(addr) ((volatile unsigned int *)(addr)) 21dc7de222SMasahiro Yamada 22dc7de222SMasahiro Yamada typedef volatile unsigned int dv_reg; 23dc7de222SMasahiro Yamada typedef volatile unsigned int *dv_reg_p; 24dc7de222SMasahiro Yamada 25dc7de222SMasahiro Yamada #endif 26dc7de222SMasahiro Yamada 27dc7de222SMasahiro Yamada #define KS2_DDRPHY_PIR_OFFSET 0x04 28dc7de222SMasahiro Yamada #define KS2_DDRPHY_PGCR0_OFFSET 0x08 29dc7de222SMasahiro Yamada #define KS2_DDRPHY_PGCR1_OFFSET 0x0C 30dc7de222SMasahiro Yamada #define KS2_DDRPHY_PGSR0_OFFSET 0x10 31dc7de222SMasahiro Yamada #define KS2_DDRPHY_PGSR1_OFFSET 0x14 32dc7de222SMasahiro Yamada #define KS2_DDRPHY_PLLCR_OFFSET 0x18 33dc7de222SMasahiro Yamada #define KS2_DDRPHY_PTR0_OFFSET 0x1C 34dc7de222SMasahiro Yamada #define KS2_DDRPHY_PTR1_OFFSET 0x20 35dc7de222SMasahiro Yamada #define KS2_DDRPHY_PTR2_OFFSET 0x24 36dc7de222SMasahiro Yamada #define KS2_DDRPHY_PTR3_OFFSET 0x28 37dc7de222SMasahiro Yamada #define KS2_DDRPHY_PTR4_OFFSET 0x2C 38dc7de222SMasahiro Yamada #define KS2_DDRPHY_DCR_OFFSET 0x44 39dc7de222SMasahiro Yamada 40dc7de222SMasahiro Yamada #define KS2_DDRPHY_DTPR0_OFFSET 0x48 41dc7de222SMasahiro Yamada #define KS2_DDRPHY_DTPR1_OFFSET 0x4C 42dc7de222SMasahiro Yamada #define KS2_DDRPHY_DTPR2_OFFSET 0x50 43dc7de222SMasahiro Yamada 44dc7de222SMasahiro Yamada #define KS2_DDRPHY_MR0_OFFSET 0x54 45dc7de222SMasahiro Yamada #define KS2_DDRPHY_MR1_OFFSET 0x58 46dc7de222SMasahiro Yamada #define KS2_DDRPHY_MR2_OFFSET 0x5C 47dc7de222SMasahiro Yamada #define KS2_DDRPHY_DTCR_OFFSET 0x68 48dc7de222SMasahiro Yamada #define KS2_DDRPHY_PGCR2_OFFSET 0x8C 49dc7de222SMasahiro Yamada 50dc7de222SMasahiro Yamada #define KS2_DDRPHY_ZQ0CR1_OFFSET 0x184 51dc7de222SMasahiro Yamada #define KS2_DDRPHY_ZQ1CR1_OFFSET 0x194 52dc7de222SMasahiro Yamada #define KS2_DDRPHY_ZQ2CR1_OFFSET 0x1A4 53dc7de222SMasahiro Yamada #define KS2_DDRPHY_ZQ3CR1_OFFSET 0x1B4 54dc7de222SMasahiro Yamada 55*f8b4a2d7SCooper Jr., Franklin #define KS2_DDRPHY_DATX8_2_OFFSET 0x240 56*f8b4a2d7SCooper Jr., Franklin #define KS2_DDRPHY_DATX8_3_OFFSET 0x280 57235dd6e8SVitaly Andrianov #define KS2_DDRPHY_DATX8_4_OFFSET 0x2C0 58235dd6e8SVitaly Andrianov #define KS2_DDRPHY_DATX8_5_OFFSET 0x300 59235dd6e8SVitaly Andrianov #define KS2_DDRPHY_DATX8_6_OFFSET 0x340 60235dd6e8SVitaly Andrianov #define KS2_DDRPHY_DATX8_7_OFFSET 0x380 61dc7de222SMasahiro Yamada #define KS2_DDRPHY_DATX8_8_OFFSET 0x3C0 62dc7de222SMasahiro Yamada 63dc7de222SMasahiro Yamada #define IODDRM_MASK 0x00000180 64dc7de222SMasahiro Yamada #define ZCKSEL_MASK 0x01800000 65dc7de222SMasahiro Yamada #define CL_MASK 0x00000072 66dc7de222SMasahiro Yamada #define WR_MASK 0x00000E00 67dc7de222SMasahiro Yamada #define BL_MASK 0x00000003 68dc7de222SMasahiro Yamada #define RRMODE_MASK 0x00040000 69dc7de222SMasahiro Yamada #define UDIMM_MASK 0x20000000 70dc7de222SMasahiro Yamada #define BYTEMASK_MASK 0x0003FC00 71dc7de222SMasahiro Yamada #define MPRDQ_MASK 0x00000080 72dc7de222SMasahiro Yamada #define PDQ_MASK 0x00000070 73dc7de222SMasahiro Yamada #define NOSRA_MASK 0x08000000 74dc7de222SMasahiro Yamada #define ECC_MASK 0x00000001 75*f8b4a2d7SCooper Jr., Franklin #define DXEN_MASK 0x00000001 76dc7de222SMasahiro Yamada 77dc7de222SMasahiro Yamada /* DDR3 definitions */ 78dc7de222SMasahiro Yamada #define KS2_DDR3A_EMIF_CTRL_BASE 0x21010000 79dc7de222SMasahiro Yamada #define KS2_DDR3A_EMIF_DATA_BASE 0x80000000 80dc7de222SMasahiro Yamada #define KS2_DDR3A_DDRPHYC 0x02329000 81dc7de222SMasahiro Yamada 82dc7de222SMasahiro Yamada #define KS2_DDR3_MIDR_OFFSET 0x00 83dc7de222SMasahiro Yamada #define KS2_DDR3_STATUS_OFFSET 0x04 84dc7de222SMasahiro Yamada #define KS2_DDR3_SDCFG_OFFSET 0x08 85dc7de222SMasahiro Yamada #define KS2_DDR3_SDRFC_OFFSET 0x10 86dc7de222SMasahiro Yamada #define KS2_DDR3_SDTIM1_OFFSET 0x18 87dc7de222SMasahiro Yamada #define KS2_DDR3_SDTIM2_OFFSET 0x1C 88dc7de222SMasahiro Yamada #define KS2_DDR3_SDTIM3_OFFSET 0x20 89dc7de222SMasahiro Yamada #define KS2_DDR3_SDTIM4_OFFSET 0x28 90dc7de222SMasahiro Yamada #define KS2_DDR3_PMCTL_OFFSET 0x38 91dc7de222SMasahiro Yamada #define KS2_DDR3_ZQCFG_OFFSET 0xC8 92dc7de222SMasahiro Yamada 93dc7de222SMasahiro Yamada #define KS2_DDR3_PLLCTRL_PHY_RESET 0x80000000 94dc7de222SMasahiro Yamada 95dc7de222SMasahiro Yamada /* DDR3 ECC */ 96dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_INT_STATUS_OFFSET 0x0AC 97dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_INT_ENABLE_SET_SYS_OFFSET 0x0B4 98dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_CTRL_OFFSET 0x110 99dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_ADDR_RANGE1_OFFSET 0x114 100dc7de222SMasahiro Yamada #define KS2_DDR3_ONE_BIT_ECC_ERR_CNT_OFFSET 0x130 101dc7de222SMasahiro Yamada #define KS2_DDR3_ONE_BIT_ECC_ERR_ADDR_LOG_OFFSET 0x13C 102dc7de222SMasahiro Yamada 103dc7de222SMasahiro Yamada /* DDR3 ECC Interrupt Status register */ 104dc7de222SMasahiro Yamada #define KS2_DDR3_1B_ECC_ERR_SYS BIT(5) 105dc7de222SMasahiro Yamada #define KS2_DDR3_2B_ECC_ERR_SYS BIT(4) 106dc7de222SMasahiro Yamada #define KS2_DDR3_WR_ECC_ERR_SYS BIT(3) 107dc7de222SMasahiro Yamada 108dc7de222SMasahiro Yamada /* DDR3 ECC Control register */ 109dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_EN BIT(31) 110dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_ADDR_RNG_PROT BIT(30) 111dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_VERIFY_EN BIT(29) 112dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_RMW_EN BIT(28) 113dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_ADDR_RNG_1_EN BIT(0) 114dc7de222SMasahiro Yamada 115dc7de222SMasahiro Yamada #define KS2_DDR3_ECC_ENABLE (KS2_DDR3_ECC_EN | \ 116dc7de222SMasahiro Yamada KS2_DDR3_ECC_ADDR_RNG_PROT | \ 117dc7de222SMasahiro Yamada KS2_DDR3_ECC_VERIFY_EN) 118dc7de222SMasahiro Yamada 119dc7de222SMasahiro Yamada /* EDMA */ 120dc7de222SMasahiro Yamada #define KS2_EDMA0_BASE 0x02700000 121dc7de222SMasahiro Yamada 122dc7de222SMasahiro Yamada /* EDMA3 register offsets */ 123dc7de222SMasahiro Yamada #define KS2_EDMA_QCHMAP0 0x0200 124dc7de222SMasahiro Yamada #define KS2_EDMA_IPR 0x1068 125dc7de222SMasahiro Yamada #define KS2_EDMA_ICR 0x1070 126dc7de222SMasahiro Yamada #define KS2_EDMA_QEECR 0x1088 127dc7de222SMasahiro Yamada #define KS2_EDMA_QEESR 0x108c 128dc7de222SMasahiro Yamada #define KS2_EDMA_PARAM_1(x) (0x4020 + (4 * x)) 129dc7de222SMasahiro Yamada 130dc7de222SMasahiro Yamada /* NETCP pktdma */ 131cddb3300SVitaly Andrianov #ifdef CONFIG_SOC_K2G 132cddb3300SVitaly Andrianov #define KS2_NETCP_PDMA_RX_FREE_QUEUE 113 133cddb3300SVitaly Andrianov #define KS2_NETCP_PDMA_RX_RCV_QUEUE 114 134cddb3300SVitaly Andrianov #else 135dc7de222SMasahiro Yamada #define KS2_NETCP_PDMA_RX_FREE_QUEUE 4001 136dc7de222SMasahiro Yamada #define KS2_NETCP_PDMA_RX_RCV_QUEUE 4002 137cddb3300SVitaly Andrianov #endif 138dc7de222SMasahiro Yamada 139dc7de222SMasahiro Yamada /* Chip Interrupt Controller */ 140dc7de222SMasahiro Yamada #define KS2_CIC2_BASE 0x02608000 141dc7de222SMasahiro Yamada 142dc7de222SMasahiro Yamada /* Chip Interrupt Controller register offsets */ 143dc7de222SMasahiro Yamada #define KS2_CIC_CTRL 0x04 144dc7de222SMasahiro Yamada #define KS2_CIC_HOST_CTRL 0x0C 145dc7de222SMasahiro Yamada #define KS2_CIC_GLOBAL_ENABLE 0x10 146dc7de222SMasahiro Yamada #define KS2_CIC_SYS_ENABLE_IDX_SET 0x28 147dc7de222SMasahiro Yamada #define KS2_CIC_HOST_ENABLE_IDX_SET 0x34 148dc7de222SMasahiro Yamada #define KS2_CIC_CHAN_MAP(n) (0x0400 + (n << 2)) 149dc7de222SMasahiro Yamada 150dc7de222SMasahiro Yamada #define KS2_UART0_BASE 0x02530c00 151dc7de222SMasahiro Yamada #define KS2_UART1_BASE 0x02531000 152dc7de222SMasahiro Yamada 153dc7de222SMasahiro Yamada /* Boot Config */ 154dc7de222SMasahiro Yamada #define KS2_DEVICE_STATE_CTRL_BASE 0x02620000 155dc7de222SMasahiro Yamada #define KS2_JTAG_ID_REG (KS2_DEVICE_STATE_CTRL_BASE + 0x18) 156dc7de222SMasahiro Yamada #define KS2_DEVSTAT (KS2_DEVICE_STATE_CTRL_BASE + 0x20) 157dc7de222SMasahiro Yamada #define KS2_DEVCFG (KS2_DEVICE_STATE_CTRL_BASE + 0x14c) 15811d8222aSVitaly Andrianov #define KS2_ETHERNET_CFG (KS2_DEVICE_STATE_CTRL_BASE + 0xe20) 15911d8222aSVitaly Andrianov #define KS2_ETHERNET_RGMII 2 160dc7de222SMasahiro Yamada 161dc7de222SMasahiro Yamada /* PSC */ 162dc7de222SMasahiro Yamada #define KS2_PSC_BASE 0x02350000 163dc7de222SMasahiro Yamada #define KS2_LPSC_GEM_0 15 164dc7de222SMasahiro Yamada #define KS2_LPSC_TETRIS 52 165dc7de222SMasahiro Yamada #define KS2_TETRIS_PWR_DOMAIN 31 1664ed8b2c9SSuman Anna #define KS2_GEM_0_PWR_DOMAIN 8 167dc7de222SMasahiro Yamada 168dc7de222SMasahiro Yamada /* Chip configuration unlock codes and registers */ 169dc7de222SMasahiro Yamada #define KS2_KICK0 (KS2_DEVICE_STATE_CTRL_BASE + 0x38) 170dc7de222SMasahiro Yamada #define KS2_KICK1 (KS2_DEVICE_STATE_CTRL_BASE + 0x3c) 171dc7de222SMasahiro Yamada #define KS2_KICK0_MAGIC 0x83e70b13 172dc7de222SMasahiro Yamada #define KS2_KICK1_MAGIC 0x95a4f1e0 173dc7de222SMasahiro Yamada 174dc7de222SMasahiro Yamada /* PLL control registers */ 175dc7de222SMasahiro Yamada #define KS2_MAINPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x350) 176dc7de222SMasahiro Yamada #define KS2_MAINPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x354) 177dc7de222SMasahiro Yamada #define KS2_PASSPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x358) 178dc7de222SMasahiro Yamada #define KS2_PASSPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x35C) 179dc7de222SMasahiro Yamada #define KS2_DDR3APLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x360) 180dc7de222SMasahiro Yamada #define KS2_DDR3APLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x364) 18174af583eSLokesh Vutla #define KS2_DDR3BPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x368) 18274af583eSLokesh Vutla #define KS2_DDR3BPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x36C) 183dc7de222SMasahiro Yamada #define KS2_ARMPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x370) 184dc7de222SMasahiro Yamada #define KS2_ARMPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x374) 185bda920c6SVitaly Andrianov #define KS2_UARTPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x390) 186bda920c6SVitaly Andrianov #define KS2_UARTPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x394) 187dc7de222SMasahiro Yamada 188dc7de222SMasahiro Yamada #define KS2_PLL_CNTRL_BASE 0x02310000 189dc7de222SMasahiro Yamada #define KS2_CLOCK_BASE KS2_PLL_CNTRL_BASE 190dc7de222SMasahiro Yamada #define KS2_RSTCTRL_RSTYPE (KS2_PLL_CNTRL_BASE + 0xe4) 191dc7de222SMasahiro Yamada #define KS2_RSTCTRL (KS2_PLL_CNTRL_BASE + 0xe8) 192dc7de222SMasahiro Yamada #define KS2_RSTCTRL_RSCFG (KS2_PLL_CNTRL_BASE + 0xec) 193dc7de222SMasahiro Yamada #define KS2_RSTCTRL_KEY 0x5a69 194dc7de222SMasahiro Yamada #define KS2_RSTCTRL_MASK 0xffff0000 195dc7de222SMasahiro Yamada #define KS2_RSTCTRL_SWRST 0xfffe0000 196dc7de222SMasahiro Yamada #define KS2_RSTYPE_PLL_SOFT BIT(13) 197dc7de222SMasahiro Yamada 198dc7de222SMasahiro Yamada /* SPI */ 19911d8222aSVitaly Andrianov #ifdef CONFIG_SOC_K2G 20011d8222aSVitaly Andrianov #define KS2_SPI0_BASE 0x21805400 20111d8222aSVitaly Andrianov #define KS2_SPI1_BASE 0x21805800 20211d8222aSVitaly Andrianov #define KS2_SPI2_BASE 0x21805c00 20311d8222aSVitaly Andrianov #define KS2_SPI3_BASE 0x21806000 20411d8222aSVitaly Andrianov #else 205dc7de222SMasahiro Yamada #define KS2_SPI0_BASE 0x21000400 206dc7de222SMasahiro Yamada #define KS2_SPI1_BASE 0x21000600 207dc7de222SMasahiro Yamada #define KS2_SPI2_BASE 0x21000800 208dc7de222SMasahiro Yamada #define KS2_SPI_BASE KS2_SPI0_BASE 20911d8222aSVitaly Andrianov #endif 210dc7de222SMasahiro Yamada 211dc7de222SMasahiro Yamada /* AEMIF */ 212dc7de222SMasahiro Yamada #define KS2_AEMIF_CNTRL_BASE 0x21000a00 213dc7de222SMasahiro Yamada #define DAVINCI_ASYNC_EMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE 214dc7de222SMasahiro Yamada 215dc7de222SMasahiro Yamada /* Flag from ks2_debug options to check if DSPs need to stay ON */ 216dc7de222SMasahiro Yamada #define DBG_LEAVE_DSPS_ON 0x1 217dc7de222SMasahiro Yamada 218dc7de222SMasahiro Yamada /* MSMC control */ 219dc7de222SMasahiro Yamada #define KS2_MSMC_CTRL_BASE 0x0bc00000 220dc7de222SMasahiro Yamada #define KS2_MSMC_DATA_BASE 0x0c000000 2211f807a9fSNishanth Menon 2222283284bSNishanth Menon /* KS2 Generic Privilege ID Settings for MSMC2 */ 2232283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_0 0 2242283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_1 1 2252283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_2 2 2262283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_3 3 2272283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_4 4 2282283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_5 5 2292283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_6 6 2302283284bSNishanth Menon #define KS2_MSMC_SEGMENT_C6X_7 7 2312283284bSNishanth Menon 2322283284bSNishanth Menon #define KS2_MSMC_SEGMENT_DEBUG 12 2332283284bSNishanth Menon 2341f807a9fSNishanth Menon /* KS2 HK/L/E MSMC PRIVIDs for MSMC2 */ 2351f807a9fSNishanth Menon #define K2HKLE_MSMC_SEGMENT_ARM 8 2361f807a9fSNishanth Menon #define K2HKLE_MSMC_SEGMENT_NETCP 9 2371f807a9fSNishanth Menon #define K2HKLE_MSMC_SEGMENT_QM_PDSP 10 2381f807a9fSNishanth Menon #define K2HKLE_MSMC_SEGMENT_PCIE0 11 2391f807a9fSNishanth Menon 2402283284bSNishanth Menon /* K2HK specific Privilege ID Settings */ 2412283284bSNishanth Menon #define K2HKE_MSMC_SEGMENT_HYPERLINK 14 2422283284bSNishanth Menon 2431f807a9fSNishanth Menon /* K2L specific Privilege ID Settings */ 2441f807a9fSNishanth Menon #define K2L_MSMC_SEGMENT_PCIE1 14 2451f807a9fSNishanth Menon 2461f807a9fSNishanth Menon /* K2E specific Privilege ID Settings */ 2471f807a9fSNishanth Menon #define K2E_MSMC_SEGMENT_PCIE1 13 2482283284bSNishanth Menon #define K2E_MSMC_SEGMENT_TSIP 15 2491f807a9fSNishanth Menon 2501f807a9fSNishanth Menon /* K2G specific Privilege ID Settings */ 2511f807a9fSNishanth Menon #define K2G_MSMC_SEGMENT_ARM 1 2522283284bSNishanth Menon #define K2G_MSMC_SEGMENT_ICSS0 2 2532283284bSNishanth Menon #define K2G_MSMC_SEGMENT_ICSS1 3 2541f807a9fSNishanth Menon #define K2G_MSMC_SEGMENT_NSS 4 2551f807a9fSNishanth Menon #define K2G_MSMC_SEGMENT_PCIE 5 2562283284bSNishanth Menon #define K2G_MSMC_SEGMENT_USB 6 2572283284bSNishanth Menon #define K2G_MSMC_SEGMENT_MLB 8 2582283284bSNishanth Menon #define K2G_MSMC_SEGMENT_PMMC 9 2592283284bSNishanth Menon #define K2G_MSMC_SEGMENT_DSS 10 2602283284bSNishanth Menon #define K2G_MSMC_SEGMENT_MMC 11 261dc7de222SMasahiro Yamada 262dc7de222SMasahiro Yamada /* MSMC segment size shift bits */ 263dc7de222SMasahiro Yamada #define KS2_MSMC_SEG_SIZE_SHIFT 12 264dc7de222SMasahiro Yamada #define KS2_MSMC_MAP_SEG_NUM (2 << (30 - KS2_MSMC_SEG_SIZE_SHIFT)) 265dc7de222SMasahiro Yamada #define KS2_MSMC_DST_SEG_BASE (CONFIG_SYS_LPAE_SDRAM_BASE >> \ 266dc7de222SMasahiro Yamada KS2_MSMC_SEG_SIZE_SHIFT) 267dc7de222SMasahiro Yamada 268dc7de222SMasahiro Yamada /* Device speed */ 269dc7de222SMasahiro Yamada #define KS2_REV1_DEVSPEED (KS2_DEVICE_STATE_CTRL_BASE + 0xc98) 270dc7de222SMasahiro Yamada #define KS2_EFUSE_BOOTROM (KS2_DEVICE_STATE_CTRL_BASE + 0xc90) 271dc7de222SMasahiro Yamada #define KS2_MISC_CTRL (KS2_DEVICE_STATE_CTRL_BASE + 0xc7c) 272dc7de222SMasahiro Yamada 273dc7de222SMasahiro Yamada /* Queue manager */ 27411d8222aSVitaly Andrianov #ifdef CONFIG_SOC_K2G 27511d8222aSVitaly Andrianov #define KS2_QM_BASE_ADDRESS 0x040C0000 27611d8222aSVitaly Andrianov #define KS2_QM_CONF_BASE 0x04040000 27711d8222aSVitaly Andrianov #define KS2_QM_DESC_SETUP_BASE 0x04080000 27811d8222aSVitaly Andrianov #define KS2_QM_STATUS_RAM_BASE 0x0 /* K2G doesn't have it */ 27911d8222aSVitaly Andrianov #define KS2_QM_INTD_CONF_BASE 0x0 28011d8222aSVitaly Andrianov #define KS2_QM_PDSP1_CMD_BASE 0x0 28111d8222aSVitaly Andrianov #define KS2_QM_PDSP1_CTRL_BASE 0x0 28211d8222aSVitaly Andrianov #define KS2_QM_PDSP1_IRAM_BASE 0x0 28311d8222aSVitaly Andrianov #define KS2_QM_MANAGER_QUEUES_BASE 0x040c0000 28411d8222aSVitaly Andrianov #define KS2_QM_MANAGER_Q_PROXY_BASE 0x04040200 28511d8222aSVitaly Andrianov #define KS2_QM_QUEUE_STATUS_BASE 0x04100000 28611d8222aSVitaly Andrianov #define KS2_QM_LINK_RAM_BASE 0x04020000 28711d8222aSVitaly Andrianov #define KS2_QM_REGION_NUM 8 28811d8222aSVitaly Andrianov #define KS2_QM_QPOOL_NUM 112 28911d8222aSVitaly Andrianov #else 290dc7de222SMasahiro Yamada #define KS2_QM_BASE_ADDRESS 0x23a80000 291dc7de222SMasahiro Yamada #define KS2_QM_CONF_BASE 0x02a02000 292dc7de222SMasahiro Yamada #define KS2_QM_DESC_SETUP_BASE 0x02a03000 293dc7de222SMasahiro Yamada #define KS2_QM_STATUS_RAM_BASE 0x02a06000 294dc7de222SMasahiro Yamada #define KS2_QM_INTD_CONF_BASE 0x02a0c000 295dc7de222SMasahiro Yamada #define KS2_QM_PDSP1_CMD_BASE 0x02a20000 296dc7de222SMasahiro Yamada #define KS2_QM_PDSP1_CTRL_BASE 0x02a0f000 297dc7de222SMasahiro Yamada #define KS2_QM_PDSP1_IRAM_BASE 0x02a10000 298dc7de222SMasahiro Yamada #define KS2_QM_MANAGER_QUEUES_BASE 0x02a80000 299dc7de222SMasahiro Yamada #define KS2_QM_MANAGER_Q_PROXY_BASE 0x02ac0000 300dc7de222SMasahiro Yamada #define KS2_QM_QUEUE_STATUS_BASE 0x02a40000 301dc7de222SMasahiro Yamada #define KS2_QM_LINK_RAM_BASE 0x00100000 302dc7de222SMasahiro Yamada #define KS2_QM_REGION_NUM 64 303dc7de222SMasahiro Yamada #define KS2_QM_QPOOL_NUM 4000 30411d8222aSVitaly Andrianov #endif 305dc7de222SMasahiro Yamada 306dc7de222SMasahiro Yamada /* USB */ 307dc7de222SMasahiro Yamada #define KS2_USB_SS_BASE 0x02680000 308dc7de222SMasahiro Yamada #define KS2_USB_HOST_XHCI_BASE (KS2_USB_SS_BASE + 0x10000) 309dc7de222SMasahiro Yamada #define KS2_DEV_USB_PHY_BASE 0x02620738 310dc7de222SMasahiro Yamada #define KS2_USB_PHY_CFG_BASE 0x02630000 311dc7de222SMasahiro Yamada 312dc7de222SMasahiro Yamada #define KS2_MAC_ID_BASE_ADDR (KS2_DEVICE_STATE_CTRL_BASE + 0x110) 313dc7de222SMasahiro Yamada 314dc7de222SMasahiro Yamada /* SGMII SerDes */ 315dc7de222SMasahiro Yamada #define KS2_SGMII_SERDES_BASE 0x0232a000 316dc7de222SMasahiro Yamada 317cfe5f0cdSLokesh Vutla /* JTAG ID register */ 318cfe5f0cdSLokesh Vutla #define JTAGID_VARIANT_SHIFT 28 319cfe5f0cdSLokesh Vutla #define JTAGID_VARIANT_MASK (0xf << 28) 320cfe5f0cdSLokesh Vutla #define JTAGID_PART_NUM_SHIFT 12 321cfe5f0cdSLokesh Vutla #define JTAGID_PART_NUM_MASK (0xffff << 12) 322cfe5f0cdSLokesh Vutla 323cfe5f0cdSLokesh Vutla /* PART NUMBER definitions */ 324cfe5f0cdSLokesh Vutla #define CPU_66AK2Hx 0xb981 325cfe5f0cdSLokesh Vutla #define CPU_66AK2Ex 0xb9a6 326cfe5f0cdSLokesh Vutla #define CPU_66AK2Lx 0xb9a7 327f11a328bSLokesh Vutla #define CPU_66AK2Gx 0xbb06 328cfe5f0cdSLokesh Vutla 3297b50e159SLokesh Vutla /* DEVSPEED register */ 3307b50e159SLokesh Vutla #define DEVSPEED_DEVSPEED_SHIFT 16 3317b50e159SLokesh Vutla #define DEVSPEED_DEVSPEED_MASK (0xfff << 16) 3327b50e159SLokesh Vutla #define DEVSPEED_ARMSPEED_SHIFT 0 3337b50e159SLokesh Vutla #define DEVSPEED_ARMSPEED_MASK 0xfff 3347b50e159SLokesh Vutla #define DEVSPEED_NUMSPDS 12 3357b50e159SLokesh Vutla 336dc7de222SMasahiro Yamada #ifdef CONFIG_SOC_K2HK 337dc7de222SMasahiro Yamada #include <asm/arch/hardware-k2hk.h> 338dc7de222SMasahiro Yamada #endif 339dc7de222SMasahiro Yamada 340dc7de222SMasahiro Yamada #ifdef CONFIG_SOC_K2E 341dc7de222SMasahiro Yamada #include <asm/arch/hardware-k2e.h> 342dc7de222SMasahiro Yamada #endif 343dc7de222SMasahiro Yamada 344dc7de222SMasahiro Yamada #ifdef CONFIG_SOC_K2L 345dc7de222SMasahiro Yamada #include <asm/arch/hardware-k2l.h> 346dc7de222SMasahiro Yamada #endif 347dc7de222SMasahiro Yamada 3480fba27b6SVitaly Andrianov #ifdef CONFIG_SOC_K2G 3490fba27b6SVitaly Andrianov #include <asm/arch/hardware-k2g.h> 3500fba27b6SVitaly Andrianov #endif 3510fba27b6SVitaly Andrianov 352dc7de222SMasahiro Yamada #ifndef __ASSEMBLY__ 353dc7de222SMasahiro Yamada get_part_number(void)354cfe5f0cdSLokesh Vutlastatic inline u16 get_part_number(void) 355cfe5f0cdSLokesh Vutla { 356cfe5f0cdSLokesh Vutla u32 jtag_id = __raw_readl(KS2_JTAG_ID_REG); 357cfe5f0cdSLokesh Vutla 358cfe5f0cdSLokesh Vutla return (jtag_id & JTAGID_PART_NUM_MASK) >> JTAGID_PART_NUM_SHIFT; 359dc7de222SMasahiro Yamada } 360dc7de222SMasahiro Yamada cpu_is_k2hk(void)361cfe5f0cdSLokesh Vutlastatic inline u8 cpu_is_k2hk(void) 362dc7de222SMasahiro Yamada { 363cfe5f0cdSLokesh Vutla return get_part_number() == CPU_66AK2Hx; 364dc7de222SMasahiro Yamada } 365dc7de222SMasahiro Yamada cpu_is_k2e(void)366cfe5f0cdSLokesh Vutlastatic inline u8 cpu_is_k2e(void) 367dc7de222SMasahiro Yamada { 368cfe5f0cdSLokesh Vutla return get_part_number() == CPU_66AK2Ex; 369dc7de222SMasahiro Yamada } 370dc7de222SMasahiro Yamada cpu_is_k2l(void)371cfe5f0cdSLokesh Vutlastatic inline u8 cpu_is_k2l(void) 372dc7de222SMasahiro Yamada { 373cfe5f0cdSLokesh Vutla return get_part_number() == CPU_66AK2Lx; 374cfe5f0cdSLokesh Vutla } 375cfe5f0cdSLokesh Vutla cpu_is_k2g(void)376f11a328bSLokesh Vutlastatic inline u8 cpu_is_k2g(void) 377f11a328bSLokesh Vutla { 378f11a328bSLokesh Vutla return get_part_number() == CPU_66AK2Gx; 379f11a328bSLokesh Vutla } 380f11a328bSLokesh Vutla cpu_revision(void)381cfe5f0cdSLokesh Vutlastatic inline u8 cpu_revision(void) 382cfe5f0cdSLokesh Vutla { 383cfe5f0cdSLokesh Vutla u32 jtag_id = __raw_readl(KS2_JTAG_ID_REG); 384cfe5f0cdSLokesh Vutla u8 rev = (jtag_id & JTAGID_VARIANT_MASK) >> JTAGID_VARIANT_SHIFT; 385dc7de222SMasahiro Yamada 386dc7de222SMasahiro Yamada return rev; 387dc7de222SMasahiro Yamada } 388dc7de222SMasahiro Yamada 389dc7de222SMasahiro Yamada int cpu_to_bus(u32 *ptr, u32 length); 390dc7de222SMasahiro Yamada void sdelay(unsigned long); 391dc7de222SMasahiro Yamada 392dc7de222SMasahiro Yamada #endif 393dc7de222SMasahiro Yamada 394dc7de222SMasahiro Yamada #endif /* __ASM_ARCH_HARDWARE_H */ 395