]>
Commit | Line | Data |
---|---|---|
39e7df5d GKH |
1 | #ifndef UDLFB_H |
2 | #define UDLFB_H | |
88e58b1a | 3 | |
39e7df5d GKH |
4 | /* as libdlo */ |
5 | #define BUF_HIGH_WATER_MARK 1024 | |
6 | #define BUF_SIZE (64*1024) | |
88e58b1a RDI |
7 | |
8 | struct dlfb_data { | |
9 | struct usb_device *udev; | |
10 | struct usb_interface *interface; | |
11 | struct urb *tx_urb, *ctrl_urb; | |
12 | struct usb_ctrlrequest dr; | |
13 | struct fb_info *info; | |
14 | char *buf; | |
15 | char *bufend; | |
16 | char *backing_buffer; | |
17 | struct mutex bulk_mutex; | |
18 | char edid[128]; | |
19 | int screen_size; | |
20 | int line_length; | |
21 | struct completion done; | |
22 | int base16; | |
7316bc55 | 23 | int base16d; |
88e58b1a | 24 | int base8; |
7316bc55 | 25 | int base8d; |
59277b67 | 26 | u32 pseudo_palette[256]; |
88e58b1a RDI |
27 | }; |
28 | ||
cc403dc6 BT |
29 | #define NR_USB_REQUEST_I2C_SUB_IO 0x02 |
30 | #define NR_USB_REQUEST_CHANNEL 0x12 | |
31 | ||
88e58b1a RDI |
32 | static void dlfb_bulk_callback(struct urb *urb) |
33 | { | |
88e58b1a RDI |
34 | struct dlfb_data *dev_info = urb->context; |
35 | complete(&dev_info->done); | |
88e58b1a RDI |
36 | } |
37 | ||
7316bc55 RDI |
38 | static void dlfb_edid(struct dlfb_data *dev_info) |
39 | { | |
40 | int i; | |
41 | int ret; | |
42 | char rbuf[2]; | |
43 | ||
44 | for (i = 0; i < 128; i++) { | |
45 | ret = | |
46 | usb_control_msg(dev_info->udev, | |
47 | usb_rcvctrlpipe(dev_info->udev, 0), (0x02), | |
48 | (0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2, | |
49 | 0); | |
7316bc55 RDI |
50 | dev_info->edid[i] = rbuf[1]; |
51 | } | |
52 | ||
53 | } | |
54 | ||
88e58b1a RDI |
55 | static int dlfb_bulk_msg(struct dlfb_data *dev_info, int len) |
56 | { | |
88e58b1a RDI |
57 | int ret; |
58 | ||
59 | init_completion(&dev_info->done); | |
60 | ||
61 | dev_info->tx_urb->actual_length = 0; | |
62 | dev_info->tx_urb->transfer_buffer_length = len; | |
63 | ||
64 | ret = usb_submit_urb(dev_info->tx_urb, GFP_KERNEL); | |
65 | if (!wait_for_completion_timeout(&dev_info->done, 1000)) { | |
66 | usb_kill_urb(dev_info->tx_urb); | |
67 | printk("usb timeout !!!\n"); | |
68 | } | |
69 | ||
70 | return dev_info->tx_urb->actual_length; | |
88e58b1a RDI |
71 | } |
72 | ||
59277b67 | 73 | #define dlfb_set_register insert_command |
39e7df5d GKH |
74 | |
75 | #endif |