unsigned int moving;
};
+static inline void avecintc_enable(void)
+{
+ u64 value;
+
+ value = iocsr_read64(LOONGARCH_IOCSR_MISC_FUNC);
+ value |= IOCSR_MISC_FUNC_AVEC_EN;
+ iocsr_write64(value, LOONGARCH_IOCSR_MISC_FUNC);
+}
+
static inline void avecintc_ack_irq(struct irq_data *d)
{
}
guard(raw_spinlock)(&loongarch_avec.lock);
+ avecintc_enable();
+
irq_matrix_online(loongarch_avec.vector_matrix);
pending_list_init(cpu);
static int __init avecintc_init(struct irq_domain *parent)
{
int ret, parent_irq;
- unsigned long value;
raw_spin_lock_init(&loongarch_avec.lock);
"irqchip/loongarch/avecintc:starting",
avecintc_cpu_online, avecintc_cpu_offline);
#endif
- value = iocsr_read64(LOONGARCH_IOCSR_MISC_FUNC);
- value |= IOCSR_MISC_FUNC_AVEC_EN;
- iocsr_write64(value, LOONGARCH_IOCSR_MISC_FUNC);
+ avecintc_enable();
return ret;