mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-06 15:43:15 +00:00
2009-08-10 Roxana Leontie <roxana.leontie@gmail.com>
* fb/fb.c: different structures defined in rtems/fb.h that were used in here so changes were needed
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2009-08-10 Roxana Leontie <roxana.leontie@gmail.com>
|
||||||
|
|
||||||
|
* fb/fb.c: different structures defined in rtems/fb.h that were used in
|
||||||
|
here so changes were needed
|
||||||
|
|
||||||
2009-08-10 Joel Sherrill <joel.sherrill@OARcorp.com>
|
2009-08-10 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
* Makefile.am, preinstall.am, fb/fb.c: Install nds specific .h files
|
* Makefile.am, preinstall.am, fb/fb.c: Install nds specific .h files
|
||||||
|
|||||||
@@ -28,30 +28,39 @@
|
|||||||
* screen information for the driver (fb0).
|
* screen information for the driver (fb0).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct fb_screeninfo fb_info = {
|
static struct fb_var_screeninfo fb_var_info = {
|
||||||
SCREEN_WIDTH, SCREEN_HEIGHT, /* screen size x, y */
|
.xres = SCREEN_WIDTH, /* screen size x, y */
|
||||||
16, /* bits per pixel */
|
.yres = SCREEN_HEIGHT,
|
||||||
SCREEN_WIDTH, /* pixels per line (redundant with xres ?) */
|
.bits_per_pixel = 16 /* bits per pixel */
|
||||||
(void *) VRAM_A, /* buffer pointer */
|
};
|
||||||
0x18000, /* buffer size */
|
|
||||||
FB_TYPE_PACKED_PIXELS, /* type of dsplay */
|
static struct fb_fix_screeninfo fb_fix_info = {
|
||||||
FB_VISUAL_TRUECOLOR /* color scheme used */
|
.smem_start = (void *) VRAM_A, /* buffer pointer */
|
||||||
|
.smem_len = 0x18000, /* buffer size */
|
||||||
|
.type = FB_TYPE_PACKED_PIXELS, /* type of dsplay */
|
||||||
|
.visual = FB_VISUAL_TRUECOLOR, /* color scheme used */
|
||||||
|
.line_length = SCREEN_WIDTH /* pixels per line (redundant with xres ?) */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* screen information for the driver (fb1).
|
* screen information for the driver (fb1).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct fb_screeninfo fb_info2 = {
|
static struct fb_var_screeninfo fb_var_info2 = {
|
||||||
SCREEN_WIDTH, SCREEN_HEIGHT, /* screen size x, y */
|
.xres = SCREEN_WIDTH, /* screen size x, y */
|
||||||
16, /* bits per pixel */
|
.yres = SCREEN_HEIGHT,
|
||||||
SCREEN_WIDTH, /* pixels per line (redundant with xres ?) */
|
.bits_per_pixel = 16 /* bits per pixel */
|
||||||
(void *) VRAM_B, /* buffer pointer */
|
|
||||||
0x18000, /* buffer size */
|
|
||||||
FB_TYPE_PACKED_PIXELS, /* type of dsplay */
|
|
||||||
FB_VISUAL_TRUECOLOR /* color scheme used */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct fb_fix_screeninfo fb_fix_info2 = {
|
||||||
|
.smem_start = (void *) VRAM_B, /* buffer pointer */
|
||||||
|
.smem_len = 0x18000, /* buffer size */
|
||||||
|
.type = FB_TYPE_PACKED_PIXELS, /* type of dsplay */
|
||||||
|
.visual = FB_VISUAL_TRUECOLOR, /* color scheme used */
|
||||||
|
.line_length = SCREEN_WIDTH /* pixels per line (redundant with xres ?) */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fbds device driver initialize entry point.
|
* fbds device driver initialize entry point.
|
||||||
*/
|
*/
|
||||||
@@ -86,6 +95,16 @@ rtems_device_driver
|
|||||||
fbds_open (rtems_device_major_number major,
|
fbds_open (rtems_device_major_number major,
|
||||||
rtems_device_minor_number minor, void *arg)
|
rtems_device_minor_number minor, void *arg)
|
||||||
{
|
{
|
||||||
|
printk ("[#] entering graphic mode on fb%d\n", minor);
|
||||||
|
if (!minor) {
|
||||||
|
videoSetMode (MODE_FB0);
|
||||||
|
vramSetBankA (VRAM_A_LCD);
|
||||||
|
memset ((void *)fb_fix_info.smem_start, 0, fb_fix_info.smem_len);
|
||||||
|
} else {
|
||||||
|
videoSetModeSub (MODE_FB0);
|
||||||
|
vramSetBankB (VRAM_B_LCD);
|
||||||
|
memset ((void *)fb_fix_info2.smem_start, 0, fb_fix_info2.smem_len);
|
||||||
|
}
|
||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,6 +116,17 @@ rtems_device_driver
|
|||||||
fbds_close (rtems_device_major_number major,
|
fbds_close (rtems_device_major_number major,
|
||||||
rtems_device_minor_number minor, void *arg)
|
rtems_device_minor_number minor, void *arg)
|
||||||
{
|
{
|
||||||
|
printk ("[#] leaving graphic mode on fb%d\n", minor);
|
||||||
|
if (!minor) {
|
||||||
|
memset ((void *)fb_fix_info.smem_start, 0, fb_fix_info.smem_len);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
memset ((void *)fb_fix_info2.smem_start, 0, fb_fix_info2.smem_len);
|
||||||
|
/* back to console */
|
||||||
|
videoSetModeSub (MODE_0_2D | DISPLAY_BG0_ACTIVE);
|
||||||
|
vramSetBankC (VRAM_C_SUB_BG);
|
||||||
|
}
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,63 +171,21 @@ fbds_control (rtems_device_major_number major,
|
|||||||
/* XXX check minor */
|
/* XXX check minor */
|
||||||
|
|
||||||
switch (args->command) {
|
switch (args->command) {
|
||||||
case FB_SCREENINFO:
|
case FBIOGET_VSCREENINFO:
|
||||||
memcpy (args->buffer, minor ? &fb_info2 : &fb_info, sizeof (fb_info));
|
memcpy (args->buffer, minor ? &fb_var_info2 : &fb_var_info, sizeof (fb_var_info));
|
||||||
args->ioctl_return = 0;
|
args->ioctl_return = 0;
|
||||||
break;
|
break;
|
||||||
case FB_GETPALETTE:
|
case FBIOGET_FSCREENINFO:
|
||||||
args->ioctl_return = 0; /* XXX */
|
memcpy (args->buffer, minor ? &fb_fix_info2 : &fb_fix_info, sizeof (fb_fix_info));
|
||||||
|
args->ioctl_return = 0;
|
||||||
break;
|
break;
|
||||||
case FB_SETPALETTE:
|
case FBIOGETCMAP:
|
||||||
args->ioctl_return = 0; /* XXX */
|
args->ioctl_return = get_palette( args->buffer );
|
||||||
|
break;
|
||||||
|
case FBIOPUTCMAP:
|
||||||
|
args->ioctl_return = set_palette( args->buffer );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
|
||||||
* this function would execute one of the routines of the
|
|
||||||
* interface based on the operation requested.
|
|
||||||
*/
|
|
||||||
case FB_EXEC_FUNCTION:
|
|
||||||
{
|
|
||||||
struct fb_exec_function *env = args->buffer;
|
|
||||||
|
|
||||||
switch (env->func_no) {
|
|
||||||
case FB_FUNC_ENTER_GRAPHICS:
|
|
||||||
/* enter graphics mode */
|
|
||||||
printk ("[#] entering graphic mode on fb%d\n", minor);
|
|
||||||
if (!minor) {
|
|
||||||
videoSetMode (MODE_FB0);
|
|
||||||
vramSetBankA (VRAM_A_LCD);
|
|
||||||
memset ((void *)fb_info.smem_start, 0, fb_info.smem_len);
|
|
||||||
} else {
|
|
||||||
videoSetModeSub (MODE_FB0);
|
|
||||||
vramSetBankB (VRAM_B_LCD);
|
|
||||||
memset ((void *)fb_info2.smem_start, 0, fb_info2.smem_len);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FB_FUNC_EXIT_GRAPHICS:
|
|
||||||
/* leave graphics mode, in fact we only clear screen */
|
|
||||||
printk ("[#] leaving graphic mode on fb%d\n", minor);
|
|
||||||
if (!minor) {
|
|
||||||
memset ((void *)fb_info.smem_start, 0, fb_info.smem_len);
|
|
||||||
} else {
|
|
||||||
memset ((void *)fb_info2.smem_start, 0, fb_info2.smem_len);
|
|
||||||
/* back to console */
|
|
||||||
videoSetModeSub (MODE_0_2D | DISPLAY_BG0_ACTIVE);
|
|
||||||
vramSetBankC (VRAM_C_SUB_BG);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FB_FUNC_IS_DIRTY:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FB_FUNC_GET_MODE:
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* no break on purpose */
|
/* no break on purpose */
|
||||||
default:
|
default:
|
||||||
args->ioctl_return = 0;
|
args->ioctl_return = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user