Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *  This file contains the hardware definitions of the Integrator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *  Copyright (C) 1998-1999 ARM Limited.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #ifndef INTEGRATOR_HARDWARE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #define INTEGRATOR_HARDWARE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  * Where in virtual memory the IO devices (timers, system controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * and so on)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define IO_BASE			0xF0000000                 // VA of IO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define IO_SIZE			0x0B000000                 // How much?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define IO_START		INTEGRATOR_HDR_BASE        // PA of IO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) /* macro to get at IO space when running virtually */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #ifdef CONFIG_MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define IO_ADDRESS(x)	(((x) & 0x000fffff) | (((x) >> 4) & 0x0ff00000) | IO_BASE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define IO_ADDRESS(x)	(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define __io_address(n)		((void __iomem *)IO_ADDRESS(n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  *  Integrator memory map
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define INTEGRATOR_BOOT_ROM_LO          0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define INTEGRATOR_BOOT_ROM_HI          0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define INTEGRATOR_BOOT_ROM_BASE        INTEGRATOR_BOOT_ROM_HI	 /*  Normal position */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define INTEGRATOR_BOOT_ROM_SIZE        SZ_512K
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  * New Core Modules have different amounts of SSRAM, the amount of SSRAM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)  * fitted can be found in HDR_STAT.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)  * The symbol INTEGRATOR_SSRAM_SIZE is kept, however this now refers to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)  * the minimum amount of SSRAM fitted on any core module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)  * New Core Modules also alias the SSRAM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define INTEGRATOR_SSRAM_BASE           0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define INTEGRATOR_SSRAM_ALIAS_BASE     0x10800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define INTEGRATOR_SSRAM_SIZE           SZ_256K
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define INTEGRATOR_FLASH_BASE           0x24000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define INTEGRATOR_FLASH_SIZE           SZ_32M
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define INTEGRATOR_MBRD_SSRAM_BASE      0x28000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define INTEGRATOR_MBRD_SSRAM_SIZE      SZ_512K
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)  *  SDRAM is a SIMM therefore the size is not known.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define INTEGRATOR_SDRAM_BASE           0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define INTEGRATOR_SDRAM_ALIAS_BASE     0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define INTEGRATOR_HDR0_SDRAM_BASE      0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define INTEGRATOR_HDR1_SDRAM_BASE      0x90000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define INTEGRATOR_HDR2_SDRAM_BASE      0xA0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define INTEGRATOR_HDR3_SDRAM_BASE      0xB0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)  *  Logic expansion modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define INTEGRATOR_LOGIC_MODULES_BASE   0xC0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define INTEGRATOR_LOGIC_MODULE0_BASE   0xC0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define INTEGRATOR_LOGIC_MODULE1_BASE   0xD0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define INTEGRATOR_LOGIC_MODULE2_BASE   0xE0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define INTEGRATOR_LOGIC_MODULE3_BASE   0xF0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)  * Integrator header card registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define INTEGRATOR_HDR_ID_OFFSET        0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define INTEGRATOR_HDR_PROC_OFFSET      0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define INTEGRATOR_HDR_OSC_OFFSET       0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define INTEGRATOR_HDR_CTRL_OFFSET      0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define INTEGRATOR_HDR_STAT_OFFSET      0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define INTEGRATOR_HDR_LOCK_OFFSET      0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define INTEGRATOR_HDR_SDRAM_OFFSET     0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define INTEGRATOR_HDR_INIT_OFFSET      0x24	 /*  CM9x6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define INTEGRATOR_HDR_IC_OFFSET        0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define INTEGRATOR_HDR_SPDBASE_OFFSET   0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define INTEGRATOR_HDR_SPDTOP_OFFSET    0x200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) #define INTEGRATOR_HDR_BASE             0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define INTEGRATOR_HDR_ID               (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_ID_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define INTEGRATOR_HDR_PROC             (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_PROC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define INTEGRATOR_HDR_OSC              (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_OSC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define INTEGRATOR_HDR_CTRL             (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_CTRL_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define INTEGRATOR_HDR_STAT             (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_STAT_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define INTEGRATOR_HDR_LOCK             (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_LOCK_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define INTEGRATOR_HDR_SDRAM            (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_SDRAM_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define INTEGRATOR_HDR_INIT             (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_INIT_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define INTEGRATOR_HDR_IC               (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_IC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define INTEGRATOR_HDR_SPDBASE          (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_SPDBASE_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define INTEGRATOR_HDR_SPDTOP           (INTEGRATOR_HDR_BASE + INTEGRATOR_HDR_SPDTOP_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define INTEGRATOR_HDR_CTRL_LED         0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define INTEGRATOR_HDR_CTRL_MBRD_DETECH 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define INTEGRATOR_HDR_CTRL_REMAP       0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define INTEGRATOR_HDR_CTRL_RESET       0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define INTEGRATOR_HDR_CTRL_HIGHVECTORS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define INTEGRATOR_HDR_CTRL_BIG_ENDIAN  0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define INTEGRATOR_HDR_CTRL_FASTBUS     0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define INTEGRATOR_HDR_CTRL_SYNC        0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define INTEGRATOR_HDR_OSC_CORE_10MHz   0x102
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define INTEGRATOR_HDR_OSC_CORE_15MHz   0x107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define INTEGRATOR_HDR_OSC_CORE_20MHz   0x10C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define INTEGRATOR_HDR_OSC_CORE_25MHz   0x111
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define INTEGRATOR_HDR_OSC_CORE_30MHz   0x116
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define INTEGRATOR_HDR_OSC_CORE_35MHz   0x11B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define INTEGRATOR_HDR_OSC_CORE_40MHz   0x120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define INTEGRATOR_HDR_OSC_CORE_45MHz   0x125
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define INTEGRATOR_HDR_OSC_CORE_50MHz   0x12A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define INTEGRATOR_HDR_OSC_CORE_55MHz   0x12F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define INTEGRATOR_HDR_OSC_CORE_60MHz   0x134
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define INTEGRATOR_HDR_OSC_CORE_65MHz   0x139
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define INTEGRATOR_HDR_OSC_CORE_70MHz   0x13E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define INTEGRATOR_HDR_OSC_CORE_75MHz   0x143
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define INTEGRATOR_HDR_OSC_CORE_80MHz   0x148
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define INTEGRATOR_HDR_OSC_CORE_85MHz   0x14D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define INTEGRATOR_HDR_OSC_CORE_90MHz   0x152
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define INTEGRATOR_HDR_OSC_CORE_95MHz   0x157
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define INTEGRATOR_HDR_OSC_CORE_100MHz  0x15C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define INTEGRATOR_HDR_OSC_CORE_105MHz  0x161
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define INTEGRATOR_HDR_OSC_CORE_110MHz  0x166
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define INTEGRATOR_HDR_OSC_CORE_115MHz  0x16B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define INTEGRATOR_HDR_OSC_CORE_120MHz  0x170
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define INTEGRATOR_HDR_OSC_CORE_125MHz  0x175
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define INTEGRATOR_HDR_OSC_CORE_130MHz  0x17A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define INTEGRATOR_HDR_OSC_CORE_135MHz  0x17F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define INTEGRATOR_HDR_OSC_CORE_140MHz  0x184
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define INTEGRATOR_HDR_OSC_CORE_145MHz  0x189
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define INTEGRATOR_HDR_OSC_CORE_150MHz  0x18E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define INTEGRATOR_HDR_OSC_CORE_155MHz  0x193
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define INTEGRATOR_HDR_OSC_CORE_160MHz  0x198
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define INTEGRATOR_HDR_OSC_CORE_MASK    0x7FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define INTEGRATOR_HDR_OSC_MEM_10MHz    0x10C000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define INTEGRATOR_HDR_OSC_MEM_15MHz    0x116000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define INTEGRATOR_HDR_OSC_MEM_20MHz    0x120000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define INTEGRATOR_HDR_OSC_MEM_25MHz    0x12A000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define INTEGRATOR_HDR_OSC_MEM_30MHz    0x134000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define INTEGRATOR_HDR_OSC_MEM_33MHz    0x13A000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define INTEGRATOR_HDR_OSC_MEM_40MHz    0x148000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define INTEGRATOR_HDR_OSC_MEM_50MHz    0x15C000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define INTEGRATOR_HDR_OSC_MEM_60MHz    0x170000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define INTEGRATOR_HDR_OSC_MEM_66MHz    0x17C000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define INTEGRATOR_HDR_OSC_MEM_MASK     0x7FF000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define INTEGRATOR_HDR_OSC_BUS_MODE_CM7x0  0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define INTEGRATOR_HDR_OSC_BUS_MODE_CM9x0  0x0800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define INTEGRATOR_HDR_OSC_BUS_MODE_CM9x6  0x1000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define INTEGRATOR_HDR_OSC_BUS_MODE_CM10x00  0x1800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define INTEGRATOR_HDR_OSC_BUS_MODE_MASK  0x1800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define INTEGRATOR_HDR_SDRAM_SPD_OK     (1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)  * Integrator system registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)  *  System Controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define INTEGRATOR_SC_ID_OFFSET         0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) #define INTEGRATOR_SC_OSC_OFFSET        0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define INTEGRATOR_SC_CTRLS_OFFSET      0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define INTEGRATOR_SC_CTRLC_OFFSET      0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define INTEGRATOR_SC_DEC_OFFSET        0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define INTEGRATOR_SC_ARB_OFFSET        0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define INTEGRATOR_SC_LOCK_OFFSET       0x1C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define INTEGRATOR_SC_BASE              0x11000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define INTEGRATOR_SC_ID                (INTEGRATOR_SC_BASE + INTEGRATOR_SC_ID_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define INTEGRATOR_SC_OSC               (INTEGRATOR_SC_BASE + INTEGRATOR_SC_OSC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) #define INTEGRATOR_SC_CTRLS             (INTEGRATOR_SC_BASE + INTEGRATOR_SC_CTRLS_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define INTEGRATOR_SC_CTRLC             (INTEGRATOR_SC_BASE + INTEGRATOR_SC_CTRLC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) #define INTEGRATOR_SC_DEC               (INTEGRATOR_SC_BASE + INTEGRATOR_SC_DEC_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #define INTEGRATOR_SC_ARB               (INTEGRATOR_SC_BASE + INTEGRATOR_SC_ARB_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define INTEGRATOR_SC_PCIENABLE         (INTEGRATOR_SC_BASE + INTEGRATOR_SC_PCIENABLE_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define INTEGRATOR_SC_LOCK              (INTEGRATOR_SC_BASE + INTEGRATOR_SC_LOCK_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define INTEGRATOR_SC_OSC_SYS_10MHz     0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define INTEGRATOR_SC_OSC_SYS_15MHz     0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define INTEGRATOR_SC_OSC_SYS_20MHz     0x48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define INTEGRATOR_SC_OSC_SYS_25MHz     0x5C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define INTEGRATOR_SC_OSC_SYS_33MHz     0x7C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define INTEGRATOR_SC_OSC_SYS_MASK      0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define INTEGRATOR_SC_OSC_PCI_25MHz     0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #define INTEGRATOR_SC_OSC_PCI_33MHz     0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define INTEGRATOR_SC_OSC_PCI_MASK      0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define INTEGRATOR_SC_CTRL_SOFTRST      (1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define INTEGRATOR_SC_CTRL_nFLVPPEN     (1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define INTEGRATOR_SC_CTRL_nFLWP        (1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define INTEGRATOR_SC_CTRL_URTS0        (1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define INTEGRATOR_SC_CTRL_UDTR0        (1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define INTEGRATOR_SC_CTRL_URTS1        (1 << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define INTEGRATOR_SC_CTRL_UDTR1        (1 << 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)  *  External Bus Interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #define INTEGRATOR_EBI_BASE             0x12000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define INTEGRATOR_EBI_CSR0_OFFSET      0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define INTEGRATOR_EBI_CSR1_OFFSET      0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define INTEGRATOR_EBI_CSR2_OFFSET      0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define INTEGRATOR_EBI_CSR3_OFFSET      0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define INTEGRATOR_EBI_LOCK_OFFSET      0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define INTEGRATOR_EBI_CSR0             (INTEGRATOR_EBI_BASE + INTEGRATOR_EBI_CSR0_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define INTEGRATOR_EBI_CSR1             (INTEGRATOR_EBI_BASE + INTEGRATOR_EBI_CSR1_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define INTEGRATOR_EBI_CSR2             (INTEGRATOR_EBI_BASE + INTEGRATOR_EBI_CSR2_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define INTEGRATOR_EBI_CSR3             (INTEGRATOR_EBI_BASE + INTEGRATOR_EBI_CSR3_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define INTEGRATOR_EBI_LOCK             (INTEGRATOR_EBI_BASE + INTEGRATOR_EBI_LOCK_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define INTEGRATOR_EBI_8_BIT            0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #define INTEGRATOR_EBI_16_BIT           0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define INTEGRATOR_EBI_32_BIT           0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define INTEGRATOR_EBI_WRITE_ENABLE     0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #define INTEGRATOR_EBI_SYNC             0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define INTEGRATOR_EBI_WS_2             0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define INTEGRATOR_EBI_WS_3             0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define INTEGRATOR_EBI_WS_4             0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define INTEGRATOR_EBI_WS_5             0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define INTEGRATOR_EBI_WS_6             0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define INTEGRATOR_EBI_WS_7             0x50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define INTEGRATOR_EBI_WS_8             0x60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #define INTEGRATOR_EBI_WS_9             0x70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) #define INTEGRATOR_EBI_WS_10            0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) #define INTEGRATOR_EBI_WS_11            0x90
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define INTEGRATOR_EBI_WS_12            0xA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define INTEGRATOR_EBI_WS_13            0xB0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define INTEGRATOR_EBI_WS_14            0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define INTEGRATOR_EBI_WS_15            0xD0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define INTEGRATOR_EBI_WS_16            0xE0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define INTEGRATOR_EBI_WS_17            0xF0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define INTEGRATOR_CT_BASE              0x13000000	 /*  Counter/Timers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define INTEGRATOR_IC_BASE              0x14000000	 /*  Interrupt Controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define INTEGRATOR_RTC_BASE             0x15000000	 /*  Real Time Clock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define INTEGRATOR_UART0_BASE           0x16000000	 /*  UART 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define INTEGRATOR_UART1_BASE           0x17000000	 /*  UART 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define INTEGRATOR_KBD_BASE             0x18000000	 /*  Keyboard */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define INTEGRATOR_MOUSE_BASE           0x19000000	 /*  Mouse */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259)  *  LED's & Switches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #define INTEGRATOR_DBG_ALPHA_OFFSET     0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #define INTEGRATOR_DBG_LEDS_OFFSET      0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define INTEGRATOR_DBG_SWITCH_OFFSET    0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) #define INTEGRATOR_DBG_BASE             0x1A000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define INTEGRATOR_DBG_ALPHA            (INTEGRATOR_DBG_BASE + INTEGRATOR_DBG_ALPHA_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #define INTEGRATOR_DBG_LEDS             (INTEGRATOR_DBG_BASE + INTEGRATOR_DBG_LEDS_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) #define INTEGRATOR_DBG_SWITCH           (INTEGRATOR_DBG_BASE + INTEGRATOR_DBG_SWITCH_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) #define INTEGRATOR_AP_GPIO_BASE		0x1B000000	/* GPIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) #define INTEGRATOR_CP_MMC_BASE		0x1C000000	/* MMC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) #define INTEGRATOR_CP_AACI_BASE		0x1D000000	/* AACI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #define INTEGRATOR_CP_ETH_BASE		0xC8000000	/* Ethernet */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) #define INTEGRATOR_CP_GPIO_BASE		0xC9000000	/* GPIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) #define INTEGRATOR_CP_SIC_BASE		0xCA000000	/* SIC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #define INTEGRATOR_CP_CTL_BASE		0xCB000000	/* CP system control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) /* PS2 Keyboard interface */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) #define KMI0_BASE                       INTEGRATOR_KBD_BASE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) /* PS2 Mouse interface */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) #define KMI1_BASE                       INTEGRATOR_MOUSE_BASE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)  * Integrator Interrupt Controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)  * Offsets from interrupt controller base
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291)  * System Controller interrupt controller base is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293)  * 	INTEGRATOR_IC_BASE + (header_number << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295)  * Core Module interrupt controller base is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)  * 	INTEGRATOR_HDR_IC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) #define IRQ_STATUS                      0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) #define IRQ_RAW_STATUS                  0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) #define IRQ_ENABLE                      0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #define IRQ_ENABLE_SET                  0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #define IRQ_ENABLE_CLEAR                0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) #define INT_SOFT_SET                    0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #define INT_SOFT_CLEAR                  0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) #define FIQ_STATUS                      0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) #define FIQ_RAW_STATUS                  0x24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) #define FIQ_ENABLE                      0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) #define FIQ_ENABLE_SET                  0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) #define FIQ_ENABLE_CLEAR                0x2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)  * LED's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #define GREEN_LED                       0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #define YELLOW_LED                      0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define RED_LED                         0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define GREEN_LED_2                     0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define ALL_LEDS                        0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #define LED_BANK                        INTEGRATOR_DBG_LEDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)  *  Timer definitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)  *  Only use timer 1 & 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330)  *  (both run at 24MHz and will need the clock divider set to 16).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)  *  Timer 0 runs at bus frequency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define INTEGRATOR_TIMER0_BASE          INTEGRATOR_CT_BASE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define INTEGRATOR_TIMER1_BASE          (INTEGRATOR_CT_BASE + 0x100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define INTEGRATOR_TIMER2_BASE          (INTEGRATOR_CT_BASE + 0x200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define INTEGRATOR_CSR_BASE             0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define INTEGRATOR_CSR_SIZE             0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #endif /* INTEGRATOR_HARDWARE_H */