Difference between revisions of "Unit VersatilePB"
(4 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
=== Description === | === Description === | ||
---- | ---- | ||
+ | |||
+ | '''Ultibo Definitions specific to the ARM Versatile Platform Baseboard unit''' | ||
From the QEMU source the memory map of the VersatilePB is shown as this: | From the QEMU source the memory map of the VersatilePB is shown as this: | ||
Line 66: | Line 68: | ||
| | | | ||
|- | |- | ||
− | | <code>VERSATILEPB_PERIPHERALS_SIZE = | + | | <code>VERSATILEPB_PERIPHERALS_SIZE = SIZE_2M;</code> |
| | | | ||
|- | |- | ||
Line 132: | Line 134: | ||
|- | |- | ||
| <code>VERSATILEPB_VIC_REGS_BASE = $10140000;</code> | | <code>VERSATILEPB_VIC_REGS_BASE = $10140000;</code> | ||
− | | | + | | PL190 Vectored interrupt controller |
|- | |- | ||
|colspan="2"| | |colspan="2"| | ||
Line 412: | Line 414: | ||
|- | |- | ||
| <code>VERSATILEPB_VIC_IRQ_COUNT = 32;</code> | | <code>VERSATILEPB_VIC_IRQ_COUNT = 32;</code> | ||
− | | | + | | style="width: 50%;"| |
|- | |- | ||
|colspan="2"| | |colspan="2"| | ||
Line 462: | Line 464: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | |colspan="2"|System register offsets (See: \arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) | + | |colspan="2"|System register offsets (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) |
|- | |- | ||
|colspan="2"| | |colspan="2"| | ||
Line 567: | Line 569: | ||
|colspan="2"| | |colspan="2"| | ||
|- | |- | ||
− | |colspan="2"|System register bits (See: \arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) | + | |colspan="2"|System register bits (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) |
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_100HZ_FREQUENCY = 100;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_LOCK_LOCKED = (1 shl 16);</code> | ||
+ | | This bit indicates if the control registers are locks or unlocked | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_LOCK_LOCKVAL = $A05F;</code> | ||
+ | | Write this value to unlock the control registers, write any other to lock the registers | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_RESET = (1 shl 8);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_CONFIGCLR = $01;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_CONFIGINIT = $02;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_DLLRESET = $03;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_PLLRESET = $04;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_PORRESET = $05;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_RESETCTL_DOCRESET = $06;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_MCI_CD0 = (1 shl 0);</code> | ||
+ | | Card detect 0 | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_MCI_CD1 = (1 shl 1);</code> | ||
+ | | Card detect 1 | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_MCI_WP0 = (1 shl 2);</code> | ||
+ | | Write protect 0 | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_MCI_WP1 = (1 shl 3);</code> | ||
+ | | Write protect 1 | ||
+ | |- | ||
+ | |colspan="2"| | ||
|- | |- | ||
| <code>VERSATILEPB_SYS_CLCD_MODE888 = 0;</code> | | <code>VERSATILEPB_SYS_CLCD_MODE888 = 0;</code> | ||
Line 584: | Line 636: | ||
|- | |- | ||
| <code>VERSATILEPB_SYS_CLCD_MODEMASK = 3;</code> | | <code>VERSATILEPB_SYS_CLCD_MODEMASK = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>VERSATILEPB_SYS_24MHZ_FREQUENCY = 24000000;</code> | ||
| | | | ||
|- | |- | ||
Line 983: | Line 1,040: | ||
---- | ---- | ||
− | '' | + | ''None defined'' |
=== Function declarations === | === Function declarations === | ||
---- | ---- | ||
− | '' | + | ''None defined'' |
Return to [[Unit_Reference|Unit Reference]] | Return to [[Unit_Reference|Unit Reference]] |
Latest revision as of 05:48, 9 June 2017
Return to Unit Reference
Description
Ultibo Definitions specific to the ARM Versatile Platform Baseboard unit
From the QEMU source the memory map of the VersatilePB is shown as this:
Memory map for Versatile/PB:
- 0x10000000 System registers
- 0x10001000 PCI controller config registers
- 0x10002000 Serial bus interface
- 0x10003000 Secondary interrupt controller
- 0x10004000 AACI (audio)
- 0x10005000 MMCI0
- 0x10006000 KMI0 (keyboard)
- 0x10007000 KMI1 (mouse)
- 0x10008000 Character LCD Interface
- 0x10009000 UART3
- 0x1000a000 Smart card 1
- 0x1000b000 MMCI1
- 0x10010000 Ethernet
- 0x10020000 USB
- 0x10100000 SSMC
- 0x10110000 MPMC
- 0x10120000 CLCD Controller
- 0x10130000 DMA Controller
- 0x10140000 Vectored interrupt controller
- 0x101d0000 AHB Monitor Interface
- 0x101e0000 System Controller
- 0x101e1000 Watchdog Interface
- 0x101e2000 Timer 0/1
- 0x101e3000 Timer 2/3
- 0x101e4000 GPIO port 0
- 0x101e5000 GPIO port 1
- 0x101e6000 GPIO port 2
- 0x101e7000 GPIO port 3
- 0x101e8000 RTC
- 0x101f0000 Smart card 0
- 0x101f1000 UART0
- 0x101f2000 UART1
- 0x101f3000 UART2
- 0x101f4000 SSPI
- 0x34000000 NOR Flash
Constants
VERSATILEPB_*
VERSATILEPB_CPU_COUNT = 1;
|
|
Physical memory addresses of VersatilePB peripherals (See: \hw\arm\versatilepb.c and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Bbajihec.html)
See also: \arch\arm\mach-versatile\include\mach\platform.h | |
VERSATILEPB_PERIPHERALS_BASE = $10000000;
|
|
VERSATILEPB_PERIPHERALS_SIZE = SIZE_2M;
|
|
Peripherals | |
VERSATILEPB_SYS_REGS_BASE = $10000000;
|
System Registers |
VERSATILEPB_PCI_CORE_REGS_BASE = $10001000;
|
PCI core control |
VERSATILEPB_I2C_REGS_BASE = $10002000;
|
I2C control |
VERSATILEPB_SIC_REGS_BASE = $10003000;
|
Secondary interrupt controller |
VERSATILEPB_AACI_REGS_BASE = $10004000;
|
PL041 Audio |
VERSATILEPB_MMCI0_REGS_BASE = $10005000;
|
PL180 MMC interface |
VERSATILEPB_KMI0_REGS_BASE = $10006000;
|
PL050 KMI interface |
VERSATILEPB_KMI1_REGS_BASE = $10007000;
|
PL050 KMI 2nd interface |
VERSATILEPB_CHAR_LCD_REGS_BASE = $10008000;
|
Character LCD |
VERSATILEPB_UART3_REGS_BASE = $10009000;
|
PL011 UART 3 |
VERSATILEPB_SCI1_REGS_BASE = $1000A000;
|
|
VERSATILEPB_MMCI1_REGS_BASE = $1000B000;
|
PL180 MMC Interface |
0x1000C000 - 0x1000CFFF = reserved | |
VERSATILEPB_ETH_REGS_BASE = $10010000;
|
LAN91C111 Ethernet |
VERSATILEPB_USB_REGS_BASE = $10020000;
|
OHCI USB |
0x10030000 - 0x100FFFFF = reserved | |
VERSATILEPB_SMC_REGS_BASE = $10100000;
|
SMC |
VERSATILEPB_MPMC_REGS_BASE = $10110000;
|
MPMC |
VERSATILEPB_CLCD_REGS_BASE = $10120000;
|
PL110 CLCD |
VERSATILEPB_DMAC_REGS_BASE = $10130000;
|
PL080 DMA controller |
VERSATILEPB_VIC_REGS_BASE = $10140000;
|
PL190 Vectored interrupt controller |
VERSATILEPB_AHBM_REGS_BASE = $101D0000;
|
AHB monitor |
VERSATILEPB_SYSCTRL_REGS_BASE = $101E0000;
|
System controller |
VERSATILEPB_WATCHDOG_REGS_BASE = $101E1000;
|
Watchdog |
VERSATILEPB_TIMER0_REGS_BASE = $101e2000;
|
SP804 Timer 0 |
VERSATILEPB_TIMER1_REGS_BASE = $101e2020;
|
SP804 Timer 1 |
VERSATILEPB_TIMER2_REGS_BASE = $101e3000;
|
SP804 Timer 2 |
VERSATILEPB_TIMER3_REGS_BASE = $101e3020;
|
SP804 Timer 3 |
VERSATILEPB_GPIO0_REGS_BASE = $101E4000;
|
PL061 GPIO port 0 |
VERSATILEPB_GPIO1_REGS_BASE = $101E5000;
|
PL061 GPIO port 1 |
VERSATILEPB_GPIO2_REGS_BASE = $101E6000;
|
PL061 GPIO port 2 |
VERSATILEPB_GPIO3_REGS_BASE = $101E7000;
|
PL061 GPIO port 3 |
VERSATILEPB_RTC_REGS_BASE = $101E8000;
|
PL031 Real Time Clock |
0x101E9000 - reserved | |
VERSATILEPB_SCI_REGS_BASE = $101F0000;
|
Smart card controller |
VERSATILEPB_UART0_REGS_BASE = $101f1000;
|
PL011 UART0 |
VERSATILEPB_UART1_REGS_BASE = $101f2000;
|
PL011 UART1 |
VERSATILEPB_UART2_REGS_BASE = $101f3000;
|
PL011 UART2 |
VERSATILEPB_SSP_REGS_BASE = $101F4000;
|
Synchronous Serial Port |
VERSATILEPB_IRQ_*
IRQ lines of VersatilePB peripherals (See: \hw\arm\versatilepb.c and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Bbajihec.html)
Interrupt Assignments (Primary) (See: \arch\arm\mach-versatile\include\mach\platform.h) | |
VERSATILEPB_IRQ_WDOG = 0;
|
Watchdog timer |
VERSATILEPB_IRQ_SOFT = 1;
|
Software interrupt |
VERSATILEPB_IRQ_COMMRX = 2;
|
Debug Comm Rx interrupt |
VERSATILEPB_IRQ_COMMTX = 3;
|
Debug Comm Tx interrupt |
VERSATILEPB_IRQ_TIMER0_1 = 4;
|
Timer 0 and 1 |
VERSATILEPB_IRQ_TIMER2_3 = 5;
|
Timer 2 and 3 |
VERSATILEPB_IRQ_GPIO0 = 6;
|
GPIO 0 |
VERSATILEPB_IRQ_GPIO1 = 7;
|
GPIO 1 |
VERSATILEPB_IRQ_GPIO2 = 8;
|
GPIO 2 |
VERSATILEPB_IRQ_GPIO3 = 9;
|
GPIO 3 |
VERSATILEPB_IRQ_RTC = 10;
|
Real Time Clock |
VERSATILEPB_IRQ_SSP = 11;
|
Synchronous Serial Port |
VERSATILEPB_IRQ_UART0 = 12;
|
UART 0 on development chip |
VERSATILEPB_IRQ_UART1 = 13;
|
UART 1 on development chip |
VERSATILEPB_IRQ_UART2 = 14;
|
UART 2 on development chip |
VERSATILEPB_IRQ_SCI = 15;
|
Smart Card Interface |
VERSATILEPB_IRQ_CLCD = 16;
|
CLCD controller |
VERSATILEPB_IRQ_DMA = 17;
|
DMA controller |
VERSATILEPB_IRQ_PWRFAIL = 18;
|
Power failure |
VERSATILEPB_IRQ_MBX = 19;
|
Graphics processor |
VERSATILEPB_IRQ_GND = 20;
|
Reserved |
External interrupt signals from logic tiles or secondary controller | |
VERSATILEPB_IRQ_VICSOURCE21 = 21;
|
Disk on Chip |
VERSATILEPB_IRQ_VICSOURCE22 = 22;
|
MCI0A |
VERSATILEPB_IRQ_VICSOURCE23 = 23;
|
MCI1A |
VERSATILEPB_IRQ_VICSOURCE24 = 24;
|
AACI |
VERSATILEPB_IRQ_VICSOURCE25 = 25;
|
Ethernet |
VERSATILEPB_IRQ_VICSOURCE26 = 26;
|
USB |
VERSATILEPB_IRQ_VICSOURCE27 = 27;
|
PCI 0 |
VERSATILEPB_IRQ_VICSOURCE28 = 28;
|
PCI 1 |
VERSATILEPB_IRQ_VICSOURCE29 = 29;
|
PCI 2 |
VERSATILEPB_IRQ_VICSOURCE30 = 30;
|
PCI 3 |
VERSATILEPB_IRQ_VICSOURCE31 = 31;
|
SIC source |
Passthrough interrupt signals from secondary controller | |
VERSATILEPB_IRQ_DOC = VERSATILEPB_IRQ_VICSOURCE21;
|
|
VERSATILEPB_IRQ_MMCI0A = VERSATILEPB_IRQ_VICSOURCE22;
|
|
VERSATILEPB_IRQ_MMCI1A = VERSATILEPB_IRQ_VICSOURCE23;
|
|
VERSATILEPB_IRQ_AACI = VERSATILEPB_IRQ_VICSOURCE24;
|
|
VERSATILEPB_IRQ_ETH = VERSATILEPB_IRQ_VICSOURCE25;
|
|
VERSATILEPB_IRQ_USB = VERSATILEPB_IRQ_VICSOURCE26;
|
|
VERSATILEPB_IRQ_PCI0 = VERSATILEPB_IRQ_VICSOURCE27;
|
|
VERSATILEPB_IRQ_PCI1 = VERSATILEPB_IRQ_VICSOURCE28;
|
|
VERSATILEPB_IRQ_PCI2 = VERSATILEPB_IRQ_VICSOURCE29;
|
|
VERSATILEPB_IRQ_PCI3 = VERSATILEPB_IRQ_VICSOURCE30;
|
|
VERSATILEPB_IRQ_SICSOURCE = VERSATILEPB_IRQ_VICSOURCE31;
|
|
Interrupt Assignments (Secondary) (See: \arch\arm\mach-versatile\include\mach\platform.h) | |
VERSATILEPB_IRQ_SIC_SOFTINT = 32;
|
SIC IRQ 0 (Soft Interrupt) |
VERSATILEPB_IRQ_SIC_MMCI0B = 33;
|
SIC IRQ 1 (Multimedia Card 0B) |
VERSATILEPB_IRQ_SIC_MMCI1B = 34;
|
SIC IRQ 2 (Multimedia Card 1B) |
VERSATILEPB_IRQ_SIC_KMI0 = 35;
|
SIC IRQ 3 (Keyboard/Mouse port 0) |
VERSATILEPB_IRQ_SIC_KMI1 = 36;
|
SIC IRQ 4 (Keyboard/Mouse port 1) |
VERSATILEPB_IRQ_SIC_SCI3 = 37;
|
SIC IRQ 5 (Smart Card interface) |
VERSATILEPB_IRQ_SIC_UART3 = 38;
|
SIC IRQ 6 (UART 3 empty or data available) |
VERSATILEPB_IRQ_SIC_CHAR_LCD = 39;
|
SIC IRQ 7 (Character LCD) |
VERSATILEPB_IRQ_SIC_TOUCH = 40;
|
SIC IRQ 8 (Touchscreen) |
VERSATILEPB_IRQ_SIC_KEYPAD = 41;
|
SIC IRQ 9 (Key pressed on display keypad) |
42 to 52 (SIC IRQ 10 to 20) - Reserved | |
VERSATILEPB_IRQ_SIC_DOC = 53;
|
SIC IRQ 21 (Disk on Chip memory controller) |
VERSATILEPB_IRQ_SIC_MMCI0A = 54;
|
SIC IRQ 22 (MMC 0A) |
VERSATILEPB_IRQ_SIC_MMCI1A = 55;
|
SIC IRQ 23 (MMC 1A) |
VERSATILEPB_IRQ_SIC_AACI = 56;
|
SIC IRQ 24 (Audio Codec) |
VERSATILEPB_IRQ_SIC_ETH = 57;
|
SIC IRQ 25 (Ethernet controller) |
VERSATILEPB_IRQ_SIC_USB = 58;
|
SIC IRQ 26 (USB controller) |
VERSATILEPB_IRQ_SIC_PCI0 = 59;
|
SIC IRQ 27 |
VERSATILEPB_IRQ_SIC_PCI1 = 60;
|
SIC IRQ 28 |
VERSATILEPB_IRQ_SIC_PCI2 = 61;
|
SIC IRQ 29 |
VERSATILEPB_IRQ_SIC_PCI3 = 62;
|
SIC IRQ 30 |
VERSATILEPB_*_IRQ_COUNT*
Number of IRQs on the Vectored (Primary) Interrupt Controller (VIC) | |
VERSATILEPB_VIC_IRQ_COUNT = 32;
|
|
Number of IRQs on the Secondary Interrupt Controller (SIC) | |
VERSATILEPB_SIC_IRQ_COUNT = 32;
|
|
Total number of IRQs available | |
VERSATILEPB_IRQ_COUNT = VERSATILEPB_VIC_IRQ_COUNT + VERSATILEPB_SIC_IRQ_COUNT;
|
64 |
VERSATILEPB_FIQ_COUNT*
Total number of FIQs available | |
VERSATILEPB_FIQ_COUNT = 1;
|
VERSATILEPB_TIMER_FREQUENCY*
Timer frequencies | |
VERSATILEPB_TIMER_FREQUENCY = 1000000;
|
Default frequency of the VersatilePB Timer when reference is set to TIMCLK (1MHz) |
VERSATILEPB_SYS_*
System register offsets (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) | |
VERSATILEPB_SYS_ID = VERSATILEPB_SYS_REGS_BASE + $00;
|
|
VERSATILEPB_SYS_SW = VERSATILEPB_SYS_REGS_BASE + $04;
|
|
VERSATILEPB_SYS_LED = VERSATILEPB_SYS_REGS_BASE + $08;
|
|
VERSATILEPB_SYS_OSC0 = VERSATILEPB_SYS_REGS_BASE + $0C;
|
|
VERSATILEPB_SYS_OSC1 = VERSATILEPB_SYS_REGS_BASE + $10;
|
|
VERSATILEPB_SYS_OSC2 = VERSATILEPB_SYS_REGS_BASE + $14;
|
|
VERSATILEPB_SYS_OSC3 = VERSATILEPB_SYS_REGS_BASE + $18;
|
|
VERSATILEPB_SYS_OSC4 = VERSATILEPB_SYS_REGS_BASE + $1C;
|
|
VERSATILEPB_SYS_OSCCLCD = VERSATILEPB_SYS_REGS_BASE + $1c;
|
|
VERSATILEPB_SYS_LOCK = VERSATILEPB_SYS_REGS_BASE + $20;
|
|
VERSATILEPB_SYS_100HZ = VERSATILEPB_SYS_REGS_BASE + $24;
|
|
VERSATILEPB_SYS_CFGDATA1 = VERSATILEPB_SYS_REGS_BASE + $28;
|
|
VERSATILEPB_SYS_CFGDATA2 = VERSATILEPB_SYS_REGS_BASE + $2C;
|
|
VERSATILEPB_SYS_FLAGS = VERSATILEPB_SYS_REGS_BASE + $30;
|
|
VERSATILEPB_SYS_FLAGSSET = VERSATILEPB_SYS_REGS_BASE + $30;
|
|
VERSATILEPB_SYS_FLAGSCLR = VERSATILEPB_SYS_REGS_BASE + $34;
|
|
VERSATILEPB_SYS_NVFLAGS = VERSATILEPB_SYS_REGS_BASE + $38;
|
|
VERSATILEPB_SYS_NVFLAGSSET = VERSATILEPB_SYS_REGS_BASE + $38;
|
|
VERSATILEPB_SYS_NVFLAGSCLR = VERSATILEPB_SYS_REGS_BASE + $3C;
|
|
VERSATILEPB_SYS_RESETCTL = VERSATILEPB_SYS_REGS_BASE + $40;
|
|
VERSATILEPB_SYS_PCICTL = VERSATILEPB_SYS_REGS_BASE + $44;
|
|
VERSATILEPB_SYS_MCI = VERSATILEPB_SYS_REGS_BASE + $48;
|
|
VERSATILEPB_SYS_FLASH = VERSATILEPB_SYS_REGS_BASE + $4C;
|
|
VERSATILEPB_SYS_CLCD = VERSATILEPB_SYS_REGS_BASE + $50;
|
|
VERSATILEPB_SYS_CLCDSER = VERSATILEPB_SYS_REGS_BASE + $54;
|
|
VERSATILEPB_SYS_BOOTCS = VERSATILEPB_SYS_REGS_BASE + $58;
|
|
VERSATILEPB_SYS_24MHZ = VERSATILEPB_SYS_REGS_BASE + $5C;
|
|
VERSATILEPB_SYS_MISC = VERSATILEPB_SYS_REGS_BASE + $60;
|
|
VERSATILEPB_SYS_TEST_OSC0 = VERSATILEPB_SYS_REGS_BASE + $80;
|
|
VERSATILEPB_SYS_TEST_OSC1 = VERSATILEPB_SYS_REGS_BASE + $84;
|
|
VERSATILEPB_SYS_TEST_OSC2 = VERSATILEPB_SYS_REGS_BASE + $88;
|
|
VERSATILEPB_SYS_TEST_OSC3 = VERSATILEPB_SYS_REGS_BASE + $8C;
|
|
VERSATILEPB_SYS_TEST_OSC4 = VERSATILEPB_SYS_REGS_BASE + $90;
|
|
System register bits (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html) | |
VERSATILEPB_SYS_100HZ_FREQUENCY = 100;
|
|
VERSATILEPB_SYS_LOCK_LOCKED = (1 shl 16);
|
This bit indicates if the control registers are locks or unlocked |
VERSATILEPB_SYS_LOCK_LOCKVAL = $A05F;
|
Write this value to unlock the control registers, write any other to lock the registers |
VERSATILEPB_SYS_RESETCTL_RESET = (1 shl 8);
|
|
VERSATILEPB_SYS_RESETCTL_CONFIGCLR = $01;
|
|
VERSATILEPB_SYS_RESETCTL_CONFIGINIT = $02;
|
|
VERSATILEPB_SYS_RESETCTL_DLLRESET = $03;
|
|
VERSATILEPB_SYS_RESETCTL_PLLRESET = $04;
|
|
VERSATILEPB_SYS_RESETCTL_PORRESET = $05;
|
|
VERSATILEPB_SYS_RESETCTL_DOCRESET = $06;
|
|
VERSATILEPB_SYS_MCI_CD0 = (1 shl 0);
|
Card detect 0 |
VERSATILEPB_SYS_MCI_CD1 = (1 shl 1);
|
Card detect 1 |
VERSATILEPB_SYS_MCI_WP0 = (1 shl 2);
|
Write protect 0 |
VERSATILEPB_SYS_MCI_WP1 = (1 shl 3);
|
Write protect 1 |
VERSATILEPB_SYS_CLCD_MODE888 = 0;
|
LCD Mode [1:0], controls mapping of video memory to RGB signals 00 = 8:8:8 |
VERSATILEPB_SYS_CLCD_MODE5551 = 1;
|
01 = 5:5:5:1 |
VERSATILEPB_SYS_CLCD_MODE565BGR = 2;
|
10 = 5:6:5, red LSB |
VERSATILEPB_SYS_CLCD_MODE565RGB = 3;
|
11 = 5:6:5, blue LSB |
VERSATILEPB_SYS_CLCD_MODEMASK = 3;
|
|
VERSATILEPB_SYS_24MHZ_FREQUENCY = 24000000;
|
VERSATILEPB_SYSCTRL_*
System Control register bits (See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0440b/CACIHEAD.html) | |
VERSATILEPB_SYSCTRL_REFCLK = 0;
|
REFCLK is 32.768kHz |
VERSATILEPB_SYSCTRL_TIMCLK = 1;
|
TIMCLK is 1MHz |
VERSATILEPB_SYSCTRL_TIMER0_ENSEL = 15;
|
Timer 0 enable/Timer Reference Select. If 0, the timing reference is REFCLK. If 1, the timing reference is TIMCLK. |
VERSATILEPB_SYSCTRL_TIMER1_ENSEL = 17;
|
Timer 1 enable/Timer Reference Select. If 0, the timing reference is REFCLK. If 1, the timing reference is TIMCLK. |
VERSATILEPB_SYSCTRL_TIMER2_ENSEL = 19;
|
Timer 2 enable/Timer Reference Select. If 0, the timing reference is REFCLK. If 1, the timing reference is TIMCLK. |
VERSATILEPB_SYSCTRL_TIMER3_ENSEL = 21;
|
Timer 3 enable/Timer Reference Select. If 0, the timing reference is REFCLK. If 1, the timing reference is TIMCLK. |
SP804_TIMER_*
SP804 Timer register offsets (See: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0271d/DDI0271.pdf) | |
SP804_TIMER_LOAD = $00;
|
Timer Load register |
SP804_TIMER_VALUE = $04;
|
Timer Value register |
SP804_TIMER_CONTROL = $08;
|
Timer control register |
SP804_TIMER_INT_CLEAR = $0c;
|
Timer Interrupt clear register |
SP804_TIMER_RAW_INT = $10;
|
Timer Raw Interrupt register |
SP804_TIMER_MASKED_INT = $14;
|
Timer Masked Interrupt register |
SP804_TIMER_BACKGROUND_LOAD = $18;
|
Timer Background Load register |
SP804_TIMER_CONTROL_*
SP804 Timer register bits (See: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0271d/DDI0271.pdf) | |
SP804_TIMER_CONTROL_ONESHOT = (1 shl 0);
|
Selects one-shot or wrapping counter mode: (0 = wrapping mode (default)/1 = one-shot mode) |
SP804_TIMER_CONTROL_32BIT = (1 shl 1);
|
Selects 16/32 bit counter operation: (0 = 16-bit counter (default)/1 = 32-bit counter) |
SP804_TIMER_CONTROL_PRESCALE1 = (0 shl 2);
|
Prescale bits: 00 = 0 stages of prescale, clock is divided by 1 (default) |
SP804_TIMER_CONTROL_PRESCALE16 = (1 shl 2);
|
01 = 4 stages of prescale, clock is divided by 16 |
SP804_TIMER_CONTROL_PRESCALE256 = (2 shl 2);
|
10 = 8 stages of prescale, clock is divided by 256 |
SP804_TIMER_CONTROL_INT_ENABLED = (1 shl 5);
|
Interrupt Enable bit: (0 = Timer module Interrupt disabled/1 = Timer module Interrupt enabled (default)) |
SP804_TIMER_CONTROL_PERIODIC = (1 shl 6);
|
Mode bit: (0 = Timer module is in free-running mode (default)/1 = Timer module is in periodic mode) |
SP804_TIMER_CONTROL_TIMER_ENABLED = (1 shl 7);
|
Enable bit: (0 = Timer module disabled (default)/1 = Timer module enabled) |
PL190_VIC_*
PL190 Vectored Interrupt Controller register offsets (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0181e/index.html) | |
PL190_VIC_IRQSTATUS = $00;
|
IRQ Status Register |
PL190_VIC_FIQSTATUS = $04;
|
FIQ Status Register |
PL190_VIC_RAWINTR = $08;
|
Raw Interrupt Status Register |
PL190_VIC_INTSELECT = $0c;
|
Interrupt Select Register (1 = FIQ, 0 = IRQ) |
PL190_VIC_INTENABLE = $10;
|
Interrupt Enable Register |
PL190_VIC_INTENCLEAR = $14;
|
Interrupt Enable Clear Register |
PL190_VIC_SOFTINT = $18;
|
Software Interrupt Register |
PL190_VIC_SOFTINTCLEAR = $1c;
|
Software Interrupt Clear Register |
PL190_VIC_PROTECTION = $20;
|
Protection Enable Register |
PL190_VIC_VECTADDR = $30;
|
Vector Address Register (PL190 only) |
PL190_VIC_DEFVECTADDR = $34;
|
Default Vector Address Register (PL190 only) |
PL190_VIC_VECTADDR0 = $100;
|
Vector Address Registers (0 to 15) (0..31 PL192) |
PL190_VIC_VECTCNTL0 = $200;
|
Vector Control Registers (0 to 15) (0..31 PL192) |
PL190_VIC_VECTCNTL_*
PL190 Vectored Interrupt Controller register bits (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0181e/index.html) | |
PL190_VIC_VECTCNTL_ENABLE = (1 shl 5);
|
Enables vector interrupt (This bit is cleared on reset) |
PL190_VIC_VECTCNTL_INTSOURCE = ($1F shl 0);
|
Selects interrupt source 0 to 31 |
VERSATILEPB_SIC_*
VersatilePB Secondary Interrupt Controller register offsets (See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Cacdggia.html) | |
VERSATILEPB_SIC_STATUS = $00;
|
Status of interrupt (after mask) (Read) |
VERSATILEPB_SIC_RAWSTAT = $04;
|
Status of interrupt (before mask) (Read) |
VERSATILEPB_SIC_ENABLE = $08;
|
Interrupt mask / Set bits HIGH to enable the corresponding interrupt signals (Read/Write) |
VERSATILEPB_SIC_ENSET = $08;
|
|
VERSATILEPB_SIC_ENCLR = $0C;
|
Set bits HIGH to mask the corresponding interrupt signals (Write) |
VERSATILEPB_SIC_SOFTINTSET = $10;
|
Set software interrupt (Read/Write) |
VERSATILEPB_SIC_SOFTINTCLR = $14;
|
Clear software interrupt (Write) |
VERSATILEPB_SIC_PICENABLE = $20;
|
Pass-through mask (allows interrupt to pass directly to the primary interrupt controller)/Set bits HIGH to set the corresponding interrupt pass-through mask bits (Read/Write) |
VERSATILEPB_SIC_PICENSET = $20;
|
|
VERSATILEPB_SIC_PICENCLR = $24;
|
Set bits HIGH to clear the corresponding interrupt pass-through mask bits (Write) |
VersatilePB Secondary Interrupt Controller register bits (See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Cacdggia.html) | |
VERSATILEPB_SIC_PIC_MASK = $7FE00000;
|
Interrupts on secondary controller from 21 to 30 are routed directly to the VIC on the corresponding number on primary controller |
Type definitions
SP804 timer registers
PSP804TimerRegisters = ^TSP804TimerRegisters;
TSP804TimerRegisters = record
Layout of the SP804 Timer registers (VersatilePB specific structures) (See: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0271d/DDI0271.pdf) | |
Load:LongWord;
|
Timer Load register |
Value:LongWord;
|
Timer Value register |
Control:LongWord;
|
Timer control register |
IRQClear:LongWord;
|
Timer IRQ clear register |
RawIRQ:LongWord;
|
Timer Raw IRQ register |
MaskedIRQ:LongWord;
|
Timer Masked IRQ register |
BackgroundLoad:LongWord;
|
Timer Background Load register |
PL190 interrupt controller
PPL190InterruptRegisters = ^TPL190InterruptRegisters;
TPL190InterruptRegisters = record
Layout of the PL190 Vectored Interrupt Controller registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0181e/index.html) | |
IRQSTATUS:LongWord;
|
IRQ Status Register |
FIQSTATUS:LongWord;
|
FIQ Status Register |
RAWINTR:LongWord;
|
Raw Interrupt Status Register |
INTSELECT:LongWord;
|
Interrupt Select Register |
INTENABLE:LongWord;
|
Interrupt Enable Register |
INTENCLEAR:LongWord;
|
Interrupt Enable Clear Register |
SOFTINT:LongWord;
|
Software Interrupt Register |
SOFTINTCLEAR:LongWord;
|
Software Interrupt Clear Register |
PROTECTION:LongWord;
|
Protection Enable Register |
RESERVED1:LongWord;
|
|
RESERVED2:LongWord;
|
|
RESERVED3:LongWord;
|
|
VECTADDR:LongWord;
|
Vector Address Register |
DEFVECTADDR:LongWord;
|
Default Vector Address Register |
PL190 vector address
PPL190VectorAddressRegisters = ^TPL190VectorAddressRegisters;
TPL190VectorAddressRegisters = record
VECTADDR:array[0..15] of LongWord;
|
Vector Address Register |
PL190 vector control
PPL190VectorControlRegisters = ^TPL190VectorControlRegisters;
TPL190VectorControlRegisters = record
VECTCNTL:array[0..15] of LongWord;
|
Vector Control Registers |
VersatilePB secondary interrupt controller
PVersatilePBInterruptRegisters = ^TVersatilePBInterruptRegisters;
TVersatilePBInterruptRegisters = record
Layout of the VersatilePB Secondary Interrupt Controller registers (See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Cacdggia.html) | |
SIC_STATUS:LongWord;
|
Status of interrupt (after mask) (Read) |
SIC_RAWSTAT:LongWord;
|
Status of interrupt (before mask) (Read) |
SIC_ENSET:LongWord;
|
Interrupt mask / Set bits HIGH to enable the corresponding interrupt signals (Read/Write) |
SIC_ENCLR:LongWord;
|
Set bits HIGH to mask the corresponding interrupt signals (Write) |
SIC_SOFTINTSET:LongWord;
|
Set software interrupt (Read/Write) |
SIC_SOFTINTCLR:LongWord;
|
Clear software interrupt (Write) |
RESERVED1:LongWord;
|
|
RESERVED2:LongWord;
|
|
SIC_PICENSET:LongWord;
|
Pass-through mask (allows interrupt to pass directly to the primary interrupt controller) / Set bits HIGH to set the corresponding interrupt pass-through mask bits (Read/Write) |
SIC_PICENCLR:LongWord;
|
Set bits HIGH to clear the corresponding interrupt pass-through mask bits (Write) |
Public variables
None defined
Function declarations
None defined
Return to Unit Reference