xref: /dflybsd-src/sys/bus/gpio/gpio_intel/gpio_intel_var.h (revision 0b0166b05ac205b9dc1112fe8d52a8fbe31f63fa)
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