Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
3c077385
Commit
3c077385
authored
Aug 07, 2002
by
James Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ported Mach 64 driver to new fbdev api.
parent
fd024c33
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
90 additions
and
446 deletions
+90
-446
drivers/video/Config.in
drivers/video/Config.in
+4
-4
drivers/video/aty/atyfb.h
drivers/video/aty/atyfb.h
+1
-14
drivers/video/aty/atyfb_base.c
drivers/video/aty/atyfb_base.c
+71
-297
drivers/video/aty/mach64_accel.c
drivers/video/aty/mach64_accel.c
+12
-129
drivers/video/aty/mach64_cursor.c
drivers/video/aty/mach64_cursor.c
+2
-2
No files found.
drivers/video/Config.in
View file @
3c077385
...
...
@@ -265,7 +265,7 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_IGA" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
"$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
"$CONFIG_FB_
ATY" = "y" -o "$CONFIG_FB_
SA1100" = "y" ]; then
"$CONFIG_FB_SA1100" = "y" ]; then
define_tristate CONFIG_FBCON_CFB8 y
else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_ATARI" = "m" -o \
...
...
@@ -292,7 +292,7 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
"$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
"$CONFIG_FB_
ATY" = "y" -o "$CONFIG_FB_
SA1100" = "y" ]; then
"$CONFIG_FB_SA1100" = "y" ]; then
define_tristate CONFIG_FBCON_CFB16 y
else
if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
...
...
@@ -331,7 +331,7 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_TGA" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
"$CONFIG_FB_PVR2" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
"$CONFIG_FB_SIS" = "y"
-o "$CONFIG_FB_ATY" = "y"
]; then
"$CONFIG_FB_SIS" = "y" ]; then
define_tristate CONFIG_FBCON_CFB32 y
else
if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
...
...
@@ -352,7 +352,7 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_PMAG_BA" = "y" -o "$CONFIG_FB_PMAGB_B" = "y" -o \
"$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_TX3912" = "y" -o \
"$CONFIG_FB_MAXINE" = "y" -o "$CONFIG_FB_APOLLO" = "y" -o \
"$CONFIG_FB_ATY
128
" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
"$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
"$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_OF" = "y" -o \
"$CONFIG_FB_SGIVW" = "y" ]; then
define_tristate CONFIG_FBCON_ACCEL y
...
...
drivers/video/aty/atyfb.h
View file @
3c077385
...
...
@@ -3,7 +3,7 @@
*/
#include <linux/config.h>
#include <video/fbcon.h>
/*
* Elements of the hardware specific atyfb_par structure
...
...
@@ -12,9 +12,6 @@
struct
crtc
{
u32
vxres
;
u32
vyres
;
u32
xoffset
;
u32
yoffset
;
u32
bpp
;
u32
h_tot_disp
;
u32
h_sync_strt_wid
;
u32
v_tot_disp
;
...
...
@@ -94,7 +91,6 @@ struct atyfb_par {
u8
ram_type
;
u8
mem_refresh_rate
;
u8
blitter_may_be_busy
;
u32
accel_flags
;
#ifdef __sparc__
struct
pci_mmap_map
*
mmap_map
;
int
consolecnt
;
...
...
@@ -281,13 +277,4 @@ static inline void wait_for_idle(struct atyfb_par *par)
extern
void
aty_reset_engine
(
const
struct
atyfb_par
*
par
);
extern
void
aty_init_engine
(
struct
atyfb_par
*
par
,
struct
fb_info
*
info
);
extern
void
atyfb_fillrect
(
struct
fb_info
*
info
,
struct
fb_fillrect
*
rect
);
/*
* Text console acceleration
*/
extern
struct
display_switch
fbcon_aty8
;
extern
struct
display_switch
fbcon_aty16
;
extern
struct
display_switch
fbcon_aty24
;
extern
struct
display_switch
fbcon_aty32
;
drivers/video/aty/atyfb_base.c
View file @
3c077385
This diff is collapsed.
Click to expand it.
drivers/video/aty/mach64_accel.c
View file @
3c077385
...
...
@@ -6,26 +6,9 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <video/fbcon.h>
#include <video/fbcon-cfb8.h>
#include <video/fbcon-cfb16.h>
#include <video/fbcon-cfb24.h>
#include <video/fbcon-cfb32.h>
#include <video/mach64.h>
#include "atyfb.h"
/*
* Text console acceleration
*/
static
void
fbcon_aty_bmove
(
struct
display
*
p
,
int
sy
,
int
sx
,
int
dy
,
int
dx
,
int
height
,
int
width
);
static
void
fbcon_aty_clear
(
struct
vc_data
*
conp
,
struct
display
*
p
,
int
sy
,
int
sx
,
int
height
,
int
width
);
/*
* Generic Mach64 routines
*/
...
...
@@ -63,9 +46,9 @@ void aty_init_engine(struct atyfb_par *par, struct fb_info *info)
u32
pitch_value
;
/* determine modal information from global mode structure */
pitch_value
=
par
->
crtc
.
vxres
;
pitch_value
=
info
->
var
.
xres_virtual
;
if
(
par
->
crtc
.
bpp
==
24
)
{
if
(
info
->
var
.
bits_per_pixel
==
24
)
{
/* In 24 bpp, the engine is in 8 bpp - this requires that all */
/* horizontal coordinates and widths must be adjusted */
pitch_value
=
pitch_value
*
3
;
...
...
@@ -187,7 +170,7 @@ static inline void draw_rect(s16 x, s16 y, u16 width, u16 height,
par
->
blitter_may_be_busy
=
1
;
}
static
void
atyfb_copyarea
(
struct
fb_info
*
info
,
struct
fb_copyarea
*
area
)
void
atyfb_copyarea
(
struct
fb_info
*
info
,
struct
fb_copyarea
*
area
)
{
struct
atyfb_par
*
par
=
(
struct
atyfb_par
*
)
info
->
par
;
...
...
@@ -197,8 +180,8 @@ static void atyfb_copyarea(struct fb_info *info, struct fb_copyarea *area)
if
(
!
area
->
width
||
!
area
->
height
)
return
;
pitch_value
=
par
->
crtc
.
vxres
;
if
(
par
->
crtc
.
bpp
==
24
)
{
pitch_value
=
info
->
var
.
xres_virtual
;
if
(
info
->
var
.
bits_per_pixel
==
24
)
{
/* In 24 bpp, the engine is in 8 bpp - this requires that all */
/* horizontal coordinates and widths must be adjusted */
pitch_value
*=
3
;
...
...
@@ -237,7 +220,7 @@ void atyfb_fillrect(struct fb_info *info, struct fb_fillrect *rect)
rect
->
color
|=
(
rect
->
color
<<
8
);
rect
->
color
|=
(
rect
->
color
<<
16
);
if
(
par
->
crtc
.
bpp
==
24
)
{
if
(
info
->
var
.
bits_per_pixel
==
24
)
{
/* In 24 bpp, the engine is in 8 bpp - this requires that all */
/* horizontal coordinates and widths must be adjusted */
rect
->
dx
*=
3
;
...
...
@@ -255,111 +238,11 @@ void atyfb_fillrect(struct fb_info *info, struct fb_fillrect *rect)
draw_rect
(
rect
->
dx
,
rect
->
dy
,
rect
->
width
,
rect
->
height
,
par
);
}
/*
* Text console acceleration
*/
static
void
fbcon_aty_bmove
(
struct
display
*
p
,
int
sy
,
int
sx
,
int
dy
,
int
dx
,
int
height
,
int
width
)
void
atyfb_imageblit
(
struct
fb_info
*
info
,
struct
fb_image
*
image
)
{
struct
fb_info
*
info
=
p
->
fb_info
;
struct
fb_copyarea
area
;
#ifdef __sparc__
struct
atyfb_par
*
par
=
(
struct
atyfb_par
*
)
(
info
->
par
);
if
(
par
->
mmaped
&&
(
!
info
->
display_fg
||
info
->
display_fg
->
vc_num
==
par
->
vtconsole
))
return
;
#endif
area
.
sx
=
sx
*
fontwidth
(
p
);
area
.
sy
=
sy
*
fontheight
(
p
);
area
.
dx
=
dx
*
fontwidth
(
p
);
area
.
dy
=
dy
*
fontheight
(
p
);
area
.
width
=
width
*
fontwidth
(
p
);
area
.
height
=
height
*
fontheight
(
p
);
atyfb_copyarea
(
info
,
&
area
);
}
static
void
fbcon_aty_clear
(
struct
vc_data
*
conp
,
struct
display
*
p
,
int
sy
,
int
sx
,
int
height
,
int
width
)
{
struct
fb_info
*
info
=
p
->
fb_info
;
struct
fb_fillrect
region
;
#ifdef __sparc__
struct
atyfb_par
*
par
=
(
struct
atyfb_par
*
)
(
info
->
par
);
if
(
par
->
mmaped
&&
(
!
info
->
display_fg
||
info
->
display_fg
->
vc_num
==
par
->
vtconsole
))
return
;
#endif
region
.
color
=
attr_bgcol_ec
(
p
,
conp
);
region
.
color
|=
(
region
.
color
<<
8
);
region
.
color
|=
(
region
.
color
<<
16
);
region
.
dx
=
sx
*
fontwidth
(
p
);
region
.
dy
=
sy
*
fontheight
(
p
);
region
.
width
=
width
*
fontwidth
(
p
);
region
.
height
=
height
*
fontheight
(
p
);
region
.
rop
=
ROP_COPY
;
atyfb_fillrect
(
info
,
&
region
);
}
#ifdef __sparc__
#define check_access \
if (par->mmaped && (!info->display_fg \
|| info->display_fg->vc_num == par->vtconsole)) \
return;
#else
#define check_access do { } while (0)
#endif
#define DEF_FBCON_ATY_OP(name, call, args...) \
static void name(struct vc_data *conp, struct display *p, args) \
{ \
struct fb_info *info = p->fb_info; \
struct atyfb_par *par = (struct atyfb_par *) info->par; \
check_access; \
if (par->blitter_may_be_busy) \
wait_for_idle(par); \
call; \
struct
atyfb_par
*
par
=
(
struct
atyfb_par
*
)
info
->
par
;
if
(
par
->
blitter_may_be_busy
)
wait_for_idle
(
par
);
cfb_imageblit
(
info
,
image
);
}
#define DEF_FBCON_ATY(width) \
DEF_FBCON_ATY_OP(fbcon_aty##width##_putc, \
fbcon_cfb##width##_putc(conp, p, c, yy, xx), \
int c, int yy, int xx) \
DEF_FBCON_ATY_OP(fbcon_aty##width##_putcs, \
fbcon_cfb##width##_putcs(conp, p, s, count, yy, xx), \
const unsigned short *s, int count, int yy, int xx) \
DEF_FBCON_ATY_OP(fbcon_aty##width##_clear_margins, \
fbcon_cfb##width##_clear_margins(conp, p, bottom_only), \
int bottom_only) \
\
struct display_switch fbcon_aty##width = { \
setup: fbcon_cfb##width##_setup, \
bmove: fbcon_aty_bmove, \
clear: fbcon_aty_clear, \
putc: fbcon_aty##width##_putc, \
putcs: fbcon_aty##width##_putcs, \
revc: fbcon_cfb##width##_revc, \
clear_margins: fbcon_aty##width##_clear_margins, \
fontwidthmask: FONTWIDTH(4)|FONTWIDTH(8)|FONTWIDTH(12)|FONTWIDTH(16) \
};
#ifdef FBCON_HAS_CFB8
DEF_FBCON_ATY
(
8
)
#endif
#ifdef FBCON_HAS_CFB16
DEF_FBCON_ATY
(
16
)
#endif
#ifdef FBCON_HAS_CFB24
DEF_FBCON_ATY
(
24
)
#endif
#ifdef FBCON_HAS_CFB32
DEF_FBCON_ATY
(
32
)
#endif
drivers/video/aty/mach64_cursor.c
View file @
3c077385
...
...
@@ -129,7 +129,7 @@ static void aty_set_cursor(struct fb_info *info, int on)
#endif
if
(
on
)
{
x
=
c
->
pos
.
x
-
c
->
hot
.
x
-
par
->
crtc
.
xoffset
;
x
=
c
->
pos
.
x
-
c
->
hot
.
x
-
info
->
var
.
xoffset
;
if
(
x
<
0
)
{
xoff
=
-
x
;
x
=
0
;
...
...
@@ -137,7 +137,7 @@ static void aty_set_cursor(struct fb_info *info, int on)
xoff
=
0
;
}
y
=
c
->
pos
.
y
-
c
->
hot
.
y
-
par
->
crtc
.
yoffset
;
y
=
c
->
pos
.
y
-
c
->
hot
.
y
-
info
->
var
.
yoffset
;
if
(
y
<
0
)
{
yoff
=
-
y
;
y
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment