Lines Matching defs:eint
66 #define SUNXI_GPIO_INT_CFG(bank, eint) (0x200 + (0x20 * (bank)) + (0x4 * ((eint) / 8)))
67 #define SUNXI_GPIO_INT_MODEMASK(eint) (0xfU << (((eint) % 8) * 4))
445 struct sunxi_gpio_eint *eint;
458 eint = &sc->sc_eint[bank][bit - 1];
459 if (eint->eint_func == NULL)
461 if (!eint->eint_mpsafe)
463 ret |= eint->eint_func(eint->eint_arg);
464 if (!eint->eint_mpsafe)
478 struct sunxi_gpio_eint *eint;
488 eint = &sc->sc_eint[pin_def->eint_bank][pin_def->eint_num];
489 if (eint->eint_func != NULL) {
500 eint->eint_func = func;
501 eint->eint_arg = arg;
502 eint->eint_mpsafe = mpsafe;
503 eint->eint_bank = pin_def->eint_bank;
504 eint->eint_num = pin_def->eint_num;
506 /* Configure eint mode */
507 val = GPIO_READ(sc, SUNXI_GPIO_INT_CFG(eint->eint_bank, eint->eint_num));
508 val &= ~SUNXI_GPIO_INT_MODEMASK(eint->eint_num);
509 val |= __SHIFTIN(mode, SUNXI_GPIO_INT_MODEMASK(eint->eint_num));
510 GPIO_WRITE(sc, SUNXI_GPIO_INT_CFG(eint->eint_bank, eint->eint_num), val);
513 GPIO_WRITE(sc, SUNXI_GPIO_INT_DEBOUNCE(eint->eint_bank), val);
515 /* Enable eint */
516 val = GPIO_READ(sc, SUNXI_GPIO_INT_CTL(eint->eint_bank));
517 val |= __BIT(eint->eint_num);
518 GPIO_WRITE(sc, SUNXI_GPIO_INT_CTL(eint->eint_bank), val);
522 return eint;
526 sunxi_intr_disable(struct sunxi_gpio_softc *sc, struct sunxi_gpio_eint *eint)
530 KASSERT(eint->eint_func != NULL);
534 /* Disable eint */
535 val = GPIO_READ(sc, SUNXI_GPIO_INT_CTL(eint->eint_bank));
536 val &= ~__BIT(eint->eint_num);
537 GPIO_WRITE(sc, SUNXI_GPIO_INT_CTL(eint->eint_bank), val);
538 GPIO_WRITE(sc, SUNXI_GPIO_INT_STATUS(eint->eint_bank), __BIT(eint->eint_num));
540 eint->eint_func = NULL;
541 eint->eint_arg = NULL;
542 eint->eint_mpsafe = false;
602 struct sunxi_gpio_eint * const eint = ih;
604 sunxi_intr_disable(sc, eint);
679 struct sunxi_gpio_eint * const eint = ih;
681 sunxi_intr_disable(sc, eint);