summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/amd.h17
-rw-r--r--src/amd_common.c1
-rw-r--r--src/amd_gx_driver.c14
-rw-r--r--src/amd_gx_rotate.c6
-rw-r--r--src/amd_gx_video.c5
-rw-r--r--src/amd_lx_driver.c14
-rw-r--r--src/amd_lx_exa.c4
-rw-r--r--src/amd_lx_rotate.c8
-rw-r--r--src/amd_msr.c1
-rw-r--r--src/durango.c1
-rw-r--r--src/gfx/gfx_init.c2
-rw-r--r--src/gfx/msr_rdcl.c4
-rw-r--r--src/gfx/vid_rdcl.c10
-rw-r--r--src/panel/gx2_9211.c2
14 files changed, 49 insertions, 40 deletions
diff --git a/src/amd.h b/src/amd.h
index 868fa25..b360353 100644
--- a/src/amd.h
+++ b/src/amd.h
@@ -37,6 +37,7 @@
#include <X11/extensions/randr.h>
#include "xf86xv.h"
+#include "randrstr.h"
/* We only support EXA version >=2 */
@@ -167,6 +168,7 @@ extern unsigned short gfx_inw(unsigned short port);
extern void gfx_outw(unsigned short port, unsigned short data);
extern unsigned long gfx_ind(unsigned short port);
extern void gfx_outd(unsigned short port, unsigned long data);
+void gfx_reset_pitch(unsigned short pitch);
#define Q_WORD QQ_WORD
#include "gfx_rtns.h"
@@ -283,7 +285,7 @@ typedef struct _geodeRec
unsigned long FBLinearAddr;
unsigned char *FBBase;
- unsigned int FBAvail;
+ int FBAvail;
unsigned int FBOffset;
unsigned int FBSize;
@@ -306,7 +308,7 @@ typedef struct _geodeRec
ExaDriverPtr pExa;
unsigned int exaBfrOffset;
- unsigned int exaBfrSz;
+ int exaBfrSz;
/* XAA structures */
unsigned char **AccelImageWriteBuffers;
@@ -478,6 +480,7 @@ int GeodeGetFPGeometry(const char *str, int *width, int *height);
void GeodePointerMoved(int index, int x, int y);
void GeodeFreeScreen(int scrnIndex, int flags);
int GeodeCalculatePitchBytes(unsigned int width, unsigned int bpp);
+void GXSetupChipsetFPtr(ScrnInfoPtr pScrn);
/* amd_msr.c */
int GeodeReadMSR(unsigned long addr, unsigned long *lo, unsigned long *hi);
@@ -492,16 +495,21 @@ void GXShowCursor(ScrnInfoPtr pScrni);
/* amd_gx_randr.c */
Rotation GXGetRotation(ScreenPtr pScreen);
Bool GXRandRInit(ScreenPtr pScreen, int rotation);
+Bool GXRandRSetConfig(ScreenPtr, Rotation, int, RRScreenSizePtr);
/* amd_gx_rotate.c */
Bool GXRotate(ScrnInfoPtr pScrni, DisplayModePtr mode);
/* amd_gx_accel.c */
Bool GXAccelInit(ScreenPtr pScrn);
+void GXAccelSync(ScrnInfoPtr pScrni);
/* amd_gx_video.c */
void GXInitVideo(ScreenPtr pScrn);
+/* amd_lx_driver.c */
+void LXSetupChipsetFPtr(ScrnInfoPtr pScrn);
+
/* amd_lx_cursor.c */
Bool LXHWCursorInit(ScreenPtr pScrn);
void LXLoadCursorImage(ScrnInfoPtr pScrni, unsigned char *src);
@@ -511,6 +519,7 @@ void LXShowCursor(ScrnInfoPtr pScrni);
/* amd_lx_randr.c */
Rotation LXGetRotation(ScreenPtr pScreen);
Bool LXRandRInit(ScreenPtr pScreen, int rotation);
+Bool LXRandRSetConfig(ScreenPtr, Rotation, int, RRScreenSizePtr);
/* amd_lx_rotate.c */
Bool LXSetRotatePitch(ScrnInfoPtr pScrni);
@@ -521,5 +530,9 @@ Bool LXExaInit(ScreenPtr pScreen);
/* amd_lx_video.c */
void LXInitVideo(ScreenPtr pScrn);
+void LXDisplayVideo(ScrnInfoPtr pScrni, int id, short width, short height,
+ BoxPtr dstBox, short srcW, short srcH, short drawW, short drawH);
+void LXStopVideo(ScrnInfoPtr pScrni, pointer data, Bool exit);
+void LXResetVideo(ScrnInfoPtr pScrni);
#endif /* _AMD_GEODE_H_ */
diff --git a/src/amd_common.c b/src/amd_common.c
index f7e0d73..86a8e86 100644
--- a/src/amd_common.c
+++ b/src/amd_common.c
@@ -31,6 +31,7 @@
#endif
#include "xf86.h"
+#include "amd.h"
#define move0(d,s,n) \
__asm__ __volatile__( \
diff --git a/src/amd_gx_driver.c b/src/amd_gx_driver.c
index 922dbb5..a739019 100644
--- a/src/amd_gx_driver.c
+++ b/src/amd_gx_driver.c
@@ -1154,10 +1154,7 @@ GXCreateScreenResources(ScreenPtr pScreen)
if (!(*pScreen->CreateScreenResources) (pScreen))
return FALSE;
- if (xf86LoaderCheckSymbol("GXRandRSetConfig")
- && pGeode->rotation != RR_Rotate_0) {
- Rotation(*GXRandRSetConfig) (ScreenPtr pScreen, Rotation rr, int rate,
- RRScreenSizePtr pSize) = NULL;
+ if (pGeode->rotation != RR_Rotate_0) {
RRScreenSize p;
Rotation requestedRotation = pGeode->rotation;
@@ -1170,12 +1167,9 @@ GXCreateScreenResources(ScreenPtr pScreen)
p.mmWidth = pScreen->mmWidth;
p.mmHeight = pScreen->mmHeight;
- GXRandRSetConfig = LoaderSymbol("GXRandRSetConfig");
- if (GXRandRSetConfig) {
- pGeode->starting = TRUE;
- (*GXRandRSetConfig) (pScreen, requestedRotation, 0, &p);
- pGeode->starting = FALSE;
- }
+ pGeode->starting = TRUE;
+ GXRandRSetConfig(pScreen, requestedRotation, 0, &p);
+ pGeode->starting = FALSE;
}
return TRUE;
diff --git a/src/amd_gx_rotate.c b/src/amd_gx_rotate.c
index 3e464ca..0b81851 100644
--- a/src/amd_gx_rotate.c
+++ b/src/amd_gx_rotate.c
@@ -135,10 +135,10 @@ GXRotate(ScrnInfoPtr pScrni, DisplayModePtr mode)
shadowAdd(pScrni->pScreen, pPixmap, GXUpdate, GXWindowLinear,
pGeode->rotation, NULL);
- /* XXX - FIXME - bail gracefully */
-
- if (!ret)
+ if (!ret) {
ErrorF("shadowAdd failed\n");
+ goto error;
+ }
}
if (pGeode->rotation == RR_Rotate_0)
diff --git a/src/amd_gx_video.c b/src/amd_gx_video.c
index 9322da4..d0c48e1 100644
--- a/src/amd_gx_video.c
+++ b/src/amd_gx_video.c
@@ -764,6 +764,8 @@ static int top, left, npixels, nlines;
static int offset, s1offset = 0, s2offset = 0, s3offset = 0;
static unsigned char *dst_start;
static int d2offset = 0, d3offset = 0;
+
+#if 0
static Bool
RegionsIntersect(BoxPtr pRcl1, BoxPtr pRcl2, BoxPtr pRclResult)
{
@@ -781,6 +783,7 @@ RegionsIntersect(BoxPtr pRcl1, BoxPtr pRcl2, BoxPtr pRclResult)
return (FALSE);
}
+#endif
void
GXSetVideoPosition(int x, int y, int width, int height,
@@ -792,7 +795,9 @@ GXSetVideoPosition(int x, int y, int width, int height,
unsigned long lines = 0;
unsigned long y_extra, uv_extra = 0;
unsigned long startAddress;
+#if 0
BoxRec ovly, display, result;
+#endif
xend = x + drw_w;
yend = y + drw_h;
diff --git a/src/amd_lx_driver.c b/src/amd_lx_driver.c
index 6f99e8f..099e40f 100644
--- a/src/amd_lx_driver.c
+++ b/src/amd_lx_driver.c
@@ -1166,10 +1166,7 @@ LXCreateScreenResources(ScreenPtr pScreen)
if (!(*pScreen->CreateScreenResources) (pScreen))
return FALSE;
- if (xf86LoaderCheckSymbol("LXRandRSetConfig")
- && pGeode->rotation != RR_Rotate_0) {
- Rotation(*LXRandRSetConfig) (ScreenPtr pScreen, Rotation rr, int rate,
- RRScreenSizePtr pSize) = NULL;
+ if (pGeode->rotation != RR_Rotate_0) {
RRScreenSize p;
Rotation requestedRotation = pGeode->rotation;
@@ -1182,12 +1179,9 @@ LXCreateScreenResources(ScreenPtr pScreen)
p.mmWidth = pScreen->mmWidth;
p.mmHeight = pScreen->mmHeight;
- LXRandRSetConfig = LoaderSymbol("LXRandRSetConfig");
- if (LXRandRSetConfig) {
- pGeode->starting = TRUE;
- (*LXRandRSetConfig) (pScreen, requestedRotation, 0, &p);
- pGeode->starting = FALSE;
- }
+ pGeode->starting = TRUE;
+ LXRandRSetConfig(pScreen, requestedRotation, 0, &p);
+ pGeode->starting = FALSE;
}
return TRUE;
diff --git a/src/amd_lx_exa.c b/src/amd_lx_exa.c
index 4b25908..7918523 100644
--- a/src/amd_lx_exa.c
+++ b/src/amd_lx_exa.c
@@ -625,7 +625,7 @@ static Bool lx_prepare_composite(int op, PicturePtr pSrc, PicturePtr pMsk,
return TRUE;
}
-int lx_get_bpp_from_format(int format) {
+static int lx_get_bpp_from_format(int format) {
switch(format) {
case CIMGP_SOURCE_FMT_8_8_8_8:
@@ -993,7 +993,7 @@ static Bool lx_upload(PixmapPtr pDst, int x, int y, int w, int h,
gp_set_solid_pattern(0);
offset = ((unsigned long) dst) - ((unsigned long) pGeode->FBBase);
- gp_color_bitmap_to_screen_blt(offset, 0, w, h, src, src_pitch);
+ gp_color_bitmap_to_screen_blt(offset, 0, w, h, (unsigned char *)src, src_pitch);
return TRUE;
}
diff --git a/src/amd_lx_rotate.c b/src/amd_lx_rotate.c
index cb28ec4..b803b74 100644
--- a/src/amd_lx_rotate.c
+++ b/src/amd_lx_rotate.c
@@ -44,7 +44,7 @@ LXWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode,
row * pGeode->displayPitch + offset;
}
-void
+static void
LXUpdateFunc(ScreenPtr pScreen, shadowBufPtr pBuf)
{
RegionPtr damage = shadowDamage (pBuf);
@@ -187,10 +187,10 @@ LXRotate(ScrnInfoPtr pScrni, DisplayModePtr mode)
ret = shadowAdd(pScrni->pScreen, pPixmap, LXUpdateFunc,
LXWindowLinear, pGeode->rotation, NULL);
- /* XXX - FIXME - bail gracefully */
-
- if (!ret)
+ if (!ret) {
ErrorF("shadowAdd failed\n");
+ goto error;
+ }
}
if (pGeode->rotation == RR_Rotate_0)
diff --git a/src/amd_msr.c b/src/amd_msr.c
index 12b9f73..c37d921 100644
--- a/src/amd_msr.c
+++ b/src/amd_msr.c
@@ -5,6 +5,7 @@
#include <sys/types.h>
#include <sys/errno.h>
#include "os.h"
+#include "amd.h"
static int _msr_open(void)
{
diff --git a/src/durango.c b/src/durango.c
index 77ba16a..2902684 100644
--- a/src/durango.c
+++ b/src/durango.c
@@ -38,6 +38,7 @@
#include <errno.h>
#include <xf86_ansic.h>
#include <compiler.h>
+#include "amd.h"
/* Compiler options */
diff --git a/src/gfx/gfx_init.c b/src/gfx/gfx_init.c
index 469c70f..715153d 100644
--- a/src/gfx/gfx_init.c
+++ b/src/gfx/gfx_init.c
@@ -274,7 +274,7 @@ gfx_detect_cpu(void)
value = gfx_pci_config_read(0x80000800);
if (value == PCI_VENDOR_DEVICE_REDCLOUD) {
- Q_WORD msr_value;
+ QQ_WORD msr_value;
int valid, i;
/* CHECK FOR SOFT VG */
diff --git a/src/gfx/msr_rdcl.c b/src/gfx/msr_rdcl.c
index 548e8a4..2174a11 100644
--- a/src/gfx/msr_rdcl.c
+++ b/src/gfx/msr_rdcl.c
@@ -580,7 +580,7 @@ redcloud_msr_read(unsigned int device, unsigned int msrRegister,
Q_WORD * msrValue)
#else
DEV_STATUS
-gfx_msr_read(unsigned int device, unsigned int msrRegister, Q_WORD * msrValue)
+gfx_msr_read(unsigned int device, unsigned int msrRegister, QQ_WORD * msrValue)
#endif
{
if (device < NUM_DEVS) {
@@ -618,7 +618,7 @@ redcloud_msr_write(unsigned int device, unsigned int msrRegister,
#else
DEV_STATUS
gfx_msr_write(unsigned int device, unsigned int msrRegister,
- Q_WORD * msrValue)
+ QQ_WORD * msrValue)
#endif
{
if (device < NUM_DEVS) {
diff --git a/src/gfx/vid_rdcl.c b/src/gfx/vid_rdcl.c
index 7c98d2d..0aff629 100644
--- a/src/gfx/vid_rdcl.c
+++ b/src/gfx/vid_rdcl.c
@@ -254,7 +254,7 @@ void
gfx_set_clock_frequency(unsigned long frequency)
#endif
{
- Q_WORD msr_value, sys_value;
+ QQ_WORD msr_value, sys_value;
unsigned long sys_low;
unsigned int i, index = 0;
unsigned long value;
@@ -1632,7 +1632,7 @@ unsigned long
gfx_get_clock_frequency(void)
#endif
{
- Q_WORD msr_value;
+ QQ_WORD msr_value;
unsigned int index;
unsigned long value, mask = 0x00001FFF;
unsigned long post_div3 = 0, pre_mult2 = 0;
@@ -2310,7 +2310,7 @@ unsigned long
gfx_read_crc(void)
#endif
{
- Q_WORD msr_value;
+ QQ_WORD msr_value;
unsigned long crc = 0xFFFFFFFF;
/* DISABLE 32-BIT CRCS */
@@ -2359,7 +2359,7 @@ unsigned long
gfx_read_crc32(void)
#endif
{
- Q_WORD msr_value;
+ QQ_WORD msr_value;
unsigned long crc = 0xFFFFFFFF;
/* ENABLE 32-BIT CRCS */
@@ -2409,7 +2409,7 @@ gfx_read_window_crc(int source, unsigned short x, unsigned short y,
unsigned short width, unsigned short height, int crc32)
#endif
{
- Q_WORD msr_value;
+ QQ_WORD msr_value;
unsigned long xpos, ypos, crc = 0;
unsigned long old_fmt = 0;
unsigned int vsync_active_base, vsync_inactive_base, hsync_active_base;
diff --git a/src/panel/gx2_9211.c b/src/panel/gx2_9211.c
index a60264d..7d46b9c 100644
--- a/src/panel/gx2_9211.c
+++ b/src/panel/gx2_9211.c
@@ -193,7 +193,7 @@ set_Redcloud_92xx_mode_params(int mode)
CS92xx_MODE *pMode = &FPModeParams[mode];
unsigned long temp_data = 0;
unsigned long base_data;
- Q_WORD msrValue;
+ QQ_WORD msrValue;
/* on a Redcloud, we need to set up the DF pad select MSR */
if (gfx_msr_read(RC_ID_DF, GX2_VP_MSR_PAD_SELECT, &msrValue) == FOUND) {