mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-20 08:58:52 +09:00
![Haavard Skinnemoen](/assets/img/avatar_default.png)
Rewrite the resource management code (i.e. I/O memory, clock gating, gpio) so it doesn't depend on any global state. This is necessary because this code is heavily used before relocation to RAM, so we can't write to any global variables. As an added bonus, this makes u-boot's memory footprint a bit smaller, although some functionality has been left out; all clocks are enabled all the time, and there's no checking for gpio line conflicts. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
233 lines
7.1 KiB
C
233 lines
7.1 KiB
C
/*
|
|
* Register definition for the High-speed Bus Matrix
|
|
*/
|
|
#ifndef __ASM_AVR32_HMATRIX2_H__
|
|
#define __ASM_AVR32_HMATRIX2_H__
|
|
|
|
/* HMATRIX2 register offsets */
|
|
#define HMATRIX2_MCFG0 0x0000
|
|
#define HMATRIX2_MCFG1 0x0004
|
|
#define HMATRIX2_MCFG2 0x0008
|
|
#define HMATRIX2_MCFG3 0x000c
|
|
#define HMATRIX2_MCFG4 0x0010
|
|
#define HMATRIX2_MCFG5 0x0014
|
|
#define HMATRIX2_MCFG6 0x0018
|
|
#define HMATRIX2_MCFG7 0x001c
|
|
#define HMATRIX2_MCFG8 0x0020
|
|
#define HMATRIX2_MCFG9 0x0024
|
|
#define HMATRIX2_MCFG10 0x0028
|
|
#define HMATRIX2_MCFG11 0x002c
|
|
#define HMATRIX2_MCFG12 0x0030
|
|
#define HMATRIX2_MCFG13 0x0034
|
|
#define HMATRIX2_MCFG14 0x0038
|
|
#define HMATRIX2_MCFG15 0x003c
|
|
#define HMATRIX2_SCFG0 0x0040
|
|
#define HMATRIX2_SCFG1 0x0044
|
|
#define HMATRIX2_SCFG2 0x0048
|
|
#define HMATRIX2_SCFG3 0x004c
|
|
#define HMATRIX2_SCFG4 0x0050
|
|
#define HMATRIX2_SCFG5 0x0054
|
|
#define HMATRIX2_SCFG6 0x0058
|
|
#define HMATRIX2_SCFG7 0x005c
|
|
#define HMATRIX2_SCFG8 0x0060
|
|
#define HMATRIX2_SCFG9 0x0064
|
|
#define HMATRIX2_SCFG10 0x0068
|
|
#define HMATRIX2_SCFG11 0x006c
|
|
#define HMATRIX2_SCFG12 0x0070
|
|
#define HMATRIX2_SCFG13 0x0074
|
|
#define HMATRIX2_SCFG14 0x0078
|
|
#define HMATRIX2_SCFG15 0x007c
|
|
#define HMATRIX2_PRAS0 0x0080
|
|
#define HMATRIX2_PRBS0 0x0084
|
|
#define HMATRIX2_PRAS1 0x0088
|
|
#define HMATRIX2_PRBS1 0x008c
|
|
#define HMATRIX2_PRAS2 0x0090
|
|
#define HMATRIX2_PRBS2 0x0094
|
|
#define HMATRIX2_PRAS3 0x0098
|
|
#define HMATRIX2_PRBS3 0x009c
|
|
#define HMATRIX2_PRAS4 0x00a0
|
|
#define HMATRIX2_PRBS4 0x00a4
|
|
#define HMATRIX2_PRAS5 0x00a8
|
|
#define HMATRIX2_PRBS5 0x00ac
|
|
#define HMATRIX2_PRAS6 0x00b0
|
|
#define HMATRIX2_PRBS6 0x00b4
|
|
#define HMATRIX2_PRAS7 0x00b8
|
|
#define HMATRIX2_PRBS7 0x00bc
|
|
#define HMATRIX2_PRAS8 0x00c0
|
|
#define HMATRIX2_PRBS8 0x00c4
|
|
#define HMATRIX2_PRAS9 0x00c8
|
|
#define HMATRIX2_PRBS9 0x00cc
|
|
#define HMATRIX2_PRAS10 0x00d0
|
|
#define HMATRIX2_PRBS10 0x00d4
|
|
#define HMATRIX2_PRAS11 0x00d8
|
|
#define HMATRIX2_PRBS11 0x00dc
|
|
#define HMATRIX2_PRAS12 0x00e0
|
|
#define HMATRIX2_PRBS12 0x00e4
|
|
#define HMATRIX2_PRAS13 0x00e8
|
|
#define HMATRIX2_PRBS13 0x00ec
|
|
#define HMATRIX2_PRAS14 0x00f0
|
|
#define HMATRIX2_PRBS14 0x00f4
|
|
#define HMATRIX2_PRAS15 0x00f8
|
|
#define HMATRIX2_PRBS15 0x00fc
|
|
#define HMATRIX2_MRCR 0x0100
|
|
#define HMATRIX2_SFR0 0x0110
|
|
#define HMATRIX2_SFR1 0x0114
|
|
#define HMATRIX2_SFR2 0x0118
|
|
#define HMATRIX2_SFR3 0x011c
|
|
#define HMATRIX2_SFR4 0x0120
|
|
#define HMATRIX2_SFR5 0x0124
|
|
#define HMATRIX2_SFR6 0x0128
|
|
#define HMATRIX2_SFR7 0x012c
|
|
#define HMATRIX2_SFR8 0x0130
|
|
#define HMATRIX2_SFR9 0x0134
|
|
#define HMATRIX2_SFR10 0x0138
|
|
#define HMATRIX2_SFR11 0x013c
|
|
#define HMATRIX2_SFR12 0x0140
|
|
#define HMATRIX2_SFR13 0x0144
|
|
#define HMATRIX2_SFR14 0x0148
|
|
#define HMATRIX2_SFR15 0x014c
|
|
#define HMATRIX2_VERSION 0x01fc
|
|
|
|
/* Bitfields in MCFG0 */
|
|
#define HMATRIX2_ULBT_OFFSET 0
|
|
#define HMATRIX2_ULBT_SIZE 3
|
|
|
|
/* Bitfields in SCFG0 */
|
|
#define HMATRIX2_SLOT_CYCLE_OFFSET 0
|
|
#define HMATRIX2_SLOT_CYCLE_SIZE 8
|
|
#define HMATRIX2_DEFMSTR_TYPE_OFFSET 16
|
|
#define HMATRIX2_DEFMSTR_TYPE_SIZE 2
|
|
#define HMATRIX2_FIXED_DEFMSTR_OFFSET 18
|
|
#define HMATRIX2_FIXED_DEFMSTR_SIZE 4
|
|
#define HMATRIX2_ARBT_OFFSET 24
|
|
#define HMATRIX2_ARBT_SIZE 2
|
|
|
|
/* Bitfields in PRAS0 */
|
|
#define HMATRIX2_M0PR_OFFSET 0
|
|
#define HMATRIX2_M0PR_SIZE 4
|
|
#define HMATRIX2_M1PR_OFFSET 4
|
|
#define HMATRIX2_M1PR_SIZE 4
|
|
#define HMATRIX2_M2PR_OFFSET 8
|
|
#define HMATRIX2_M2PR_SIZE 4
|
|
#define HMATRIX2_M3PR_OFFSET 12
|
|
#define HMATRIX2_M3PR_SIZE 4
|
|
#define HMATRIX2_M4PR_OFFSET 16
|
|
#define HMATRIX2_M4PR_SIZE 4
|
|
#define HMATRIX2_M5PR_OFFSET 20
|
|
#define HMATRIX2_M5PR_SIZE 4
|
|
#define HMATRIX2_M6PR_OFFSET 24
|
|
#define HMATRIX2_M6PR_SIZE 4
|
|
#define HMATRIX2_M7PR_OFFSET 28
|
|
#define HMATRIX2_M7PR_SIZE 4
|
|
|
|
/* Bitfields in PRBS0 */
|
|
#define HMATRIX2_M8PR_OFFSET 0
|
|
#define HMATRIX2_M8PR_SIZE 4
|
|
#define HMATRIX2_M9PR_OFFSET 4
|
|
#define HMATRIX2_M9PR_SIZE 4
|
|
#define HMATRIX2_M10PR_OFFSET 8
|
|
#define HMATRIX2_M10PR_SIZE 4
|
|
#define HMATRIX2_M11PR_OFFSET 12
|
|
#define HMATRIX2_M11PR_SIZE 4
|
|
#define HMATRIX2_M12PR_OFFSET 16
|
|
#define HMATRIX2_M12PR_SIZE 4
|
|
#define HMATRIX2_M13PR_OFFSET 20
|
|
#define HMATRIX2_M13PR_SIZE 4
|
|
#define HMATRIX2_M14PR_OFFSET 24
|
|
#define HMATRIX2_M14PR_SIZE 4
|
|
#define HMATRIX2_M15PR_OFFSET 28
|
|
#define HMATRIX2_M15PR_SIZE 4
|
|
|
|
/* Bitfields in MRCR */
|
|
#define HMATRIX2_RBC0_OFFSET 0
|
|
#define HMATRIX2_RBC0_SIZE 1
|
|
#define HMATRIX2_RBC1_OFFSET 1
|
|
#define HMATRIX2_RBC1_SIZE 1
|
|
#define HMATRIX2_RBC2_OFFSET 2
|
|
#define HMATRIX2_RBC2_SIZE 1
|
|
#define HMATRIX2_RBC3_OFFSET 3
|
|
#define HMATRIX2_RBC3_SIZE 1
|
|
#define HMATRIX2_RBC4_OFFSET 4
|
|
#define HMATRIX2_RBC4_SIZE 1
|
|
#define HMATRIX2_RBC5_OFFSET 5
|
|
#define HMATRIX2_RBC5_SIZE 1
|
|
#define HMATRIX2_RBC6_OFFSET 6
|
|
#define HMATRIX2_RBC6_SIZE 1
|
|
#define HMATRIX2_RBC7_OFFSET 7
|
|
#define HMATRIX2_RBC7_SIZE 1
|
|
#define HMATRIX2_RBC8_OFFSET 8
|
|
#define HMATRIX2_RBC8_SIZE 1
|
|
#define HMATRIX2_RBC9_OFFSET 9
|
|
#define HMATRIX2_RBC9_SIZE 1
|
|
#define HMATRIX2_RBC10_OFFSET 10
|
|
#define HMATRIX2_RBC10_SIZE 1
|
|
#define HMATRIX2_RBC11_OFFSET 11
|
|
#define HMATRIX2_RBC11_SIZE 1
|
|
#define HMATRIX2_RBC12_OFFSET 12
|
|
#define HMATRIX2_RBC12_SIZE 1
|
|
#define HMATRIX2_RBC13_OFFSET 13
|
|
#define HMATRIX2_RBC13_SIZE 1
|
|
#define HMATRIX2_RBC14_OFFSET 14
|
|
#define HMATRIX2_RBC14_SIZE 1
|
|
#define HMATRIX2_RBC15_OFFSET 15
|
|
#define HMATRIX2_RBC15_SIZE 1
|
|
|
|
/* Bitfields in SFR0 */
|
|
#define HMATRIX2_SFR_OFFSET 0
|
|
#define HMATRIX2_SFR_SIZE 32
|
|
|
|
/* Bitfields in SFR4 */
|
|
#define HMATRIX2_CS1A_OFFSET 1
|
|
#define HMATRIX2_CS1A_SIZE 1
|
|
#define HMATRIX2_CS3A_OFFSET 3
|
|
#define HMATRIX2_CS3A_SIZE 1
|
|
#define HMATRIX2_CS4A_OFFSET 4
|
|
#define HMATRIX2_CS4A_SIZE 1
|
|
#define HMATRIX2_CS5A_OFFSET 5
|
|
#define HMATRIX2_CS5A_SIZE 1
|
|
#define HMATRIX2_DBPUC_OFFSET 8
|
|
#define HMATRIX2_DBPUC_SIZE 1
|
|
|
|
/* Bitfields in VERSION */
|
|
#define HMATRIX2_VERSION_OFFSET 0
|
|
#define HMATRIX2_VERSION_SIZE 12
|
|
#define HMATRIX2_MFN_OFFSET 16
|
|
#define HMATRIX2_MFN_SIZE 3
|
|
|
|
/* Constants for ULBT */
|
|
#define HMATRIX2_ULBT_INFINITE 0
|
|
#define HMATRIX2_ULBT_SINGLE 1
|
|
#define HMATRIX2_ULBT_FOUR_BEAT 2
|
|
#define HMATRIX2_ULBT_SIXTEEN_BEAT 4
|
|
|
|
/* Constants for DEFMSTR_TYPE */
|
|
#define HMATRIX2_DEFMSTR_TYPE_NO_DEFAULT 0
|
|
#define HMATRIX2_DEFMSTR_TYPE_LAST_DEFAULT 1
|
|
#define HMATRIX2_DEFMSTR_TYPE_FIXED_DEFAULT 2
|
|
|
|
/* Constants for ARBT */
|
|
#define HMATRIX2_ARBT_ROUND_ROBIN 0
|
|
#define HMATRIX2_ARBT_FIXED_PRIORITY 1
|
|
|
|
/* Bit manipulation macros */
|
|
#define HMATRIX2_BIT(name) \
|
|
(1 << HMATRIX2_##name##_OFFSET)
|
|
#define HMATRIX2_BF(name,value) \
|
|
(((value) & ((1 << HMATRIX2_##name##_SIZE) - 1)) \
|
|
<< HMATRIX2_##name##_OFFSET)
|
|
#define HMATRIX2_BFEXT(name,value) \
|
|
(((value) >> HMATRIX2_##name##_OFFSET) \
|
|
& ((1 << HMATRIX2_##name##_SIZE) - 1))
|
|
#define HMATRIX2_BFINS(name,value,old) \
|
|
(((old) & ~(((1 << HMATRIX2_##name##_SIZE) - 1) \
|
|
<< HMATRIX2_##name##_OFFSET)) \
|
|
| HMATRIX2_BF(name,value))
|
|
|
|
/* Register access macros */
|
|
#define hmatrix2_readl(reg) \
|
|
readl((void *)HMATRIX_BASE + HMATRIX2_##reg)
|
|
#define hmatrix2_writel(reg,value) \
|
|
writel((value), (void *)HMATRIX_BASE + HMATRIX2_##reg)
|
|
|
|
#endif /* __ASM_AVR32_HMATRIX2_H__ */
|