hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/** @file
 *
 *  Copyright (c) 2019, ARM Limited. All rights reserved.
 *  Copyright (c) 2017, Andrei Warkentin <andrey.warkentin@gmail.com>
 *  Copyright (c) 2016, Linaro Limited. All rights reserved.
 *
 *  SPDX-License-Identifier: BSD-2-Clause-Patent
 *
 **/
 
#ifndef __BCM2836_H__
#define __BCM2836_H__
 
/*
 * Both "core" and SoC perpherals (1M each).
 */
#define BCM2836_SOC_REGISTERS                               (FixedPcdGet64 (PcdBcm283xRegistersAddress))
#define BCM2836_SOC_REGISTER_LENGTH                         0x02000000
 
/*
 * Offset between the CPU's view and the VC's view of system memory.
 */
#define BCM2836_DMA_DEVICE_OFFSET                           0xc0000000
 
/* watchdog constants */
#define BCM2836_WDOG_OFFSET                                 0x00100000
#define BCM2836_WDOG_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_WDOG_OFFSET)
#define BCM2836_WDOG_PASSWORD                               0x5a000000
#define BCM2836_WDOG_RSTC_OFFSET                            0x0000001c
#define BCM2836_WDOG_WDOG_OFFSET                            0x00000024
#define BCM2836_WDOG_RSTC_WRCFG_MASK                        0x00000030
#define BCM2836_WDOG_RSTC_WRCFG_FULL_RESET                  0x00000020
 
/* clock manager constants */
#define BCM2836_CM_OFFSET                                   0x00101000
#define BCM2836_CM_BASE                                     (BCM2836_SOC_REGISTERS + BCM2836_CM_OFFSET)
#define BCM2836_CM_GEN_CLOCK_CONTROL                        0x0000
#define BCM2836_CM_GEN_CLOCK_DIVISOR                        0x0004
#define BCM2836_CM_VPU_CLOCK_CONTROL                        0x0008
#define BCM2836_CM_VPU_CLOCK_DIVISOR                        0x000c
#define BCM2836_CM_SYSTEM_CLOCK_CONTROL                     0x0010
#define BCM2836_CM_SYSTEM_CLOCK_DIVISOR                     0x0014
#define BCM2836_CM_H264_CLOCK_CONTROL                       0x0028
#define BCM2836_CM_H264_CLOCK_DIVISOR                       0x002c
#define BCM2836_CM_PWM_CLOCK_CONTROL                        0x00a0
#define BCM2836_CM_PWM_CLOCK_DIVISOR                        0x00a4
#define BCM2836_CM_UART_CLOCK_CONTROL                       0x00f0
#define BCM2836_CM_UART_CLOCK_DIVISOR                       0x00f4
#define BCM2836_CM_SDC_CLOCK_CONTROL                        0x01a8
#define BCM2836_CM_SDC_CLOCK_DIVISOR                        0x01ac
#define BCM2836_CM_ARM_CLOCK_CONTROL                        0x01b0
#define BCM2836_CM_ARM_CLOCK_DIVISOR                        0x01b4
#define BCM2836_CM_EMMC_CLOCK_CONTROL                       0x01c0
#define BCM2836_CM_EMMC_CLOCK_DIVISOR                       0x01c4
 
/* mailbox interface constants */
#define BCM2836_MBOX_OFFSET                                 0x0000b880
#define BCM2836_MBOX_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_MBOX_OFFSET)
#define BCM2836_MBOX_LENGTH                                 0x00000024
#define BCM2836_MBOX_READ_OFFSET                            0x00000000
#define BCM2836_MBOX_STATUS_OFFSET                          0x00000018
#define BCM2836_MBOX_CONFIG_OFFSET                          0x0000001c
#define BCM2836_MBOX_WRITE_OFFSET                           0x00000020
 
#define BCM2836_MBOX_STATUS_FULL                            0x1f
#define BCM2836_MBOX_STATUS_EMPTY                           0x1e
 
#define BCM2836_MBOX_NUM_CHANNELS                           16
 
/* interrupt controller constants */
#define BCM2836_INTC_TIMER_CONTROL_OFFSET                   0x00000040
#define BCM2836_INTC_TIMER_PENDING_OFFSET                   0x00000060
 
/* usb constants */
#define BCM2836_USB_OFFSET                                  0x00980000
#define BCM2836_USB_BASE_ADDRESS                            (BCM2836_SOC_REGISTERS + BCM2836_USB_OFFSET)
#define BCM2836_USB_LENGTH                                  0x00010000
 
/* serial based protocol constants */
#define BCM2836_PL011_UART_OFFSET                           0x00201000
#define BCM2836_PL011_UART_BASE_ADDRESS                     (BCM2836_SOC_REGISTERS + BCM2836_PL011_UART_OFFSET)
#define BCM2836_PL011_UART_LENGTH                           0x00001000
 
#define BCM2836_MINI_UART_OFFSET                            0x00215000
#define BCM2836_MINI_UART_BASE_ADDRESS                      (BCM2836_SOC_REGISTERS + BCM2836_MINI_UART_OFFSET)
#define BCM2836_MINI_UART_LENGTH                            0x00000070
 
#define BCM2836_I2C0_OFFSET                                 0x00205000
#define BCM2836_I2C0_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_I2C0_OFFSET)
#define BCM2836_I2C0_LENGTH                                 0x00000020
 
#define BCM2836_I2C1_OFFSET                                 0x00804000
#define BCM2836_I2C1_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_I2C1_OFFSET)
#define BCM2836_I2C1_LENGTH                                 0x00000020
 
#define BCM2836_I2C2_OFFSET                                 0x00805000
#define BCM2836_I2C2_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_I2C2_OFFSET)
#define BCM2836_I2C2_LENGTH                                 0x00000020
 
#define BCM2836_SPI0_OFFSET                                 0x00204000
#define BCM2836_SPI0_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_SPI0_OFFSET)
#define BCM2836_SPI0_LENGTH                                 0x00000020
 
#define BCM2836_SPI1_OFFSET                                 0x00215080
#define BCM2836_SPI1_LENGTH                                 0x00000040
#define BCM2836_SPI1_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_SPI1_OFFSET)
 
#define BCM2836_SPI2_OFFSET                                 0x002150C0
#define BCM2836_SPI2_LENGTH                                 0x00000040
#define BCM2836_SPI2_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_SPI2_OFFSET)
 
/* dma constants */
#define BCM2836_DMA0_OFFSET                                 0x00007000
#define BCM2836_DMA0_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_DMA0_OFFSET)
 
#define BCM2836_DMA15_OFFSET                                0x00E05000
#define BCM2836_DMA15_BASE_ADDRESS                          (BCM2836_SOC_REGISTERS + BCM2836_DMA15_OFFSET)
 
#define BCM2836_DMA_CTRL_OFFSET                             0x00007FE0
#define BCM2836_DMA_CTRL_BASE_ADDRESS                       (BCM2836_SOC_REGISTERS + BCM2836_DMA_CTRL_OFFSET)
 
#define BCM2836_DMA_CHANNEL_LENGTH                          0x00000100
 
#endif /*__BCM2836_H__ */