mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
arm64: GICv3: introduce symbolic names for GICv3 ICC_SGI1R_EL1 fields
The gic_send_sgi() function used hardcoded bit shift values to generate the ICC_SGI1R_EL1 register value. Replace this with symbolic names to allow reusing them later. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
This commit is contained in:
parent
a0675c25d6
commit
7e5802781c
@ -481,15 +481,19 @@ out:
|
|||||||
return tlist;
|
return tlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MPIDR_TO_SGI_AFFINITY(cluster_id, level) \
|
||||||
|
(MPIDR_AFFINITY_LEVEL(cluster_id, level) \
|
||||||
|
<< ICC_SGI1R_AFFINITY_## level ##_SHIFT)
|
||||||
|
|
||||||
static void gic_send_sgi(u64 cluster_id, u16 tlist, unsigned int irq)
|
static void gic_send_sgi(u64 cluster_id, u16 tlist, unsigned int irq)
|
||||||
{
|
{
|
||||||
u64 val;
|
u64 val;
|
||||||
|
|
||||||
val = (MPIDR_AFFINITY_LEVEL(cluster_id, 3) << 48 |
|
val = (MPIDR_TO_SGI_AFFINITY(cluster_id, 3) |
|
||||||
MPIDR_AFFINITY_LEVEL(cluster_id, 2) << 32 |
|
MPIDR_TO_SGI_AFFINITY(cluster_id, 2) |
|
||||||
irq << 24 |
|
irq << ICC_SGI1R_SGI_ID_SHIFT |
|
||||||
MPIDR_AFFINITY_LEVEL(cluster_id, 1) << 16 |
|
MPIDR_TO_SGI_AFFINITY(cluster_id, 1) |
|
||||||
tlist);
|
tlist << ICC_SGI1R_TARGET_LIST_SHIFT);
|
||||||
|
|
||||||
pr_debug("CPU%d: ICC_SGI1R_EL1 %llx\n", smp_processor_id(), val);
|
pr_debug("CPU%d: ICC_SGI1R_EL1 %llx\n", smp_processor_id(), val);
|
||||||
gic_write_sgi1r(val);
|
gic_write_sgi1r(val);
|
||||||
|
@ -280,6 +280,18 @@
|
|||||||
#define ICC_SRE_EL2_SRE (1 << 0)
|
#define ICC_SRE_EL2_SRE (1 << 0)
|
||||||
#define ICC_SRE_EL2_ENABLE (1 << 3)
|
#define ICC_SRE_EL2_ENABLE (1 << 3)
|
||||||
|
|
||||||
|
#define ICC_SGI1R_TARGET_LIST_SHIFT 0
|
||||||
|
#define ICC_SGI1R_TARGET_LIST_MASK (0xffff << ICC_SGI1R_TARGET_LIST_SHIFT)
|
||||||
|
#define ICC_SGI1R_AFFINITY_1_SHIFT 16
|
||||||
|
#define ICC_SGI1R_AFFINITY_1_MASK (0xff << ICC_SGI1R_AFFINITY_1_SHIFT)
|
||||||
|
#define ICC_SGI1R_SGI_ID_SHIFT 24
|
||||||
|
#define ICC_SGI1R_SGI_ID_MASK (0xff << ICC_SGI1R_SGI_ID_SHIFT)
|
||||||
|
#define ICC_SGI1R_AFFINITY_2_SHIFT 32
|
||||||
|
#define ICC_SGI1R_AFFINITY_2_MASK (0xffULL << ICC_SGI1R_AFFINITY_1_SHIFT)
|
||||||
|
#define ICC_SGI1R_IRQ_ROUTING_MODE_BIT 40
|
||||||
|
#define ICC_SGI1R_AFFINITY_3_SHIFT 48
|
||||||
|
#define ICC_SGI1R_AFFINITY_3_MASK (0xffULL << ICC_SGI1R_AFFINITY_1_SHIFT)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* System register definitions
|
* System register definitions
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user