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
4038102c
Commit
4038102c
authored
May 27, 2002
by
James Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More drivers ported over to the new api. Also a bug fix in the software drawing image routine.
parent
4118216f
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
139 additions
and
390 deletions
+139
-390
drivers/video/Config.in
drivers/video/Config.in
+12
-14
drivers/video/cfbimgblt.c
drivers/video/cfbimgblt.c
+26
-5
drivers/video/clps711xfb.c
drivers/video/clps711xfb.c
+25
-133
drivers/video/hpfb.c
drivers/video/hpfb.c
+76
-238
No files found.
drivers/video/Config.in
View file @
4038102c
...
...
@@ -236,29 +236,25 @@ if [ "$CONFIG_FB" = "y" ]; then
if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_AMIGA" = "y" -o \
"$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
"$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_RETINAZ3" = "y" -o \
"$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
"$CONFIG_FB_BWTWO" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
"$CONFIG_FB_TX3912" = "y" ]; then
"$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_TX3912" = "y" -o \
"$CONFIG_FB_BWTWO" = "y" -o "$CONFIG_FB_CLGEN" = "y" ]; then
define_tristate CONFIG_FBCON_MFB y
else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_AMIGA" = "m" -o \
"$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
"$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_RETINAZ3" = "m" -o \
"$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
"$CONFIG_FB_BWTWO" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
"$CONFIG_FB_TX3912" = "m" ]; then
"$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_TX3912" = "m" -o \
"$CONFIG_FB_BWTWO" = "m" -o "$CONFIG_FB_CLGEN" = "m" ]; then
define_tristate CONFIG_FBCON_MFB m
fi
fi
if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
"$CONFIG_FB_SA1100" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
"$CONFIG_FB_TX3912" = "y" ]; then
"$CONFIG_FB_SA1100" = "y" -o "$CONFIG_FB_TX3912" = "y" ]; then
define_tristate CONFIG_FBCON_CFB2 y
define_tristate CONFIG_FBCON_CFB4 y
else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_MAC" = "m" -o \
"$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
"$CONFIG_FB_TX3912" = "m" ]; then
"$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_TX3912" = "m" ]; then
define_tristate CONFIG_FBCON_CFB2 m
define_tristate CONFIG_FBCON_CFB4 m
fi
...
...
@@ -375,14 +371,16 @@ if [ "$CONFIG_FB" = "y" ]; then
define_tristate CONFIG_FBCON_CFB32 m
fi
fi
if [ "$CONFIG_FB_
VESA" = "y" -o "$CONFIG_FB_Q40
" = "y" -o \
if [ "$CONFIG_FB_
NEOMAGIC" = "y" -o "$CONFIG_FB_VESA
" = "y" -o \
"$CONFIG_FB_FM2" = "y" -o "$CONFIG_FB_HIT" = "y" -o \
"$CONFIG_FB_HP300" = "y" -o "$CONFIG_FB_Q40" = "y" -o \
"$CONFIG_FB_ANAKIN" = "y" -o "$CONFIG_FB_G364" = "y" -o \
"$CONFIG_FB_VIRTUAL" = "y" ]; then
"$CONFIG_FB_VIRTUAL" = "y"
-o "$CONFIG_FB_CLPS711X" = "y"
]; then
define_tristate CONFIG_FBCON_ACCEL y
else
if [ "$CONFIG_FB_HIT" = "m" -o "$CONFIG_FB_G364" = "m" -o \
"$CONFIG_FB_VIRTUAL" = "m" ]; then
if [ "$CONFIG_FB_NEOMAGIC" = "m" -o "$CONFIG_FB_HIT" = "m" -o \
"$CONFIG_FB_G364" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
"$CONFIG_FB_CLPS711X" = "m" ]; then
define_tristate CONFIG_FBCON_ACCEL m
fi
fi
...
...
drivers/video/cfbimgblt.c
View file @
4038102c
...
...
@@ -46,7 +46,7 @@ void cfb_imageblit(struct fb_info *p, struct fb_image *image)
int
pad
,
ppw
,
shift
,
shift_right
,
shift_left
,
x2
,
y2
,
n
,
i
,
j
,
k
,
l
=
7
;
unsigned
long
tmp
=
~
0
<<
(
BITS_PER_LONG
-
p
->
var
.
bits_per_pixel
);
unsigned
long
fgx
,
bgx
,
fgcolor
,
bgcolor
,
eorx
;
unsigned
long
end_index
,
end_mask
,
mask
;
unsigned
long
end_index
,
end_mask
;
unsigned
long
*
dst
=
NULL
;
u8
*
dst1
,
*
src
;
...
...
@@ -89,24 +89,45 @@ void cfb_imageblit(struct fb_info *p, struct fb_image *image)
eorx
=
fgx
^
bgx
;
n
=
((
image
->
width
+
7
)
>>
3
);
pad
=
(
n
<<
3
)
-
image
->
width
;
n
=
image
->
width
%
ppw
;
for
(
i
=
0
;
i
<
image
->
height
;
i
++
)
{
dst
=
(
unsigned
long
*
)
dst1
;
for
(
j
=
image
->
width
/
ppw
;
j
>
0
;
j
--
)
{
mask
=
0
;
end_
mask
=
0
;
for
(
k
=
ppw
;
k
>
0
;
k
--
)
{
if
(
test_bit
(
l
,
src
))
mask
|=
(
tmp
>>
(
p
->
var
.
bits_per_pixel
*
(
k
-
1
)));
end_
mask
|=
(
tmp
>>
(
p
->
var
.
bits_per_pixel
*
(
k
-
1
)));
l
--
;
if
(
l
<
0
)
{
l
=
7
;
src
++
;
}
}
fb_writel
((
mask
&
eorx
)
^
bgx
,
dst
);
fb_writel
((
end_
mask
&
eorx
)
^
bgx
,
dst
);
dst
++
;
}
l
=-
pad
;
if
(
n
)
{
for
(
j
=
n
;
j
>
0
;
j
--
)
{
end_mask
=
0
;
if
(
test_bit
(
l
,
src
))
end_mask
|=
(
tmp
>>
(
p
->
var
.
bits_per_pixel
*
(
k
-
1
)));
l
--
;
if
(
l
<
0
)
{
l
=
7
;
src
++
;
}
}
fb_writel
((
end_mask
&
eorx
)
^
bgx
,
dst
);
dst
++
;
}
l
-=
pad
;
dst1
+=
p
->
fix
.
line_length
;
}
}
else
{
/* Draw the penguin */
n
=
((
image
->
width
*
p
->
var
.
bits_per_pixel
)
>>
3
);
//shift = ((unsigned long) dst1 & (bpl -1));
end_mask
=
0
;
// n = n/bpl;
}
}
drivers/video/clps711xfb.c
View file @
4038102c
...
...
@@ -27,7 +27,6 @@
#include <linux/proc_fs.h>
#include <video/fbcon.h>
#include <video/fbcon-cfb4.h>
#include <asm/hardware.h>
#include <asm/mach-types.h>
...
...
@@ -87,42 +86,13 @@ clps7111fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
return
0
;
}
/*
*
Set the User Defined Part of the Display
*/
*
Validate the purposed mode.
*/
static
int
clps7111fb_set_var
(
struct
fb_var_screeninfo
*
var
,
int
con
,
struct
fb_info
*
info
)
clps7111fb_check_var
(
struct
fb_var_screeninfo
*
var
,
struct
fb_info
*
info
)
{
struct
display
*
display
;
unsigned
int
lcdcon
,
syscon
;
int
chgvar
=
0
;
if
(
var
->
activate
&
FB_ACTIVATE_TEST
)
return
0
;
if
((
var
->
activate
&
FB_ACTIVATE_MASK
)
!=
FB_ACTIVATE_NOW
)
return
-
EINVAL
;
if
(
info
->
var
.
xres
!=
var
->
xres
)
chgvar
=
1
;
if
(
info
->
var
.
yres
!=
var
->
yres
)
chgvar
=
1
;
if
(
info
->
var
.
xres_virtual
!=
var
->
xres_virtual
)
chgvar
=
1
;
if
(
info
->
var
.
yres_virtual
!=
var
->
yres_virtual
)
chgvar
=
1
;
if
(
info
->
var
.
bits_per_pixel
!=
var
->
bits_per_pixel
)
chgvar
=
1
;
if
(
con
<
0
)
{
display
=
info
->
disp
;
chgvar
=
0
;
}
else
{
display
=
fb_display
+
con
;
}
var
->
transp
.
msb_right
=
0
;
var
->
transp
.
offset
=
0
;
var
->
transp
.
length
=
0
;
...
...
@@ -132,70 +102,37 @@ clps7111fb_set_var(struct fb_var_screeninfo *var, int con,
var
->
green
=
var
->
red
;
var
->
blue
=
var
->
red
;
if
(
var
->
bits_per_pixel
>
4
)
return
-
EINVAL
;
}
/*
* Set the hardware state.
*/
static
int
clps7111fb_set_par
(
struct
fb_info
*
info
)
{
unsigned
int
lcdcon
,
syscon
;
switch
(
var
->
bits_per_pixel
)
{
#ifdef FBCON_HAS_MFB
case
1
:
info
->
fix
.
visual
=
FB_VISUAL_MONO01
;
display
->
dispsw
=
&
fbcon_mfb
;
display
->
dispsw_data
=
NULL
;
break
;
#endif
#ifdef FBCON_HAS_CFB2
case
2
:
info
->
fix
.
visual
=
FB_VISUAL_PSEUDOCOLOR
;
display
->
dispsw
=
&
fbcon_cfb2
;
display
->
dispsw_data
=
NULL
;
break
;
#endif
#ifdef FBCON_HAS_CFB4
case
4
:
info
->
fix
.
visual
=
FB_VISUAL_PSEUDOCOLOR
;
display
->
dispsw
=
&
fbcon_cfb4
;
display
->
dispsw_data
=
NULL
;
break
;
#endif
default:
return
-
EINVAL
;
}
display
->
next_line
=
var
->
xres_virtual
*
var
->
bits_per_pixel
/
8
;
info
->
fix
.
line_length
=
display
->
next_line
;
display
->
line_length
=
info
->
fix
.
line_length
;
display
->
visual
=
info
->
fix
.
visual
;
display
->
type
=
info
->
fix
.
type
;
display
->
type_aux
=
info
->
fix
.
type_aux
;
display
->
ypanstep
=
info
->
fix
.
ypanstep
;
display
->
ywrapstep
=
info
->
fix
.
ywrapstep
;
display
->
can_soft_blank
=
1
;
display
->
inverse
=
0
;
info
->
var
=
*
var
;
info
->
var
.
activate
&=
~
FB_ACTIVATE_ALL
;
/*
* Update the old var. The fbcon drivers still use this.
* Once they are using cfb->var, this can be dropped.
* --rmk
*/
display
->
var
=
info
->
var
;
/*
* If we are setting all the virtual consoles, also set the
* defaults used to create new consoles.
*/
if
(
var
->
activate
&
FB_ACTIVATE_ALL
)
info
->
disp
->
var
=
info
->
var
;
if
(
chgvar
&&
info
&&
info
->
changevar
)
info
->
changevar
(
con
);
info
->
fix
.
line_length
=
info
->
var
.
xres_virtual
*
info
->
var
.
bits_per_pixel
/
8
;
/*
* LCDCON must only be changed while the LCD is disabled
*/
lcdcon
=
(
var
->
xres_virtual
*
var
->
yres_virtual
*
var
->
bits_per_pixel
)
/
128
-
1
;
lcdcon
|=
((
var
->
xres_virtual
/
16
)
-
1
)
<<
13
;
lcdcon
=
(
info
->
var
.
xres_virtual
*
info
->
var
.
yres_virtual
*
info
->
var
.
bits_per_pixel
)
/
128
-
1
;
lcdcon
|=
((
info
->
var
.
xres_virtual
/
16
)
-
1
)
<<
13
;
lcdcon
|=
2
<<
19
;
lcdcon
|=
13
<<
25
;
lcdcon
|=
LCDCON_GSEN
;
...
...
@@ -205,9 +142,6 @@ clps7111fb_set_var(struct fb_var_screeninfo *var, int con,
clps_writel
(
syscon
&
~
SYSCON1_LCDEN
,
SYSCON1
);
clps_writel
(
lcdcon
,
LCDCON
);
clps_writel
(
syscon
|
SYSCON1_LCDEN
,
SYSCON1
);
fb_set_cmap
(
&
info
->
cmap
,
1
,
info
);
return
0
;
}
...
...
@@ -260,7 +194,9 @@ static int clps7111fb_blank(int blank, struct fb_info *info)
static
struct
fb_ops
clps7111fb_ops
=
{
owner:
THIS_MODULE
,
fb_set_var:
clps7111fb_set_var
,
fb_check_var:
clps7111fb_check_var
,
fb_set_par:
clps7111fb_set_par
,
fb_set_var:
gen_set_var
,
fb_set_cmap:
gen_set_cmap
,
fb_get_fix:
gen_get_fix
,
fb_get_var:
gen_get_var
,
...
...
@@ -269,50 +205,6 @@ static struct fb_ops clps7111fb_ops = {
fb_blank:
clps7111fb_blank
,
};
static
int
clps7111fb_switch
(
int
con
,
struct
fb_info
*
info
)
{
struct
display
*
disp
;
struct
fb_cmap
*
cmap
;
if
(
info
->
currcon
>=
0
)
{
disp
=
fb_display
+
info
->
currcon
;
/*
* Save the old colormap and video mode.
*/
disp
->
var
=
info
->
var
;
if
(
disp
->
cmap
.
len
)
fb_copy_cmap
(
&
info
->
cmap
,
&
disp
->
cmap
,
0
);
}
info
->
currcon
=
con
;
disp
=
fb_display
+
con
;
/*
* Install the new colormap and change the video mode. By default,
* fbcon sets all the colormaps and video modes to the default
* values at bootup.
*/
if
(
disp
->
cmap
.
len
)
cmap
=
&
disp
->
cmap
;
else
cmap
=
fb_default_cmap
(
CMAP_SIZE
);
fb_copy_cmap
(
cmap
,
&
info
->
cmap
,
0
);
info
->
var
=
disp
->
var
;
info
->
var
.
activate
=
FB_ACTIVATE_NOW
;
clps7111fb_set_var
(
&
info
->
var
,
con
,
info
);
return
0
;
}
static
int
clps7111fb_updatevar
(
int
con
,
struct
fb_info
*
info
)
{
return
-
EINVAL
;
}
static
int
clps7111fb_proc_backlight_read
(
char
*
page
,
char
**
start
,
off_t
off
,
int
count
,
int
*
eof
,
void
*
data
)
...
...
@@ -395,8 +287,8 @@ int __init clps711xfb_init(void)
cfb
->
fbops
=
&
clps7111fb_ops
;
cfb
->
changevar
=
NULL
;
cfb
->
switch_con
=
clps7111fb
_switch
;
cfb
->
updatevar
=
clps7111fb_update
var
;
cfb
->
switch_con
=
gen
_switch
;
cfb
->
updatevar
=
gen_update_
var
;
cfb
->
flags
=
FBINFO_FLAG_DEFAULT
;
cfb
->
disp
=
(
struct
display
*
)(
cfb
+
1
);
...
...
@@ -439,7 +331,7 @@ int __init clps711xfb_init(void)
clps_writeb
(
clps_readb
(
PDDR
)
|
EDB_PD3_LCDBL
,
PDDR
);
}
clps7111fb
_set_var
(
&
cfb
->
var
,
-
1
,
cfb
);
gen
_set_var
(
&
cfb
->
var
,
-
1
,
cfb
);
err
=
register_framebuffer
(
cfb
);
out:
return
err
;
...
...
drivers/video/hpfb.c
View file @
4038102c
This diff is collapsed.
Click to expand it.
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