21 #include "sysconfig.h" 105 static int framebuf_register(
struct st_device *dev,
char *param)
110 char *dev_name = (
char *)def_v_dev;
118 SYSERR_PRINT(
"Cannot open device \"%s\"\n", dev_name);
149 static int framebuf_read(
struct st_device *dev,
void *data,
unsigned int size)
155 DKFPRINTF(0x01,
"data = %p, size = %ld\n", data, size);
159 *dp = framebuf_read_point(fc);
166 static int framebuf_write(
struct st_device *dev,
const void *data,
unsigned int size)
172 DKFPRINTF(0x01,
"data = %p, size = %ld\n", data, size);
176 framebuf_write_point(fc, *dp);
183 static int framebuf_ioctl(
struct st_device *dev,
unsigned int com,
unsigned int arg,
void *param)
187 DKFPRINTF(0x01,
"com = %08lX, arg = %08lX\n", com, arg);
225 framebuf_set_ptr(fc);
237 framebuf_set_ptr(fc);
242 framebuf_fill_screen(fc, RGB(0, 0, 0));
246 framebuf_fill_screen(fc, arg);
261 framebuf_write_point(fc, arg);
265 framebuf_set_forecolor(fc, (
unsigned int)arg);
269 framebuf_set_backcolor(fc, (
unsigned int)arg);
273 framebuf_repeat_data(fc, arg);
278 int x = ((arg >> 0) & 0xffff);
279 int y = ((arg >> 16) & 0xffff);
283 framebuf_draw_point(fc, dx, dy);
289 int sbit = ((com >> 12) & 0x7);
290 int count = (com & 0x0fff);
291 unsigned char *data = (
unsigned char *)param;
292 unsigned char bit = (0x80 >> sbit);
295 for(i=0; i<count; i++) {
317 int y = (short)((arg >> 16) & 0xffff);
323 for(j=0; j<(fc->
height + y); j++) {
324 for(i=0; i<fc->
width; i++) {
339 SYSERR_PRINT(
"Unknow command %08lX arg %08lX\n", com, arg);
348 .explan =
"Frame buffer(16 bit color)",
349 .register_dev = framebuf_register,
350 .read = framebuf_read,
351 .write = framebuf_write,
352 .ioctl = framebuf_ioctl,
#define IOCTL(ioctl)
ioctlコマンド
#define IOCMD_VIDEO_NOLOCK_WRITE_WORD
2バイト表示データを転送する(MUTEXロックは無視)
unsigned int back_color
バックカラー
#define IOCMD_VIDEO_GETDRAWFRAME
描画フレーム番号を取得する
unsigned int fore_color
フォアカラー
unsigned short height
表示高さドット数
#define IOCMD_VIDEO_CLEAR
全画面初期化
画像表示デバイスドライバ ioctl 用マクロ定義
#define IOCMD_VIDEO_SETDRAWFRAME
描画フレーム番号を設定する
#define IOCMD_VIDEO_UNLOCK_DEVICE
デバイスをMUTEXアンロックする
#define IOCMD_VIDEO_SETRECT
描画データ転送範囲を矩形で設定する
struct st_device * open_device(char *name)
デバイスをオープンする
void * private_data
ドライバ固有データポインタ
unsigned int mem_size
1フレームのメモリバイト数
#define IOCMD_VIDEO_REPEAT_DATA
指定ドット数分フォアカラーで描画する
#define IOCMD_VIDEO_DRAW_PIXEL
フォアカラーで1ドット描画する
#define IOCMD_VIDEO_DRAW_BITS
ビットパターンを描画する
#define IOCMD_VIDEO_GETDISPFRAME
表示フレーム番号を取得する
unsigned char * fb_ptr[MAX_FRAMEBUF]
フレームバッファメモリポインタ
#define IOCMD_VIDEO_SCROLL
表示位置を変更(スクロール)する
unsigned short draw_frame
描画フレームバッファ番号
#define MAX_FRAMEBUF
最大フレームバッファ数
struct st_device * v_dev
下位デバイスドライバ
unsigned short width
表示幅ドット数
unsigned char * draw_ptr
描画ペンのメモリアドレス
#define IOCMD_VIDEO_LOCK_DEVICE
デバイスをMUTEXロックする
#define IOCMD_VIDEO_RESETRECT
描画データ転送範囲を全表示範囲にする
#define IOCMD_VIDEO_SET_BACKCOLOR
バックカラーを設定する
unsigned short pixcel_byte
1ピクセルのデータバイト数
unsigned int mem_size
フレームバッファメモリサイズ
#define IOCMD_VIDEO_SETDISPFRAME
表示フレーム番号を設定する
struct st_rect clip
描画クリッピングエリア
unsigned char * frame_buf_ptr[MAX_FRAMEBUF]
フレームバッファポインタ
#define DEF_DEV_NAME_VIDEO
標準ビデオデバイス名
unsigned short disp_frame
表示フレームバッファ番号
short height
フレームバッファ高さピクセル数
#define IOCMD_VIDEO_WRITE_WORD
2バイト表示データを転送する(未使用)
int ioctl_device(struct st_device *dev, unsigned int com, unsigned int arg, void *param)
デバイスを制御する
char name[MAX_DEVNAMELRN]
デバイス名文字列
short width
フレームバッファ幅ピクセル数
#define IOCMD_VIDEO_SET_FORECOLOR
フォアカラーを設定する
unsigned short PIXEL_DATA
$gsc グラフィックデバイスは24ビットカラー
#define IOCMD_VIDEO_BCKLIGHT
バックライトを制御する(未使用)
#define IOCMD_VIDEO_FILL
全画面を任意の色に描画する