Commit 55bcabb2 authored by James Simmons's avatar James Simmons

Sync up.

parents 975f679b 87520e1e
...@@ -9,12 +9,12 @@ Introduction ...@@ -9,12 +9,12 @@ Introduction
combinations and it seems that it works. combinations and it seems that it works.
The main page is located at <http://sstfb.sourceforge.net>, and if The main page is located at <http://sstfb.sourceforge.net>, and if
you want the latest version, check out the CVS, as the driver is a work you want the latest version, check out the CVS, as the driver is a work
in progress, i feel incomfortable with releasing tarballs of something in progress, I feel uncomfortable with releasing tarballs of something
not completely working...Don't worry, it's still more than useable not completely working...Don't worry, it's still more than useable
(I eat my own dog food) (I eat my own dog food)
Please read the Bug section, and report any success or failure to me Please read the Bug section, and report any success or failure to me
(Ghozlane Toumi <gtoumi@messel.emse.fr>). (Ghozlane Toumi <gtoumi@laposte.net>).
BTW, If you have only one monitor , and you don't feel like playing BTW, If you have only one monitor , and you don't feel like playing
with the vga passthrou cable, I can only suggest borrowing a screen with the vga passthrou cable, I can only suggest borrowing a screen
somewhere... somewhere...
...@@ -22,8 +22,9 @@ Introduction ...@@ -22,8 +22,9 @@ Introduction
Installation Installation
This driver (should) work on ix86, with any 2.2.x kernel (tested This driver (should) work on ix86, with "late" 2.2.x kernel (tested
with x = 19) and "recent" 2.4.x kernel, as a module or compiled in. with x = 19) and "recent" 2.4.x kernel, as a module or compiled in.
It has been included in mainstream kernel since the infamous 2.4.10.
You can apply the patches found in sstfb/kernel/*-2.{2|4}.x.patch, You can apply the patches found in sstfb/kernel/*-2.{2|4}.x.patch,
and copy sstfb.c to linux/drivers/video/, or apply a single patch, and copy sstfb.c to linux/drivers/video/, or apply a single patch,
sstfb/patch-2.{2|4}.x-sstfb-yymmdd to your linux source tree. sstfb/patch-2.{2|4}.x-sstfb-yymmdd to your linux source tree.
...@@ -41,7 +42,7 @@ Module Usage ...@@ -41,7 +42,7 @@ Module Usage
module, the 3dfx takes control of the output, so you'll have to module, the 3dfx takes control of the output, so you'll have to
plug the monitor to the "normal" video board in order to issue plug the monitor to the "normal" video board in order to issue
the commands, or you can blindly use sst_dbg_vgapass the commands, or you can blindly use sst_dbg_vgapass
in the tools directory (See Tools). The latest option is pass the in the tools directory (See Tools). The latest solution is pass the
parameter vgapass=1 when insmodding the driver. (See Kernel/Modules parameter vgapass=1 when insmodding the driver. (See Kernel/Modules
Options) Options)
...@@ -77,34 +78,37 @@ Kernel/Modules Options ...@@ -77,34 +78,37 @@ Kernel/Modules Options
in kernel : video=sstfb:option1,option2:value2,option3 ... in kernel : video=sstfb:option1,option2:value2,option3 ...
sstfb supports the folowing options : sstfb supports the folowing options :
module kernel description
vgapass=1 vgapass enable or disable VGA passthrou cable Module Kernel Description
vgapass=0 vganopass when enabled, the monitor will
get the signal from the VGA board
and not from the voodoo. default nopass
mem=x mem:x force frame buffer memory in MiB vgapass=0 vganopass Enable or disable VGA passthrou cable.
allowed values: 1, 2, 4. default detect vgapass=1 vgapass When enabled, the monitor will get the signal
from the VGA board and not from the voodoo.
Default: nopass
inverse=1 inverse suposed to enable inverse console. mem=x mem:x Force frame buffer memory in MiB
doesn't work ... allowed values: 0, 1, 2, 4.
Default: 0 (= autodetect)
clipping=1 clipping enable or disable clipping . with inverse=1 inverse Supposed to enable inverse console.
clipping=0 noclipping clipping enabled, all offscreen reads doesn't work yet...
and writes are disgarded. default:
enable clipping.
gfxclk=x gfxclk:x force graphic clock frequency (in MHz) clipping=1 clipping Enable or disable clipping.
becarefull with this option . clipping=0 noclipping With clipping enabled, all offscreen
default is 50Mhz for voodoo1, 75MHz reads and writes are disgarded.
for voodoo2. Be carefull, this one is Default: enable clipping.
dangerous. default=auto
slowpci=0 slowpci enable or disable fast PCI read/writes gfxclk=x gfxclk:x Force graphic clock frequency (in MHz).
slowpci=1 fastpci default : fastpci Be carefull with this option, it may be
DANGEROUS.
Default: auto
50Mhz for Voodoo 1,
75MHz for Voodoo 2.
dev=x dev:x attach the driver to device number x slowpci=1 fastpci Enable or disable fast PCI read/writes.
slowpci=1 slowpci Default : fastpci
dev=x dev:x Attach the driver to device number x.
0 is the first compatible board (in 0 is the first compatible board (in
lspci order) lspci order)
...@@ -126,8 +130,8 @@ Bugs ...@@ -126,8 +130,8 @@ Bugs
- DO NOT use glide while the sstfb module is in, you'll most likely - DO NOT use glide while the sstfb module is in, you'll most likely
hang your computer. hang your computer.
- if you see some artefacts (pixels not cleaning and stuff like that), - If you see some artefacts (pixels not cleaning and stuff like that),
try turning off clipping (clipping=0) try turning off clipping (clipping=0), and/or using slowpci
- the driver don't detect the 4Mb frame buffer voodoos, it seems that - the driver don't detect the 4Mb frame buffer voodoos, it seems that
the 2 last Mbs wrap around. looking into that . the 2 last Mbs wrap around. looking into that .
- The driver is 16 bpp only, 24/32 won't work. - The driver is 16 bpp only, 24/32 won't work.
...@@ -137,8 +141,8 @@ Bugs ...@@ -137,8 +141,8 @@ Bugs
patterns at the border of your windows (the pixels loose the lowest patterns at the border of your windows (the pixels loose the lowest
byte -> basicaly the blue component nd some of the green) . I'm unable byte -> basicaly the blue component nd some of the green) . I'm unable
to reproduce this with XFree86-3.3, but one of the testers has this to reproduce this with XFree86-3.3, but one of the testers has this
problem with XFree86-4. I don't know yet if this is the drivers fault problem with XFree86-4. apparently recent Xfree86-4.x solve this
or X's (most likely the driver, of course). problem.
- I didn't really test changing the palette, so you may find some weird - I didn't really test changing the palette, so you may find some weird
things when playing with that. things when playing with that.
- Sometimes the driver will not recognise the DAC , and the - Sometimes the driver will not recognise the DAC , and the
...@@ -147,6 +151,9 @@ Bugs ...@@ -147,6 +151,9 @@ Bugs
contact me . contact me .
- the 24/32 is not likely to work anytime soon , knowing that the - the 24/32 is not likely to work anytime soon , knowing that the
hardware does ... unusual thigs in 24/32 bpp hardware does ... unusual thigs in 24/32 bpp
- When used with anther video board, current limitations of linux
console subsystem can cause some troubles, specificaly, you should
disable software scrollback , as it can oops badly ...
Todo Todo
...@@ -154,14 +161,14 @@ Todo ...@@ -154,14 +161,14 @@ Todo
- Buy more coffee. - Buy more coffee.
- test/port to other arch. - test/port to other arch.
- try to add panning using tweeks with front and back buffer . - try to add panning using tweeks with front and back buffer .
- try to implement accel en voodoo2 , this board can actualy do a - try to implement accel on voodoo2 , this board can actualy do a
lot in 2D even if it was sold as a 3D only board ... lot in 2D even if it was sold as a 3D only board ...
ghoz. ghoz.
-- --
Ghozlane Toumi <gtoumi@messel.emse.fr> Ghozlane Toumi <gtoumi@laposte.net>
$Date: 2001/08/29 00:21:11 $ $Date: 2002/05/09 20:11:45 $
http://sstfb.sourceforge.net/README http://sstfb.sourceforge.net/README
...@@ -241,12 +241,6 @@ CONFIG_FB ...@@ -241,12 +241,6 @@ CONFIG_FB
and strongly recommended if you are compiling a kernel for an Apple and strongly recommended if you are compiling a kernel for an Apple
machine. machine.
CONFIG_FB_COMPAT_XPMAC
If you use the Xpmac X server (common with mklinux), you'll need to
say Y here to use X. You should consider changing to XFree86 which
includes a server that supports the frame buffer device directly
(XF68_FBDev).
CONFIG_SCSI CONFIG_SCSI
If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
any other SCSI device under Linux, say Y and make sure that you know any other SCSI device under Linux, say Y and make sure that you know
......
...@@ -478,9 +478,6 @@ if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then ...@@ -478,9 +478,6 @@ if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then
bool 'VGA text console' CONFIG_VGA_CONSOLE bool 'VGA text console' CONFIG_VGA_CONSOLE
fi fi
source drivers/video/Config.in source drivers/video/Config.in
if [ "$CONFIG_FB" = "y" -a "$CONFIG_ALL_PPC" = "y" ]; then
bool 'Backward compatibility mode for Xpmac' CONFIG_FB_COMPAT_XPMAC
fi
endmenu endmenu
......
...@@ -33,10 +33,6 @@ ...@@ -33,10 +33,6 @@
#include <linux/kbd_diacr.h> #include <linux/kbd_diacr.h>
#include <linux/selection.h> #include <linux/selection.h>
#ifdef CONFIG_FB_COMPAT_XPMAC
#include <asm/vc_ioctl.h>
#endif /* CONFIG_FB_COMPAT_XPMAC */
char vt_dont_switch; char vt_dont_switch;
extern struct tty_driver console_driver; extern struct tty_driver console_driver;
...@@ -1047,68 +1043,6 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, ...@@ -1047,68 +1043,6 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
return -EPERM; return -EPERM;
vt_dont_switch = 0; vt_dont_switch = 0;
return 0; return 0;
#ifdef CONFIG_FB_COMPAT_XPMAC
case VC_GETMODE:
{
struct vc_mode mode;
i = verify_area(VERIFY_WRITE, (void *) arg,
sizeof(struct vc_mode));
if (i == 0)
i = console_getmode(&mode);
if (i)
return i;
if (copy_to_user((void *) arg, &mode, sizeof(mode)))
return -EFAULT;
return 0;
}
case VC_SETMODE:
case VC_INQMODE:
{
struct vc_mode mode;
if (!perm)
return -EPERM;
if (copy_from_user(&mode, (void *) arg, sizeof(mode)))
return -EFAULT;
return console_setmode(&mode, cmd == VC_SETMODE);
}
case VC_SETCMAP:
{
unsigned char cmap[3][256], *p;
int n_entries, cmap_size, i, j;
if (!perm)
return -EPERM;
if (arg == (unsigned long) VC_POWERMODE_INQUIRY
|| arg <= VESA_POWERDOWN) {
/* compatibility hack: VC_POWERMODE
was changed from 0x766a to 0x766c */
return console_powermode((int) arg);
}
if (get_user(cmap_size, (int *) arg))
return -EFAULT;
if (cmap_size % 3)
return -EINVAL;
n_entries = cmap_size / 3;
if ((unsigned) n_entries > 256)
return -EINVAL;
p = (unsigned char *) (arg + sizeof(int));
for (j = 0; j < n_entries; ++j)
for (i = 0; i < 3; ++i)
if (get_user(cmap[i][j], p++))
return -EFAULT;
return console_setcmap(n_entries, cmap[0],
cmap[1], cmap[2]);
}
case VC_GETCMAP:
/* not implemented yet */
return -ENOIOCTLCMD;
case VC_POWERMODE:
if (!perm)
return -EPERM;
return console_powermode((int) arg);
#endif /* CONFIG_FB_COMPAT_XPMAC */
default: default:
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
} }
......
...@@ -68,6 +68,12 @@ CONFIG_FB_PM2_CVPPC ...@@ -68,6 +68,12 @@ CONFIG_FB_PM2_CVPPC
Say Y to enable support for the Amiga Phase 5 CVisionPPC BVisionPPC Say Y to enable support for the Amiga Phase 5 CVisionPPC BVisionPPC
framebuffer cards. Phase 5 is no longer with us, alas. framebuffer cards. Phase 5 is no longer with us, alas.
CONFIG_FB_PM3
This is the frame buffer device driver for the 3DLabs Permedia3
chipset, used in Formac ProFormance III, 3DLabs Oxygen VX1 &
similar boards, 3DLabs Permedia3 Create!, Appian Jeronimo 2000
and maybe other boards.
CONFIG_FB_AMIGA CONFIG_FB_AMIGA
This is the frame buffer device driver for the builtin graphics This is the frame buffer device driver for the builtin graphics
chipset found in Amigas. chipset found in Amigas.
...@@ -77,12 +83,6 @@ CONFIG_FB_AMIGA ...@@ -77,12 +83,6 @@ CONFIG_FB_AMIGA
module will be called amifb.o. If you want to compile it as a module will be called amifb.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. module, say M here and read <file:Documentation/modules.txt>.
CONFIG_FB_PM3
This is the frame buffer device driver for the 3DLabs Permedia3
chipset, used in Formac ProFormance III, 3DLabs Oxygen VX1 &
similar boards, 3DLabs Permedia3 Create!, Appian Jeronimo 2000
and maybe other boards.
CONFIG_FB_AMIGA_OCS CONFIG_FB_AMIGA_OCS
This enables support for the original Agnus and Denise video chips, This enables support for the original Agnus and Denise video chips,
found in the Amiga 1000 and most A500's and A2000's. If you intend found in the Amiga 1000 and most A500's and A2000's. If you intend
...@@ -594,7 +594,7 @@ CONFIG_FB_IMSTT ...@@ -594,7 +594,7 @@ CONFIG_FB_IMSTT
many Macintosh and compatible computers. many Macintosh and compatible computers.
CONFIG_FB_TX3912 CONFIG_FB_TX3912
The TX3912 is a Toshiba RISC processor based on the MIPS 3900 core The TX3912 is a Toshiba RISC processor based on the MIPS 3900 core;
see <http://www.toshiba.com/taec/components/Generic/risc/tx3912.htm>. see <http://www.toshiba.com/taec/components/Generic/risc/tx3912.htm>.
Say Y here to enable kernel support for the on-board framebuffer. Say Y here to enable kernel support for the on-board framebuffer.
...@@ -716,17 +716,7 @@ CONFIG_FBCON_IPLAN2P8 ...@@ -716,17 +716,7 @@ CONFIG_FBCON_IPLAN2P8
This is the low level frame buffer console driver for 8 interleaved This is the low level frame buffer console driver for 8 interleaved
bitplanes (256 colors) on Atari. bitplanes (256 colors) on Atari.
CONFIG_FBCON_MAC
This is the low level frame buffer console driver for 1/2/4/8/16/32
bits per pixel packed pixels on Mac. It supports variable font
widths for low resolution screens.
CONFIG_FBCON_HGA CONFIG_FBCON_HGA
This is the low level frame buffer console driver for Hercules mono This is the low level frame buffer console driver for Hercules mono
graphics cards. graphics cards.
CONFIG_FBCON_VGA
This is the low level frame buffer console driver for VGA text mode;
it is used by frame buffer device drivers that support VGA text
mode.
...@@ -227,41 +227,35 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -227,41 +227,35 @@ if [ "$CONFIG_FB" = "y" ]; then
tristate ' Atari interleaved bitplanes (4 planes) support' CONFIG_FBCON_IPLAN2P4 tristate ' Atari interleaved bitplanes (4 planes) support' CONFIG_FBCON_IPLAN2P4
tristate ' Atari interleaved bitplanes (8 planes) support' CONFIG_FBCON_IPLAN2P8 tristate ' Atari interleaved bitplanes (8 planes) support' CONFIG_FBCON_IPLAN2P8
# tristate ' Atari interleaved bitplanes (16 planes) support' CONFIG_FBCON_IPLAN2P16 # tristate ' Atari interleaved bitplanes (16 planes) support' CONFIG_FBCON_IPLAN2P16
tristate ' Mac variable bpp packed pixels support' CONFIG_FBCON_MAC
tristate ' VGA 16-color planar support' CONFIG_FBCON_VGA_PLANES tristate ' VGA 16-color planar support' CONFIG_FBCON_VGA_PLANES
tristate ' VGA characters/attributes support' CONFIG_FBCON_VGA
tristate ' HGA monochrome support (EXPERIMENTAL)' CONFIG_FBCON_HGA tristate ' HGA monochrome support (EXPERIMENTAL)' CONFIG_FBCON_HGA
else else
# Guess what we need # Guess what we need
if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_AMIGA" = "y" -o \ if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_AMIGA" = "y" -o \
"$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
"$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_RETINAZ3" = "y" -o \ "$CONFIG_FB_BWTWO" = "y" -o "$CONFIG_FB_RETINAZ3" = "y" -o \
"$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \ "$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CLGEN" = "y" ]; then
"$CONFIG_FB_BWTWO" = "y" ]; then
define_tristate CONFIG_FBCON_MFB y define_tristate CONFIG_FBCON_MFB y
else else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_AMIGA" = "m" -o \ if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_AMIGA" = "m" -o \
"$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
"$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_RETINAZ3" = "m" -o \ "$CONFIG_FB_BWTWO" = "m" -o "$CONFIG_FB_RETINAZ3" = "m" -o \
"$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CLGEN" = "m" ]; then
"$CONFIG_FB_BWTWO" = "m" ]; then
define_tristate CONFIG_FBCON_MFB m define_tristate CONFIG_FBCON_MFB m
fi fi
fi fi
if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_MAC" = "y" -o \ if [ "$CONFIG_FB_ACORN" = "y" ]; then
"$CONFIG_FB_SA1100" = "y" ]; then
define_tristate CONFIG_FBCON_CFB2 y define_tristate CONFIG_FBCON_CFB2 y
define_tristate CONFIG_FBCON_CFB4 y define_tristate CONFIG_FBCON_CFB4 y
else else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_MAC" = "m" -o \ if [ "$CONFIG_FB_ACORN" = "m" ]; then
"$CONFIG_FB_SA1100" = "m" ]; then
define_tristate CONFIG_FBCON_CFB2 m define_tristate CONFIG_FBCON_CFB2 m
define_tristate CONFIG_FBCON_CFB4 m define_tristate CONFIG_FBCON_CFB4 m
fi fi
fi fi
if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_ATARI" = "y" -o \ if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_ATARI" = "y" -o \
"$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_MAC" = "y" -o \ "$CONFIG_FB_P9100" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
"$CONFIG_FB_OF" = "y" -o "$CONFIG_FB_TGA" = "y" -o \ "$CONFIG_FB_RADEON" = "y" -o "$CONFIG_FB_TGA" = "y" -o \
"$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_PM3" = "y" -o \ "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
"$CONFIG_FB_TCX" = "y" -o "$CONFIG_FB_CGTHREE" = "y" -o \ "$CONFIG_FB_TCX" = "y" -o "$CONFIG_FB_CGTHREE" = "y" -o \
"$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
...@@ -270,15 +264,12 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -270,15 +264,12 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \ "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_IGA" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \ "$CONFIG_FB_IGA" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
"$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_PM2" = "y" -o \ "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
"$CONFIG_FB_P9100" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_ATY" = "y" ]; then
"$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
"$CONFIG_FB_SGIVW" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
"$CONFIG_FB_SA1100" = "y" ]; then
define_tristate CONFIG_FBCON_CFB8 y define_tristate CONFIG_FBCON_CFB8 y
else else
if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_ATARI" = "m" -o \ if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_ATARI" = "m" -o \
"$CONFIG_FB_ATY" = "m" -o "$CONFIG_FB_MAC" = "m" -o \ "$CONFIG_FB_P9100" = "m" -o "$CONFIG_FB_CYBER2000" = "m" -o \
"$CONFIG_FB_OF" = "m" -o "$CONFIG_FB_TGA" = "m" -o \ "$CONFIG_FB_RADEON" = "m" -o "$CONFIG_FB_TGA" = "m" -o \
"$CONFIG_FB_SIS" = "m" -o "$CONFIG_FB_PM3" = "m" -o \ "$CONFIG_FB_SIS" = "m" -o "$CONFIG_FB_PM3" = "m" -o \
"$CONFIG_FB_TCX" = "m" -o "$CONFIG_FB_CGTHREE" = "m" -o \ "$CONFIG_FB_TCX" = "m" -o "$CONFIG_FB_CGTHREE" = "m" -o \
"$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
...@@ -286,40 +277,31 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -286,40 +277,31 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
"$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
"$CONFIG_FB_IGA" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \ "$CONFIG_FB_IGA" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \
"$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_PM2" = "m" ]; then
"$CONFIG_FB_P9100" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
"$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
"$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_CYBER2000" = "m" -o \
"$CONFIG_FB_SA1100" = "m" ]; then
define_tristate CONFIG_FBCON_CFB8 m define_tristate CONFIG_FBCON_CFB8 m
fi fi
fi fi
if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_ATY" = "y" -o \ if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
"$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_PVR2" = "y" -o \ "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_PVR2" = "y" -o \
"$CONFIG_FB_TRIDENT" = "y" -o "$CONFIG_FB_TBOX" = "y" -o \ "$CONFIG_FB_TRIDENT" = "y" -o "$CONFIG_FB_TBOX" = "y" -o \
"$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \ "$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
"$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
"$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \ "$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
"$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \ "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \ "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
"$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \ "$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
"$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_ATY" = "y" ]; then
"$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
"$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_SA1100" = "y" ]; then
define_tristate CONFIG_FBCON_CFB16 y define_tristate CONFIG_FBCON_CFB16 y
else else
if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \ if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
"$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_PVR2" = "m" -o \ "$CONFIG_FB_RADEON" = "m" -o "$CONFIG_FB_PVR2" = "m" -o \
"$CONFIG_FB_TRIDENT" = "m" -o "$CONFIG_FB_TBOX" = "m" -o \ "$CONFIG_FB_TRIDENT" = "m" -o "$CONFIG_FB_TBOX" = "m" -o \
"$CONFIG_FB_VOODOO1" = "m" -o "$CONFIG_FB_PM3" = "m" -o \ "$CONFIG_FB_VOODOO1" = "m" -o "$CONFIG_FB_PM3" = "m" -o \
"$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
"$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
"$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
"$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \
"$CONFIG_FB_PM2" = "m" -o "$CONFIG_FB_SGIVW" = "m" -o \ "$CONFIG_FB_PM2" = "m" -o "$CONFIG_FB_CYBER2000" = "m" ]; then
"$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
"$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
"$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_RADEON" = "m" ]; then
define_tristate CONFIG_FBCON_CFB16 m define_tristate CONFIG_FBCON_CFB16 m
fi fi
fi fi
...@@ -340,26 +322,22 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -340,26 +322,22 @@ if [ "$CONFIG_FB" = "y" ]; then
define_tristate CONFIG_FBCON_CFB24 m define_tristate CONFIG_FBCON_CFB24 m
fi fi
fi fi
if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_ATY" = "y" -o \ if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
"$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_TRIDENT" = "y" -o \ "$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_TRIDENT" = "y" -o \
"$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
"$CONFIG_FB_TGA" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \ "$CONFIG_FB_TGA" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
"$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \ "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
"$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_PVR2" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
"$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \ "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_ATY" = "y" ]; then
"$CONFIG_FB_RADEON" = "y" -o "$CONFIG_FB_PVR2" = "y" -o \
"$CONFIG_FB_PM3" = "y" ]; then
define_tristate CONFIG_FBCON_CFB32 y define_tristate CONFIG_FBCON_CFB32 y
else else
if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \ if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
"$CONFIG_FB_VOODOO1" = "m" -o "$CONFIG_FB_TRIDENT" = "m" -o \ "$CONFIG_FB_VOODOO1" = "m" -o "$CONFIG_FB_TRIDENT" = "m" -o \
"$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
"$CONFIG_FB_TGA" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \ "$CONFIG_FB_TGA" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
"$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
"$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_SIS" = "m" -o "$CONFIG_FB_PVR2" = "m" -o \
"$CONFIG_FB_PM3" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \ "$CONFIG_FB_PM3" = "m" ]; then
"$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
"$CONFIG_FB_PVR2" = "m" ]; then
define_tristate CONFIG_FBCON_CFB32 m define_tristate CONFIG_FBCON_CFB32 m
fi fi
fi fi
...@@ -370,12 +348,18 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -370,12 +348,18 @@ if [ "$CONFIG_FB" = "y" ]; then
"$CONFIG_FB_VIRTUAL" = "y" -o "$CONFIG_FB_CLPS711X" = "y" -o \ "$CONFIG_FB_VIRTUAL" = "y" -o "$CONFIG_FB_CLPS711X" = "y" -o \
"$CONFIG_FB_PMAG_BA" = "y" -o "$CONFIG_FB_PMAGB_B" = "y" -o \ "$CONFIG_FB_PMAG_BA" = "y" -o "$CONFIG_FB_PMAGB_B" = "y" -o \
"$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_TX3912" = "y" -o \ "$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_TX3912" = "y" -o \
"$CONFIG_FB_MAXINE" = "y" -o "$CONFIG_FB_APOLLO" = "y" ]; then "$CONFIG_FB_MAXINE" = "y" -o "$CONFIG_FB_APOLLO" = "y" -o \
"$CONFIG_FB_ATY128" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
"$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_SA1100" = "y" -o \
"$CONFIG_FB_OF" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \
"$CONFIG_FB_ATY" = "y" ]; then
define_tristate CONFIG_FBCON_ACCEL y define_tristate CONFIG_FBCON_ACCEL y
else else
if [ "$CONFIG_FB_NEOMAGIC" = "m" -o "$CONFIG_FB_HIT" = "m" -o \ if [ "$CONFIG_FB_NEOMAGIC" = "m" -o "$CONFIG_FB_HIT" = "m" -o \
"$CONFIG_FB_G364" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \ "$CONFIG_FB_G364" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
"$CONFIG_FB_CLPS711X" = "m" -o "$CONFIG_FB_3DFX" = "m" ]; then "$CONFIG_FB_CLPS711X" = "m" -o "$CONFIG_FB_3DFX" = "m" -o \
"$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
"$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_ATY" = "m" ]; then
define_tristate CONFIG_FBCON_ACCEL m define_tristate CONFIG_FBCON_ACCEL m
fi fi
fi fi
...@@ -401,13 +385,6 @@ if [ "$CONFIG_FB" = "y" ]; then ...@@ -401,13 +385,6 @@ if [ "$CONFIG_FB" = "y" ]; then
# define_tristate CONFIG_FBCON_IPLAN2P16 m # define_tristate CONFIG_FBCON_IPLAN2P16 m
fi fi
fi fi
if [ "$CONFIG_FB_MAC" = "y" ]; then
define_tristate CONFIG_FBCON_MAC y
else
if [ "$CONFIG_FB_MAC" = "m" ]; then
define_tristate CONFIG_FBCON_MAC m
fi
fi
if [ "$CONFIG_FB_VGA16" = "y" ]; then if [ "$CONFIG_FB_VGA16" = "y" ]; then
define_tristate CONFIG_FBCON_VGA_PLANES y define_tristate CONFIG_FBCON_VGA_PLANES y
else else
......
...@@ -10,8 +10,8 @@ export-objs := fbmem.o fbcmap.o fbcon.o fbmon.o modedb.o \ ...@@ -10,8 +10,8 @@ export-objs := fbmem.o fbcmap.o fbcon.o fbmon.o modedb.o \
fbcon-vga.o fbcon-iplan2p2.o fbcon-iplan2p4.o \ fbcon-vga.o fbcon-iplan2p2.o fbcon-iplan2p4.o \
fbcon-iplan2p8.o fbcon-vga-planes.o fbcon-cfb16.o \ fbcon-iplan2p8.o fbcon-vga-planes.o fbcon-cfb16.o \
fbcon-cfb2.o fbcon-cfb24.o fbcon-cfb32.o fbcon-cfb4.o \ fbcon-cfb2.o fbcon-cfb24.o fbcon-cfb32.o fbcon-cfb4.o \
fbcon-cfb8.o fbcon-mac.o fbcon-mfb.o \ fbcon-cfb8.o fbcon-mfb.o fbcon-hga.o \
cyber2000fb.o sa1100fb.o fbcon-hga.o fbgen.o cyber2000fb.o sa1100fb.o fbgen.o
# Each configuration option enables a list of files. # Each configuration option enables a list of files.
...@@ -56,9 +56,9 @@ obj-$(CONFIG_FB_ANAKIN) += anakinfb.o cfbfillrect.o cfbcopyarea.o cfbi ...@@ -56,9 +56,9 @@ obj-$(CONFIG_FB_ANAKIN) += anakinfb.o cfbfillrect.o cfbcopyarea.o cfbi
obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_CYBER) += cyberfb.o obj-$(CONFIG_FB_CYBER) += cyberfb.o
obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o
obj-$(CONFIG_FB_SGIVW) += sgivwfb.o obj-$(CONFIG_FB_SGIVW) += sgivwfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_3DFX) += tdfxfb.o obj-$(CONFIG_FB_3DFX) += tdfxfb.o
obj-$(CONFIG_FB_MAC) += macfb.o macmodes.o obj-$(CONFIG_FB_MAC) += macfb.o macmodes.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_HP300) += hpfb.o cfbfillrect.o cfbimgblt.o obj-$(CONFIG_FB_HP300) += hpfb.o cfbfillrect.o cfbimgblt.o
obj-$(CONFIG_FB_OF) += offb.o obj-$(CONFIG_FB_OF) += offb.o
obj-$(CONFIG_FB_IMSTT) += imsttfb.o obj-$(CONFIG_FB_IMSTT) += imsttfb.o
...@@ -94,7 +94,7 @@ obj-$(CONFIG_FB_ATY) += aty/ ...@@ -94,7 +94,7 @@ obj-$(CONFIG_FB_ATY) += aty/
obj-$(CONFIG_FB_SUN3) += sun3fb.o obj-$(CONFIG_FB_SUN3) += sun3fb.o
obj-$(CONFIG_FB_BWTWO) += bwtwofb.o obj-$(CONFIG_FB_BWTWO) += bwtwofb.o
obj-$(CONFIG_FB_HGA) += hgafb.o obj-$(CONFIG_FB_HGA) += hgafb.o
obj-$(CONFIG_FB_SA1100) += sa1100fb.o obj-$(CONFIG_FB_SA1100) += sa1100fb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_VIRTUAL) += vfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o obj-$(CONFIG_FB_VIRTUAL) += vfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_HIT) += hitfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o obj-$(CONFIG_FB_HIT) += hitfb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
obj-$(CONFIG_FB_E1355) += epson1355fb.o obj-$(CONFIG_FB_E1355) += epson1355fb.o
...@@ -114,9 +114,7 @@ obj-$(CONFIG_FBCON_ILBM) += fbcon-ilbm.o ...@@ -114,9 +114,7 @@ obj-$(CONFIG_FBCON_ILBM) += fbcon-ilbm.o
obj-$(CONFIG_FBCON_IPLAN2P2) += fbcon-iplan2p2.o obj-$(CONFIG_FBCON_IPLAN2P2) += fbcon-iplan2p2.o
obj-$(CONFIG_FBCON_IPLAN2P4) += fbcon-iplan2p4.o obj-$(CONFIG_FBCON_IPLAN2P4) += fbcon-iplan2p4.o
obj-$(CONFIG_FBCON_IPLAN2P8) += fbcon-iplan2p8.o obj-$(CONFIG_FBCON_IPLAN2P8) += fbcon-iplan2p8.o
obj-$(CONFIG_FBCON_MAC) += fbcon-mac.o
obj-$(CONFIG_FBCON_MFB) += fbcon-mfb.o obj-$(CONFIG_FBCON_MFB) += fbcon-mfb.o
obj-$(CONFIG_FBCON_VGA) += fbcon-vga.o
obj-$(CONFIG_FBCON_HGA) += fbcon-hga.o obj-$(CONFIG_FBCON_HGA) += fbcon-hga.o
obj-$(CONFIG_FBCON_STI) += fbcon-sti.o obj-$(CONFIG_FBCON_STI) += fbcon-sti.o
obj-$(CONFIG_FBCON_ACCEL) += fbcon-accel.o obj-$(CONFIG_FBCON_ACCEL) += fbcon-accel.o
......
...@@ -41,9 +41,6 @@ ...@@ -41,9 +41,6 @@
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/pci-bridge.h> #include <asm/pci-bridge.h>
#include <linux/pci.h> #include <linux/pci.h>
#ifdef CONFIG_FB_COMPAT_XPMAC
#include <asm/vc_ioctl.h>
#endif
#include <video/fbcon.h> #include <video/fbcon.h>
#include <video/fbcon-cfb8.h> #include <video/fbcon-cfb8.h>
...@@ -540,22 +537,6 @@ static void __init s3triofb_of_init(struct device_node *dp) ...@@ -540,22 +537,6 @@ static void __init s3triofb_of_init(struct device_node *dp)
fb_info.setcmap = &s3triofbcon_setcmap; fb_info.setcmap = &s3triofbcon_setcmap;
#endif #endif
#ifdef CONFIG_FB_COMPAT_XPMAC
if (!console_fb_info) {
display_info.height = fb_var.yres;
display_info.width = fb_var.xres;
display_info.depth = 8;
display_info.pitch = fb_fix.line_length;
display_info.mode = 0;
strncpy(display_info.name, dp->name, sizeof(display_info.name));
display_info.fb_address = (unsigned long)fb_fix.smem_start;
display_info.disp_reg_address = address + 0x1008000;
display_info.cmap_adr_address = address + 0x1008000 + 0x3c8;
display_info.cmap_data_address = address + 0x1008000 + 0x3c9;
console_fb_info = &fb_info;
}
#endif /* CONFIG_FB_COMPAT_XPMAC) */
fb_info.flags = FBINFO_FLAG_DEFAULT; fb_info.flags = FBINFO_FLAG_DEFAULT;
if (register_framebuffer(&fb_info) < 0) if (register_framebuffer(&fb_info) < 0)
return; return;
......
...@@ -61,7 +61,6 @@ ...@@ -61,7 +61,6 @@
#include <asm/amigahw.h> #include <asm/amigahw.h>
#include <asm/amigaints.h> #include <asm/amigaints.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/io.h>
#include <video/fbcon.h> #include <video/fbcon.h>
#include <video/fbcon-afb.h> #include <video/fbcon-afb.h>
...@@ -1173,16 +1172,51 @@ static struct fb_ops amifb_ops = { ...@@ -1173,16 +1172,51 @@ static struct fb_ops amifb_ops = {
fb_set_cmap: gen_set_cmap, fb_set_cmap: gen_set_cmap,
fb_setcolreg: amifb_setcolreg, fb_setcolreg: amifb_setcolreg,
fb_pan_display: amifb_pan_display, fb_pan_display: amifb_pan_display,
fb_blankL: amifb_blank, fb_blank: amifb_blank,
fb_ioctl: amifb_ioctl, fb_ioctl: amifb_ioctl,
}; };
static void __init amifb_setup_mcap(char *spec)
{
char *p;
int vmin, vmax, hmin, hmax;
/* Format for monitor capabilities is: <Vmin>;<Vmax>;<Hmin>;<Hmax>
* <V*> vertical freq. in Hz
* <H*> horizontal freq. in kHz
*/
if (!(p = strsep(&spec, ";")) || !*p)
return;
vmin = simple_strtoul(p, NULL, 10);
if (vmin <= 0)
return;
if (!(p = strsep(&spec, ";")) || !*p)
return;
vmax = simple_strtoul(p, NULL, 10);
if (vmax <= 0 || vmax <= vmin)
return;
if (!(p = strsep(&spec, ";")) || !*p)
return;
hmin = 1000 * simple_strtoul(p, NULL, 10);
if (hmin <= 0)
return;
if (!(p = strsep(&spec, "")) || !*p)
return;
hmax = 1000 * simple_strtoul(p, NULL, 10);
if (hmax <= 0 || hmax <= hmin)
return;
fb_info.monspecs.vfmin = vmin;
fb_info.monspecs.vfmax = vmax;
fb_info.monspecs.hfmin = hmin;
fb_info.monspecs.hfmax = hmax;
}
int __init amifb_setup(char *options) int __init amifb_setup(char *options)
{ {
char *this_opt; char *this_opt;
char mcap_spec[80];
mcap_spec[0] = '\0';
fb_info.fontname[0] = '\0'; fb_info.fontname[0] = '\0';
if (!options || !*options) if (!options || !*options)
...@@ -1199,7 +1233,7 @@ int __init amifb_setup(char *options) ...@@ -1199,7 +1233,7 @@ int __init amifb_setup(char *options)
} else if (!strcmp(this_opt, "ilbm")) } else if (!strcmp(this_opt, "ilbm"))
amifb_ilbm = 1; amifb_ilbm = 1;
else if (!strncmp(this_opt, "monitorcap:", 11)) else if (!strncmp(this_opt, "monitorcap:", 11))
strcpy(mcap_spec, this_opt+11); amifb_setup_mcap(this_opt+11);
else if (!strncmp(this_opt, "font:", 5)) else if (!strncmp(this_opt, "font:", 5))
strcpy(fb_info.fontname, this_opt+5); strcpy(fb_info.fontname, this_opt+5);
else if (!strncmp(this_opt, "fstart:", 7)) else if (!strncmp(this_opt, "fstart:", 7))
...@@ -1211,43 +1245,6 @@ int __init amifb_setup(char *options) ...@@ -1211,43 +1245,6 @@ int __init amifb_setup(char *options)
if (min_fstrt < 48) if (min_fstrt < 48)
min_fstrt = 48; min_fstrt = 48;
if (*mcap_spec) {
char *p;
int vmin, vmax, hmin, hmax;
/* Format for monitor capabilities is: <Vmin>;<Vmax>;<Hmin>;<Hmax>
* <V*> vertical freq. in Hz
* <H*> horizontal freq. in kHz
*/
if (!(p = strsep(&mcap_spec, ";")) || !*p)
goto cap_invalid;
vmin = simple_strtoul(p, NULL, 10);
if (vmin <= 0)
goto cap_invalid;
if (!(p = strsep(&mcap_spec, ";")) || !*p)
goto cap_invalid;
vmax = simple_strtoul(p, NULL, 10);
if (vmax <= 0 || vmax <= vmin)
goto cap_invalid;
if (!(p = strsep(&mcap_spec, ";")) || !*p)
goto cap_invalid;
hmin = 1000 * simple_strtoul(p, NULL, 10);
if (hmin <= 0)
goto cap_invalid;
if (!(p = strsep(&mcap_spec, "")) || !*p)
goto cap_invalid;
hmax = 1000 * simple_strtoul(p, NULL, 10);
if (hmax <= 0 || hmax <= hmin)
goto cap_invalid;
fb_info.monspecs.vfmin = vmin;
fb_info.monspecs.vfmax = vmax;
fb_info.monspecs.hfmin = hmin;
fb_info.monspecs.hfmax = hmax;
cap_invalid:
;
}
return 0; return 0;
} }
......
This diff is collapsed.
...@@ -3,7 +3,7 @@ export-objs := atyfb_base.o mach64_accel.o ...@@ -3,7 +3,7 @@ export-objs := atyfb_base.o mach64_accel.o
obj-$(CONFIG_FB_ATY) += atyfb.o obj-$(CONFIG_FB_ATY) += atyfb.o
atyfb-y := atyfb_base.o mach64_accel.o atyfb-y := atyfb_base.o mach64_accel.o ../cfbimgblt.o
atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o
atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o
atyfb-objs := $(atyfb-y) atyfb-objs := $(atyfb-y)
......
/* /*
* ATI Frame Buffer Device Driver Core Definitions * ATI Frame Buffer Device Driver Core Definitions
*/ */
...@@ -31,8 +30,7 @@ struct pll_514 { ...@@ -31,8 +30,7 @@ struct pll_514 {
u8 n; u8 n;
}; };
struct pll_18818 struct pll_18818 {
{
u32 program_bits; u32 program_bits;
u32 locationAddr; u32 locationAddr;
u32 period_in_ps; u32 period_in_ps;
...@@ -59,17 +57,10 @@ union aty_pll { ...@@ -59,17 +57,10 @@ union aty_pll {
struct pll_18818 ics2595; struct pll_18818 ics2595;
}; };
/* /*
* The hardware parameters for each card * The hardware parameters for each card
*/ */
struct atyfb_par {
struct crtc crtc;
union aty_pll pll;
u32 accel_flags;
};
struct aty_cursor { struct aty_cursor {
int enable; int enable;
int on; int on;
...@@ -86,49 +77,30 @@ struct aty_cursor { ...@@ -86,49 +77,30 @@ struct aty_cursor {
struct timer_list *timer; struct timer_list *timer;
}; };
struct fb_info_aty { struct atyfb_par {
struct fb_info fb_info; struct aty_cmap_regs *aty_cmap_regs;
struct fb_info_aty *next; const struct aty_dac_ops *dac_ops;
unsigned long ati_regbase_phys; const struct aty_pll_ops *pll_ops;
struct aty_cursor *cursor;
unsigned long ati_regbase; unsigned long ati_regbase;
unsigned long frame_buffer_phys;
unsigned long frame_buffer;
unsigned long clk_wr_offset; unsigned long clk_wr_offset;
struct pci_mmap_map *mmap_map; struct crtc crtc;
struct aty_cursor *cursor; union aty_pll pll;
struct aty_cmap_regs *aty_cmap_regs;
struct { u8 red, green, blue, pad; } palette[256];
struct atyfb_par default_par;
struct atyfb_par current_par;
u32 features; u32 features;
u32 total_vram;
u32 ref_clk_per; u32 ref_clk_per;
u32 pll_per; u32 pll_per;
u32 mclk_per; u32 mclk_per;
u8 bus_type; u8 bus_type;
u8 ram_type; u8 ram_type;
u8 mem_refresh_rate; u8 mem_refresh_rate;
const struct aty_dac_ops *dac_ops;
const struct aty_pll_ops *pll_ops;
struct display disp;
struct display_switch dispsw;
union {
#ifdef FBCON_HAS_CFB16
u16 cfb16[16];
#endif
#ifdef FBCON_HAS_CFB24
u32 cfb24[16];
#endif
#ifdef FBCON_HAS_CFB32
u32 cfb32[16];
#endif
} fbcon_cmap;
u8 blitter_may_be_busy; u8 blitter_may_be_busy;
u32 accel_flags;
#ifdef __sparc__ #ifdef __sparc__
struct pci_mmap_map *mmap_map;
int consolecnt;
int vtconsole;
u8 mmaped; u8 mmaped;
int open; int open;
int vtconsole;
int consolecnt;
#endif #endif
#ifdef CONFIG_PMAC_PBOOK #ifdef CONFIG_PMAC_PBOOK
unsigned char *save_framebuffer; unsigned char *save_framebuffer;
...@@ -136,12 +108,11 @@ struct fb_info_aty { ...@@ -136,12 +108,11 @@ struct fb_info_aty {
#endif #endif
}; };
/* /*
* ATI Mach64 features * ATI Mach64 features
*/ */
#define M64_HAS(feature) ((info)->features & (M64F_##feature)) #define M64_HAS(feature) ((par)->features & (M64F_##feature))
#define M64F_RESET_3D 0x00000001 #define M64F_RESET_3D 0x00000001
#define M64F_MAGIC_FIFO 0x00000002 #define M64F_MAGIC_FIFO 0x00000002
...@@ -169,62 +140,62 @@ struct fb_info_aty { ...@@ -169,62 +140,62 @@ struct fb_info_aty {
* Register access * Register access
*/ */
static inline u32 aty_ld_le32(int regindex, static inline u32 aty_ld_le32(int regindex, const struct atyfb_par *par)
const struct fb_info_aty *info)
{ {
/* Hack for bloc 1, should be cleanly optimized by compiler */ /* Hack for bloc 1, should be cleanly optimized by compiler */
if (regindex >= 0x400) if (regindex >= 0x400)
regindex -= 0x800; regindex -= 0x800;
#if defined(__mc68000__) #if defined(__mc68000__)
return le32_to_cpu(*((volatile u32 *)(info->ati_regbase+regindex))); return
le32_to_cpu(*((volatile u32 *) (par->ati_regbase + regindex)));
#else #else
return readl (info->ati_regbase + regindex); return readl(par->ati_regbase + regindex);
#endif #endif
} }
static inline void aty_st_le32(int regindex, u32 val, static inline void aty_st_le32(int regindex, u32 val,
const struct fb_info_aty *info) const struct atyfb_par *par)
{ {
/* Hack for bloc 1, should be cleanly optimized by compiler */ /* Hack for bloc 1, should be cleanly optimized by compiler */
if (regindex >= 0x400) if (regindex >= 0x400)
regindex -= 0x800; regindex -= 0x800;
#if defined(__mc68000__) #if defined(__mc68000__)
*((volatile u32 *)(info->ati_regbase+regindex)) = cpu_to_le32(val); *((volatile u32 *) (par->ati_regbase + regindex)) =
cpu_to_le32(val);
#else #else
writel (val, info->ati_regbase + regindex); writel(val, par->ati_regbase + regindex);
#endif #endif
} }
static inline u8 aty_ld_8(int regindex, static inline u8 aty_ld_8(int regindex, const struct atyfb_par *par)
const struct fb_info_aty *info)
{ {
/* Hack for bloc 1, should be cleanly optimized by compiler */ /* Hack for bloc 1, should be cleanly optimized by compiler */
if (regindex >= 0x400) if (regindex >= 0x400)
regindex -= 0x800; regindex -= 0x800;
return readb (info->ati_regbase + regindex); return readb(par->ati_regbase + regindex);
} }
static inline void aty_st_8(int regindex, u8 val, static inline void aty_st_8(int regindex, u8 val,
const struct fb_info_aty *info) const struct atyfb_par *par)
{ {
/* Hack for bloc 1, should be cleanly optimized by compiler */ /* Hack for bloc 1, should be cleanly optimized by compiler */
if (regindex >= 0x400) if (regindex >= 0x400)
regindex -= 0x800; regindex -= 0x800;
writeb (val, info->ati_regbase + regindex); writeb(val, par->ati_regbase + regindex);
} }
static inline u8 aty_ld_pll(int offset, const struct fb_info_aty *info) static inline u8 aty_ld_pll(int offset, const struct atyfb_par *par)
{ {
u8 res; u8 res;
/* write addr byte */ /* write addr byte */
aty_st_8(CLOCK_CNTL + 1, (offset << 2), info); aty_st_8(CLOCK_CNTL + 1, (offset << 2), par);
/* read the register value */ /* read the register value */
res = aty_ld_8(CLOCK_CNTL + 2, info); res = aty_ld_8(CLOCK_CNTL + 2, par);
return res; return res;
} }
...@@ -234,8 +205,8 @@ static inline u8 aty_ld_pll(int offset, const struct fb_info_aty *info) ...@@ -234,8 +205,8 @@ static inline u8 aty_ld_pll(int offset, const struct fb_info_aty *info)
*/ */
struct aty_dac_ops { struct aty_dac_ops {
int (*set_dac)(const struct fb_info_aty *info, const union aty_pll *pll, int (*set_dac) (const struct fb_info * info,
u32 bpp, u32 accel); const union aty_pll * pll, u32 bpp, u32 accel);
}; };
extern const struct aty_dac_ops aty_dac_ibm514; /* IBM RGB514 */ extern const struct aty_dac_ops aty_dac_ibm514; /* IBM RGB514 */
...@@ -250,11 +221,12 @@ extern const struct aty_dac_ops aty_dac_ct; /* Integrated */ ...@@ -250,11 +221,12 @@ extern const struct aty_dac_ops aty_dac_ct; /* Integrated */
*/ */
struct aty_pll_ops { struct aty_pll_ops {
int (*var_to_pll)(const struct fb_info_aty *info, u32 vclk_per, u8 bpp, int (*var_to_pll) (const struct fb_info * info, u32 vclk_per,
union aty_pll *pll); u8 bpp, union aty_pll * pll);
u32 (*pll_to_var)(const struct fb_info_aty *info, u32(*pll_to_var) (const struct fb_info * info,
const union aty_pll *pll); const union aty_pll * pll);
void (*set_pll)(const struct fb_info_aty *info, const union aty_pll *pll); void (*set_pll) (const struct fb_info * info,
const union aty_pll * pll);
}; };
extern const struct aty_pll_ops aty_pll_ati18818_1; /* ATI 18818 */ extern const struct aty_pll_ops aty_pll_ati18818_1; /* ATI 18818 */
...@@ -266,9 +238,9 @@ extern const struct aty_pll_ops aty_pll_unsupported; /* unsupported */ ...@@ -266,9 +238,9 @@ extern const struct aty_pll_ops aty_pll_unsupported; /* unsupported */
extern const struct aty_pll_ops aty_pll_ct; /* Integrated */ extern const struct aty_pll_ops aty_pll_ct; /* Integrated */
extern void aty_set_pll_ct(const struct fb_info_aty *info, extern void aty_set_pll_ct(const struct fb_info *info,
const union aty_pll *pll); const union aty_pll *pll);
extern void aty_calc_pll_ct(const struct fb_info_aty *info, extern void aty_calc_pll_ct(const struct fb_info *info,
struct pll_ct *pll); struct pll_ct *pll);
...@@ -276,10 +248,10 @@ extern void aty_calc_pll_ct(const struct fb_info_aty *info, ...@@ -276,10 +248,10 @@ extern void aty_calc_pll_ct(const struct fb_info_aty *info,
* Hardware cursor support * Hardware cursor support
*/ */
extern struct aty_cursor *aty_init_cursor(struct fb_info_aty *fb); extern struct aty_cursor *aty_init_cursor(struct fb_info *info);
extern void atyfb_cursor(struct display *p, int mode, int x, int y); extern void atyfb_cursor(struct display *p, int mode, int x, int y);
extern void aty_set_cursor_color(struct fb_info_aty *fb); extern void aty_set_cursor_color(struct fb_info *info);
extern void aty_set_cursor_shape(struct fb_info_aty *fb); extern void aty_set_cursor_shape(struct fb_info *info);
extern int atyfb_set_font(struct display *d, int width, int height); extern int atyfb_set_font(struct display *d, int width, int height);
...@@ -287,25 +259,23 @@ extern int atyfb_set_font(struct display *d, int width, int height); ...@@ -287,25 +259,23 @@ extern int atyfb_set_font(struct display *d, int width, int height);
* Hardware acceleration * Hardware acceleration
*/ */
static inline void wait_for_fifo(u16 entries, const struct fb_info_aty *info) static inline void wait_for_fifo(u16 entries, const struct atyfb_par *par)
{ {
while ((aty_ld_le32(FIFO_STAT, info) & 0xffff) > while ((aty_ld_le32(FIFO_STAT, par) & 0xffff) >
((u32)(0x8000 >> entries))); ((u32) (0x8000 >> entries)));
} }
static inline void wait_for_idle(struct fb_info_aty *info) static inline void wait_for_idle(struct atyfb_par *par)
{ {
wait_for_fifo(16, info); wait_for_fifo(16, par);
while ((aty_ld_le32(GUI_STAT, info) & 1)!= 0); while ((aty_ld_le32(GUI_STAT, par) & 1) != 0);
info->blitter_may_be_busy = 0; par->blitter_may_be_busy = 0;
} }
extern void aty_reset_engine(const struct fb_info_aty *info); extern void aty_reset_engine(const struct atyfb_par *par);
extern void aty_init_engine(const struct atyfb_par *par, extern void aty_init_engine(struct atyfb_par *par,
struct fb_info_aty *info); struct fb_info *info);
extern void aty_rectfill(int dstx, int dsty, u_int width, u_int height, extern void atyfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);
u_int color, struct fb_info_aty *info);
/* /*
* Text console acceleration * Text console acceleration
...@@ -315,4 +285,3 @@ extern const struct display_switch fbcon_aty8; ...@@ -315,4 +285,3 @@ extern const struct display_switch fbcon_aty8;
extern const struct display_switch fbcon_aty16; extern const struct display_switch fbcon_aty16;
extern const struct display_switch fbcon_aty24; extern const struct display_switch fbcon_aty24;
extern const struct display_switch fbcon_aty32; extern const struct display_switch fbcon_aty32;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -132,7 +132,7 @@ extern int pmagbafb_init(void); ...@@ -132,7 +132,7 @@ extern int pmagbafb_init(void);
extern int pmagbbfb_init(void); extern int pmagbbfb_init(void);
extern void maxinefb_init(void); extern void maxinefb_init(void);
extern int tx3912fb_init(void); extern int tx3912fb_init(void);
extern int tx3912fb_setup(char*); extern void tx3912fb_setup(char*);
extern int radeonfb_init(void); extern int radeonfb_init(void);
extern int radeonfb_setup(char*); extern int radeonfb_setup(char*);
extern int e1355fb_init(void); extern int e1355fb_init(void);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment