Merge with Ani Joshi's radeonfb-0.1.0

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1915 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nick 2001-09-18 16:26:11 +00:00
parent cbe0cf8827
commit 6883c2ead8
2 changed files with 241 additions and 122 deletions

View File

@ -488,6 +488,12 @@
#define MEM_REQ_LOCK 0x00800000
/* SURFACE_CNTL bit constants */
#define SURF_TRANSLATION_DIS (1 << 8)
#define NONSURF_AP0_SWP_16BPP (1 << 20)
#define NONSURF_AP0_SWP_32BPP (2 << 20)
/* RBBM_SOFT_RESET bit constants */
#define SOFT_RESET_CP (1 << 0)
#define SOFT_RESET_HI (1 << 1)
@ -630,7 +636,9 @@
#define GMC_CLR_CMP_CNTL_DIS (1 << 28)
#define GMC_SRC_DATATYPE_COLOR (3 << 12)
#define ROP3_S 0x00cc0000
#define ROP3_SRCCOPY 0x00cc0000
#define ROP3_P 0x00f00000
#define ROP3_PATCOPY 0x00f00000
#define DP_SRC_SOURCE_MASK (7 << 24)
#define GMC_BRUSH_NONE (15 << 4)
#define DP_SRC_SOURCE_MEMORY (2 << 24)
@ -641,7 +649,6 @@
#define DP_SRC_HOST 0x00000300
#define DP_SRC_HOST_BYTEALIGN 0x00000400
#define ROP3_PATCOPY 0x00f00000
/* masks */

View File

@ -11,6 +11,8 @@
* 2001-02-19 mode bug fixes, 0.0.7
* 2001-07-05 fixed scrolling issues, engine initialization,
* and minor mode tweaking, 0.0.9
* 2001-09-06 console switching fixes, blanking fixes,
* 0.1.0
*
* 2001-09-07 Radeon VE support
* 2001-09-10 Radeon VE QZ support by Nick Kurshev <nickols_k@mail.ru>
@ -21,14 +23,16 @@
* of other bugs. Probably they can be solved by
* importing XFree86 code, which has ATI's support).,
* 0.0.11
*
* 2001-09-13 merge Ani Joshi radeonfb-0.1.0:
* console switching fixes, blanking fixes,
* 0.1.0-ve.0
*
* Special thanks to ATI DevRel team for their hardware donations.
*
*/
#define RADEON_VERSION "0.0.11"
#define RADEON_VERSION "0.1.0-ve.0"
#include <linux/config.h>
@ -173,6 +177,7 @@ struct radeon_regs {
int bpp;
u32 crtc_gen_cntl;
u32 crtc_ext_cntl;
u32 surface_cntl;
u32 dac_cntl;
u32 dda_config;
u32 dda_on_off;
@ -217,11 +222,17 @@ struct radeonfb_info {
struct ram_info ram;
u32 hack_crtc_ext_cntl;
u32 hack_crtc_v_sync_strt_wid;
#if defined(FBCON_HAS_CFB16) || defined(FBCON_HAS_CFB32)
union {
#if defined(FBCON_HAS_CFB16)
u_int16_t cfb16[16];
#endif
#if defined(FBCON_HAS_CFB24)
u_int32_t cfb24[16];
#endif
#if defined(FBCON_HAS_CFB32)
u_int32_t cfb32[16];
#endif
@ -338,6 +349,8 @@ static __inline__ u32 radeon_get_dstbpp(u16 depth)
return DST_15BPP;
case 16:
return DST_16BPP;
case 24:
return DST_24BPP;
case 32:
return DST_32BPP;
default:
@ -460,10 +473,11 @@ static char fontname[40] __initdata;
static char *mode_option __initdata;
static char noaccel __initdata = 0;
#if 0
#ifdef FBCON_HAS_CFB8
static struct display_switch fbcon_radeon8;
#endif
#endif
/*
* prototypes
@ -492,7 +506,7 @@ static int radeon_getcolreg (unsigned regno, unsigned *red, unsigned *green,
struct fb_info *info);
static int radeon_setcolreg (unsigned regno, unsigned red, unsigned green,
unsigned blue, unsigned transp, struct fb_info *info);
static void radeon_set_dispsw (struct radeonfb_info *rinfo);
static void radeon_set_dispsw (struct radeonfb_info *rinfo, struct display *disp);
static void radeon_save_state (struct radeonfb_info *rinfo,
struct radeon_regs *save);
static void radeon_engine_init (struct radeonfb_info *rinfo);
@ -508,7 +522,11 @@ static int radeonfb_pci_register (struct pci_dev *pdev,
static void __devexit radeonfb_pci_unregister (struct pci_dev *pdev);
static char *radeon_find_rom(struct radeonfb_info *rinfo);
static void radeon_get_pllinfo(struct radeonfb_info *rinfo, char *bios_seg);
static void do_install_cmap(int con, struct fb_info *info);
static int radeonfb_do_maximize(struct radeonfb_info *rinfo,
struct fb_var_screeninfo *var,
struct fb_var_screeninfo *v,
int nom, int den);
static struct fb_ops radeon_fb_ops = {
fb_get_fix: radeonfb_get_fix,
@ -810,6 +828,7 @@ static void __devexit radeonfb_pci_unregister (struct pci_dev *pdev)
static char *radeon_find_rom(struct radeonfb_info *rinfo)
{
#if defined(__i386__)
u32 segstart;
char *rom_base;
char *rom;
@ -818,7 +837,6 @@ static char *radeon_find_rom(struct radeonfb_info *rinfo)
char aty_rom_sig[] = "761295520";
char radeon_sig[] = "RG6";
#if defined(__i386__)
for(segstart=0x000c0000; segstart<0x000f0000; segstart+=0x00001000) {
stage = 1;
@ -998,7 +1016,7 @@ static int __devinit radeon_init_disp (struct radeonfb_info *rinfo)
disp->var = radeonfb_default_var;
info->disp = disp;
radeon_set_dispsw (rinfo);
radeon_set_dispsw (rinfo, disp);
if (noaccel)
disp->scrollmode = SCROLL_YREDRAW;
@ -1035,10 +1053,8 @@ static int radeon_init_disp_var (struct radeonfb_info *rinfo)
}
static void radeon_set_dispsw (struct radeonfb_info *rinfo)
static void radeon_set_dispsw (struct radeonfb_info *rinfo, struct display *disp)
{
struct display *disp = &rinfo->disp;
int accel;
accel = disp->var.accel_flags & FB_ACCELF_TEXT;
@ -1057,7 +1073,7 @@ static void radeon_set_dispsw (struct radeonfb_info *rinfo)
switch (disp->var.bits_per_pixel) {
#ifdef FBCON_HAS_CFB8
case 8:
disp->dispsw = accel ? &fbcon_radeon8 : &fbcon_cfb8;
disp->dispsw = &fbcon_cfb8;
disp->visual = FB_VISUAL_PSEUDOCOLOR;
disp->line_length = disp->var.xres_virtual;
break;
@ -1070,6 +1086,14 @@ static void radeon_set_dispsw (struct radeonfb_info *rinfo)
disp->line_length = disp->var.xres_virtual * 2;
break;
#endif
#ifdef FBCON_HAS_CFB32
case 24:
disp->dispsw = &fbcon_cfb24;
disp->dispsw_data = &rinfo->con_cmap.cfb24;
disp->visual = FB_VISUAL_DIRECTCOLOR;
disp->line_length = disp->var.xres_virtual * 4;
break;
#endif
#ifdef FBCON_HAS_CFB32
case 32:
disp->dispsw = &fbcon_cfb32;
@ -1146,19 +1170,8 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
struct radeonfb_info *rinfo = (struct radeonfb_info *) info;
struct display *disp;
struct fb_var_screeninfo v;
int nom, den, i, accel;
int nom, den, accel;
unsigned chgvar = 0;
static struct {
int xres, yres;
} modes[] = {
{
1600, 1280}, {
1280, 1024}, {
1024, 768}, {
800, 600}, {
640, 480}, {
-1, -1}
};
disp = (con < 0) ? rinfo->info.disp : &fb_display[con];
@ -1169,6 +1182,7 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
(disp->var.yres != var->yres) ||
(disp->var.xres_virtual != var->xres_virtual) ||
(disp->var.yres_virtual != var->yres_virtual) ||
(disp->var.bits_per_pixel != var->bits_per_pixel) ||
memcmp (&disp->var.red, &var->red, sizeof (var->red)) ||
memcmp (&disp->var.green, &var->green, sizeof (var->green)) ||
memcmp (&disp->var.blue, &var->blue, sizeof (var->blue)));
@ -1179,21 +1193,17 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
switch (v.bits_per_pixel) {
#ifdef FBCON_HAS_CFB8
case 8:
v.bits_per_pixel = 8;
disp->dispsw = accel ? &fbcon_radeon8 : &fbcon_cfb8;
nom = den = 1;
disp->line_length = v.xres_virtual;
disp->visual = FB_VISUAL_PSEUDOCOLOR;
v.red.offset = v.green.offset = v.blue.offset = 0;
v.red.length = v.green.length = v.blue.length = 8;
v.transp.offset = v.transp.length = 0;
break;
#endif
#ifdef FBCON_HAS_CFB16
case 16:
v.bits_per_pixel = 16;
disp->dispsw = &fbcon_cfb16;
disp->dispsw_data = &rinfo->con_cmap.cfb16;
nom = 2;
den = 1;
disp->line_length = v.xres_virtual * 2;
@ -1204,14 +1214,25 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
v.red.length = 5;
v.green.length = 6;
v.blue.length = 5;
v.transp.offset = v.transp.length = 0;
break;
#endif
#ifdef FBCON_HAS_CFB24
case 24:
nom = 4;
den = 1;
disp->line_length = v.xres_virtual * 3;
disp->visual = FB_VISUAL_DIRECTCOLOR;
v.red.offset = 16;
v.green.offset = 8;
v.blue.offset = 0;
v.red.length = v.blue.length = v.green.length = 8;
v.transp.offset = v.transp.length = 0;
break;
#endif
#ifdef FBCON_HAS_CFB32
case 32:
v.bits_per_pixel = 32;
disp->dispsw = &fbcon_cfb32;
disp->dispsw_data = rinfo->con_cmap.cfb32;
nom = 4;
den = 1;
disp->line_length = v.xres_virtual * 4;
@ -1220,6 +1241,8 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
v.green.offset = 8;
v.blue.offset = 0;
v.red.length = v.blue.length = v.green.length = 8;
v.transp.offset = 24;
v.transp.length = 8;
break;
#endif
default:
@ -1228,28 +1251,8 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
return -EINVAL;
}
if (v.xres * nom / den * v.yres > (rinfo->video_ram)) {
printk ("radeonfb: mode %dx%dx%d rejected, not enough video ram\n",
var->xres, var->yres, var->bits_per_pixel);
return -EINVAL;
}
if (v.xres_virtual == -1 && v.yres_virtual == -1) {
printk ("radeonfb: using maximum available virtual resolution\n");
for (i = 0; modes[i].xres != -1; i++) {
if (modes[i].xres * nom / den * modes[i].yres < (rinfo->video_ram/2))
break;
}
if (modes[i].xres == -1) {
printk ("radeonfb: could not find a virtual res\n");
return -EINVAL;
}
v.xres_virtual = modes[i].xres;
v.yres_virtual = modes[i].yres;
printk ("radeonfb: virtual resolution set to maximum of %dx%d\n",
v.xres_virtual, v.yres_virtual);
}
if (radeonfb_do_maximize(rinfo, var, &v, nom, den) < 0)
return -EINVAL;
if (v.xoffset < 0)
v.xoffset = 0;
@ -1276,15 +1279,24 @@ static int radeonfb_set_var (struct fb_var_screeninfo *var, int con,
return -EINVAL;
}
disp->type = FB_TYPE_PACKED_PIXELS;
memcpy (&disp->var, &v, sizeof (v));
if (chgvar) {
radeon_set_dispsw(rinfo, disp);
if (noaccel)
disp->scrollmode = SCROLL_YREDRAW;
else
disp->scrollmode = 0;
if (info && info->changevar)
info->changevar(con);
}
radeon_load_video_mode (rinfo, &v);
if (chgvar && info && info->changevar)
info->changevar (con);
do_install_cmap(con, info);
return 0;
}
@ -1343,41 +1355,100 @@ static int radeonfb_pan_display (struct fb_var_screeninfo *var, int con,
struct fb_info *info)
{
struct radeonfb_info *rinfo = (struct radeonfb_info *) info;
struct display *disp;
unsigned int base;
disp = (con < 0) ? rinfo->info.disp : &fb_display[con];
if (var->xoffset > (var->xres_virtual - var->xres))
return -EINVAL;
if (var->yoffset > (var->yres_virtual - var->yres))
return -EINVAL;
if (var->vmode & FB_VMODE_YWRAP) {
if (var->yoffset < 0 ||
var->yoffset >= disp->var.yres_virtual ||
var->xoffset )
return -EINVAL;
} else {
if (var->xoffset + disp->var.xres > disp->var.xres_virtual ||
var->yoffset + disp->var.yres > disp->var.yres_virtual)
return -EINVAL;
}
u32 offset, xoffset, yoffset;
base = var->yoffset * disp->line_length + var->xoffset;
disp->var.xoffset = var->xoffset;
disp->var.yoffset = var->yoffset;
xoffset = (var->xoffset + 7) & ~7;
yoffset = var->yoffset;
if (var->vmode & FB_VMODE_YWRAP)
disp->var.vmode |= FB_VMODE_YWRAP;
else
disp->var.vmode &= ~FB_VMODE_YWRAP;
if ((xoffset + var->xres > var->xres_virtual) || (yoffset+var->yres >
var->yres_virtual))
return -EINVAL;
offset = ((yoffset * var->xres + xoffset) * var->bits_per_pixel) >> 6;
OUTREG(CRTC_OFFSET, offset);
return 0;
}
static void do_install_cmap(int con, struct fb_info *info)
{
struct radeonfb_info *rinfo = (struct radeonfb_info *) info;
if (con != rinfo->currcon)
return;
if (fb_display[con].cmap.len)
fb_set_cmap(&fb_display[con].cmap, 1, radeon_setcolreg, info);
else {
int size = fb_display[con].var.bits_per_pixel == 8 ? 256 : 32;
fb_set_cmap(fb_default_cmap(size), 1, radeon_setcolreg, info);
}
}
static int radeonfb_do_maximize(struct radeonfb_info *rinfo,
struct fb_var_screeninfo *var,
struct fb_var_screeninfo *v,
int nom, int den)
{
static struct {
int xres, yres;
} modes[] = {
{1600, 1280},
{1280, 1024},
{1024, 768},
{800, 600},
{640, 480},
{-1, -1}
};
int i;
/* use highest possible virtual resolution */
if (v->xres_virtual == -1 && v->yres_virtual == -1) {
printk("radeonfb: using max availabe virtual resolution\n");
for (i=0; modes[i].xres != -1; i++) {
if (modes[i].xres * nom / den * modes[i].yres <
rinfo->video_ram / 2)
break;
}
if (modes[i].xres == -1) {
printk("radeonfb: could not find virtual resolution that fits into video memory!\n");
return -EINVAL;
}
v->xres_virtual = modes[i].xres;
v->yres_virtual = modes[i].yres;
printk("radeonfb: virtual resolution set to max of %dx%d\n",
v->xres_virtual, v->yres_virtual);
} else if (v->xres_virtual == -1) {
v->xres_virtual = (rinfo->video_ram * den /
(nom * v->yres_virtual * 2)) & ~15;
} else if (v->yres_virtual == -1) {
v->xres_virtual = (v->xres_virtual + 15) & ~15;
v->yres_virtual = rinfo->video_ram * den /
(nom * v->xres_virtual *2);
} else {
if (v->xres_virtual * nom / den * v->yres_virtual >
rinfo->video_ram) {
return -EINVAL;
}
}
if (v->xres_virtual * nom / den >= 8192) {
v->xres_virtual = 8192 * den / nom - 16;
}
if (v->xres_virtual < v->xres)
return -EINVAL;
if (v->yres_virtual < v->yres)
return -EINVAL;
return 0;
}
static int radeonfb_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
unsigned long arg, int con, struct fb_info *info)
@ -1393,7 +1464,7 @@ static int radeonfb_switch (int con, struct fb_info *info)
struct display *disp;
struct fb_cmap *cmap;
int switchcon = 0;
disp = (con < 0) ? rinfo->info.disp : &fb_display[con];
if (rinfo->currcon >= 0) {
@ -1414,9 +1485,16 @@ static int radeonfb_switch (int con, struct fb_info *info)
disp->var.activate = FB_ACTIVATE_NOW;
radeonfb_set_var (&disp->var, con, info);
radeon_set_dispsw (rinfo);
radeon_set_dispsw (rinfo, disp);
do_install_cmap(con, info);
}
/* XXX absurd hack for X to restore console */
{
OUTREG(CRTC_EXT_CNTL, rinfo->hack_crtc_ext_cntl);
OUTREG(CRTC_V_SYNC_STRT_WID, rinfo->hack_crtc_v_sync_strt_wid);
}
return 0;
}
@ -1435,25 +1513,28 @@ static int radeonfb_updatevar (int con, struct fb_info *info)
static void radeonfb_blank (int blank, struct fb_info *info)
{
struct radeonfb_info *rinfo = (struct radeonfb_info *) info;
u8 mode = 0;
u32 val = INREG(CRTC_EXT_CNTL);
/* reset it */
val &= ~(CRTC_DISPLAY_DIS | CRTC_HSYNC_DIS |
CRTC_VSYNC_DIS);
switch (blank) {
case 0:
/* unblank */
mode = 0;
case VESA_NO_BLANKING:
break;
case 1:
/* blank */
mode = ((INREG8(CRTC_EXT_CNTL + 1) & 3) | 4);
case VESA_VSYNC_SUSPEND:
val |= (CRTC_DISPLAY_DIS | CRTC_VSYNC_DIS);
break;
case 2:
case 3:
case 4:
mode = blank | 4;
case VESA_HSYNC_SUSPEND:
val |= (CRTC_DISPLAY_DIS | CRTC_HSYNC_DIS);
break;
case VESA_POWERDOWN:
val |= (CRTC_DISPLAY_DIS | CRTC_VSYNC_DIS |
CRTC_HSYNC_DIS);
break;
}
OUTREG8(CRTC_EXT_CNTL + 1, mode);
OUTREG(CRTC_EXT_CNTL, val);
}
@ -1502,7 +1583,7 @@ static int radeon_setcolreg (unsigned regno, unsigned red, unsigned green,
unsigned blue, unsigned transp, struct fb_info *info)
{
struct radeonfb_info *rinfo = (struct radeonfb_info *) info;
u32 pindex, col;
u32 pindex;
if (regno > 255)
return 1;
@ -1517,18 +1598,33 @@ static int radeon_setcolreg (unsigned regno, unsigned red, unsigned green,
/* init gamma for hicolor */
if ((rinfo->depth > 8) && (regno == 0)) {
int i;
u32 tmp;
for (i=0; i<255; i++) {
OUTREG(PALETTE_INDEX, i);
tmp = (i << 16) | (i << 8) | i;
radeon_fifo_wait(32);
OUTREG(PALETTE_DATA, tmp);
OUTREG(PALETTE_DATA, (i << 16) | (i << 8) | i);
}
}
/* default */
pindex = regno;
/* XXX actually bpp, fixme */
if (rinfo->depth == 16)
pindex = regno * 8;
if (rinfo->depth == 16) {
OUTREG(PALETTE_INDEX, pindex/2);
OUTREG(PALETTE_DATA, (rinfo->palette[regno/2].red << 16) |
(green << 8) | (rinfo->palette[regno/2].blue));
green = rinfo->palette[regno/2].green;
}
if ((rinfo->depth == 8) || (regno < 32)) {
OUTREG(PALETTE_INDEX, pindex);
OUTREG(PALETTE_DATA, (red << 16) | (green << 8) | blue);
}
#if 0
col = (red << 16) | (green << 8) | blue;
if (rinfo->depth == 16) {
@ -1548,16 +1644,22 @@ static int radeon_setcolreg (unsigned regno, unsigned red, unsigned green,
OUTREG8(PALETTE_INDEX, pindex);
radeon_fifo_wait(32);
OUTREG(PALETTE_DATA, col);
#endif
#if defined(FBCON_HAS_CFB16) || defined(FBCON_HAS_CFB32)
if (regno < 32) {
switch (rinfo->depth) {
#ifdef FBCON_HAS_CFB16
case 16:
rinfo->con_cmap.cfb16[regno] = (regno << 10) | (regno << 5) |
rinfo->con_cmap.cfb16[regno] = (regno << 11) | (regno << 5) |
regno;
break;
#endif
#ifdef FBCON_HAS_CFB24
case 24:
rinfo->con_cmap.cfb24[regno] = (regno << 16) | (regno << 8) | regno;
break;
#endif
#ifdef FBCON_HAS_CFB32
case 32: {
u32 i;
@ -1632,21 +1734,14 @@ static void radeon_load_video_mode (struct radeonfb_info *rinfo,
hsync_wid = 1;
else if (hsync_wid > 0x3f) /* max */
hsync_wid = 0x3f;
vsync_wid = mode->vsync_len;
if (vsync_wid == 0)
vsync_wid = 1;
else if (vsync_wid > 0x1f) /* max */
vsync_wid = 0x1f;
if (mode->sync & FB_SYNC_HOR_HIGH_ACT)
hSyncPol = 1;
else
hSyncPol = 0;
if (mode->sync & FB_SYNC_VERT_HIGH_ACT)
vSyncPol = 1;
else
vSyncPol = 0;
hSyncPol = mode->sync & FB_SYNC_HOR_HIGH_ACT ? 0 : 1;
vSyncPol = mode->sync & FB_SYNC_VERT_HIGH_ACT ? 0 : 1;
cSync = mode->sync & FB_SYNC_COMP_HIGH_ACT ? (1 << 4) : 0;
@ -1684,16 +1779,29 @@ static void radeon_load_video_mode (struct radeonfb_info *rinfo,
(((mode->xres / 8) - 1) << 16));
newmode.crtc_h_sync_strt_wid = ((hsync_start & 0x1fff) |
(hsync_wid << 16) | (hSyncPol << 23));
(hsync_wid << 16) | (h_sync_pol << 23));
newmode.crtc_v_total_disp = ((vTotal - 1) & 0xffff) |
((mode->yres - 1) << 16);
newmode.crtc_v_sync_strt_wid = (((vSyncStart - 1) & 0xfff) |
(vsync_wid << 16) | (vSyncPol << 23));
(vsync_wid << 16) | (v_sync_pol << 23));
newmode.crtc_pitch = (mode->xres >> 3);
newmode.surface_cntl = SURF_TRANSLATION_DIS;
#if defined(__BIG_ENDIAN)
switch (mode->bits_per_pixel) {
case 16:
newmode.surface_cntl |= NONSURF_AP0_SWP_16BPP;
break;
case 24:
case 32:
newmode.surface_cntl |= NONSURF_AP0_SWP_32BPP;
break;
}
#endif
rinfo->pitch = ((mode->xres * ((mode->bits_per_pixel + 1) / 8) + 0x3f)
& ~(0x3f)) / 64;
@ -1706,6 +1814,8 @@ static void radeon_load_video_mode (struct radeonfb_info *rinfo,
newmode.yres = mode->yres;
rinfo->bpp = mode->bits_per_pixel;
rinfo->hack_crtc_ext_cntl = newmode.crtc_ext_cntl;
rinfo->hack_crtc_v_sync_strt_wid = newmode.crtc_v_sync_strt_wid;
if (freq > rinfo->pll.ppll_max)
freq = rinfo->pll.ppll_max;
@ -1808,6 +1918,7 @@ static void radeon_write_mode (struct radeonfb_info *rinfo,
OUTREG(CRTC_OFFSET, 0);
OUTREG(CRTC_OFFSET_CNTL, 0);
OUTREG(CRTC_PITCH, mode->crtc_pitch);
OUTREG(SURFACE_CNTL, mode->surface_cntl);
while ((INREG(CLOCK_CNTL_INDEX) & PPLL_DIV_SEL_MASK) !=
PPLL_DIV_SEL_MASK) {
@ -1844,7 +1955,7 @@ static void radeon_write_mode (struct radeonfb_info *rinfo,
return;
}
#if 0
/*
* text console acceleration
@ -1896,7 +2007,6 @@ static void fbcon_radeon_clear(struct vc_data *conp, struct display *p,
{
struct radeonfb_info *rinfo = (struct radeonfb_info *)(p->fb_info);
u32 clr;
u32 temp;
clr = attr_bgcol_ec(p, conp);
clr |= (clr << 8);
@ -1934,3 +2044,5 @@ static struct display_switch fbcon_radeon8 = {
fontwidthmask: FONTWIDTH(4)|FONTWIDTH(8)|FONTWIDTH(12)|FONTWIDTH(16)
};
#endif
#endif /* 0 */