1 #ifndef _GPIO_INTEL_VAR_H 2 #define _GPIO_INTEL_VAR_H 3 4 struct pinrange { 5 int start; 6 int end; 7 }; 8 9 struct pin_intr_map { 10 int pin; 11 int intidx; 12 void *arg; 13 driver_intr_t *handler; 14 int is_level; 15 uint32_t orig_intcfg; 16 uint32_t orig_gpiocfg; 17 }; 18 19 struct pin_io_map { 20 int pin; 21 int flags; 22 }; 23 24 struct gpio_intel_softc { 25 device_t dev; 26 struct resource *mem_res; 27 struct resource *irq_res; 28 void *intrhand; 29 struct lock lk; 30 struct pinrange *ranges; 31 struct pin_intr_map intrmaps[16]; 32 struct pin_io_map iomaps[128]; 33 struct gpio_intel_fns *fns; 34 }; 35 36 typedef void(*gpio_intel_init_fn)(struct gpio_intel_softc *sc); 37 typedef int(*gpio_intel_map_intr_fn)(struct gpio_intel_softc *sc, 38 uint16_t pin, int trigger, int polarity, int termination); 39 typedef void(*gpio_intel_unmap_intr_fn)(struct gpio_intel_softc *sc, 40 struct pin_intr_map *map); 41 typedef void(*gpio_intel_enable_intr_fn)(struct gpio_intel_softc *sc, 42 struct pin_intr_map *map); 43 typedef void(*gpio_intel_disable_intr_fn)(struct gpio_intel_softc *sc, 44 struct pin_intr_map *map); 45 typedef int(*gpio_intel_check_io_pin_fn)(struct gpio_intel_softc *sc, 46 uint16_t pin, int flags); 47 typedef void(*gpio_intel_write_pin_fn)(struct gpio_intel_softc *sc, 48 uint16_t pin, int value); 49 typedef int(*gpio_intel_read_pin_fn)(struct gpio_intel_softc *sc, 50 uint16_t pin); 51 52 struct gpio_intel_fns { 53 gpio_intel_init_fn init; 54 driver_intr_t *intr; 55 gpio_intel_map_intr_fn map_intr; 56 gpio_intel_unmap_intr_fn unmap_intr; 57 gpio_intel_enable_intr_fn enable_intr; 58 gpio_intel_disable_intr_fn disable_intr; 59 gpio_intel_check_io_pin_fn check_io_pin; 60 gpio_intel_write_pin_fn write_pin; 61 gpio_intel_read_pin_fn read_pin; 62 }; 63 64 int gpio_cherryview_matchuid(struct gpio_intel_softc *sc); 65 66 #endif 67