185e653c7SImre Vadász #ifndef _GPIO_INTEL_VAR_H 285e653c7SImre Vadász #define _GPIO_INTEL_VAR_H 385e653c7SImre Vadász 485e653c7SImre Vadász struct pinrange { 585e653c7SImre Vadász int start; 685e653c7SImre Vadász int end; 785e653c7SImre Vadász }; 885e653c7SImre Vadász 985e653c7SImre Vadász struct pin_intr_map { 1085e653c7SImre Vadász int pin; 1185e653c7SImre Vadász void *arg; 1285e653c7SImre Vadász driver_intr_t *handler; 133094cc64SImre Vadász int is_level; 142cd90b92SImre Vadász uint32_t orig_intcfg; 1544007317SImre Vadász uint32_t orig_gpiocfg; 1685e653c7SImre Vadász }; 1785e653c7SImre Vadász 1885e653c7SImre Vadász struct gpio_intel_softc { 1985e653c7SImre Vadász device_t dev; 2085e653c7SImre Vadász struct resource *mem_res; 2185e653c7SImre Vadász struct resource *irq_res; 2285e653c7SImre Vadász void *intrhand; 2385e653c7SImre Vadász struct lock lk; 2485e653c7SImre Vadász struct pinrange *ranges; 2585e653c7SImre Vadász struct pin_intr_map intrmaps[16]; 2685e653c7SImre Vadász void *acpireg; 2785e653c7SImre Vadász struct gpio_intel_fns *fns; 2885e653c7SImre Vadász }; 2985e653c7SImre Vadász 3085e653c7SImre Vadász typedef void(*gpio_intel_init_fn)(struct gpio_intel_softc *sc); 3185e653c7SImre Vadász typedef int(*gpio_intel_map_intr_fn)(struct gpio_intel_softc *sc, 32*0b0166b0SImre Vadász uint16_t pin, int trigger, int polarity, int termination); 3385e653c7SImre Vadász typedef void(*gpio_intel_unmap_intr_fn)(struct gpio_intel_softc *sc, 3485e653c7SImre Vadász uint16_t pin); 35*0b0166b0SImre Vadász typedef int(*gpio_intel_establish_intr_fn)(struct gpio_intel_softc *sc, 36*0b0166b0SImre Vadász uint16_t pin, void *arg, driver_intr_t); 37*0b0166b0SImre Vadász typedef void(*gpio_intel_disestablish_intr_fn)(struct gpio_intel_softc *sc, 38*0b0166b0SImre Vadász uint16_t pin); 3985e653c7SImre Vadász typedef void(*gpio_intel_write_pin_fn)(struct gpio_intel_softc *sc, 4085e653c7SImre Vadász uint16_t pin, int value); 4185e653c7SImre Vadász typedef int(*gpio_intel_read_pin_fn)(struct gpio_intel_softc *sc, 4285e653c7SImre Vadász uint16_t pin); 4385e653c7SImre Vadász 4485e653c7SImre Vadász struct gpio_intel_fns { 4585e653c7SImre Vadász gpio_intel_init_fn init; 4685e653c7SImre Vadász driver_intr_t *intr; 4785e653c7SImre Vadász gpio_intel_map_intr_fn map_intr; 4885e653c7SImre Vadász gpio_intel_unmap_intr_fn unmap_intr; 49*0b0166b0SImre Vadász gpio_intel_establish_intr_fn establish_intr; 50*0b0166b0SImre Vadász gpio_intel_disestablish_intr_fn disestablish_intr; 5185e653c7SImre Vadász gpio_intel_write_pin_fn write_pin; 5285e653c7SImre Vadász gpio_intel_read_pin_fn read_pin; 5385e653c7SImre Vadász }; 5485e653c7SImre Vadász 5585e653c7SImre Vadász int gpio_cherryview_matchuid(struct gpio_intel_softc *sc); 5685e653c7SImre Vadász 5785e653c7SImre Vadász #endif 58