Root/
1 | /* |
2 | * Apple Onboard Audio GPIO definitions |
3 | * |
4 | * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> |
5 | * |
6 | * GPL v2, can be found in COPYING. |
7 | */ |
8 | |
9 | #ifndef __AOA_GPIO_H |
10 | #define __AOA_GPIO_H |
11 | #include <linux/workqueue.h> |
12 | #include <linux/mutex.h> |
13 | #include <asm/prom.h> |
14 | |
15 | typedef void (*notify_func_t)(void *data); |
16 | |
17 | enum notify_type { |
18 | AOA_NOTIFY_HEADPHONE, |
19 | AOA_NOTIFY_LINE_IN, |
20 | AOA_NOTIFY_LINE_OUT, |
21 | }; |
22 | |
23 | struct gpio_runtime; |
24 | struct gpio_methods { |
25 | /* for initialisation/de-initialisation of the GPIO layer */ |
26 | void (*init)(struct gpio_runtime *rt); |
27 | void (*exit)(struct gpio_runtime *rt); |
28 | |
29 | /* turn off headphone, speakers, lineout */ |
30 | void (*all_amps_off)(struct gpio_runtime *rt); |
31 | /* turn headphone, speakers, lineout back to previous setting */ |
32 | void (*all_amps_restore)(struct gpio_runtime *rt); |
33 | |
34 | void (*set_headphone)(struct gpio_runtime *rt, int on); |
35 | void (*set_speakers)(struct gpio_runtime *rt, int on); |
36 | void (*set_lineout)(struct gpio_runtime *rt, int on); |
37 | void (*set_master)(struct gpio_runtime *rt, int on); |
38 | |
39 | int (*get_headphone)(struct gpio_runtime *rt); |
40 | int (*get_speakers)(struct gpio_runtime *rt); |
41 | int (*get_lineout)(struct gpio_runtime *rt); |
42 | int (*get_master)(struct gpio_runtime *rt); |
43 | |
44 | void (*set_hw_reset)(struct gpio_runtime *rt, int on); |
45 | |
46 | /* use this to be notified of any events. The notification |
47 | * function is passed the data, and is called in process |
48 | * context by the use of schedule_work. |
49 | * The interface for it is that setting a function to NULL |
50 | * removes it, and they return 0 if the operation succeeded, |
51 | * and -EBUSY if the notification is already assigned by |
52 | * someone else. */ |
53 | int (*set_notify)(struct gpio_runtime *rt, |
54 | enum notify_type type, |
55 | notify_func_t notify, |
56 | void *data); |
57 | /* returns 0 if not plugged in, 1 if plugged in |
58 | * or a negative error code */ |
59 | int (*get_detect)(struct gpio_runtime *rt, |
60 | enum notify_type type); |
61 | }; |
62 | |
63 | struct gpio_notification { |
64 | struct delayed_work work; |
65 | notify_func_t notify; |
66 | void *data; |
67 | void *gpio_private; |
68 | struct mutex mutex; |
69 | }; |
70 | |
71 | struct gpio_runtime { |
72 | /* to be assigned by fabric */ |
73 | struct device_node *node; |
74 | /* since everyone needs this pointer anyway... */ |
75 | struct gpio_methods *methods; |
76 | /* to be used by the gpio implementation */ |
77 | int implementation_private; |
78 | struct gpio_notification headphone_notify; |
79 | struct gpio_notification line_in_notify; |
80 | struct gpio_notification line_out_notify; |
81 | }; |
82 | |
83 | #endif /* __AOA_GPIO_H */ |
84 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9