These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / media / pci / mantis / mantis_common.h
index 8ff448b..d48778a 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/mutex.h>
 #include <linux/workqueue.h>
 
+#include "mantis_reg.h"
 #include "mantis_uart.h"
 
 #include "mantis_link.h"
 #define TECHNISAT              0x1ae4
 #define TERRATEC               0x153b
 
-#define MAKE_ENTRY(__subven, __subdev, __configptr) {                  \
+#define MAKE_ENTRY(__subven, __subdev, __configptr, __rc) {            \
                .vendor         = TWINHAN_TECHNOLOGIES,                 \
                .device         = MANTIS,                               \
                .subvendor      = (__subven),                           \
                .subdevice      = (__subdev),                           \
-               .driver_data    = (unsigned long) (__configptr)         \
+               .driver_data    = (unsigned long)                       \
+                       &(struct mantis_pci_drvdata){__configptr, __rc} \
 }
 
 enum mantis_i2c_mode {
@@ -101,6 +103,11 @@ struct mantis_hwconfig {
        enum mantis_i2c_mode    i2c_mode;
 };
 
+struct mantis_pci_drvdata {
+       struct mantis_hwconfig *hwconfig;
+       char *rc_map_name;
+};
+
 struct mantis_pci {
        unsigned int            verbose;
 
@@ -131,6 +138,7 @@ struct mantis_pci {
        dma_addr_t              risc_dma;
 
        struct tasklet_struct   tasklet;
+       spinlock_t              intmask_lock;
 
        struct i2c_adapter      adapter;
        int                     i2c_rc;
@@ -165,15 +173,32 @@ struct mantis_pci {
 
        struct mantis_ca        *mantis_ca;
 
-       wait_queue_head_t       uart_wq;
        struct work_struct      uart_work;
-       spinlock_t              uart_lock;
 
        struct rc_dev           *rc;
        char                    input_name[80];
        char                    input_phys[80];
+       char                    *rc_map_name;
 };
 
 #define MANTIS_HIF_STATUS      (mantis->gpio_status)
 
+static inline void mantis_mask_ints(struct mantis_pci *mantis, u32 mask)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(&mantis->intmask_lock, flags);
+       mmwrite(mmread(MANTIS_INT_MASK) & ~mask, MANTIS_INT_MASK);
+       spin_unlock_irqrestore(&mantis->intmask_lock, flags);
+}
+
+static inline void mantis_unmask_ints(struct mantis_pci *mantis, u32 mask)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(&mantis->intmask_lock, flags);
+       mmwrite(mmread(MANTIS_INT_MASK) | mask, MANTIS_INT_MASK);
+       spin_unlock_irqrestore(&mantis->intmask_lock, flags);
+}
+
 #endif /* __MANTIS_COMMON_H */