diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-25 15:38:14 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-25 15:38:14 -0400 |
| commit | ce1d5b23a8d1e19866ab82bdec0dc41fde5273d8 (patch) | |
| tree | 028c80655ee8853ebf607d435bc3d6ab223aef1f /include | |
| parent | ad5e1b0f5d913d2c8bddfba81049cc07228da1a6 (diff) | |
| parent | 308f0a5898033691d050374a949bbfe173987a16 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (40 commits)
Input: wacom - add support for Cintiq 20WSX
Input: ucb1400_ts - IRQ probe fix
Input: at32psif - update MODULE_AUTHOR with new email
Input: mac_hid - add lockdep annotation to emumousebtn
Input: i8042 - fix incorrect usage of strncpy and strncat
Input: bf54x-keys - add infrastructure for keypad wakeups
Input: add MODULE_ALIAS() to hotpluggable platform modules
Input: drivers/char/keyboard.c - use time_after
Input: fix ordering in joystick Makefile
Input: wm97xx-core - support use as a wakeup source
Input: wm97xx-core - use IRQF_SAMPLE_RANDOM
Input: wm97xx-core - only schedule interrupt handler if not already scheduled
Input: add Zhen Hua driver
Input: aiptek - add support for Genius G-PEN 560 tablet
Input: wacom - implement suspend and autosuspend
Input: xpad - set proper buffer length for outgoing requests
Input: omap-keypad - fix build warning
Input: gpio_keys - irq handling cleanup
Input: add PS/2 serio driver for AVR32 devices
Input: put ledstate in the keyboard notifier
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/input.h | 8 | ||||
| -rw-r--r-- | include/linux/keyboard.h | 1 | ||||
| -rw-r--r-- | include/linux/serio.h | 1 | ||||
| -rw-r--r-- | include/linux/spi/ads7846.h | 3 | ||||
| -rw-r--r-- | include/linux/wm97xx.h | 314 |
5 files changed, 320 insertions, 7 deletions
diff --git a/include/linux/input.h b/include/linux/input.h index cae2c35d1206..28a094fcfe20 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -1025,10 +1025,6 @@ struct ff_effect { | |||
| 1025 | * @node: used to place the device onto input_dev_list | 1025 | * @node: used to place the device onto input_dev_list |
| 1026 | */ | 1026 | */ |
| 1027 | struct input_dev { | 1027 | struct input_dev { |
| 1028 | /* private: */ | ||
| 1029 | void *private; /* do not use */ | ||
| 1030 | /* public: */ | ||
| 1031 | |||
| 1032 | const char *name; | 1028 | const char *name; |
| 1033 | const char *phys; | 1029 | const char *phys; |
| 1034 | const char *uniq; | 1030 | const char *uniq; |
| @@ -1238,12 +1234,12 @@ static inline void input_put_device(struct input_dev *dev) | |||
| 1238 | 1234 | ||
| 1239 | static inline void *input_get_drvdata(struct input_dev *dev) | 1235 | static inline void *input_get_drvdata(struct input_dev *dev) |
| 1240 | { | 1236 | { |
| 1241 | return dev->private; | 1237 | return dev_get_drvdata(&dev->dev); |
| 1242 | } | 1238 | } |
| 1243 | 1239 | ||
| 1244 | static inline void input_set_drvdata(struct input_dev *dev, void *data) | 1240 | static inline void input_set_drvdata(struct input_dev *dev, void *data) |
| 1245 | { | 1241 | { |
| 1246 | dev->private = data; | 1242 | dev_set_drvdata(&dev->dev, data); |
| 1247 | } | 1243 | } |
| 1248 | 1244 | ||
| 1249 | int __must_check input_register_device(struct input_dev *); | 1245 | int __must_check input_register_device(struct input_dev *); |
diff --git a/include/linux/keyboard.h b/include/linux/keyboard.h index 65c2d70853e9..a3c984d780f0 100644 --- a/include/linux/keyboard.h +++ b/include/linux/keyboard.h | |||
| @@ -33,6 +33,7 @@ struct keyboard_notifier_param { | |||
| 33 | struct vc_data *vc; /* VC on which the keyboard press was done */ | 33 | struct vc_data *vc; /* VC on which the keyboard press was done */ |
| 34 | int down; /* Pressure of the key? */ | 34 | int down; /* Pressure of the key? */ |
| 35 | int shift; /* Current shift mask */ | 35 | int shift; /* Current shift mask */ |
| 36 | int ledstate; /* Current led state */ | ||
| 36 | unsigned int value; /* keycode, unicode value or keysym */ | 37 | unsigned int value; /* keycode, unicode value or keysym */ |
| 37 | }; | 38 | }; |
| 38 | 39 | ||
diff --git a/include/linux/serio.h b/include/linux/serio.h index 9f3825014674..95674d97dabd 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
| @@ -211,5 +211,6 @@ static inline void serio_unpin_driver(struct serio *serio) | |||
| 211 | #define SERIO_TOUCHWIN 0x33 | 211 | #define SERIO_TOUCHWIN 0x33 |
| 212 | #define SERIO_TAOSEVM 0x34 | 212 | #define SERIO_TAOSEVM 0x34 |
| 213 | #define SERIO_FUJITSU 0x35 | 213 | #define SERIO_FUJITSU 0x35 |
| 214 | #define SERIO_ZHENHUA 0x36 | ||
| 214 | 215 | ||
| 215 | #endif | 216 | #endif |
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h index 334d31411629..daf744017a31 100644 --- a/include/linux/spi/ads7846.h +++ b/include/linux/spi/ads7846.h | |||
| @@ -14,7 +14,8 @@ enum ads7846_filter { | |||
| 14 | struct ads7846_platform_data { | 14 | struct ads7846_platform_data { |
| 15 | u16 model; /* 7843, 7845, 7846. */ | 15 | u16 model; /* 7843, 7845, 7846. */ |
| 16 | u16 vref_delay_usecs; /* 0 for external vref; etc */ | 16 | u16 vref_delay_usecs; /* 0 for external vref; etc */ |
| 17 | int keep_vref_on:1; /* set to keep vref on for differential | 17 | u16 vref_mv; /* external vref value, milliVolts */ |
| 18 | bool keep_vref_on; /* set to keep vref on for differential | ||
| 18 | * measurements as well */ | 19 | * measurements as well */ |
| 19 | 20 | ||
| 20 | /* Settling time of the analog signals; a function of Vcc and the | 21 | /* Settling time of the analog signals; a function of Vcc and the |
diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h new file mode 100644 index 000000000000..4d13732e9cf0 --- /dev/null +++ b/include/linux/wm97xx.h | |||
| @@ -0,0 +1,314 @@ | |||
| 1 | |||
| 2 | /* | ||
| 3 | * Register bits and API for Wolfson WM97xx series of codecs | ||
| 4 | */ | ||
| 5 | |||
| 6 | #ifndef _LINUX_WM97XX_H | ||
| 7 | #define _LINUX_WM97XX_H | ||
| 8 | |||
| 9 | #include <sound/core.h> | ||
| 10 | #include <sound/pcm.h> | ||
| 11 | #include <sound/ac97_codec.h> | ||
| 12 | #include <sound/initval.h> | ||
| 13 | #include <linux/types.h> | ||
| 14 | #include <linux/list.h> | ||
| 15 | #include <linux/input.h> /* Input device layer */ | ||
| 16 | #include <linux/platform_device.h> | ||
| 17 | |||
| 18 | /* | ||
| 19 | * WM97xx AC97 Touchscreen registers | ||
| 20 | */ | ||
| 21 | #define AC97_WM97XX_DIGITISER1 0x76 | ||
| 22 | #define AC97_WM97XX_DIGITISER2 0x78 | ||
| 23 | #define AC97_WM97XX_DIGITISER_RD 0x7a | ||
| 24 | #define AC97_WM9713_DIG1 0x74 | ||
| 25 | #define AC97_WM9713_DIG2 AC97_WM97XX_DIGITISER1 | ||
| 26 | #define AC97_WM9713_DIG3 AC97_WM97XX_DIGITISER2 | ||
| 27 | |||
| 28 | /* | ||
| 29 | * WM97xx register bits | ||
| 30 | */ | ||
| 31 | #define WM97XX_POLL 0x8000 /* initiate a polling measurement */ | ||
| 32 | #define WM97XX_ADCSEL_X 0x1000 /* x coord measurement */ | ||
| 33 | #define WM97XX_ADCSEL_Y 0x2000 /* y coord measurement */ | ||
| 34 | #define WM97XX_ADCSEL_PRES 0x3000 /* pressure measurement */ | ||
| 35 | #define WM97XX_ADCSEL_MASK 0x7000 | ||
| 36 | #define WM97XX_COO 0x0800 /* enable coordinate mode */ | ||
| 37 | #define WM97XX_CTC 0x0400 /* enable continuous mode */ | ||
| 38 | #define WM97XX_CM_RATE_93 0x0000 /* 93.75Hz continuous rate */ | ||
| 39 | #define WM97XX_CM_RATE_187 0x0100 /* 187.5Hz continuous rate */ | ||
| 40 | #define WM97XX_CM_RATE_375 0x0200 /* 375Hz continuous rate */ | ||
| 41 | #define WM97XX_CM_RATE_750 0x0300 /* 750Hz continuous rate */ | ||
| 42 | #define WM97XX_CM_RATE_8K 0x00f0 /* 8kHz continuous rate */ | ||
| 43 | #define WM97XX_CM_RATE_12K 0x01f0 /* 12kHz continuous rate */ | ||
| 44 | #define WM97XX_CM_RATE_24K 0x02f0 /* 24kHz continuous rate */ | ||
| 45 | #define WM97XX_CM_RATE_48K 0x03f0 /* 48kHz continuous rate */ | ||
| 46 | #define WM97XX_CM_RATE_MASK 0x03f0 | ||
| 47 | #define WM97XX_RATE(i) (((i & 3) << 8) | ((i & 4) ? 0xf0 : 0)) | ||
| 48 | #define WM97XX_DELAY(i) ((i << 4) & 0x00f0) /* sample delay times */ | ||
| 49 | #define WM97XX_DELAY_MASK 0x00f0 | ||
| 50 | #define WM97XX_SLEN 0x0008 /* slot read back enable */ | ||
| 51 | #define WM97XX_SLT(i) ((i - 5) & 0x7) /* panel slot (5-11) */ | ||
| 52 | #define WM97XX_SLT_MASK 0x0007 | ||
| 53 | #define WM97XX_PRP_DETW 0x4000 /* detect on, digitise off, wake */ | ||
| 54 | #define WM97XX_PRP_DET 0x8000 /* detect on, digitise off, no wake */ | ||
| 55 | #define WM97XX_PRP_DET_DIG 0xc000 /* setect on, digitise on */ | ||
| 56 | #define WM97XX_RPR 0x2000 /* wake up on pen down */ | ||
| 57 | #define WM97XX_PEN_DOWN 0x8000 /* pen is down */ | ||
| 58 | #define WM97XX_ADCSRC_MASK 0x7000 /* ADC source mask */ | ||
| 59 | |||
| 60 | #define WM97XX_AUX_ID1 0x8001 | ||
| 61 | #define WM97XX_AUX_ID2 0x8002 | ||
| 62 | #define WM97XX_AUX_ID3 0x8003 | ||
| 63 | #define WM97XX_AUX_ID4 0x8004 | ||
| 64 | |||
| 65 | |||
| 66 | /* WM9712 Bits */ | ||
| 67 | #define WM9712_45W 0x1000 /* set for 5-wire touchscreen */ | ||
| 68 | #define WM9712_PDEN 0x0800 /* measure only when pen down */ | ||
| 69 | #define WM9712_WAIT 0x0200 /* wait until adc is read before next sample */ | ||
| 70 | #define WM9712_PIL 0x0100 /* current used for pressure measurement. set 400uA else 200uA */ | ||
| 71 | #define WM9712_MASK_HI 0x0040 /* hi on mask pin (47) stops conversions */ | ||
| 72 | #define WM9712_MASK_EDGE 0x0080 /* rising/falling edge on pin delays sample */ | ||
| 73 | #define WM9712_MASK_SYNC 0x00c0 /* rising/falling edge on mask initiates sample */ | ||
| 74 | #define WM9712_RPU(i) (i&0x3f) /* internal pull up on pen detect (64k / rpu) */ | ||
| 75 | #define WM9712_PD(i) (0x1 << i) /* power management */ | ||
| 76 | |||
| 77 | /* WM9712 Registers */ | ||
| 78 | #define AC97_WM9712_POWER 0x24 | ||
| 79 | #define AC97_WM9712_REV 0x58 | ||
| 80 | |||
| 81 | /* WM9705 Bits */ | ||
| 82 | #define WM9705_PDEN 0x1000 /* measure only when pen is down */ | ||
| 83 | #define WM9705_PINV 0x0800 /* inverts sense of pen down output */ | ||
| 84 | #define WM9705_BSEN 0x0400 /* BUSY flag enable, pin47 is 1 when busy */ | ||
| 85 | #define WM9705_BINV 0x0200 /* invert BUSY (pin47) output */ | ||
| 86 | #define WM9705_WAIT 0x0100 /* wait until adc is read before next sample */ | ||
| 87 | #define WM9705_PIL 0x0080 /* current used for pressure measurement. set 400uA else 200uA */ | ||
| 88 | #define WM9705_PHIZ 0x0040 /* set PHONE and PCBEEP inputs to high impedance */ | ||
| 89 | #define WM9705_MASK_HI 0x0010 /* hi on mask stops conversions */ | ||
| 90 | #define WM9705_MASK_EDGE 0x0020 /* rising/falling edge on pin delays sample */ | ||
| 91 | #define WM9705_MASK_SYNC 0x0030 /* rising/falling edge on mask initiates sample */ | ||
| 92 | #define WM9705_PDD(i) (i & 0x000f) /* pen detect comparator threshold */ | ||
| 93 | |||
| 94 | |||
| 95 | /* WM9713 Bits */ | ||
| 96 | #define WM9713_PDPOL 0x0400 /* Pen down polarity */ | ||
| 97 | #define WM9713_POLL 0x0200 /* initiate a polling measurement */ | ||
| 98 | #define WM9713_CTC 0x0100 /* enable continuous mode */ | ||
| 99 | #define WM9713_ADCSEL_X 0x0002 /* X measurement */ | ||
| 100 | #define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ | ||
| 101 | #define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ | ||
| 102 | #define WM9713_COO 0x0001 /* enable coordinate mode */ | ||
| 103 | #define WM9713_PDEN 0x0800 /* measure only when pen down */ | ||
| 104 | #define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ | ||
| 105 | #define WM9713_WAIT 0x0200 /* coordinate wait */ | ||
| 106 | |||
| 107 | /* AUX ADC ID's */ | ||
| 108 | #define TS_COMP1 0x0 | ||
| 109 | #define TS_COMP2 0x1 | ||
| 110 | #define TS_BMON 0x2 | ||
| 111 | #define TS_WIPER 0x3 | ||
| 112 | |||
| 113 | /* ID numbers */ | ||
| 114 | #define WM97XX_ID1 0x574d | ||
| 115 | #define WM9712_ID2 0x4c12 | ||
| 116 | #define WM9705_ID2 0x4c05 | ||
| 117 | #define WM9713_ID2 0x4c13 | ||
| 118 | |||
| 119 | /* Codec GPIO's */ | ||
| 120 | #define WM97XX_MAX_GPIO 16 | ||
| 121 | #define WM97XX_GPIO_1 (1 << 1) | ||
| 122 | #define WM97XX_GPIO_2 (1 << 2) | ||
| 123 | #define WM97XX_GPIO_3 (1 << 3) | ||
| 124 | #define WM97XX_GPIO_4 (1 << 4) | ||
| 125 | #define WM97XX_GPIO_5 (1 << 5) | ||
| 126 | #define WM97XX_GPIO_6 (1 << 6) | ||
| 127 | #define WM97XX_GPIO_7 (1 << 7) | ||
| 128 | #define WM97XX_GPIO_8 (1 << 8) | ||
| 129 | #define WM97XX_GPIO_9 (1 << 9) | ||
| 130 | #define WM97XX_GPIO_10 (1 << 10) | ||
| 131 | #define WM97XX_GPIO_11 (1 << 11) | ||
| 132 | #define WM97XX_GPIO_12 (1 << 12) | ||
| 133 | #define WM97XX_GPIO_13 (1 << 13) | ||
| 134 | #define WM97XX_GPIO_14 (1 << 14) | ||
| 135 | #define WM97XX_GPIO_15 (1 << 15) | ||
| 136 | |||
| 137 | |||
| 138 | #define AC97_LINK_FRAME 21 /* time in uS for AC97 link frame */ | ||
| 139 | |||
| 140 | |||
| 141 | /*---------------- Return codes from sample reading functions ---------------*/ | ||
| 142 | |||
| 143 | /* More data is available; call the sample gathering function again */ | ||
| 144 | #define RC_AGAIN 0x00000001 | ||
| 145 | /* The returned sample is valid */ | ||
| 146 | #define RC_VALID 0x00000002 | ||
| 147 | /* The pen is up (the first RC_VALID without RC_PENUP means pen is down) */ | ||
| 148 | #define RC_PENUP 0x00000004 | ||
| 149 | /* The pen is down (RC_VALID implies RC_PENDOWN, but sometimes it is helpful | ||
| 150 | to tell the handler that the pen is down but we don't know yet his coords, | ||
| 151 | so the handler should not sleep or wait for pendown irq) */ | ||
| 152 | #define RC_PENDOWN 0x00000008 | ||
| 153 | |||
| 154 | /* | ||
| 155 | * The wm97xx driver provides a private API for writing platform-specific | ||
| 156 | * drivers. | ||
| 157 | */ | ||
| 158 | |||
| 159 | /* The structure used to return arch specific sampled data into */ | ||
| 160 | struct wm97xx_data { | ||
| 161 | int x; | ||
| 162 | int y; | ||
| 163 | int p; | ||
| 164 | }; | ||
| 165 | |||
| 166 | /* | ||
| 167 | * Codec GPIO status | ||
| 168 | */ | ||
| 169 | enum wm97xx_gpio_status { | ||
| 170 | WM97XX_GPIO_HIGH, | ||
| 171 | WM97XX_GPIO_LOW | ||
| 172 | }; | ||
| 173 | |||
| 174 | /* | ||
| 175 | * Codec GPIO direction | ||
| 176 | */ | ||
| 177 | enum wm97xx_gpio_dir { | ||
| 178 | WM97XX_GPIO_IN, | ||
| 179 | WM97XX_GPIO_OUT | ||
| 180 | }; | ||
| 181 | |||
| 182 | /* | ||
| 183 | * Codec GPIO polarity | ||
| 184 | */ | ||
| 185 | enum wm97xx_gpio_pol { | ||
| 186 | WM97XX_GPIO_POL_HIGH, | ||
| 187 | WM97XX_GPIO_POL_LOW | ||
| 188 | }; | ||
| 189 | |||
| 190 | /* | ||
| 191 | * Codec GPIO sticky | ||
| 192 | */ | ||
| 193 | enum wm97xx_gpio_sticky { | ||
| 194 | WM97XX_GPIO_STICKY, | ||
| 195 | WM97XX_GPIO_NOTSTICKY | ||
| 196 | }; | ||
| 197 | |||
| 198 | /* | ||
| 199 | * Codec GPIO wake | ||
| 200 | */ | ||
| 201 | enum wm97xx_gpio_wake { | ||
| 202 | WM97XX_GPIO_WAKE, | ||
| 203 | WM97XX_GPIO_NOWAKE | ||
| 204 | }; | ||
| 205 | |||
| 206 | /* | ||
| 207 | * Digitiser ioctl commands | ||
| 208 | */ | ||
| 209 | #define WM97XX_DIG_START 0x1 | ||
| 210 | #define WM97XX_DIG_STOP 0x2 | ||
| 211 | #define WM97XX_PHY_INIT 0x3 | ||
| 212 | #define WM97XX_AUX_PREPARE 0x4 | ||
| 213 | #define WM97XX_DIG_RESTORE 0x5 | ||
| 214 | |||
| 215 | struct wm97xx; | ||
| 216 | |||
| 217 | extern struct wm97xx_codec_drv wm9705_codec; | ||
| 218 | extern struct wm97xx_codec_drv wm9712_codec; | ||
| 219 | extern struct wm97xx_codec_drv wm9713_codec; | ||
| 220 | |||
| 221 | /* | ||
| 222 | * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs | ||
| 223 | */ | ||
| 224 | struct wm97xx_codec_drv { | ||
| 225 | u16 id; | ||
| 226 | char *name; | ||
| 227 | |||
| 228 | /* read 1 sample */ | ||
| 229 | int (*poll_sample) (struct wm97xx *, int adcsel, int *sample); | ||
| 230 | |||
| 231 | /* read X,Y,[P] in poll */ | ||
| 232 | int (*poll_touch) (struct wm97xx *, struct wm97xx_data *); | ||
| 233 | |||
| 234 | int (*acc_enable) (struct wm97xx *, int enable); | ||
| 235 | void (*phy_init) (struct wm97xx *); | ||
| 236 | void (*dig_enable) (struct wm97xx *, int enable); | ||
| 237 | void (*dig_restore) (struct wm97xx *); | ||
| 238 | void (*aux_prepare) (struct wm97xx *); | ||
| 239 | }; | ||
| 240 | |||
| 241 | |||
| 242 | /* Machine specific and accelerated touch operations */ | ||
| 243 | struct wm97xx_mach_ops { | ||
| 244 | |||
| 245 | /* accelerated touch readback - coords are transmited on AC97 link */ | ||
| 246 | int acc_enabled; | ||
| 247 | void (*acc_pen_up) (struct wm97xx *); | ||
| 248 | int (*acc_pen_down) (struct wm97xx *); | ||
| 249 | int (*acc_startup) (struct wm97xx *); | ||
| 250 | void (*acc_shutdown) (struct wm97xx *); | ||
| 251 | |||
| 252 | /* interrupt mask control - required for accelerated operation */ | ||
| 253 | void (*irq_enable) (struct wm97xx *, int enable); | ||
| 254 | |||
| 255 | /* GPIO pin used for accelerated operation */ | ||
| 256 | int irq_gpio; | ||
| 257 | |||
| 258 | /* pre and post sample - can be used to minimise any analog noise */ | ||
| 259 | void (*pre_sample) (int); /* function to run before sampling */ | ||
| 260 | void (*post_sample) (int); /* function to run after sampling */ | ||
| 261 | }; | ||
| 262 | |||
| 263 | struct wm97xx { | ||
| 264 | u16 dig[3], id, gpio[6], misc; /* Cached codec registers */ | ||
| 265 | u16 dig_save[3]; /* saved during aux reading */ | ||
| 266 | struct wm97xx_codec_drv *codec; /* attached codec driver*/ | ||
| 267 | struct input_dev *input_dev; /* touchscreen input device */ | ||
| 268 | struct snd_ac97 *ac97; /* ALSA codec access */ | ||
| 269 | struct device *dev; /* ALSA device */ | ||
| 270 | struct platform_device *battery_dev; | ||
| 271 | struct platform_device *touch_dev; | ||
| 272 | struct wm97xx_mach_ops *mach_ops; | ||
| 273 | struct mutex codec_mutex; | ||
| 274 | struct delayed_work ts_reader; /* Used to poll touchscreen */ | ||
| 275 | unsigned long ts_reader_interval; /* Current interval for timer */ | ||
| 276 | unsigned long ts_reader_min_interval; /* Minimum interval */ | ||
| 277 | unsigned int pen_irq; /* Pen IRQ number in use */ | ||
| 278 | struct workqueue_struct *ts_workq; | ||
| 279 | struct work_struct pen_event_work; | ||
| 280 | u16 acc_slot; /* AC97 slot used for acc touch data */ | ||
| 281 | u16 acc_rate; /* acc touch data rate */ | ||
| 282 | unsigned pen_is_down:1; /* Pen is down */ | ||
| 283 | unsigned aux_waiting:1; /* aux measurement waiting */ | ||
| 284 | unsigned pen_probably_down:1; /* used in polling mode */ | ||
| 285 | u16 suspend_mode; /* PRP in suspend mode */ | ||
| 286 | }; | ||
| 287 | |||
| 288 | /* | ||
| 289 | * Codec GPIO access (not supported on WM9705) | ||
| 290 | * This can be used to set/get codec GPIO and Virtual GPIO status. | ||
| 291 | */ | ||
| 292 | enum wm97xx_gpio_status wm97xx_get_gpio(struct wm97xx *wm, u32 gpio); | ||
| 293 | void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio, | ||
| 294 | enum wm97xx_gpio_status status); | ||
| 295 | void wm97xx_config_gpio(struct wm97xx *wm, u32 gpio, | ||
| 296 | enum wm97xx_gpio_dir dir, | ||
| 297 | enum wm97xx_gpio_pol pol, | ||
| 298 | enum wm97xx_gpio_sticky sticky, | ||
| 299 | enum wm97xx_gpio_wake wake); | ||
| 300 | |||
| 301 | void wm97xx_set_suspend_mode(struct wm97xx *wm, u16 mode); | ||
| 302 | |||
| 303 | /* codec AC97 IO access */ | ||
| 304 | int wm97xx_reg_read(struct wm97xx *wm, u16 reg); | ||
| 305 | void wm97xx_reg_write(struct wm97xx *wm, u16 reg, u16 val); | ||
| 306 | |||
| 307 | /* aux adc readback */ | ||
| 308 | int wm97xx_read_aux_adc(struct wm97xx *wm, u16 adcsel); | ||
| 309 | |||
| 310 | /* machine ops */ | ||
| 311 | int wm97xx_register_mach_ops(struct wm97xx *, struct wm97xx_mach_ops *); | ||
| 312 | void wm97xx_unregister_mach_ops(struct wm97xx *); | ||
| 313 | |||
| 314 | #endif | ||
