From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
kernel/drivers/irqchip/irq-gic-common.c | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/kernel/drivers/irqchip/irq-gic-common.c b/kernel/drivers/irqchip/irq-gic-common.c
index f47b41d..18dccc5 100644
--- a/kernel/drivers/irqchip/irq-gic-common.c
+++ b/kernel/drivers/irqchip/irq-gic-common.c
@@ -10,6 +10,10 @@
#include "irq-gic-common.h"
+#ifdef CONFIG_ROCKCHIP_AMP
+#include <soc/rockchip/rockchip_amp.h>
+#endif
+
static DEFINE_RAW_SPINLOCK(irq_controller_lock);
static const struct gic_kvm_info *gic_kvm_info;
@@ -29,7 +33,13 @@
const struct gic_quirk *quirks, void *data)
{
for (; quirks->desc; quirks++) {
- if (!of_device_is_compatible(np, quirks->compatible))
+ if (!quirks->compatible && !quirks->property)
+ continue;
+ if (quirks->compatible &&
+ !of_device_is_compatible(np, quirks->compatible))
+ continue;
+ if (quirks->property &&
+ !of_property_read_bool(np, quirks->property))
continue;
if (quirks->init(data))
pr_info("GIC: enabling workaround for %s\n",
@@ -41,7 +51,7 @@
void *data)
{
for (; quirks->desc; quirks++) {
- if (quirks->compatible)
+ if (quirks->compatible || quirks->property)
continue;
if (quirks->iidr != (quirks->mask & iidr))
continue;
@@ -112,8 +122,25 @@
/*
* Set priority on all global interrupts.
*/
+#ifdef CONFIG_ROCKCHIP_AMP
+ for (i = 32; i < gic_irqs; i += 4) {
+ u32 amp_pri, j;
+
+ amp_pri = 0;
+ for (j = 0; j < 4; j++) {
+ if (rockchip_amp_need_init_amp_irq(i + j)) {
+ amp_pri |= rockchip_amp_get_irq_prio(i + j) <<
+ (j * 8);
+ } else {
+ amp_pri |= GICD_INT_DEF_PRI << (j * 8);
+ }
+ }
+ writel_relaxed(amp_pri, base + GIC_DIST_PRI + i);
+ }
+#else
for (i = 32; i < gic_irqs; i += 4)
writel_relaxed(GICD_INT_DEF_PRI_X4, base + GIC_DIST_PRI + i);
+#endif
/*
* Deactivate and disable all SPIs. Leave the PPI and SGIs
--
Gitblit v1.6.2