Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 195 → Rev 196

/shark/trunk/drivers/svga/vesa.c
44,6 → 44,8
static void vesa_setpage(int page)
{
 
memset(&vesa_r, 0, sizeof(vesa_r));
 
vesa_r.eax=0x4f05;
vesa_r.ebx=0;
vesa_r.edx=page*64/vesa_granularity;
108,6 → 110,7
{
/*void * buf;
buf=LRMI_mem1;
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax=0x4f04;
vesa_r.ebx=0;
vesa_r.es=((long)buf)>>4;
126,6 → 129,7
 
/*void * bufe
buf=LRMI_mem1;
memset(&vesa_r, 0, sizeof(vesa_r));
memcpy(buf,&regs[VGA_TOTAL_REGS],vesa_regs_size);
vesa_r.eax=0x4f04;
vesa_r.ebx=0;
174,6 → 178,7
 
vesa_data.info = LRMI_mem2 ;
vesa_data.mode = (struct vbe_mode_info_block *)(vesa_data.info + 1);
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax = 0x4f01;
vesa_r.ecx=SVGALIB_VESA[mode];
vesa_r.es = (unsigned int)vesa_data.mode >> 4;
199,6 → 204,7
if (!vesa_modeavailable(mode)) {
return 1;
}
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax=0x4f02;
vesa_r.ebx=SVGALIB_VESA[mode]|0x8000|(vesa_is_linear*0x4000);
vesa_last_mode_set=vesa_r.ebx;
233,6 → 239,7
+ sizeof(struct vbe_mode_info_block));
vesa_data.info = LRMI_mem2;
vesa_data.mode = (struct vbe_mode_info_block *)(vesa_data.info + 1);
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax = 0x4f00;
vesa_r.es = (unsigned int)vesa_data.info >> 4;
vesa_r.ds = (unsigned int)vesa_data.info >> 4;
249,17 → 256,19
/* No r/w paging */
static void vesa_setrdpage(int page)
{
vesa_r.eax=0x4f05;
vesa_r.ebx=vesa_read_window;
vesa_r.edx=page*64/vesa_granularity;
__svgalib_LRMI_int(0x10,&vesa_r);
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax=0x4f05;
vesa_r.ebx=vesa_read_window;
vesa_r.edx=page*64/vesa_granularity;
__svgalib_LRMI_int(0x10,&vesa_r);
}
static void vesa_setwrpage(int page)
{
vesa_r.eax=0x4f05;
vesa_r.ebx=vesa_write_window;
vesa_r.edx=page*64/vesa_granularity;
__svgalib_LRMI_int(0x10,&vesa_r);
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax=0x4f05;
vesa_r.ebx=vesa_write_window;
vesa_r.edx=page*64/vesa_granularity;
__svgalib_LRMI_int(0x10,&vesa_r);
}
 
 
267,6 → 276,8
 
static void vesa_setdisplaystart(int address)
{
memset(&vesa_r, 0, sizeof(vesa_r));
 
vesa_r.eax=0x4f07;
vesa_r.ebx=0;
vesa_r.ecx=address % vesa_logical_width;
280,6 → 291,8
 
static void vesa_setlogicalwidth(int width)
{
memset(&vesa_r, 0, sizeof(vesa_r));
vesa_r.eax=0x4f06;
vesa_r.ebx=0;
vesa_r.ecx=width / vesa_bpp ;
290,37 → 303,44
 
static int vesa_linear(int op, int param)
{
if (op==LINEAR_ENABLE) {
if(vesa_is_linear == 1) return vesa_linear_base;
vesa_r.eax=0x4f02;
vesa_r.ebx=vesa_last_mode_set|0x4000;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_is_linear=1;
};
 
if (op==LINEAR_DISABLE){
vesa_r.eax=0x4f02;
vesa_r.ebx=vesa_last_mode_set;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_is_linear=0;
};
if (op==LINEAR_QUERY_BASE) {return vesa_linear_base ;}
if (op == LINEAR_QUERY_RANGE || op == LINEAR_QUERY_GRANULARITY) return 0; /* No granularity or range. */
else return -1; /* Unknown function. */
memset(&vesa_r, 0, sizeof(vesa_r));
 
if (op==LINEAR_ENABLE) {
if(vesa_is_linear == 1) return vesa_linear_base;
vesa_r.eax=0x4f02;
vesa_r.ebx=vesa_last_mode_set|0x4000;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_is_linear=1;
};
 
if (op==LINEAR_DISABLE){
vesa_r.eax=0x4f02;
vesa_r.ebx=vesa_last_mode_set;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_is_linear=0;
};
 
if (op==LINEAR_QUERY_BASE) {return vesa_linear_base ;}
if (op == LINEAR_QUERY_RANGE || op == LINEAR_QUERY_GRANULARITY) return 0; /* No granularity or range. */
else return -1; /* Unknown function. */
}
 
static int vesa_match_programmable_clock(int clock)
{
return clock ;
return clock ;
}
 
static int vesa_map_clock(int bpp, int clock)
{
return clock ;
return clock ;
}
 
static int vesa_map_horizontal_crtc(int bpp, int pixelclock, int htiming)
{
return htiming;
return htiming;
}
 
/* Function table (exported) */
 
DriverSpecs __svgalib_vesa_driverspecs =
357,6 → 377,7
{
short int *mode_list;
int i;
 
#if 0
uint8_t *m;
int address;
388,6 → 409,9
vesa_data.info = __svgalib_LRMI_alloc_real(sizeof(struct vbe_info_block)
+ sizeof(struct vbe_mode_info_block));
vesa_data.mode = (struct vbe_mode_info_block *)(vesa_data.info + 1);
 
memset(&vesa_r, 0, sizeof(vesa_r));
 
vesa_r.eax = 0x4f00;
vesa_r.es = (unsigned int)vesa_data.info >> 4;
vesa_r.ds = (unsigned int)vesa_data.info >> 4;
411,6 → 435,7
mode_list = (short int *)(vesa_data.info->video_mode_list_seg * 16 + vesa_data.info->video_mode_list_off);
 
while (*mode_list != -1) {
 
memset(&vesa_r, 0, sizeof(vesa_r));
 
vesa_r.eax = 0x4f01;
541,12 → 566,15
#endif
mode_list++;
};
/*vesa_r.eax=0x4f04;
vesa_r.edx=0;
vesa_r.ecx=__svgalib_VESA_savebitmap;
vesa_r.ebx=0;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_regs_size=vesa_r.ebx*64;*/
/* vesa_r.eax=0x4f04;
vesa_r.edx=0;
vesa_r.ecx=__svgalib_VESA_savebitmap;
vesa_r.ebx=0;
__svgalib_LRMI_int(0x10,&vesa_r);
vesa_regs_size=vesa_r.ebx*64;
*/
__svgalib_LRMI_free_real(vesa_data.info,sizeof(struct vbe_info_block) + sizeof(struct vbe_mode_info_block));
 
SVGALIB_VESA[TEXT]=3;