100 if (ir->polling) {
101 if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) ||
102 (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) {
103 ir_input_keydown(ir->dev, &ir->ir, data, data);
104 } else {
105 ir_input_nokey(ir->dev, &ir->ir);
106 }
107 }
108 else {
109 if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) ||
110 (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) {
111 ir_input_keydown(ir->dev, &ir->ir, data, data);
112 ir_input_nokey(ir->dev, &ir->ir);
113 }
114 }
115
116 return 0;
117}
118
119
120
121static int get_key_msi_tvanywhere_plus(struct IR_i2c *ir, u32 *ir_key,
122 u32 *ir_raw)
123{
124 unsigned char b;
125 int gpio;
126
127
128 struct saa7134_dev *dev = ir->c.adapter->algo_data;
129 if (dev == NULL) {
130 dprintk("get_key_msi_tvanywhere_plus: "
131 "gir->c.adapter->algo_data is NULL!\n");
132 return -EIO;
133 }
134
135
136
137 saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
138 saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
139
140 gpio = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);