Lines Matching refs:mg

147  * This is called from genirq with mg->buslock locked and
153 struct msic_gpio *mg = irq_data_get_irq_chip_data(data);
154 u32 gpio = data->irq - mg->irq_base;
156 if (gpio >= mg->chip.ngpio)
160 mg->trig_change_mask |= (1 << gpio);
161 mg->trig_type = type;
168 struct msic_gpio *mg = gpiochip_get_data(chip);
169 return mg->irq_base + offset;
174 struct msic_gpio *mg = irq_data_get_irq_chip_data(data);
175 mutex_lock(&mg->buslock);
180 struct msic_gpio *mg = irq_data_get_irq_chip_data(data);
188 if (mg->trig_change_mask) {
189 offset = __ffs(mg->trig_change_mask);
195 if (mg->trig_type & IRQ_TYPE_EDGE_RISING)
197 if (mg->trig_type & IRQ_TYPE_EDGE_FALLING)
201 mg->trig_change_mask = 0;
204 mutex_unlock(&mg->buslock);
224 struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
226 struct intel_msic *msic = pdev_to_intel_msic(mg->pdev);
232 for (i = 0; i < (mg->chip.ngpio / BITS_PER_BYTE); i++) {
237 generic_handle_irq(mg->irq_base + i * BITS_PER_BYTE + bitnr);
246 struct msic_gpio *mg;
261 mg = kzalloc(sizeof(*mg), GFP_KERNEL);
262 if (!mg)
265 dev_set_drvdata(dev, mg);
267 mg->pdev = pdev;
268 mg->irq = irq;
269 mg->irq_base = pdata->gpio_base + MSIC_GPIO_IRQ_OFFSET;
270 mg->chip.label = "msic_gpio";
271 mg->chip.direction_input = msic_gpio_direction_input;
272 mg->chip.direction_output = msic_gpio_direction_output;
273 mg->chip.get = msic_gpio_get;
274 mg->chip.set = msic_gpio_set;
275 mg->chip.to_irq = msic_gpio_to_irq;
276 mg->chip.base = pdata->gpio_base;
277 mg->chip.ngpio = MSIC_NUM_GPIO;
278 mg->chip.can_sleep = true;
279 mg->chip.parent = dev;
281 mutex_init(&mg->buslock);
283 retval = gpiochip_add_data(&mg->chip, mg);
289 for (i = 0; i < mg->chip.ngpio; i++) {
290 irq_set_chip_data(i + mg->irq_base, mg);
291 irq_set_chip_and_handler(i + mg->irq_base,
295 irq_set_chained_handler_and_data(mg->irq, msic_gpio_irq_handler, mg);
299 kfree(mg);