|
1 #ifndef __LINUX_MAPLE_H |
|
2 #define __LINUX_MAPLE_H |
|
3 |
|
4 #include <linux/device.h> |
|
5 #include <mach/maple.h> |
|
6 |
|
7 extern struct bus_type maple_bus_type; |
|
8 |
|
9 /* Maple Bus command and response codes */ |
|
10 enum maple_code { |
|
11 MAPLE_RESPONSE_FILEERR = -5, |
|
12 MAPLE_RESPONSE_AGAIN = -4, /* request should be retransmitted */ |
|
13 MAPLE_RESPONSE_BADCMD = -3, |
|
14 MAPLE_RESPONSE_BADFUNC = -2, |
|
15 MAPLE_RESPONSE_NONE = -1, /* unit didn't respond at all */ |
|
16 MAPLE_COMMAND_DEVINFO = 1, |
|
17 MAPLE_COMMAND_ALLINFO = 2, |
|
18 MAPLE_COMMAND_RESET = 3, |
|
19 MAPLE_COMMAND_KILL = 4, |
|
20 MAPLE_RESPONSE_DEVINFO = 5, |
|
21 MAPLE_RESPONSE_ALLINFO = 6, |
|
22 MAPLE_RESPONSE_OK = 7, |
|
23 MAPLE_RESPONSE_DATATRF = 8, |
|
24 MAPLE_COMMAND_GETCOND = 9, |
|
25 MAPLE_COMMAND_GETMINFO = 10, |
|
26 MAPLE_COMMAND_BREAD = 11, |
|
27 MAPLE_COMMAND_BWRITE = 12, |
|
28 MAPLE_COMMAND_SETCOND = 14 |
|
29 }; |
|
30 |
|
31 struct mapleq { |
|
32 struct list_head list; |
|
33 struct maple_device *dev; |
|
34 void *sendbuf, *recvbuf, *recvbufdcsp; |
|
35 unsigned char length; |
|
36 enum maple_code command; |
|
37 struct mutex mutex; |
|
38 }; |
|
39 |
|
40 struct maple_devinfo { |
|
41 unsigned long function; |
|
42 unsigned long function_data[3]; |
|
43 unsigned char area_code; |
|
44 unsigned char connector_direction; |
|
45 char product_name[31]; |
|
46 char product_licence[61]; |
|
47 unsigned short standby_power; |
|
48 unsigned short max_power; |
|
49 }; |
|
50 |
|
51 struct maple_device { |
|
52 struct maple_driver *driver; |
|
53 struct mapleq *mq; |
|
54 void (*callback) (struct mapleq * mq); |
|
55 unsigned long when, interval, function; |
|
56 struct maple_devinfo devinfo; |
|
57 unsigned char port, unit; |
|
58 char product_name[32]; |
|
59 char product_licence[64]; |
|
60 struct device dev; |
|
61 }; |
|
62 |
|
63 struct maple_driver { |
|
64 unsigned long function; |
|
65 struct device_driver drv; |
|
66 }; |
|
67 |
|
68 void maple_getcond_callback(struct maple_device *dev, |
|
69 void (*callback) (struct mapleq * mq), |
|
70 unsigned long interval, |
|
71 unsigned long function); |
|
72 int maple_driver_register(struct maple_driver *); |
|
73 void maple_driver_unregister(struct maple_driver *); |
|
74 |
|
75 int maple_add_packet_sleeps(struct maple_device *mdev, u32 function, |
|
76 u32 command, u32 length, void *data); |
|
77 void maple_clear_dev(struct maple_device *mdev); |
|
78 |
|
79 #define to_maple_dev(n) container_of(n, struct maple_device, dev) |
|
80 #define to_maple_driver(n) container_of(n, struct maple_driver, drv) |
|
81 |
|
82 #define maple_get_drvdata(d) dev_get_drvdata(&(d)->dev) |
|
83 #define maple_set_drvdata(d,p) dev_set_drvdata(&(d)->dev, (p)) |
|
84 |
|
85 #endif /* __LINUX_MAPLE_H */ |