forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-02-19 890e1df1bec891d9203724541e81f8fbe5183388
kernel/arch/s390/include/asm/airq.h
....@@ -11,10 +11,11 @@
1111 #define _ASM_S390_AIRQ_H
1212
1313 #include <linux/bit_spinlock.h>
14
+#include <linux/dma-mapping.h>
1415
1516 struct airq_struct {
1617 struct hlist_node list; /* Handler queueing. */
17
- void (*handler)(struct airq_struct *); /* Thin-interrupt handler */
18
+ void (*handler)(struct airq_struct *airq, bool floating);
1819 u8 *lsi_ptr; /* Local-Summary-Indicator pointer */
1920 u8 lsi_mask; /* Local-Summary-Indicator mask */
2021 u8 isc; /* Interrupt-subclass */
....@@ -29,19 +30,22 @@
2930 /* Adapter interrupt bit vector */
3031 struct airq_iv {
3132 unsigned long *vector; /* Adapter interrupt bit vector */
33
+ dma_addr_t vector_dma; /* Adapter interrupt bit vector dma */
3234 unsigned long *avail; /* Allocation bit mask for the bit vector */
3335 unsigned long *bitlock; /* Lock bit mask for the bit vector */
3436 unsigned long *ptr; /* Pointer associated with each bit */
3537 unsigned int *data; /* 32 bit value associated with each bit */
3638 unsigned long bits; /* Number of bits in the vector */
3739 unsigned long end; /* Number of highest allocated bit + 1 */
40
+ unsigned long flags; /* Allocation flags */
3841 spinlock_t lock; /* Lock to protect alloc & free */
3942 };
4043
41
-#define AIRQ_IV_ALLOC 1 /* Use an allocation bit mask */
42
-#define AIRQ_IV_BITLOCK 2 /* Allocate the lock bit mask */
43
-#define AIRQ_IV_PTR 4 /* Allocate the ptr array */
44
-#define AIRQ_IV_DATA 8 /* Allocate the data array */
44
+#define AIRQ_IV_ALLOC 1 /* Use an allocation bit mask */
45
+#define AIRQ_IV_BITLOCK 2 /* Allocate the lock bit mask */
46
+#define AIRQ_IV_PTR 4 /* Allocate the ptr array */
47
+#define AIRQ_IV_DATA 8 /* Allocate the data array */
48
+#define AIRQ_IV_CACHELINE 16 /* Cacheline alignment for the vector */
4549
4650 struct airq_iv *airq_iv_create(unsigned long bits, unsigned long flags);
4751 void airq_iv_release(struct airq_iv *iv);