summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2003-05-02 20:28:36 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2003-05-02 20:28:36 -0700
commita0d0bc826aa568ca01435b39c58370de3159c542 (patch)
treefc6f2a40d6e9d193cc0f6788ec66bbf7a934dc7a
parentb5e556575fabe58f485a4610f30dc796b7d962e5 (diff)
parent449cf6a8b45815e63d473b1cb1347001ccc30e8d (diff)
Merge bk://kernel.bkbits.net/davem/net-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
-rw-r--r--arch/sparc/kernel/head.S11
-rw-r--r--arch/sparc64/defconfig27
-rw-r--r--arch/sparc64/kernel/ioctl32.c1
-rw-r--r--drivers/video/aty/Makefile1
-rw-r--r--drivers/video/aty/atyfb.h47
-rw-r--r--drivers/video/aty/atyfb_base.c342
-rw-r--r--drivers/video/aty/mach64_ct.c210
-rw-r--r--drivers/video/aty/mach64_cursor.c8
-rw-r--r--drivers/video/aty/mach64_gx.c10
-rw-r--r--drivers/video/cfbimgblt.c129
-rw-r--r--include/asm-sparc/page.h1
-rw-r--r--include/video/mach64.h75
12 files changed, 340 insertions, 522 deletions
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S
index eeb61bd00f01..0504c8638ba1 100644
--- a/arch/sparc/kernel/head.S
+++ b/arch/sparc/kernel/head.S
@@ -25,6 +25,7 @@
#include <asm/winmacro.h>
#include <asm/thread_info.h> /* TI_UWINMASK */
#include <asm/errno.h>
+#include <asm/pgtsrmmu.h> /* SRMMU_PGDIR_SHIFT */
.data
/*
@@ -623,12 +624,8 @@ srmmu_remap:
/* Ok, pull in the PTD. */
lda [%o1] ASI_M_BYPASS, %o2 ! This is the 0x0 16MB pgd
- /* Calculate to KERNBASE entry.
- *
- * XXX Should not use empirical constant, but Gas gets an XXX
- * XXX upset stomach with the bitshift I would have to use XXX
- */
- add %o1, 0x3c0, %o3
+ /* Calculate to KERNBASE entry. */
+ add %o1, KERNBASE >> (SRMMU_PGDIR_SHIFT - 2), %o3
/* Poke the entry into the calculated address. */
sta %o2, [%o3] ASI_M_BYPASS
@@ -672,7 +669,7 @@ srmmu_nviking:
sll %g1, 0x8, %g1 ! make phys addr for l1 tbl
lda [%g1] ASI_M_BYPASS, %g2 ! get level1 entry for 0x0
- add %g1, 0x3c0, %g3 ! XXX AWAY WITH EMPIRICALS
+ add %g1, KERNBASE >> (SRMMU_PGDIR_SHIFT - 2), %g3
sta %g2, [%g3] ASI_M_BYPASS ! place at KERNBASE entry
b go_to_highmem
nop ! wheee....
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index 2bee8d6047f8..f1f28cf4079c 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -619,6 +619,12 @@ CONFIG_YELLOWFIN=m
CONFIG_R8169=m
CONFIG_SK98LIN=m
CONFIG_TIGON3=m
+
+#
+# Ethernet (10000 Mbit)
+#
+CONFIG_IXGB=m
+CONFIG_IXGB_NAPI=y
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
CONFIG_SKFP=m
@@ -756,7 +762,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS=m
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_JBD=y
+CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
@@ -1047,13 +1053,29 @@ CONFIG_USB_HPUSBSCSI=m
# USB Network adaptors
#
CONFIG_USB_CATC=m
-CONFIG_USB_CDCETHER=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_USBNET=m
#
+# USB Host-to-Host Cables
+#
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_GENESYS=y
+CONFIG_USB_NET1080=y
+CONFIG_USB_PL2301=y
+
+#
+# Intelligent USB Devices/Gadgets
+#
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_ZAURUS=y
+CONFIG_USB_CDCETHER=y
+
+#
# USB port drivers
#
CONFIG_USB_USS720=m
@@ -1123,6 +1145,7 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
+CONFIG_BT_USB_SCO=y
CONFIG_BT_USB_ZERO_PACKET=y
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c
index c348b1b4b2ee..1cf550e6bafc 100644
--- a/arch/sparc64/kernel/ioctl32.c
+++ b/arch/sparc64/kernel/ioctl32.c
@@ -115,7 +115,6 @@
#define EXT2_IOC32_GETVERSION _IOR('v', 1, int)
#define EXT2_IOC32_SETVERSION _IOW('v', 2, int)
-extern asmlinkage int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);
static int w_long(unsigned int fd, unsigned int cmd, unsigned long arg)
{
diff --git a/drivers/video/aty/Makefile b/drivers/video/aty/Makefile
index 13c1024ae5c6..7515715f75cc 100644
--- a/drivers/video/aty/Makefile
+++ b/drivers/video/aty/Makefile
@@ -4,5 +4,4 @@ obj-$(CONFIG_FB_ATY128) += aty128fb.o
atyfb-y := atyfb_base.o mach64_accel.o
atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o
atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o
-atyfb-$(CONFIG_FB_ATY_XL_INIT) += xlinit.o
atyfb-objs := $(atyfb-y)
diff --git a/drivers/video/aty/atyfb.h b/drivers/video/aty/atyfb.h
index 036506a3f6f2..b342acc14c57 100644
--- a/drivers/video/aty/atyfb.h
+++ b/drivers/video/aty/atyfb.h
@@ -36,17 +36,13 @@ struct pll_ct {
u8 pll_ref_div;
u8 pll_gen_cntl;
u8 mclk_fb_div;
- u8 mclk_fb_mult; /* 2 ro 4 */
- u8 sclk_fb_div;
u8 pll_vclk_cntl;
u8 vclk_post_div;
u8 vclk_fb_div;
u8 pll_ext_cntl;
- u8 spll_cntl2;
u32 dsp_config; /* Mach64 GTB DSP */
u32 dsp_on_off; /* Mach64 GTB DSP */
u8 mclk_post_div_real;
- u8 xclk_post_div_real;
u8 vclk_post_div_real;
};
@@ -79,7 +75,6 @@ struct atyfb_par {
u32 ref_clk_per;
u32 pll_per;
u32 mclk_per;
- u32 xclk_per;
u8 bus_type;
u8 ram_type;
u8 mem_refresh_rate;
@@ -123,7 +118,7 @@ struct atyfb_par {
#define M64F_EXTRA_BRIGHT 0x00020000
#define M64F_LT_SLEEP 0x00040000
#define M64F_XL_DLL 0x00080000
-#define M64F_MFB_TIMES_4 0x00100000
+
/*
* Register access
@@ -156,33 +151,6 @@ static inline void aty_st_le32(int regindex, u32 val,
#endif
}
-static inline u16 aty_ld_le16(int regindex, const struct atyfb_par *par)
-{
- /* Hack for bloc 1, should be cleanly optimized by compiler */
- if (regindex >= 0x400)
- regindex -= 0x800;
-
-#if defined(__mc68000__)
- return le16_to_cpu(*((volatile u16 *)(par->ati_regbase + regindex)));
-#else
- return readw(par->ati_regbase + regindex);
-#endif
-}
-
-static inline void aty_st_le16(int regindex, u16 val,
- const struct atyfb_par *par)
-{
- /* Hack for bloc 1, should be cleanly optimized by compiler */
- if (regindex >= 0x400)
- regindex -= 0x800;
-
-#if defined(__mc68000__)
- *((volatile u16 *)(par->ati_regbase + regindex)) = cpu_to_le16(val);
-#else
- writew(val, par->ati_regbase + regindex);
-#endif
-}
-
static inline u8 aty_ld_8(int regindex, const struct atyfb_par *par)
{
/* Hack for bloc 1, should be cleanly optimized by compiler */
@@ -221,19 +189,6 @@ static inline u8 aty_ld_pll(int offset, const struct atyfb_par *par)
}
-/*
- * CT Family only.
- */
-static inline void aty_st_pll(int offset, u8 val,
- const struct atyfb_par *par)
-{
- /* write addr byte */
- aty_st_8(CLOCK_CNTL + 1, (offset << 2) | PLL_WR_EN, par);
- /* write the register value */
- aty_st_8(CLOCK_CNTL + 2, val, par);
- aty_st_8(CLOCK_CNTL + 1, (offset << 2) & ~PLL_WR_EN, par);
-}
-
/*
* DAC operations
*/
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
index d936ea26fbb1..1ce04c3fa002 100644
--- a/drivers/video/aty/atyfb_base.c
+++ b/drivers/video/aty/atyfb_base.c
@@ -88,6 +88,7 @@
#include <asm/backlight.h>
#endif
+
/*
* Debug flags.
*/
@@ -98,9 +99,11 @@
/* - must be aligned to a PAGE boundary */
#define GUI_RESERVE (1 * PAGE_SIZE)
+
/* FIXME: remove the FAIL definition */
#define FAIL(x) do { printk(x "\n"); return -EINVAL; } while (0)
+
/*
* The Hardware parameters for each card
*/
@@ -145,9 +148,9 @@ static int atyfb_pan_display(struct fb_var_screeninfo *var,
static int atyfb_blank(int blank, struct fb_info *info);
static int atyfb_ioctl(struct inode *inode, struct file *file, u_int cmd,
u_long arg, struct fb_info *info);
-extern void atyfb_fillrect(struct fb_info *info,const struct fb_fillrect *rect);
-extern void atyfb_copyarea(struct fb_info *info,const struct fb_copyarea *area);
-extern void atyfb_imageblit(struct fb_info *info,const struct fb_image *image);
+extern void atyfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
+extern void atyfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
+extern void atyfb_imageblit(struct fb_info *info, const struct fb_image *image);
#ifdef __sparc__
static int atyfb_mmap(struct fb_info *info, struct file *file,
struct vm_area_struct *vma);
@@ -159,9 +162,6 @@ static int atyfb_sync(struct fb_info *info);
*/
static int aty_init(struct fb_info *info, const char *name);
-#ifdef CONFIG_FB_ATY_XL_INIT
-extern int atyfb_xl_init(struct fb_info *info);
-#endif
#ifdef CONFIG_ATARI
static int store_video_par(char *videopar, unsigned char m64_num);
#endif
@@ -214,7 +214,6 @@ static char noaccel __initdata = 0;
static u32 default_vram __initdata = 0;
static int default_pll __initdata = 0;
static int default_mclk __initdata = 0;
-static int default_xclk __initdata = 0;
#ifndef MODULE
static char *mode_option __initdata = NULL;
@@ -255,8 +254,7 @@ static char m64n_gtc_bp[] __initdata = "3D RAGE PRO (BGA, PCI)";
static char m64n_gtc_pp[] __initdata = "3D RAGE PRO (PQFP, PCI)";
static char m64n_gtc_ppl[] __initdata =
"3D RAGE PRO (PQFP, PCI, limited 3D)";
-static char m64n_xl_33[] __initdata = "3D RAGE (XL PCI-33MHz)";
-static char m64n_xl_66[] __initdata = "3D RAGE (XL PCI-66MHz)";
+static char m64n_xl[] __initdata = "3D RAGE (XL)";
static char m64n_ltp_a[] __initdata = "3D RAGE LT PRO (AGP)";
static char m64n_ltp_p[] __initdata = "3D RAGE LT PRO (PCI)";
static char m64n_mob_p[] __initdata = "3D RAGE Mobility (PCI)";
@@ -267,62 +265,129 @@ static struct {
u16 pci_id, chip_type;
u8 rev_mask, rev_val;
const char *name;
- int pll, mclk, xclk;
+ int pll, mclk;
u32 features;
} aty_chips[] __initdata = {
#ifdef CONFIG_FB_ATY_GX
/* Mach64 GX */
- { 0x4758, 0x00d7, 0x00, 0x00, m64n_gx, 135, 50, 50, M64F_GX },
- { 0x4358, 0x0057, 0x00, 0x00, m64n_cx, 135, 50, 50, M64F_GX },
-#endif /* CONFIG_FB_ATY_GX */
-
+ {
+ 0x4758, 0x00d7, 0x00, 0x00, m64n_gx, 135, 50, M64F_GX}, {
+ 0x4358, 0x0057, 0x00, 0x00, m64n_cx, 135, 50, M64F_GX},
+#endif /* CONFIG_FB_ATY_GX */
#ifdef CONFIG_FB_ATY_CT
- /* Mach64 CT */
- { 0x4354, 0x4354, 0x00, 0x00, m64n_ct, 135, 60, 60, M64F_CT | M64F_INTEGRATED | M64F_CT_BUS | M64F_MAGIC_FIFO },
- { 0x4554, 0x4554, 0x00, 0x00, m64n_et, 135, 60, 60, M64F_CT | M64F_INTEGRATED | M64F_CT_BUS | M64F_MAGIC_FIFO },
-
- /* Mach64 VT */
- { 0x5654, 0x5654, 0xc7, 0x00, m64n_vta3, 170, 67, 67, M64F_VT | M64F_INTEGRATED | M64F_VT_BUS | M64F_MAGIC_FIFO | M64F_FIFO_24 },
- { 0x5654, 0x5654, 0xc7, 0x40, m64n_vta4, 200, 67, 67, M64F_VT | M64F_INTEGRATED | M64F_VT_BUS | M64F_MAGIC_FIFO | M64F_FIFO_24 | M64F_MAGIC_POSTDIV },
- { 0x5654, 0x5654, 0x00, 0x00, m64n_vtb, 200, 67, 67, M64F_VT | M64F_INTEGRATED | M64F_VT_BUS | M64F_GTB_DSP | M64F_FIFO_24 },
- { 0x5655, 0x5655, 0x00, 0x00, m64n_vtb, 200, 67, 67, M64F_VT | M64F_INTEGRATED | M64F_VT_BUS | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL },
- { 0x5656, 0x5656, 0x00, 0x00, m64n_vt4, 230, 83, 83, M64F_VT | M64F_INTEGRATED | M64F_GTB_DSP },
-
- /* Mach64 GT (3D RAGE) */
- { 0x4754, 0x4754, 0x07, 0x00, m64n_gt, 135, 63, 63, M64F_GT | M64F_INTEGRATED | M64F_MAGIC_FIFO | M64F_FIFO_24 | M64F_EXTRA_BRIGHT },
- { 0x4754, 0x4754, 0x07, 0x01, m64n_gt, 170, 67, 67, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4754, 0x4754, 0x07, 0x02, m64n_gt, 200, 67, 67, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4755, 0x4755, 0x00, 0x00, m64n_gtb, 200, 67, 67, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4756, 0x4756, 0x00, 0x00, m64n_iic_p, 230, 83, 83, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4757, 0x4757, 0x00, 0x00, m64n_iic_a, 230, 83, 83, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x475a, 0x475a, 0x00, 0x00, m64n_iic_a, 230, 83, 83, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
-
- /* Mach64 LT */
- { 0x4c54, 0x4c54, 0x00, 0x00, m64n_lt, 135, 63, 63, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP },
- { 0x4c47, 0x4c47, 0x00, 0x00, m64n_ltg, 230, 63, 63, M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT | M64F_LT_SLEEP | M64F_G3_PB_1024x768 },
-
- /* Mach64 GTC (3D RAGE PRO) */
- { 0x4742, 0x4742, 0x00, 0x00, m64n_gtc_ba, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4744, 0x4744, 0x00, 0x00, m64n_gtc_ba1, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4749, 0x4749, 0x00, 0x00, m64n_gtc_bp, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT | M64F_MAGIC_VRAM_SIZE },
- { 0x4750, 0x4750, 0x00, 0x00, m64n_gtc_pp, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
- { 0x4751, 0x4751, 0x00, 0x00, m64n_gtc_ppl, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT },
-
- /* 3D RAGE XL PCI-66/BGA */
- { 0x474f, 0x474f, 0x00, 0x00, m64n_xl_66, 230, 83, 63, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT | M64F_XL_DLL | M64F_MFB_TIMES_4 },
- /* 3D RAGE XL PCI-33/BGA */
- { 0x4752, 0x4752, 0x00, 0x00, m64n_xl_33, 230, 83, 63, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT | M64F_XL_DLL | M64F_MFB_TIMES_4 },
-
- /* Mach64 LT PRO */
- { 0x4c42, 0x4c42, 0x00, 0x00, m64n_ltp_a, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP },
- { 0x4c44, 0x4c44, 0x00, 0x00, m64n_ltp_p, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP },
- { 0x4c49, 0x4c49, 0x00, 0x00, m64n_ltp_p, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_EXTRA_BRIGHT | M64F_G3_PB_1_1 | M64F_G3_PB_1024x768 },
- { 0x4c50, 0x4c50, 0x00, 0x00, m64n_ltp_p, 230, 100, 100, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP },
-
- /* 3D RAGE Mobility */
- { 0x4c4d, 0x4c4d, 0x00, 0x00, m64n_mob_p, 230, 50, 50, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_MOBIL_BUS },
- { 0x4c4e, 0x4c4e, 0x00, 0x00, m64n_mob_a, 230, 50, 50, M64F_GT | M64F_INTEGRATED | M64F_RESET_3D | M64F_GTB_DSP | M64F_MOBIL_BUS },
-#endif /* CONFIG_FB_ATY_CT */
+ /* Mach64 CT */
+ {
+ 0x4354, 0x4354, 0x00, 0x00, m64n_ct, 135, 60,
+ M64F_CT | M64F_INTEGRATED | M64F_CT_BUS |
+ M64F_MAGIC_FIFO}, {
+ 0x4554, 0x4554, 0x00, 0x00, m64n_et, 135, 60,
+ M64F_CT | M64F_INTEGRATED | M64F_CT_BUS |
+ M64F_MAGIC_FIFO},
+ /* Mach64 VT */
+ {
+ 0x5654, 0x5654, 0xc7, 0x00, m64n_vta3, 170, 67,
+ M64F_VT | M64F_INTEGRATED | M64F_VT_BUS |
+ M64F_MAGIC_FIFO | M64F_FIFO_24}, {
+ 0x5654, 0x5654, 0xc7, 0x40, m64n_vta4, 200, 67,
+ M64F_VT | M64F_INTEGRATED | M64F_VT_BUS |
+ M64F_MAGIC_FIFO | M64F_FIFO_24 | M64F_MAGIC_POSTDIV}, {
+ 0x5654, 0x5654, 0x00, 0x00, m64n_vtb, 200, 67,
+ M64F_VT | M64F_INTEGRATED | M64F_VT_BUS |
+ M64F_GTB_DSP | M64F_FIFO_24}, {
+ 0x5655, 0x5655, 0x00, 0x00, m64n_vtb, 200, 67,
+ M64F_VT | M64F_INTEGRATED | M64F_VT_BUS |
+ M64F_GTB_DSP | M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL}, {
+ 0x5656, 0x5656, 0x00, 0x00, m64n_vt4, 230, 83,
+ M64F_VT | M64F_INTEGRATED | M64F_GTB_DSP},
+ /* Mach64 GT (3D RAGE) */
+ {
+ 0x4754, 0x4754, 0x07, 0x00, m64n_gt, 135, 63,
+ M64F_GT | M64F_INTEGRATED | M64F_MAGIC_FIFO |
+ M64F_FIFO_24 | M64F_EXTRA_BRIGHT}, {
+ 0x4754, 0x4754, 0x07, 0x01, m64n_gt, 170, 67,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4754, 0x4754, 0x07, 0x02, m64n_gt, 200, 67,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4755, 0x4755, 0x00, 0x00, m64n_gtb, 200, 67,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4756, 0x4756, 0x00, 0x00, m64n_iic_p, 230, 83,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4757, 0x4757, 0x00, 0x00, m64n_iic_a, 230, 83,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x475a, 0x475a, 0x00, 0x00, m64n_iic_a, 230, 83,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_FIFO_24 | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT},
+ /* Mach64 LT */
+ {
+ 0x4c54, 0x4c54, 0x00, 0x00, m64n_lt, 135, 63,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP}, {
+ 0x4c47, 0x4c47, 0x00, 0x00, m64n_ltg, 230, 63,
+ M64F_GT | M64F_INTEGRATED | M64F_GTB_DSP |
+ M64F_SDRAM_MAGIC_PLL | M64F_EXTRA_BRIGHT |
+ M64F_LT_SLEEP | M64F_G3_PB_1024x768},
+ /* Mach64 GTC (3D RAGE PRO) */
+ {
+ 0x4742, 0x4742, 0x00, 0x00, m64n_gtc_ba, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4744, 0x4744, 0x00, 0x00, m64n_gtc_ba1, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4749, 0x4749, 0x00, 0x00, m64n_gtc_bp, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT | M64F_MAGIC_VRAM_SIZE}, {
+ 0x4750, 0x4750, 0x00, 0x00, m64n_gtc_pp, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT}, {
+ 0x4751, 0x4751, 0x00, 0x00, m64n_gtc_ppl, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT},
+ /* 3D RAGE XL */
+ {
+ 0x4752, 0x4752, 0x00, 0x00, m64n_xl, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_SDRAM_MAGIC_PLL |
+ M64F_EXTRA_BRIGHT | M64F_XL_DLL},
+ /* Mach64 LT PRO */
+ {
+ 0x4c42, 0x4c42, 0x00, 0x00, m64n_ltp_a, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP}, {
+ 0x4c44, 0x4c44, 0x00, 0x00, m64n_ltp_p, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP}, {
+ 0x4c49, 0x4c49, 0x00, 0x00, m64n_ltp_p, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_EXTRA_BRIGHT |
+ M64F_G3_PB_1_1 | M64F_G3_PB_1024x768}, {
+ 0x4c50, 0x4c50, 0x00, 0x00, m64n_ltp_p, 230, 100,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP},
+ /* 3D RAGE Mobility */
+ {
+ 0x4c4d, 0x4c4d, 0x00, 0x00, m64n_mob_p, 230, 50,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_MOBIL_BUS}, {
+ 0x4c4e, 0x4c4e, 0x00, 0x00, m64n_mob_a, 230, 50,
+ M64F_GT | M64F_INTEGRATED | M64F_RESET_3D |
+ M64F_GTB_DSP | M64F_MOBIL_BUS},
+#endif /* CONFIG_FB_ATY_CT */
};
static char ram_dram[] __initdata = "DRAM";
@@ -938,10 +1003,7 @@ struct atyclk {
u32 ref_clk_per;
u8 pll_ref_div;
u8 mclk_fb_div;
- u8 sclk_fb_div;
u8 mclk_post_div; /* 1,2,3,4,8 */
- u8 mclk_fb_mult; /* 2 or 4 */
- u8 xclk_post_div; /* 1,2,3,4,8 */
u8 vclk_fb_div;
u8 vclk_post_div; /* 1,2,3,4,6,8,12 */
u32 dsp_xclks_per_row; /* 0-16383 */
@@ -989,17 +1051,14 @@ static int atyfb_ioctl(struct inode *inode, struct file *file, u_int cmd,
clk.ref_clk_per = par->ref_clk_per;
clk.pll_ref_div = pll->ct.pll_ref_div;
clk.mclk_fb_div = pll->ct.mclk_fb_div;
- clk.sclk_fb_div = pll->ct.sclk_fb_div;
clk.mclk_post_div = pll->ct.mclk_post_div_real;
- clk.mclk_fb_mult = pll->ct.mclk_fb_mult;
- clk.xclk_post_div = pll->ct.xclk_post_div_real;
clk.vclk_fb_div = pll->ct.vclk_fb_div;
clk.vclk_post_div = pll->ct.vclk_post_div_real;
clk.dsp_xclks_per_row = dsp_config & 0x3fff;
clk.dsp_loop_latency = (dsp_config >> 16) & 0xf;
clk.dsp_precision = (dsp_config >> 20) & 7;
- clk.dsp_off = dsp_on_off & 0x7ff;
- clk.dsp_on = (dsp_on_off >> 16) & 0x7ff;
+ clk.dsp_on = dsp_on_off & 0x7ff;
+ clk.dsp_off = (dsp_on_off >> 16) & 0x7ff;
if (copy_to_user
((struct atyclk *) arg, &clk, sizeof(clk)))
return -EFAULT;
@@ -1016,18 +1075,19 @@ static int atyfb_ioctl(struct inode *inode, struct file *file, u_int cmd,
par->ref_clk_per = clk.ref_clk_per;
pll->ct.pll_ref_div = clk.pll_ref_div;
pll->ct.mclk_fb_div = clk.mclk_fb_div;
- pll->ct.sclk_fb_div = clk.sclk_fb_div;
pll->ct.mclk_post_div_real = clk.mclk_post_div;
- pll->ct.mclk_fb_mult = clk.mclk_fb_mult;
- pll->ct.xclk_post_div_real = clk.xclk_post_div;
pll->ct.vclk_fb_div = clk.vclk_fb_div;
pll->ct.vclk_post_div_real = clk.vclk_post_div;
- pll->ct.dsp_config = (clk.dsp_xclks_per_row & 0x3fff) |
- ((clk.dsp_loop_latency & 0xf)<<16)|
- ((clk.dsp_precision & 7)<<20);
+ pll->ct.dsp_config =
+ (clk.
+ dsp_xclks_per_row & 0x3fff) | ((clk.
+ dsp_loop_latency
+ & 0xf) << 16)
| ((clk.dsp_precision & 7) << 20);
- pll->ct.dsp_on_off = (clk.dsp_off & 0x7ff) |
- ((clk.dsp_on & 0x7ff)<<16);
+ pll->ct.dsp_on_off =
+ (clk.
+ dsp_on & 0x7ff) | ((clk.
+ dsp_off & 0x7ff) << 16);
aty_calc_pll_ct(info, &pll->ct);
aty_set_pll_ct(info, pll);
} else
@@ -1192,6 +1252,8 @@ static void atyfb_palette(int enter)
}
#endif /* __sparc__ */
+
+
#ifdef CONFIG_PMAC_PBOOK
static struct fb_info *first_display = NULL;
@@ -1432,32 +1494,7 @@ static struct backlight_controller aty_backlight_controller = {
};
#endif /* CONFIG_PMAC_BACKLIGHT */
-static void __init aty_calc_mem_refresh(struct atyfb_par *par, u16 id, int xclk)
-{
- const int ragepro_tbl[] = {
- 44, 50, 55, 66, 75, 80, 100
- };
- const int ragexl_tbl[] = {
- 50, 66, 75, 83, 90, 95, 100, 105,
- 110, 115, 120, 125, 133, 143, 166
- };
- const int *refresh_tbl;
- int i, size;
-
- if (IS_XL(id)) {
- refresh_tbl = ragexl_tbl;
- size = sizeof(ragexl_tbl)/sizeof(int);
- } else {
- refresh_tbl = ragepro_tbl;
- size = sizeof(ragepro_tbl)/sizeof(int);
- }
- for (i=0; i < size; i++) {
- if (xclk < refresh_tbl[i])
- break;
- }
- par->mem_refresh_rate = i;
-}
/*
* Initialisation
@@ -1469,14 +1506,15 @@ static int __init aty_init(struct fb_info *info, const char *name)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
const char *chipname = NULL, *ramname = NULL, *xtal;
- int pll, mclk, xclk, gtb_memsize, j;
+ int j, pll, mclk, gtb_memsize;
struct fb_var_screeninfo var;
- u8 pll_ref_div, rev;
u32 chip_id, i;
+ u16 type;
+ u8 rev;
#if defined(CONFIG_PPC)
int sense;
#endif
- u16 type;
+ u8 pll_ref_div;
par->aty_cmap_regs =
(struct aty_cmap_regs *) (par->ati_regbase + 0xc0);
@@ -1490,7 +1528,6 @@ static int __init aty_init(struct fb_info *info, const char *name)
chipname = aty_chips[j].name;
pll = aty_chips[j].pll;
mclk = aty_chips[j].mclk;
- xclk = aty_chips[j].xclk;
par->features = aty_chips[j].features;
goto found;
}
@@ -1567,38 +1604,17 @@ static int __init aty_init(struct fb_info *info, const char *name)
#endif /* CONFIG_FB_ATY_GX */
#ifdef CONFIG_FB_ATY_CT
if (M64_HAS(INTEGRATED)) {
+ par->bus_type = PCI;
+ par->ram_type = (aty_ld_le32(CONFIG_STAT0, par) & 0x07);
+ ramname = aty_ct_ram[par->ram_type];
+ par->dac_ops = &aty_dac_ct;
+ par->pll_ops = &aty_pll_ct;
/* for many chips, the mclk is 67 MHz for SDRAM, 63 MHz otherwise */
if (mclk == 67 && par->ram_type < SDRAM)
mclk = 63;
}
#endif /* CONFIG_FB_ATY_CT */
- if (default_pll)
- pll = default_pll;
- if (default_mclk)
- mclk = default_mclk;
- if (default_xclk)
- xclk = default_xclk;
-
- aty_calc_mem_refresh(par, type, xclk);
- par->pll_per = 1000000/pll;
- par->mclk_per = 1000000/mclk;
- par->xclk_per = 1000000/xclk;
-
-#ifdef CONFIG_FB_ATY_CT
- if (M64_HAS(INTEGRATED)) {
- par->dac_ops = &aty_dac_ct;
- par->pll_ops = &aty_pll_ct;
- par->bus_type = PCI;
-#ifdef CONFIG_FB_ATY_XL_INIT
- if (IS_XL(type))
- atyfb_xl_init(info);
-#endif
- par->ram_type = (aty_ld_le32(CONFIG_STAT0, par) & 0x07);
- ramname = aty_ct_ram[par->ram_type];
- }
-#endif /* CONFIG_FB_ATY_CT */
-
par->ref_clk_per = 1000000000000ULL / 14318180;
xtal = "14.31818";
if (M64_HAS(GTB_DSP)
@@ -1708,10 +1724,35 @@ static int __init aty_init(struct fb_info *info, const char *name)
info->fix.accel = FB_ACCEL_ATI_MACH64GT;
}
- printk("%d%c %s, %s MHz XTAL, %d MHz PLL, %d Mhz MCLK, %d MHz XCLK\n",
- info->fix.smem_len == 0x80000 ? 512 : (info->fix.smem_len >> 20),
- info->fix.smem_len == 0x80000 ? 'K' : 'M', ramname, xtal, pll,
- mclk, xclk);
+ if (default_pll)
+ pll = default_pll;
+ if (default_mclk)
+ mclk = default_mclk;
+
+ printk("%d%c %s, %s MHz XTAL, %d MHz PLL, %d Mhz MCLK\n",
+ info->fix.smem_len ==
+ 0x80000 ? 512 : (info->fix.smem_len >> 20),
+ info->fix.smem_len == 0x80000 ? 'K' : 'M', ramname,
+ xtal, pll, mclk);
+
+ if (mclk < 44)
+ par->mem_refresh_rate = 0; /* 000 = 10 Mhz - 43 Mhz */
+ else if (mclk < 50)
+ par->mem_refresh_rate = 1; /* 001 = 44 Mhz - 49 Mhz */
+ else if (mclk < 55)
+ par->mem_refresh_rate = 2; /* 010 = 50 Mhz - 54 Mhz */
+ else if (mclk < 66)
+ par->mem_refresh_rate = 3; /* 011 = 55 Mhz - 65 Mhz */
+ else if (mclk < 75)
+ par->mem_refresh_rate = 4; /* 100 = 66 Mhz - 74 Mhz */
+ else if (mclk < 80)
+ par->mem_refresh_rate = 5; /* 101 = 75 Mhz - 79 Mhz */
+ else if (mclk < 100)
+ par->mem_refresh_rate = 6; /* 110 = 80 Mhz - 100 Mhz */
+ else
+ par->mem_refresh_rate = 7; /* 111 = 100 Mhz and above */
+ par->pll_per = 1000000 / pll;
+ par->mclk_per = 1000000 / mclk;
#ifdef DEBUG
if (M64_HAS(INTEGRATED)) {
@@ -2037,7 +2078,7 @@ int __init atyfb_init(void)
j++;
}
- if (!IS_XL(pdev->device)) {
+ if (pdev->device != XL_CHIP_ID) {
/*
* Fix PROMs idea of MEM_CNTL settings...
*/
@@ -2163,7 +2204,7 @@ int __init atyfb_init(void)
*
* where R is XTALIN (= 14318 or 29498 kHz).
*/
- if (IS_XL(pdev->device))
+ if (pdev->device == XL_CHIP_ID)
R = 29498;
else
R = 14318;
@@ -2277,25 +2318,15 @@ int __init atyfb_init(void)
return -ENOMEM;
}
memset(info, 0, sizeof(struct fb_info));
-
- default_par = kmalloc(sizeof(struct atyfb_par), GFP_ATOMIC);
- if (!default_par) {
- printk
- ("atyfb_init: can't alloc atyfb_par\n");
- kfree(info);
- return -ENXIO;
- }
- memset(default_par, 0, sizeof(struct atyfb_par));
-
- info->fix = atyfb_fix;
+ info->fix = atyfb_fix;
/*
* Map the video memory (physical address given) to somewhere in the
* kernel address space.
*/
- info->screen_base = ioremap(phys_vmembase[m64_num],
+ info->screen_base = (unsigned long)ioremap(phys_vmembase[m64_num],
phys_size[m64_num]);
- info->fix.smem_start = (unsigned long)info->screen_base; /* Fake! */
+ info->fix.smem_start = info->screen_base; /* Fake! */
default_par->ati_regbase = (unsigned long)ioremap(phys_guiregbase[m64_num],
0x10000) + 0xFC00ul;
info->fix.mmio_start = default_par->ati_regbase; /* Fake! */
@@ -2342,13 +2373,14 @@ int __init atyfb_setup(char *options)
} else if (!strncmp(this_opt, "noaccel", 7)) {
noaccel = 1;
} else if (!strncmp(this_opt, "vram:", 5))
- default_vram = simple_strtoul(this_opt + 5, NULL, 0);
+ default_vram =
+ simple_strtoul(this_opt + 5, NULL, 0);
else if (!strncmp(this_opt, "pll:", 4))
- default_pll = simple_strtoul(this_opt + 4, NULL, 0);
+ default_pll =
+ simple_strtoul(this_opt + 4, NULL, 0);
else if (!strncmp(this_opt, "mclk:", 5))
- default_mclk = simple_strtoul(this_opt + 5, NULL, 0);
- else if (!strncmp(this_opt, "xclk:", 5))
- default_xclk = simple_strtoul(this_opt+5, NULL, 0);
+ default_mclk =
+ simple_strtoul(this_opt + 5, NULL, 0);
#ifdef CONFIG_PPC
else if (!strncmp(this_opt, "vmode:", 6)) {
unsigned int vmode =
diff --git a/drivers/video/aty/mach64_ct.c b/drivers/video/aty/mach64_ct.c
index a079e47f61ed..921b7dc0200b 100644
--- a/drivers/video/aty/mach64_ct.c
+++ b/drivers/video/aty/mach64_ct.c
@@ -4,47 +4,58 @@
*/
#include <linux/fb.h>
-#include <linux/delay.h>
+
#include <asm/io.h>
+
#include <video/mach64.h>
#include "atyfb.h"
-#undef DEBUG
+/* FIXME: remove the FAIL definition */
+#define FAIL(x) do { printk(x "\n"); return -EINVAL; } while (0)
+
+static void aty_st_pll(int offset, u8 val, const struct atyfb_par *par);
static int aty_valid_pll_ct(const struct fb_info *info, u32 vclk_per,
struct pll_ct *pll);
-static int aty_dsp_gt(const struct fb_info *info, u32 bpp,
+static int aty_dsp_gt(const struct fb_info *info, u8 bpp,
struct pll_ct *pll);
static int aty_var_to_pll_ct(const struct fb_info *info, u32 vclk_per,
u8 bpp, union aty_pll *pll);
static u32 aty_pll_ct_to_var(const struct fb_info *info,
const union aty_pll *pll);
+
+
+static void aty_st_pll(int offset, u8 val, const struct atyfb_par *par)
+{
+ /* write addr byte */
+ aty_st_8(CLOCK_CNTL + 1, (offset << 2) | PLL_WR_EN, par);
+ /* write the register value */
+ aty_st_8(CLOCK_CNTL + 2, val, par);
+ aty_st_8(CLOCK_CNTL + 1, (offset << 2) & ~PLL_WR_EN, par);
+}
+
+
/* ------------------------------------------------------------------------- */
/*
* PLL programming (Mach64 CT family)
*/
-static int aty_dsp_gt(const struct fb_info *info, u32 bpp,
+static int aty_dsp_gt(const struct fb_info *info, u8 bpp,
struct pll_ct *pll)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
- u32 dsp_xclks_per_row, dsp_loop_latency, dsp_precision, dsp_off, dsp_on;
- u32 xclks_per_row, fifo_off, fifo_on, y, fifo_size;
- u32 memcntl, n, t_pfc, t_rp, t_ras, t_rcd, t_crd, t_rcc, t_lat;
-
-#ifdef DEBUG
- printk(__FUNCTION__ ": mclk_fb_mult=%d\n", pll->mclk_fb_mult);
-#endif
-
- /* (64*xclk/vclk/bpp)<<11 = xclocks_per_row<<11 */
- xclks_per_row = ((u32)pll->mclk_fb_mult * (u32)pll->mclk_fb_div *
- (u32)pll->vclk_post_div_real * 64) << 11;
- xclks_per_row /=
- (2 * (u32)pll->vclk_fb_div * (u32)pll->xclk_post_div_real * bpp);
+ u32 dsp_xclks_per_row, dsp_loop_latency, dsp_precision, dsp_off,
+ dsp_on;
+ u32 xclks_per_row, fifo_off, fifo_on, y, fifo_size, page_size;
+
+ /* xclocks_per_row<<11 */
+ xclks_per_row =
+ (pll->mclk_fb_div * pll->vclk_post_div_real * 64 << 11) /
+ (pll->vclk_fb_div * pll->mclk_post_div_real * bpp);
if (xclks_per_row < (1 << 11))
- printk("Dotclock too high\n");
+ FAIL("Dotclock to high");
if (M64_HAS(FIFO_24)) {
fifo_size = 24;
dsp_loop_latency = 0;
@@ -59,53 +70,36 @@ static int aty_dsp_gt(const struct fb_info *info, u32 bpp,
dsp_precision++;
}
dsp_precision -= 5;
-
/* fifo_off<<6 */
- fifo_off = ((xclks_per_row * (fifo_size - 1)) >> 5); // + (3 << 6);
+ fifo_off = ((xclks_per_row * (fifo_size - 1)) >> 5) + (3 << 6);
if (info->fix.smem_len > 1 * 1024 * 1024) {
- switch (par->ram_type) {
- case WRAM:
- /* >1 MB SDRAM */
- dsp_loop_latency += 9;
- n = 4;
- break;
- case SDRAM:
- case SGRAM:
+ if (par->ram_type >= SDRAM) {
/* >1 MB SDRAM */
dsp_loop_latency += 8;
- n = 2;
- break;
- default:
+ page_size = 8;
+ } else {
/* >1 MB DRAM */
dsp_loop_latency += 6;
- n = 3;
- break;
+ page_size = 9;
}
} else {
if (par->ram_type >= SDRAM) {
/* <2 MB SDRAM */
dsp_loop_latency += 9;
- n = 2;
+ page_size = 10;
} else {
/* <2 MB DRAM */
dsp_loop_latency += 8;
- n = 3;
+ page_size = 10;
}
}
-
- memcntl = aty_ld_le32(MEM_CNTL, par);
- t_rcd = ((memcntl >> 10) & 0x03) + 1;
- t_crd = ((memcntl >> 12) & 0x01);
- t_rp = ((memcntl >> 8) & 0x03) + 1;
- t_ras = ((memcntl >> 16) & 0x07) + 1;
- t_lat = (memcntl >> 4) & 0x03;
-
- t_pfc = t_rp + t_rcd + t_crd;
- t_rcc = max(t_rp + t_ras, t_pfc + n);
-
/* fifo_on<<6 */
- fifo_on = (2 * t_rcc + t_pfc + n - 1) << 6;
+ if (xclks_per_row >= (page_size << 11))
+ fifo_on =
+ ((2 * page_size + 1) << 6) + (xclks_per_row >> 5);
+ else
+ fifo_on = (3 * page_size + 2) << 6;
dsp_xclks_per_row = xclks_per_row >> dsp_precision;
dsp_on = fifo_on >> dsp_precision;
@@ -113,7 +107,7 @@ static int aty_dsp_gt(const struct fb_info *info, u32 bpp,
pll->dsp_config = (dsp_xclks_per_row & 0x3fff) |
((dsp_loop_latency & 0xf) << 16) | ((dsp_precision & 7) << 20);
- pll->dsp_on_off = (dsp_off & 0x7ff) | ((dsp_on & 0x7ff) << 16);
+ pll->dsp_on_off = (dsp_on & 0x7ff) | ((dsp_off & 0x7ff) << 16);
return 0;
}
@@ -121,21 +115,15 @@ static int aty_valid_pll_ct(const struct fb_info *info, u32 vclk_per,
struct pll_ct *pll)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
-#ifdef DEBUG
- int pllmclk, pllsclk;
-#endif
u32 q, x; /* x is a workaround for sparc64-linux-gcc */
x = x; /* x is a workaround for sparc64-linux-gcc */
pll->pll_ref_div = par->pll_per * 2 * 255 / par->ref_clk_per;
- /* FIXME: use the VTB/GTB /3 post divider if it's better suited.
- * Actually 8*q
- */
- q = par->ref_clk_per * pll->pll_ref_div * 4 / par->mclk_per;
-
+ /* FIXME: use the VTB/GTB /3 post divider if it's better suited */
+ q = par->ref_clk_per * pll->pll_ref_div * 4 / par->mclk_per; /* actually 8*q */
if (q < 16 * 8 || q > 255 * 8)
- printk(KERN_DEBUG "atyfb: mclk out of range");
+ FAIL("mclk out of range");
else if (q < 32 * 8)
pll->mclk_post_div_real = 8;
else if (q < 64 * 8)
@@ -145,44 +133,11 @@ static int aty_valid_pll_ct(const struct fb_info *info, u32 vclk_per,
else
pll->mclk_post_div_real = 1;
pll->mclk_fb_div = q * pll->mclk_post_div_real / 8;
- pll->sclk_fb_div = q*pll->mclk_post_div_real/8;
-
-#ifdef DEBUG
- pllsclk = (1000000 * 2 * pll->sclk_fb_div) /
- (par->ref_clk_per * pll->pll_ref_div);
- printk(__FUNCTION__ ": pllsclk=%d MHz, mclk=%d MHz\n",
- pllsclk, pllsclk / pll->mclk_post_div_real);
-#endif
-
- pll->mclk_fb_mult = M64_HAS(MFB_TIMES_4) ? 4 : 2;
-
- /* actually 8*q */
- q = par->ref_clk_per * pll->pll_ref_div * 8 /
- (pll->mclk_fb_mult * par->xclk_per);
-
- if (q < 16*8 || q > 255*8)
- printk(KERN_DEBUG "mclk out of range");
- else if (q < 32*8)
- pll->xclk_post_div_real = 8;
- else if (q < 64*8)
- pll->xclk_post_div_real = 4;
- else if (q < 128*8)
- pll->xclk_post_div_real = 2;
- else
- pll->xclk_post_div_real = 1;
- pll->mclk_fb_div = q*pll->xclk_post_div_real/8;
-
-#ifdef DEBUG
- pllmclk = (1000000 * pll->mclk_fb_mult * pll->mclk_fb_div) /
- (par->ref_clk_per * pll->pll_ref_div);
- printk(__FUNCTION__ ": pllmclk=%d MHz, xclk=%d MHz\n",
- pllmclk, pllmclk / pll->xclk_post_div_real);
-#endif
/* FIXME: use the VTB/GTB /{3,6,12} post dividers if they're better suited */
q = par->ref_clk_per * pll->pll_ref_div * 4 / vclk_per; /* actually 8*q */
if (q < 16 * 8 || q > 255 * 8)
- printk(KERN_DEBUG "vclk out of range");
+ FAIL("vclk out of range");
else if (q < 32 * 8)
pll->vclk_post_div_real = 8;
else if (q < 64 * 8)
@@ -198,14 +153,13 @@ static int aty_valid_pll_ct(const struct fb_info *info, u32 vclk_per,
void aty_calc_pll_ct(const struct fb_info *info, struct pll_ct *pll)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
- u8 xpostdiv = 0;
u8 mpostdiv = 0;
u8 vpostdiv = 0;
if (M64_HAS(SDRAM_MAGIC_PLL) && (par->ram_type >= SDRAM))
- pll->pll_gen_cntl = 0x64; /* mclk = sclk */
+ pll->pll_gen_cntl = 0x04;
else
- pll->pll_gen_cntl = 0xe4; /* mclk = sclk */
+ pll->pll_gen_cntl = 0x84;
switch (pll->mclk_post_div_real) {
case 1:
@@ -214,6 +168,9 @@ void aty_calc_pll_ct(const struct fb_info *info, struct pll_ct *pll)
case 2:
mpostdiv = 1;
break;
+ case 3:
+ mpostdiv = 4;
+ break;
case 4:
mpostdiv = 2;
break;
@@ -221,33 +178,12 @@ void aty_calc_pll_ct(const struct fb_info *info, struct pll_ct *pll)
mpostdiv = 3;
break;
}
- pll->spll_cntl2 = mpostdiv << 4; /* sclk == pllsclk / mpostdiv */
-
- switch (pll->xclk_post_div_real) {
- case 1:
- xpostdiv = 0;
- break;
- case 2:
- xpostdiv = 1;
- break;
- case 3:
- xpostdiv = 4;
- break;
- case 4:
- xpostdiv = 2;
- break;
- case 8:
- xpostdiv = 3;
- break;
- }
+ pll->pll_gen_cntl |= mpostdiv << 4; /* mclk */
if (M64_HAS(MAGIC_POSTDIV))
pll->pll_ext_cntl = 0;
else
- pll->pll_ext_cntl = mpostdiv; /* xclk == pllmclk / xpostdiv */
-
- if (pll->mclk_fb_mult == 4)
- pll->pll_ext_cntl |= 0x08;
+ pll->pll_ext_cntl = mpostdiv; /* xclk == mclk */
switch (pll->vclk_post_div_real) {
case 2:
@@ -305,53 +241,25 @@ void aty_set_pll_ct(const struct fb_info *info,
const union aty_pll *pll)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
-#ifdef DEBUG
- printk(__FUNCTION__ ": about to program:\n"
- "refdiv=%d, extcntl=0x%02x, mfbdiv=%d\n"
- "spllcntl2=0x%02x, sfbdiv=%d, gencntl=0x%02x\n"
- "vclkcntl=0x%02x, vpostdiv=0x%02x, vfbdiv=%d\n"
- "clocksel=%d\n",
- pll->ct.pll_ref_div, pll->ct.pll_ext_cntl,
- pll->ct.mclk_fb_div, pll->ct.spll_cntl2,
- pll->ct.sclk_fb_div, pll->ct.pll_gen_cntl,
- pll->ct.pll_vclk_cntl, pll->ct.vclk_post_div,
- pll->ct.vclk_fb_div, aty_ld_le32(CLOCK_CNTL, info) & 0x03);
-#endif
- aty_st_pll(PLL_REF_DIV, pll->ct.pll_ref_div, par);
-
- aty_st_pll(PLL_EXT_CNTL, pll->ct.pll_ext_cntl, par);
- aty_st_pll(MCLK_FB_DIV, pll->ct.mclk_fb_div, par); // for XCLK
-
- aty_st_pll(SPLL_CNTL2, pll->ct.spll_cntl2, par);
- aty_st_pll(SCLK_FB_DIV, pll->ct.sclk_fb_div, par); // for MCLK
+ aty_st_pll(PLL_REF_DIV, pll->ct.pll_ref_div, par);
aty_st_pll(PLL_GEN_CNTL, pll->ct.pll_gen_cntl, par);
-
- aty_st_pll(EXT_VPLL_CNTL, 0, par);
+ aty_st_pll(MCLK_FB_DIV, pll->ct.mclk_fb_div, par);
aty_st_pll(PLL_VCLK_CNTL, pll->ct.pll_vclk_cntl, par);
aty_st_pll(VCLK_POST_DIV, pll->ct.vclk_post_div, par);
aty_st_pll(VCLK0_FB_DIV, pll->ct.vclk_fb_div, par);
+ aty_st_pll(PLL_EXT_CNTL, pll->ct.pll_ext_cntl, par);
if (M64_HAS(GTB_DSP)) {
- u8 dll_cntl;
-
if (M64_HAS(XL_DLL))
- dll_cntl = 0x80;
+ aty_st_pll(DLL_CNTL, 0x80, par);
else if (par->ram_type >= SDRAM)
- dll_cntl = 0xa6;
+ aty_st_pll(DLL_CNTL, 0xa6, par);
else
- dll_cntl = 0xa0;
- aty_st_pll(DLL_CNTL, dll_cntl, par);
+ aty_st_pll(DLL_CNTL, 0xa0, par);
aty_st_pll(VFC_CNTL, 0x1b, par);
aty_st_le32(DSP_CONFIG, pll->ct.dsp_config, par);
aty_st_le32(DSP_ON_OFF, pll->ct.dsp_on_off, par);
-
- mdelay(10);
- aty_st_pll(DLL_CNTL, dll_cntl, par);
- mdelay(10);
- aty_st_pll(DLL_CNTL, dll_cntl | 0x40, par);
- mdelay(10);
- aty_st_pll(DLL_CNTL, dll_cntl & ~0x40, par);
}
}
diff --git a/drivers/video/aty/mach64_cursor.c b/drivers/video/aty/mach64_cursor.c
index 5c6d8675a2af..2b1bae9d57ac 100644
--- a/drivers/video/aty/mach64_cursor.c
+++ b/drivers/video/aty/mach64_cursor.c
@@ -135,10 +135,6 @@ static void aty_set_cursor(struct fb_info *info)
yoff = 0;
}
- /* In doublescan mode, the cursor location also needs to be
- doubled. */
- if (par->crtc.gen_cntl & CRTC_DBL_SCAN_EN)
- y<<=1;
wait_for_fifo(4, par);
aty_st_le32(CUR_OFFSET, (info->fix.smem_len >> 3) + (yoff << 1),
par);
@@ -168,7 +164,7 @@ int atyfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
#ifdef __sparc__
if (par->mmaped)
- return;
+ return 0;
#endif
aty_set_cursor(info);
@@ -192,7 +188,7 @@ struct aty_cursor *__init aty_init_cursor(struct fb_info *info)
info->fix.smem_len -= PAGE_SIZE;
#ifdef __sparc__
- addr = info->screen_base - 0x800000 + info->fix.smem_len;
+ addr = (unsigned long) info->screen_base - 0x800000 + info->fix.smem_len;
cursor->ram = (u8 *) addr;
#else
#ifdef __BIG_ENDIAN
diff --git a/drivers/video/aty/mach64_gx.c b/drivers/video/aty/mach64_gx.c
index 85168a32eea8..f85f0a052784 100644
--- a/drivers/video/aty/mach64_gx.c
+++ b/drivers/video/aty/mach64_gx.c
@@ -1,9 +1,11 @@
+
/*
* ATI Mach64 GX Support
*/
#include <linux/delay.h>
#include <linux/fb.h>
+#include <linux/sched.h>
#include <asm/io.h>
@@ -337,8 +339,8 @@ const struct aty_dac_ops aty_dac_att21c498 = {
* ATI 18818 / ICS 2595 Clock Chip
*/
-static int aty_var_to_pll_18818(const struct fb_info *info, u32 vclk_per,
- u8 bpp, union aty_pll *pll)
+static int aty_var_to_pll_18818(const struct fb_info *info,
+ u32 vclk_per, u8 bpp, union aty_pll *pll)
{
u32 MHz100; /* in 0.01 MHz */
u32 program_bits;
@@ -493,7 +495,7 @@ const struct aty_pll_ops aty_pll_ati18818_1 = {
* STG 1703 Clock Chip
*/
-static int aty_var_to_pll_1703(const struct fb_info *info, u32 vclk_per,
+static int aty_var_to_pll_1703(const struct fb_info *info,
u32 vclk_per, u8 bpp, union aty_pll *pll)
{
u32 mhz100; /* in 0.01 MHz */
@@ -609,7 +611,7 @@ const struct aty_pll_ops aty_pll_stg1703 = {
* Chrontel 8398 Clock Chip
*/
-static int aty_var_to_pll_8398(const struct fb_info *info, u32 vclk_per,
+static int aty_var_to_pll_8398(const struct fb_info *info,
u32 vclk_per, u8 bpp, union aty_pll *pll)
{
u32 tempA, tempB, fOut, longMHz100, diff, preDiff;
diff --git a/drivers/video/cfbimgblt.c b/drivers/video/cfbimgblt.c
index 5f6c9845d5fc..cda7a90d64a1 100644
--- a/drivers/video/cfbimgblt.c
+++ b/drivers/video/cfbimgblt.c
@@ -73,8 +73,11 @@ static u32 cfb_tab32[] = {
0x00000000, 0xffffffff
};
+#define FB_WRITEL fb_writel
+#define FB_READL fb_readl
+
#if defined (__BIG_ENDIAN)
-#define LEFT_POS(bpp) (BITS_PER_LONG - bpp)
+#define LEFT_POS(bpp) (32 - bpp)
#define SHIFT_HIGH(val, bits) ((val) >> (bits))
#define SHIFT_LOW(val, bits) ((val) << (bits))
#else
@@ -83,47 +86,27 @@ static u32 cfb_tab32[] = {
#define SHIFT_LOW(val, bits) ((val) >> (bits))
#endif
-#if BITS_PER_LONG == 32
-#define FB_WRITEL fb_writel
-#define FB_READL fb_readl
-#define INIT_FASTPATH {}
-#define FASTPATH fb_writel((end_mask & eorx)^bgx, dst++)
-#else
-#define FB_WRITEL fb_writeq
-#define FB_READL fb_readq
-#define INIT_FASTPATH unsigned long val = 0, bpl = 0
-#define FASTPATH { \
- val |= SHIFT_HIGH((end_mask & eorx)^bgx, bpl); \
- bpl += 32; \
- bpl &= BITS_PER_LONG - 1; \
- if (!bpl) { \
- FB_WRITEL(val, dst++); \
- val = 0; \
- } \
-}
-#endif
-
static inline void color_imageblit(const struct fb_image *image,
struct fb_info *p, u8 *dst1,
- unsigned long start_index,
- unsigned long pitch_index)
+ u32 start_index,
+ u32 pitch_index)
{
/* Draw the penguin */
- unsigned long *dst, *dst2, color = 0, val, shift;
+ u32 *dst, *dst2, color = 0, val, shift;
int i, n, bpp = p->var.bits_per_pixel;
- unsigned long null_bits = BITS_PER_LONG - bpp;
+ u32 null_bits = 32 - bpp;
u32 *palette = (u32 *) p->pseudo_palette;
- u8 *src = (u8 *) image->data;
+ const u8 *src = image->data;
- dst2 = (unsigned long *) dst1;
+ dst2 = (u32 *) dst1;
for (i = image->height; i--; ) {
- dst = (unsigned long *) dst1;
n = image->width;
- shift = val = 0;
+ dst = (u32 *) dst1;
+ shift = 0;
+ val = 0;
if (start_index) {
- unsigned long start_mask = ~(SHIFT_HIGH(~0UL,
- start_index));
+ u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index));
val = FB_READL(dst) & start_mask;
shift = start_index;
}
@@ -139,14 +122,14 @@ static inline void color_imageblit(const struct fb_image *image,
FB_WRITEL(val, dst++);
val = (shift == null_bits) ? 0 :
- SHIFT_LOW(color,BITS_PER_LONG - shift);
+ SHIFT_LOW(color, 32 - shift);
}
shift += bpp;
- shift &= (BITS_PER_LONG - 1);
+ shift &= (32 - 1);
src++;
}
if (shift) {
- unsigned long end_mask = SHIFT_HIGH(~0UL, shift);
+ u32 end_mask = SHIFT_HIGH(~(u32)0, shift);
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
@@ -154,41 +137,39 @@ static inline void color_imageblit(const struct fb_image *image,
if (pitch_index) {
dst2 += p->fix.line_length;
dst1 = (char *) dst2;
- (unsigned long) dst1 &= ~(sizeof(unsigned long) - 1);
+ (unsigned long) dst1 &= ~(sizeof(u32) - 1);
start_index += pitch_index;
- start_index &= BITS_PER_LONG - 1;
+ start_index &= 32 - 1;
}
}
}
-static inline void slow_imageblit(const struct fb_image *image,
- struct fb_info *p, u8 *dst1,
- unsigned long fgcolor,
- unsigned long bgcolor,
- unsigned long start_index,
- unsigned long pitch_index)
+static inline void slow_imageblit(const struct fb_image *image, struct fb_info *p,
+ u8 *dst1, u32 fgcolor,
+ u32 bgcolor,
+ u32 start_index,
+ u32 pitch_index)
{
- unsigned long shift, color = 0, bpp = p->var.bits_per_pixel;
- unsigned long *dst, *dst2, val, pitch = p->fix.line_length;
- unsigned long null_bits = BITS_PER_LONG - bpp;
- unsigned long spitch = (image->width+7)/8;
- const char *src = image->data, *s;
- unsigned long i, j, l;
+ u32 shift, color = 0, bpp = p->var.bits_per_pixel;
+ u32 *dst, *dst2, val, pitch = p->fix.line_length;
+ u32 null_bits = 32 - bpp;
+ u32 spitch = (image->width+7)/8;
+ const u8 *src = image->data, *s;
+ u32 i, j, l;
- dst2 = (unsigned long *) dst1;
+ dst2 = (u32 *) dst1;
for (i = image->height; i--; ) {
- dst = (unsigned long *) dst1;
- j = image->width;
shift = val = 0;
- s = src;
l = 8;
+ j = image->width;
+ dst = (u32 *) dst1;
+ s = src;
/* write leading bits */
if (start_index) {
- unsigned long start_mask = ~(SHIFT_HIGH(~0UL,
- start_index));
+ u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index));
val = FB_READL(dst) & start_mask;
shift = start_index;
}
@@ -203,16 +184,16 @@ static inline void slow_imageblit(const struct fb_image *image,
if (shift >= null_bits) {
FB_WRITEL(val, dst++);
val = (shift == null_bits) ? 0 :
- SHIFT_LOW(color,BITS_PER_LONG - shift);
+ SHIFT_LOW(color,32 - shift);
}
shift += bpp;
- shift &= (BITS_PER_LONG - 1);
+ shift &= (32 - 1);
if (!l) { l = 8; s++; };
}
/* write trailing bits */
if (shift) {
- unsigned long end_mask = SHIFT_HIGH(~0UL, shift);
+ u32 end_mask = SHIFT_HIGH(~(u32)0, shift);
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
@@ -222,10 +203,10 @@ static inline void slow_imageblit(const struct fb_image *image,
if (pitch_index) {
dst2 += pitch;
dst1 = (char *) dst2;
- (unsigned long) dst1 &= ~(sizeof(unsigned long) - 1);
+ (unsigned long) dst1 &= ~(sizeof(u32) - 1);
start_index += pitch_index;
- start_index &= BITS_PER_LONG - 1;
+ start_index &= 32 - 1;
}
}
@@ -239,15 +220,15 @@ static inline void slow_imageblit(const struct fb_image *image,
* fix->line_legth is divisible by 4;
* beginning and end of a scanline is dword aligned
*/
-static inline void fast_imageblit(const struct fb_image *image,
- struct fb_info *p, u8 *dst1,
- u32 fgcolor, u32 bgcolor)
+static inline void fast_imageblit(const struct fb_image *image, struct fb_info *p,
+ u8 *dst1, u32 fgcolor,
+ u32 bgcolor)
{
u32 fgx = fgcolor, bgx = bgcolor, bpp = p->var.bits_per_pixel;
- u32 ppw = BITS_PER_LONG/bpp, spitch = (image->width + 7)/8;
+ u32 ppw = 32/bpp, spitch = (image->width + 7)/8;
u32 bit_mask, end_mask, eorx, shift;
const char *s = image->data, *src;
- unsigned long *dst;
+ u32 *dst;
u32 *tab = NULL;
int i, j, k;
@@ -275,14 +256,12 @@ static inline void fast_imageblit(const struct fb_image *image,
k = image->width/ppw;
for (i = image->height; i--; ) {
- INIT_FASTPATH;
-
- dst = (unsigned long *) dst1, shift = 8; src = s;
-
+ dst = (u32 *) dst1, shift = 8; src = s;
+
for (j = k; j--; ) {
shift -= ppw;
end_mask = tab[(*src >> shift) & bit_mask];
- FASTPATH;
+ FB_WRITEL((end_mask & eorx)^bgx, dst++);
if (!shift) { shift = 8; src++; }
}
dst1 += p->fix.line_length;
@@ -292,8 +271,8 @@ static inline void fast_imageblit(const struct fb_image *image,
void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
{
- unsigned long fgcolor, bgcolor, start_index, bitstart, pitch_index = 0;
- unsigned long bpl = sizeof(unsigned long), bpp = p->var.bits_per_pixel;
+ u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0;
+ u32 bpl = sizeof(u32), bpp = p->var.bits_per_pixel;
u32 width = image->width, height = image->height;
u32 dx = image->dx, dy = image->dy;
int x2, y2, vxres, vyres;
@@ -319,7 +298,7 @@ void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
height = y2 - dy;
bitstart = (dy * p->fix.line_length * 8) + (dx * bpp);
- start_index = bitstart & (BITS_PER_LONG - 1);
+ start_index = bitstart & (32 - 1);
pitch_index = (p->fix.line_length & (bpl - 1)) * 8;
bitstart /= 8;
@@ -339,14 +318,14 @@ void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
bgcolor = image->bg_color;
}
- if (BITS_PER_LONG % bpp == 0 && !start_index && !pitch_index &&
- ((width & (BITS_PER_LONG/bpp-1)) == 0) &&
+ if (32 % bpp == 0 && !start_index && !pitch_index &&
+ ((width & (32/bpp-1)) == 0) &&
bpp >= 8 && bpp <= 32)
fast_imageblit(image, p, dst1, fgcolor, bgcolor);
else
slow_imageblit(image, p, dst1, fgcolor, bgcolor,
start_index, pitch_index);
- } else if (image->depth <= bpp)
+ } else if (image->depth == bpp)
color_imageblit(image, p, dst1, start_index, pitch_index);
}
diff --git a/include/asm-sparc/page.h b/include/asm-sparc/page.h
index 2c4560f70f1d..bed19a83acbc 100644
--- a/include/asm-sparc/page.h
+++ b/include/asm-sparc/page.h
@@ -24,7 +24,6 @@
#ifdef __KERNEL__
-/* #include <asm/head.h> XXX */ /* for KERNBASE */
#include <asm/btfixup.h>
#ifndef __ASSEMBLY__
diff --git a/include/video/mach64.h b/include/video/mach64.h
index 9a03f7fa724a..8ca47b74ac7e 100644
--- a/include/video/mach64.h
+++ b/include/video/mach64.h
@@ -558,7 +558,7 @@
#define CRTC_CSYNC_EN 0x00000010
#define CRTC_PIX_BY_2_EN 0x00000020 /* unused on RAGE */
#define CRTC_DISPLAY_DIS 0x00000040
-#define CRTC_VGA_XOVERSCAN 0x00000080
+#define CRTC_VGA_XOVERSCAN 0x00000040
#define CRTC_PIX_WIDTH_MASK 0x00000700
#define CRTC_PIX_WIDTH_4BPP 0x00000100
@@ -849,19 +849,7 @@
#define LI_CHIP_ID 0x4c49 /* RAGE LT PRO */
#define LP_CHIP_ID 0x4c50 /* RAGE LT PRO */
#define LT_CHIP_ID 0x4c54 /* RAGE LT */
-
-/* mach64CT family / (Rage XL) class */
-#define GR_CHIP_ID 0x4752 /* RAGE XL, BGA, PCI33 */
-#define GS_CHIP_ID 0x4753 /* RAGE XL, PQFP, PCI33 */
-#define GM_CHIP_ID 0x474d /* RAGE XL, BGA, AGP 1x,2x */
-#define GN_CHIP_ID 0x474e /* RAGE XL, PQFP,AGP 1x,2x */
-#define GO_CHIP_ID 0x474f /* RAGE XL, BGA, PCI66 */
-#define GL_CHIP_ID 0x474c /* RAGE XL, PQFP, PCI66 */
-
-#define IS_XL(id) ((id)==GR_CHIP_ID || (id)==GS_CHIP_ID || \
- (id)==GM_CHIP_ID || (id)==GN_CHIP_ID || \
- (id)==GO_CHIP_ID || (id)==GL_CHIP_ID)
-
+#define XL_CHIP_ID 0x4752 /* RAGE (XL) */
#define GT_CHIP_ID 0x4754 /* RAGE (GT) */
#define GU_CHIP_ID 0x4755 /* RAGE II/II+ (GTB) */
#define GV_CHIP_ID 0x4756 /* RAGE IIC, PCI */
@@ -1160,65 +1148,6 @@
#define APC_LUT_MN 0x39
#define APC_LUT_OP 0x3A
-/* Values in LCD_GEN_CTRL */
-#define CRT_ON 0x00000001ul
-#define LCD_ON 0x00000002ul
-#define HORZ_DIVBY2_EN 0x00000004ul
-#define DONT_DS_ICON 0x00000008ul
-#define LOCK_8DOT 0x00000010ul
-#define ICON_ENABLE 0x00000020ul
-#define DONT_SHADOW_VPAR 0x00000040ul
-#define V2CLK_PM_EN 0x00000080ul
-#define RST_FM 0x00000100ul
-#define DISABLE_PCLK_RESET 0x00000200ul /* XC/XL */
-#define DIS_HOR_CRT_DIVBY2 0x00000400ul
-#define SCLK_SEL 0x00000800ul
-#define SCLK_DELAY 0x0000f000ul
-#define TVCLK_PM_EN 0x00010000ul
-#define VCLK_DAC_PM_EN 0x00020000ul
-#define VCLK_LCD_OFF 0x00040000ul
-#define SELECT_WAIT_4MS 0x00080000ul
-#define XTALIN_PM_EN 0x00080000ul /* XC/XL */
-#define V2CLK_DAC_PM_EN 0x00100000ul
-#define LVDS_EN 0x00200000ul
-#define LVDS_PLL_EN 0x00400000ul
-#define LVDS_PLL_RESET 0x00800000ul
-#define LVDS_RESERVED_BITS 0x07000000ul
-#define CRTC_RW_SELECT 0x08000000ul /* LTPro */
-#define USE_SHADOWED_VEND 0x10000000ul
-#define USE_SHADOWED_ROWCUR 0x20000000ul
-#define SHADOW_EN 0x40000000ul
-#define SHADOW_RW_EN 0x80000000ul
-
-/* Values in HORZ_STRETCHING */
-#define HORZ_STRETCH_BLEND 0x00000ffful
-#define HORZ_STRETCH_RATIO 0x0000fffful
-#define HORZ_STRETCH_LOOP 0x00070000ul
-#define HORZ_STRETCH_LOOP09 0x00000000ul
-#define HORZ_STRETCH_LOOP11 0x00010000ul
-#define HORZ_STRETCH_LOOP12 0x00020000ul
-#define HORZ_STRETCH_LOOP14 0x00030000ul
-#define HORZ_STRETCH_LOOP15 0x00040000ul
-/* ? 0x00050000ul */
-/* ? 0x00060000ul */
-/* ? 0x00070000ul */
-/* ? 0x00080000ul */
-#define HORZ_PANEL_SIZE 0x0ff00000ul /* XC/XL */
-/* ? 0x10000000ul */
-#define AUTO_HORZ_RATIO 0x20000000ul /* XC/XL */
-#define HORZ_STRETCH_MODE 0x40000000ul
-#define HORZ_STRETCH_EN 0x80000000ul
-
-/* Values in VERT_STRETCHING */
-#define VERT_STRETCH_RATIO0 0x000003fful
-#define VERT_STRETCH_RATIO1 0x000ffc00ul
-#define VERT_STRETCH_RATIO2 0x3ff00000ul
-#define VERT_STRETCH_USE0 0x40000000ul
-#define VERT_STRETCH_EN 0x80000000ul
-
-/* Values in EXT_VERT_STRETCH */
-#define AUTO_VERT_RATIO 0x00400000ul
-#define VERT_STRETCH_MODE 0x00000400ul
/* Values in LCD_MISC_CNTL */
#define BIAS_MOD_LEVEL_MASK 0x0000ff00