Home | History | Annotate | Download | only in arch
      1 /*
      2  * GPIO switch definitions
      3  *
      4  * Copyright (C) 2006 Nokia Corporation
      5  *
      6  * This program is free software; you can redistribute it and/or modify
      7  * it under the terms of the GNU General Public License version 2 as
      8  * published by the Free Software Foundation.
      9  */
     10 
     11 #ifndef __ASM_ARCH_OMAP_GPIO_SWITCH_H
     12 #define __ASM_ARCH_OMAP_GPIO_SWITCH_H
     13 
     14 #include <linux/types.h>
     15 
     16 /* Cover:
     17  *	high -> closed
     18  *	low  -> open
     19  * Connection:
     20  *	high -> connected
     21  *	low  -> disconnected
     22  * Activity:
     23  *	high -> active
     24  *	low  -> inactive
     25  *
     26  */
     27 #define OMAP_GPIO_SWITCH_TYPE_COVER		0x0000
     28 #define OMAP_GPIO_SWITCH_TYPE_CONNECTION	0x0001
     29 #define OMAP_GPIO_SWITCH_TYPE_ACTIVITY		0x0002
     30 #define OMAP_GPIO_SWITCH_FLAG_INVERTED		0x0001
     31 #define OMAP_GPIO_SWITCH_FLAG_OUTPUT		0x0002
     32 
     33 struct omap_gpio_switch {
     34 	const char *name;
     35 	s16 gpio;
     36 	unsigned flags:4;
     37 	unsigned type:4;
     38 
     39 	/* Time in ms to debounce when transitioning from
     40 	 * inactive state to active state. */
     41 	u16 debounce_rising;
     42 	/* Same for transition from active to inactive state. */
     43 	u16 debounce_falling;
     44 
     45 	/* notify board-specific code about state changes */
     46 	void (* notify)(void *data, int state);
     47 	void *notify_data;
     48 };
     49 
     50 /* Call at init time only */
     51 extern void omap_register_gpio_switches(const struct omap_gpio_switch *tbl,
     52 					int count);
     53 
     54 #endif
     55