87 lines
2.8 KiB
Plaintext
87 lines
2.8 KiB
Plaintext
/*
|
|
* Copyright (c) 2012, ETH Zurich. All rights reserved.
|
|
*
|
|
* This file is distributed under the terms in the attached LICENSE file.
|
|
* If you do not find this file, copies can be found by writing to:
|
|
* ETH Zurich D-INFK, CAB F.78, Universitaetstr 6, CH-8092 Zurich.
|
|
* Attn: Systems Group.
|
|
*/
|
|
|
|
/*
|
|
* pl390_gic_cpuif.dev
|
|
*
|
|
* DESCRIPTION: PrimeCell PL390 Generic Interrupt Controller
|
|
*
|
|
* This is derived from:
|
|
*
|
|
* [1] PrimeCell Generic Interrupt Controller PL390
|
|
* (DDI0416B_gic_pl390_r0p0_trm.pdf)
|
|
* [2] ARM Cortex A9 MPCore TRM r2p0
|
|
* [3] ARM Generic Interrupt Controller v1.0
|
|
*
|
|
* Updated to work on PandaBoard according to [2] Table 3-1
|
|
*
|
|
* Register map for distributor: [3], chp 4.1.2
|
|
* Register map for CPU interface: [3], chp 4.1.3
|
|
*/
|
|
|
|
device pl390_gic_cpuif msbfirst (addr cpu_base)
|
|
"PrimeCell PL390 Generic Interrupt Controller CPU interface"
|
|
{
|
|
|
|
|
|
//
|
|
// CPU interface register map
|
|
//
|
|
|
|
register ICCICR addr(cpu_base, 0x0) "CPU Interface Control" {
|
|
_ 31;
|
|
enable 1 "en. fwding to connected processors";
|
|
};
|
|
|
|
register ICCPMR addr(cpu_base, 0x4) "Interrupt Priority Mask" {
|
|
_ 24;
|
|
priority 8 "Priority mask level for CPU Interface";
|
|
};
|
|
|
|
register ICCBPR addr(cpu_base, 0x8) "Binary Point" {
|
|
_ 29;
|
|
binary_point 3 "Split Group- and subpriority";
|
|
};
|
|
|
|
register ICCIAR ro addr(cpu_base, 0xc) "Interrupt Acknowledge" {
|
|
_ 19;
|
|
cpu_id 3 "Processor ID of interrupting processor";
|
|
ack_int_id 10 "Interrupt ID";
|
|
};
|
|
|
|
register ICCEOIR wo addr(cpu_base, 0x10) "End of Interrupt" {
|
|
_ 19 mbz;
|
|
cpu_id 3 "Proc ID of ICCIAR access";
|
|
eoi_int_id 10 "ACKINTID of ICCIAR access";
|
|
};
|
|
|
|
register ICCRPR ro addr(cpu_base, 0x14) "Running Priority" {
|
|
_ 24;
|
|
priority 8 "Highest priority active interrupt";
|
|
};
|
|
|
|
register ICCHPIR ro addr(cpu_base, 0x18) "Highest Pending Interrupt" {
|
|
_ 19;
|
|
cpu_id 3 "ID of interrupting processor";
|
|
pend_int_id 10 "ID of highest pri. pending int.";
|
|
};
|
|
|
|
register ICCABPR addr(cpu_base, 0x1c) "Aliased Binary Point" {
|
|
_ 29 rsvd;
|
|
binary_point 3 "Split Group- and subpriority";
|
|
};
|
|
|
|
register ICCIIDR ro addr(cpu_base, 0xfc) "CPU Interface Identification" {
|
|
product_id 12 "Product ID";
|
|
arch_version 4 "Implemented GIC architecture version";
|
|
revision 4 "Revision number for the CPU Interface";
|
|
implementer 12 "JEP106 code of the implementer";
|
|
};
|
|
};
|