source: rtems/c/src/lib/libbsp/arm/nds/fb/fb.c @ 9b4422a2

4.115
Last change on this file since 9b4422a2 was 9b4422a2, checked in by Joel Sherrill <joel.sherrill@…>, on 05/03/12 at 15:09:24

Remove All CVS Id Strings Possible Using a Script

Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines

next to each other after Id string line removed.

+ remove entire comment blocks which only exited to

contain CVS Ids

+ If the processing left a blank line at the top of

a file, it was removed.

  • Property mode set to 100644
File size: 5.1 KB
Line 
1/*
2 * RTEMS for Nintendo DS framebuffer display driver.
3 *
4 * Copyright (c) 2008 by Matthieu Bucchianeri <mbucchia@gmail.com>
5 *
6 * The license and distribution terms for this file may be
7 * found in the file LICENSE in this distribution or at
8 *
9 * http://www.rtems.com/license/LICENSE
10 */
11
12#include <stdlib.h>
13#include <stdio.h>
14#include <errno.h>
15#include <sys/types.h>
16
17#include <bsp.h>
18#include <rtems/irq.h>
19#include <rtems/libio.h>
20#include <nds.h>
21
22#include <rtems/fb.h>
23
24
25/*
26 * screen information for the driver (fb0).
27 */
28
29static struct fb_var_screeninfo fb_var_info = {
30  .xres                = SCREEN_WIDTH,          /* screen size x, y  */
31  .yres                = SCREEN_HEIGHT,
32  .bits_per_pixel      = 16                     /* bits per pixel    */
33};
34
35static struct fb_fix_screeninfo fb_fix_info = {
36  .smem_start          = (void *) VRAM_A,            /* buffer pointer    */
37  .smem_len            = 0x18000,                    /* buffer size       */
38  .type                = FB_TYPE_PACKED_PIXELS,      /* type of dsplay    */
39  .visual              = FB_VISUAL_TRUECOLOR,        /* color scheme used */
40  .line_length         = SCREEN_WIDTH               /* pixels per line (redundant with xres ?) */
41};
42
43/*
44 * screen information for the driver (fb1).
45 */
46
47static struct fb_var_screeninfo fb_var_info2 = {
48  .xres                = SCREEN_WIDTH,          /* screen size x, y  */
49  .yres                = SCREEN_HEIGHT,
50  .bits_per_pixel      = 16                     /* bits per pixel    */
51};
52
53static struct fb_fix_screeninfo fb_fix_info2 = {
54  .smem_start          = (void *) VRAM_B,            /* buffer pointer    */
55  .smem_len            = 0x18000,                    /* buffer size       */
56  .type                = FB_TYPE_PACKED_PIXELS,      /* type of dsplay    */
57  .visual              = FB_VISUAL_TRUECOLOR,        /* color scheme used */
58  .line_length         = SCREEN_WIDTH               /* pixels per line (redundant with xres ?) */
59};
60
61
62/*
63 * fbds device driver initialize entry point.
64 */
65
66rtems_device_driver
67frame_buffer_initialize (rtems_device_major_number major,
68                 rtems_device_minor_number minor, void *arg)
69{
70  rtems_status_code status;
71
72  printk ("[+] framebuffer started\n");
73
74  /* register the devices */
75  status = rtems_io_register_name ("/dev/fb0", major, 0);
76  if (status != RTEMS_SUCCESSFUL) {
77    printk ("[!] error registering framebuffer\n");
78    rtems_fatal_error_occurred (status);
79  }
80  status = rtems_io_register_name ("/dev/fb1", major, 1);
81  if (status != RTEMS_SUCCESSFUL) {
82    printk ("[!] error registering framebuffer\n");
83    rtems_fatal_error_occurred (status);
84  }
85  return RTEMS_SUCCESSFUL;
86}
87
88/*
89 * fbds device driver open operation.
90 */
91
92rtems_device_driver
93frame_buffer_open (rtems_device_major_number major,
94           rtems_device_minor_number minor, void *arg)
95{
96   printk ("[#] entering graphic mode on fb%d\n", minor);
97   if (!minor) {
98      videoSetMode (MODE_FB0);
99      vramSetBankA (VRAM_A_LCD);
100      memset ((void *)fb_fix_info.smem_start, 0, fb_fix_info.smem_len);
101   } else {
102      videoSetModeSub (MODE_FB0);
103      vramSetBankB (VRAM_B_LCD);
104      memset ((void *)fb_fix_info2.smem_start, 0, fb_fix_info2.smem_len);
105    }
106  return RTEMS_SUCCESSFUL;
107}
108
109/*
110 * fbds device driver close operation.
111 */
112
113rtems_device_driver
114frame_buffer_close (rtems_device_major_number major,
115            rtems_device_minor_number minor, void *arg)
116{
117  printk ("[#] leaving graphic mode on fb%d\n", minor);
118  if (!minor) {
119      memset ((void *)fb_fix_info.smem_start, 0, fb_fix_info.smem_len);
120  }
121  else {
122      memset ((void *)fb_fix_info2.smem_start, 0, fb_fix_info2.smem_len);
123      /* back to console */
124      videoSetModeSub (MODE_0_2D | DISPLAY_BG0_ACTIVE);
125      vramSetBankC (VRAM_C_SUB_BG);
126  }
127
128  return RTEMS_SUCCESSFUL;
129}
130
131/*
132 * fbds device driver read operation.
133 */
134
135rtems_device_driver
136frame_buffer_read (rtems_device_major_number major,
137           rtems_device_minor_number minor, void *arg)
138{
139  rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) arg;
140  rw_args->bytes_moved = 0;
141
142  return RTEMS_SUCCESSFUL;
143}
144
145/*
146 * fbds device driver write operation.
147 */
148
149rtems_device_driver
150frame_buffer_write (rtems_device_major_number major,
151            rtems_device_minor_number minor, void *arg)
152{
153  rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) arg;
154  rw_args->bytes_moved = 0;
155
156  return RTEMS_SUCCESSFUL;
157}
158
159/*
160 * ioctl entry point.
161 */
162
163rtems_device_driver
164frame_buffer_control (rtems_device_major_number major,
165              rtems_device_minor_number minor, void *arg)
166{
167  rtems_libio_ioctl_args_t *args = arg;
168
169  /* XXX check minor */
170
171  switch (args->command) {
172  case FBIOGET_VSCREENINFO:
173    memcpy (args->buffer, minor ? &fb_var_info2 : &fb_var_info, sizeof (fb_var_info));
174    args->ioctl_return = 0;
175    break;
176  case FBIOGET_FSCREENINFO:
177    memcpy (args->buffer, minor ? &fb_fix_info2 : &fb_fix_info, sizeof (fb_fix_info));
178    args->ioctl_return = 0;
179    break;
180  case FBIOGETCMAP:
181    args->ioctl_return = 0;     /* XXX */
182    break;
183  case FBIOPUTCMAP:
184    args->ioctl_return = 0;     /* XXX */
185    break;
186
187    /* no break on purpose */
188  default:
189    args->ioctl_return = 0;
190    break;
191
192  }
193  return RTEMS_SUCCESSFUL;
194}
Note: See TracBrowser for help on using the repository browser.