XenevaOS
Loading...
Searching...
No Matches
rpi3bp.h
Go to the documentation of this file.
1
30#ifndef __RASPBERRY_PI3B_H__
31#define __RASPBERRY_PI3B_H__
32
33#ifdef __TARGET_BOARD_RPI3__
34
35#include <stdint.h>
36#include <Hal/AA64/aa64cpu.h>
37#include <aurora.h>
38
39
40#define INT_SRC_CNTPSIRQ (1ULL<<0)
41#define INT_SRC_CNTPNSIRQ (1ULL<<1)
42#define INT_SRC_CNTHPIRQ (1ULL<<2)
43#define INT_SRC_CNTVIRQ (1ULL<<3)
44#define INT_SRC_MAILBOX0 (1ULL<<4)
45#define INT_SRC_MAILBOX1 (1ULL<<5)
46#define INT_SRC_MAILBOX2 (1ULL<<6)
47#define INT_SRC_MAILBOX3 (1ULL<<7)
48#define INT_SRC_GPU (1ULL<<8)
49#define INT_SRC_PMU (1ULL<<9)
50#define INT_SRC_AXI (1ULL<<10)
51
52#define TIMER_IRQ_ENABLE (1ULL<<1)
53#define TIMER_FIQ_ENABLE (1ULL<<3)
54
55/* Mailbox Tags */
56#define TAG_GET_BOARD_REV 0x00010002
57#define TAG_ALLOCATE_BUFFER 0x00040001
58#define TAG_RELEASE_BUFFER 0x00048001
59#define TAG_BLANK_SCREEN 0x00040002
60#define TAG_SET_PHYS_WH 0x00048003
61#define TAG_SET_VIRT_WH 0x00048004
62#define TAG_SET_DEPTH 0x00048005
63#define TAG_SET_PIXEL_ORDER 0x00048006
64#define TAG_GET_PITCH 0x00040008
65#define TAG_SET_VIRT_OFFSET 0x00048009
66#define TAG_SET_BACKLIGHT 0x0004800F
67#define TAG_GET_TOUCHBUF 0x0004000F
68#define TAG_SET_TOUCHBUF 0x0004801F
69#define TAG_GET_DISPLAY_ID 0x00040013
70#define TAG_SET_DSI_TIMING 00x00048014
71#define TAG_LAST 0x00000000
72
73
74enum rpi_power_domain{
75 RPI_POWERUP_SDCARD,
76 RPI_POWERUP_UART0,
77 RPI_POWERUP_UART1,
78 RPI_POWERUP_USB_HCD,
79 RPI_POWERUP_I2C0,
80 RPI_POWERUP_I2C1,
81 RPI_POWERUP_I2C2,
82 RPI_POWERUP_SPI,
83 RPI_POWERUP_CCP2TX
84};
85
86extern uint32_t AuRPI3LocalIRQGetPending();
87
88/*
89 * AuRPI3PeripheralIRQGetPending -- read pending interrupts from
90 * peripheral base
91 */
92extern uint32_t AuRPI3PeripheralIRQGetPending2();
93
94extern uint32_t AuRPI3PeripheralIRQGetPending1();
95/*
96 * AuRPI3Initialize -- initialize the basic board requirement
97 */
98extern void AuRPI3Initialize();
99
100/* RPI3ICInit -- initialize RPI3 local interrupt controller */
101extern void AuRPI3ICInit();
102
103/*
104 * RPI3_IRQ_handler -- handle pending IRQs
105 * @param regs -- Pointer to AA64 register struct
106 */
107extern void RPI3_IRQ_handler(AA64Registers* regs);
108
109/*
110 * AuRPI3PeripheralIRQEnable -- enable particular peripheral irq
111 * @param irq_num -- irq number of the specific peripheral
112 */
113AU_EXTERN AU_EXPORT void AuRPI3PeripheralIRQEnable(uint32_t irq_num);
114
115
116extern void AuVC4DSIInit();
117
118extern void AuRPI3DelayUS(uint32_t us);
119
120extern void AuRPIDelayMS(uint32_t ms);
121
122/*
123 * AuRPIInitializeFramebuffer -- initializes framebuffer
124 * @param width -- fb width by pixels
125 * @param height -- fb height by pixels
126 * @param depth -- fb depth
127 */
128bool AuRPIInitializeFramebuffer(uint32_t width, uint32_t height, uint32_t depth);
129
135AU_EXTERN AU_EXPORT int AuRPISetPowerState(uint32_t device_id);
136
137#endif
138
139
140#endif
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
unsigned int uint32_t
Definition acefiex.h:163
Definition aa64cpu.h:49
void AuVC4DSIInit()
Definition vc4dsi.c:752