Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

LoongArch: Add and use some macros for AVEC

Add and use some macros for AVEC interrupt controller, instead of using
magic numbers.

Signed-off-by: Song Gao <gaosong@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>

authored by

Song Gao and committed by
Huacai Chen
dbb994b4 1de0ae21

+10 -2
+7
arch/loongarch/include/asm/irq.h
··· 50 50 #define NR_LEGACY_VECTORS 16 51 51 #define IRQ_MATRIX_BITS NR_VECTORS 52 52 53 + #define AVEC_IRQ_SHIFT 4 54 + #define AVEC_IRQ_BIT 8 55 + #define AVEC_IRQ_MASK GENMASK(AVEC_IRQ_BIT - 1, 0) 56 + #define AVEC_CPU_SHIFT 12 57 + #define AVEC_CPU_BIT 16 58 + #define AVEC_CPU_MASK GENMASK(AVEC_CPU_BIT - 1, 0) 59 + 53 60 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace 54 61 void arch_trigger_cpumask_backtrace(const struct cpumask *mask, int exclude_cpu); 55 62
+3 -2
drivers/irqchip/irq-loongarch-avec.c
··· 209 209 struct avecintc_data *adata = irq_data_get_irq_chip_data(d); 210 210 211 211 msg->address_hi = 0x0; 212 - msg->address_lo = (loongarch_avec.msi_base_addr | (adata->vec & 0xff) << 4) 213 - | ((cpu_logical_map(adata->cpu & 0xffff)) << 12); 212 + msg->address_lo = (loongarch_avec.msi_base_addr | 213 + (adata->vec & AVEC_IRQ_MASK) << AVEC_IRQ_SHIFT) | 214 + ((cpu_logical_map(adata->cpu & AVEC_CPU_MASK)) << AVEC_CPU_SHIFT); 214 215 msg->data = 0x0; 215 216 } 216 217