ASoC: bt-sco: Compatible stereo format
[firefly-linux-kernel-4.4.55.git] / kernel / irq / irqdesc.c
index 239e2ae2c947df31d26def1d26da430d144165e8..68d42b8e16c780fde223aac49b5b2e089cf8d12b 100644 (file)
@@ -565,7 +565,8 @@ void __irq_put_desc_unlock(struct irq_desc *desc, unsigned long flags, bool bus)
                chip_bus_sync_unlock(desc);
 }
 
-int irq_set_percpu_devid(unsigned int irq)
+int irq_set_percpu_devid_partition(unsigned int irq,
+                                  const struct cpumask *affinity)
 {
        struct irq_desc *desc = irq_to_desc(irq);
 
@@ -580,10 +581,33 @@ int irq_set_percpu_devid(unsigned int irq)
        if (!desc->percpu_enabled)
                return -ENOMEM;
 
+       if (affinity)
+               desc->percpu_affinity = affinity;
+       else
+               desc->percpu_affinity = cpu_possible_mask;
+
        irq_set_percpu_devid_flags(irq);
        return 0;
 }
 
+int irq_set_percpu_devid(unsigned int irq)
+{
+       return irq_set_percpu_devid_partition(irq, NULL);
+}
+
+int irq_get_percpu_devid_partition(unsigned int irq, struct cpumask *affinity)
+{
+       struct irq_desc *desc = irq_to_desc(irq);
+
+       if (!desc || !desc->percpu_enabled)
+               return -EINVAL;
+
+       if (affinity)
+               cpumask_copy(affinity, desc->percpu_affinity);
+
+       return 0;
+}
+
 void kstat_incr_irq_this_cpu(unsigned int irq)
 {
        kstat_incr_irqs_this_cpu(irq_to_desc(irq));