forked from Imagelibrary/rtems
bsps/arm: Initialize priorities of PPIs
At least on GICv1 the interrupts 0 up to including 31 are so called Peripheral Private Interrupts (PPIs). We have to initialize the priority of the PPIs on secondary processors.
This commit is contained in:
@@ -152,6 +152,7 @@ BSP_START_TEXT_SECTION void arm_gic_irq_initialize_secondary_cpu(void)
|
|||||||
{
|
{
|
||||||
volatile gic_cpuif *cpuif = GIC_CPUIF;
|
volatile gic_cpuif *cpuif = GIC_CPUIF;
|
||||||
volatile gic_dist *dist = ARM_GIC_DIST;
|
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||||
|
uint32_t id;
|
||||||
|
|
||||||
while ((dist->icddcr & GIC_DIST_ICDDCR_ENABLE) == 0) {
|
while ((dist->icddcr & GIC_DIST_ICDDCR_ENABLE) == 0) {
|
||||||
/* Wait */
|
/* Wait */
|
||||||
@@ -161,6 +162,11 @@ BSP_START_TEXT_SECTION void arm_gic_irq_initialize_secondary_cpu(void)
|
|||||||
dist->icdigr[0] = 0xffffffff;
|
dist->icdigr[0] = 0xffffffff;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Initialize Peripheral Private Interrupts (PPIs) */
|
||||||
|
for (id = 0; id < 32; ++id) {
|
||||||
|
gic_id_set_priority(dist, id, PRIORITY_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
cpuif->iccpmr = GIC_CPUIF_ICCPMR_PRIORITY(0xff);
|
cpuif->iccpmr = GIC_CPUIF_ICCPMR_PRIORITY(0xff);
|
||||||
cpuif->iccbpr = GIC_CPUIF_ICCBPR_BINARY_POINT(0x0);
|
cpuif->iccbpr = GIC_CPUIF_ICCBPR_BINARY_POINT(0x0);
|
||||||
cpuif->iccicr = CPUIF_ICCICR;
|
cpuif->iccicr = CPUIF_ICCICR;
|
||||||
|
|||||||
Reference in New Issue
Block a user