summaryrefslogtreecommitdiff
path: root/recipes/libdlo/kernel-module-udlfb/udlfb.h
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/libdlo/kernel-module-udlfb/udlfb.h')
-rw-r--r--recipes/libdlo/kernel-module-udlfb/udlfb.h78
1 files changed, 36 insertions, 42 deletions
diff --git a/recipes/libdlo/kernel-module-udlfb/udlfb.h b/recipes/libdlo/kernel-module-udlfb/udlfb.h
index d587088913..08bd671204 100644
--- a/recipes/libdlo/kernel-module-udlfb/udlfb.h
+++ b/recipes/libdlo/kernel-module-udlfb/udlfb.h
@@ -1,11 +1,15 @@
-#define MAX_VMODES 4
-#define FB_BPP 16
+#ifndef UDLFB_H
+#define UDLFB_H
-#define STD_CHANNEL "\x57\xCD\xDC\xA7\x1C\x88\x5E\x15\x60\xFE\xC6\x97\x16\x3D\x47\xF2"
+#define MAX_VMODES 4
+#define FB_BPP 16
-// as libdlo
-#define BUF_HIGH_WATER_MARK 1024
-#define BUF_SIZE 64*1024
+#define STD_CHANNEL "\x57\xCD\xDC\xA7\x1C\x88\x5E\x15" \
+ "\x60\xFE\xC6\x97\x16\x3D\x47\xF2"
+
+/* as libdlo */
+#define BUF_HIGH_WATER_MARK 1024
+#define BUF_SIZE (64*1024)
struct dlfb_data {
struct usb_device *udev;
@@ -28,7 +32,6 @@ struct dlfb_data {
};
struct dlfb_video_mode {
-
uint8_t col;
uint32_t hclock;
uint32_t vclock;
@@ -37,17 +40,14 @@ struct dlfb_video_mode {
uint8_t unknown2[6];
uint16_t yres;
uint8_t unknown3[4];
-
} __attribute__ ((__packed__));
-struct dlfb_video_mode dlfb_video_modes[MAX_VMODES];
+static struct dlfb_video_mode dlfb_video_modes[MAX_VMODES];
static void dlfb_bulk_callback(struct urb *urb)
{
-
struct dlfb_data *dev_info = urb->context;
complete(&dev_info->done);
-
}
static void dlfb_edid(struct dlfb_data *dev_info)
@@ -57,20 +57,19 @@ static void dlfb_edid(struct dlfb_data *dev_info)
char rbuf[2];
for (i = 0; i < 128; i++) {
- ret =
- usb_control_msg(dev_info->udev,
- usb_rcvctrlpipe(dev_info->udev, 0), (0x02),
- (0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
- 0);
- /*printk("ret control msg edid %d: %d [%d]\n",i, ret, rbuf[1]);*/
- dev_info->edid[i] = rbuf[1];
- }
+ ret =
+ usb_control_msg(dev_info->udev,
+ usb_rcvctrlpipe(dev_info->udev, 0), (0x02),
+ (0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
+ 0);
+ /*printk("ret control msg edid %d: %d [%d]\n",i, ret, rbuf[1]); */
+ dev_info->edid[i] = rbuf[1];
+ }
}
static int dlfb_bulk_msg(struct dlfb_data *dev_info, int len)
{
-
int ret;
init_completion(&dev_info->done);
@@ -85,12 +84,10 @@ static int dlfb_bulk_msg(struct dlfb_data *dev_info, int len)
}
return dev_info->tx_urb->actual_length;
-
}
-void dlfb_init_modes(void)
+static void dlfb_init_modes(void)
{
-
dlfb_video_modes[0].col = 0;
memcpy(&dlfb_video_modes[0].hclock, "\x20\x3C\x7A\xC9", 4);
memcpy(&dlfb_video_modes[0].vclock, "\xF2\x6C\x48\xF9", 4);
@@ -126,24 +123,20 @@ void dlfb_init_modes(void)
memcpy(&dlfb_video_modes[3].unknown2, "\xC9\x4E\xFF\xFF\xFF\xF2", 6);
dlfb_video_modes[3].yres = 1050;
memcpy(&dlfb_video_modes[3].unknown3, "\x04\x02\x1E\x5F", 4);
-
}
-char *dlfb_set_register(char *bufptr, uint8_t reg, uint8_t val)
+static char *dlfb_set_register(char *bufptr, uint8_t reg, uint8_t val)
{
-
*bufptr++ = 0xAF;
*bufptr++ = 0x20;
*bufptr++ = reg;
*bufptr++ = val;
return bufptr;
-
}
-int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
+static int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
{
-
int i, ret;
unsigned char j;
char *bufptr = dev_info->buf;
@@ -156,14 +149,14 @@ int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
&& dlfb_video_modes[i].yres == height) {
dev_info->base16 = 0;
- dev_info->base16d = width * height * (FB_BPP / 8) ;
+ dev_info->base16d = width * height * (FB_BPP / 8);
//dev_info->base8 = width * height * (FB_BPP / 8);
dev_info->base8 = dev_info->base16;
dev_info->base8d = dev_info->base16d;
- // set encryption key (null)
+ /* set encryption key (null) */
memcpy(dev_info->buf, STD_CHANNEL, 16);
ret =
usb_control_msg(dev_info->udev,
@@ -172,13 +165,13 @@ int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
dev_info->buf, 16, 0);
printk("ret control msg 1 (STD_CHANNEL): %d\n", ret);
- // set registers
+ /* set registers */
bufptr = dlfb_set_register(bufptr, 0xFF, 0x00);
- // set color depth
+ /* set color depth */
bufptr = dlfb_set_register(bufptr, 0x00, 0x00);
- // set addresses
+ /* set addresses */
bufptr =
dlfb_set_register(bufptr, 0x20,
(char)(dev_info->base16 >> 16));
@@ -199,24 +192,23 @@ int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
dlfb_set_register(bufptr, 0x28,
(char)(dev_info->base8));
- // set video mode
- vdata = (uint8_t *) & dlfb_video_modes[i];
- for (j = 0; j < 29; j++) {
+ /* set video mode */
+ vdata = (uint8_t *)&dlfb_video_modes[i];
+ for (j = 0; j < 29; j++)
bufptr = dlfb_set_register(bufptr, j, vdata[j]);
- }
- // blank
+ /* blank */
bufptr = dlfb_set_register(bufptr, 0x1F, 0x00);
- // end registers
+ /* end registers */
bufptr = dlfb_set_register(bufptr, 0xFF, 0xFF);
- // send
+ /* send */
ret = dlfb_bulk_msg(dev_info, bufptr - dev_info->buf);
printk("ret bulk 2: %d %d\n", ret,
bufptr - dev_info->buf);
- // flush
+ /* flush */
ret = dlfb_bulk_msg(dev_info, 0);
printk("ret bulk 3: %d\n", ret);
@@ -229,3 +221,5 @@ int dlfb_set_video_mode(struct dlfb_data *dev_info, int width, int height)
return -1;
}
+
+#endif