techpack/dataipa: affine ipa irqs to little CPUs

Some of the ipa irqs are run on CPU0 only and a few are run on CPU4.
Instead of utilizing the prime or gold clusters, affine these
completely to little cluster.
Little cluster can easily handle these interrupts and manage them
in a power efficient manner rather than handing these to the gold
clusters.

Change-Id: Ic9032448931593fd4ce5ccb77dec1b2e76a5ffc0
Signed-off-by: Vaisakh Murali <mvaisakh@statixos.com>
This commit is contained in:
Vaisakh Murali 2023-03-30 00:49:31 +06:00 committed by Davide Garberi
parent 82a14979e8
commit 3378ab0765

View File

@ -492,6 +492,7 @@ int ipa3_interrupts_init(u32 ipa_irq, u32 ee, struct device *ipa_dev)
{
int idx;
int res = 0;
cpumask_t cpu_mask;
ipa_ee = ee;
for (idx = 0; idx < IPA_IRQ_NUM_MAX; idx++) {
@ -520,6 +521,16 @@ int ipa3_interrupts_init(u32 ipa_irq, u32 ee, struct device *ipa_dev)
* emulator interrupts are handled...
*/
if (ipa3_ctx->ipa3_hw_mode != IPA_HW_MODE_EMULATION) {
/* Create a CPU mask that includes the first four CPUs */
cpumask_clear(&cpu_mask);
cpumask_set_cpu(0, &cpu_mask);
cpumask_set_cpu(1, &cpu_mask);
cpumask_set_cpu(2, &cpu_mask);
cpumask_set_cpu(3, &cpu_mask);
/* Set affinity hint for interrupt */
irq_set_affinity_hint(ipa_irq, &cpu_mask);
res = request_irq(ipa_irq, (irq_handler_t) ipa3_isr,
IRQF_TRIGGER_RISING, "ipa", ipa_dev);
if (res) {