Loading...
Searching...
No Matches
busctrl.h
1// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
2
8#ifndef _HARDWARE_STRUCTS_BUSCTRL_H
9#define _HARDWARE_STRUCTS_BUSCTRL_H
10
14
16#include "hardware/regs/busctrl.h"
17
18// Reference to datasheet: https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf#tab-registerlist_busctrl
19//
20// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature)
21// _REG_(x) will link to the corresponding register in hardware/regs/busctrl.h.
22//
23// Bit-field descriptions are of the form:
24// BITMASK [BITRANGE] FIELDNAME (RESETVALUE) DESCRIPTION
25
28typedef enum bus_ctrl_perf_counter_rp2350 {
29 arbiter_rom_perf_event_access = 67,
30 arbiter_rom_perf_event_access_contested = 66,
31 arbiter_rom_perf_event_stall_downstream = 65,
32 arbiter_rom_perf_event_stall_upstream = 64,
33 arbiter_xip_main0_perf_event_access = 63,
34 arbiter_xip_main0_perf_event_access_contested = 62,
35 arbiter_xip_main0_perf_event_stall_downstream = 61,
36 arbiter_xip_main0_perf_event_stall_upstream = 60,
37 arbiter_xip_main1_perf_event_access = 59,
38 arbiter_xip_main1_perf_event_access_contested = 58,
39 arbiter_xip_main1_perf_event_stall_downstream = 57,
40 arbiter_xip_main1_perf_event_stall_upstream = 56,
41 arbiter_sram0_perf_event_access = 55,
42 arbiter_sram0_perf_event_access_contested = 54,
43 arbiter_sram0_perf_event_stall_downstream = 53,
44 arbiter_sram0_perf_event_stall_upstream = 52,
45 arbiter_sram1_perf_event_access = 51,
46 arbiter_sram1_perf_event_access_contested = 50,
47 arbiter_sram1_perf_event_stall_downstream = 49,
48 arbiter_sram1_perf_event_stall_upstream = 48,
49 arbiter_sram2_perf_event_access = 47,
50 arbiter_sram2_perf_event_access_contested = 46,
51 arbiter_sram2_perf_event_stall_downstream = 45,
52 arbiter_sram2_perf_event_stall_upstream = 44,
53 arbiter_sram3_perf_event_access = 43,
54 arbiter_sram3_perf_event_access_contested = 42,
55 arbiter_sram3_perf_event_stall_downstream = 41,
56 arbiter_sram3_perf_event_stall_upstream = 40,
57 arbiter_sram4_perf_event_access = 39,
58 arbiter_sram4_perf_event_access_contested = 38,
59 arbiter_sram4_perf_event_stall_downstream = 37,
60 arbiter_sram4_perf_event_stall_upstream = 36,
61 arbiter_sram5_perf_event_access = 35,
62 arbiter_sram5_perf_event_access_contested = 34,
63 arbiter_sram5_perf_event_stall_downstream = 33,
64 arbiter_sram5_perf_event_stall_upstream = 32,
65 arbiter_sram6_perf_event_access = 31,
66 arbiter_sram6_perf_event_access_contested = 30,
67 arbiter_sram6_perf_event_stall_downstream = 29,
68 arbiter_sram6_perf_event_stall_upstream = 28,
69 arbiter_sram7_perf_event_access = 27,
70 arbiter_sram7_perf_event_access_contested = 26,
71 arbiter_sram7_perf_event_stall_downstream = 25,
72 arbiter_sram7_perf_event_stall_upstream = 24,
73 arbiter_sram8_perf_event_access = 23,
74 arbiter_sram8_perf_event_access_contested = 22,
75 arbiter_sram8_perf_event_stall_downstream = 21,
76 arbiter_sram8_perf_event_stall_upstream = 20,
77 arbiter_sram9_perf_event_access = 19,
78 arbiter_sram9_perf_event_access_contested = 18,
79 arbiter_sram9_perf_event_stall_downstream = 17,
80 arbiter_sram9_perf_event_stall_upstream = 16,
81 arbiter_fastperi_perf_event_access = 15,
82 arbiter_fastperi_perf_event_access_contested = 14,
83 arbiter_fastperi_perf_event_stall_downstream = 13,
84 arbiter_fastperi_perf_event_stall_upstream = 12,
85 arbiter_apb_perf_event_access = 11,
86 arbiter_apb_perf_event_access_contested = 10,
87 arbiter_apb_perf_event_stall_downstream = 9,
88 arbiter_apb_perf_event_stall_upstream = 8,
89 arbiter_sio_proc0_perf_event_access = 7,
90 arbiter_sio_proc0_perf_event_access_contested = 6,
91 arbiter_sio_proc0_perf_event_stall_downstream = 5,
92 arbiter_sio_proc0_perf_event_stall_upstream = 4,
93 arbiter_sio_proc1_perf_event_access = 3,
94 arbiter_sio_proc1_perf_event_access_contested = 2,
95 arbiter_sio_proc1_perf_event_stall_downstream = 1,
96 arbiter_sio_proc1_perf_event_stall_upstream = 0
97} bus_ctrl_perf_counter_t;
98
99typedef struct {
100 _REG_(BUSCTRL_PERFCTR0_OFFSET) // BUSCTRL_PERFCTR0
101 // Bus fabric performance counter 0
102 // 0x00ffffff [23:0] PERFCTR0 (0x000000) Busfabric saturating performance counter 0 +
103 io_rw_32 value;
104
105 _REG_(BUSCTRL_PERFSEL0_OFFSET) // BUSCTRL_PERFSEL0
106 // Bus fabric performance event select for PERFCTR0
107 // 0x0000007f [6:0] PERFSEL0 (0x1f) Select an event for PERFCTR0
108 io_rw_32 sel;
110
111typedef struct {
112 _REG_(BUSCTRL_BUS_PRIORITY_OFFSET) // BUSCTRL_BUS_PRIORITY
113 // Set the priority of each master for bus arbitration
114 // 0x00001000 [12] DMA_W (0) 0 - low priority, 1 - high priority
115 // 0x00000100 [8] DMA_R (0) 0 - low priority, 1 - high priority
116 // 0x00000010 [4] PROC1 (0) 0 - low priority, 1 - high priority
117 // 0x00000001 [0] PROC0 (0) 0 - low priority, 1 - high priority
118 io_rw_32 priority;
119
120 _REG_(BUSCTRL_BUS_PRIORITY_ACK_OFFSET) // BUSCTRL_BUS_PRIORITY_ACK
121 // Bus priority acknowledge
122 // 0x00000001 [0] BUS_PRIORITY_ACK (0) Goes to 1 once all arbiters have registered the new...
123 io_ro_32 priority_ack;
124
125 _REG_(BUSCTRL_PERFCTR_EN_OFFSET) // BUSCTRL_PERFCTR_EN
126 // Enable the performance counters
127 // 0x00000001 [0] PERFCTR_EN (0)
128 io_rw_32 perfctr_en;
129
130 bus_ctrl_perf_hw_t counter[4];
132
133#define busctrl_hw ((busctrl_hw_t *)BUSCTRL_BASE)
134static_assert(sizeof (busctrl_hw_t) == 0x002c, "");
135
136#endif // _HARDWARE_STRUCTS_BUSCTRL_H
Definition busctrl.h:99
Definition busctrl.h:111