Merge branches 'pm-cpufreq' and 'pm-cpuidle'
[linux-2.6-microblaze.git] / include / linux / irqdesc.h
index 385a4fa..891b323 100644 (file)
@@ -113,6 +113,12 @@ static inline void irq_unlock_sparse(void) { }
 extern struct irq_desc irq_desc[NR_IRQS];
 #endif
 
+static inline unsigned int irq_desc_kstat_cpu(struct irq_desc *desc,
+                                             unsigned int cpu)
+{
+       return desc->kstat_irqs ? *per_cpu_ptr(desc->kstat_irqs, cpu) : 0;
+}
+
 static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
 {
        return container_of(data->common, struct irq_desc, irq_common_data);
@@ -223,40 +229,31 @@ irq_set_chip_handler_name_locked(struct irq_data *data, struct irq_chip *chip,
        data->chip = chip;
 }
 
+bool irq_check_status_bit(unsigned int irq, unsigned int bitmask);
+
 static inline bool irq_balancing_disabled(unsigned int irq)
 {
-       struct irq_desc *desc;
-
-       desc = irq_to_desc(irq);
-       return desc->status_use_accessors & IRQ_NO_BALANCING_MASK;
+       return irq_check_status_bit(irq, IRQ_NO_BALANCING_MASK);
 }
 
 static inline bool irq_is_percpu(unsigned int irq)
 {
-       struct irq_desc *desc;
-
-       desc = irq_to_desc(irq);
-       return desc->status_use_accessors & IRQ_PER_CPU;
+       return irq_check_status_bit(irq, IRQ_PER_CPU);
 }
 
 static inline bool irq_is_percpu_devid(unsigned int irq)
 {
-       struct irq_desc *desc;
-
-       desc = irq_to_desc(irq);
-       return desc->status_use_accessors & IRQ_PER_CPU_DEVID;
+       return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
 }
 
+void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,
+                            struct lock_class_key *request_class);
 static inline void
 irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,
                      struct lock_class_key *request_class)
 {
-       struct irq_desc *desc = irq_to_desc(irq);
-
-       if (desc) {
-               lockdep_set_class(&desc->lock, lock_class);
-               lockdep_set_class(&desc->request_mutex, request_class);
-       }
+       if (IS_ENABLED(CONFIG_LOCKDEP))
+               __irq_set_lockdep_class(irq, lock_class, request_class);
 }
 
 #endif