diff options
author | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-20 18:25:41 +0000 |
---|---|---|
committer | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-20 18:25:41 +0000 |
commit | 5c3ef4674a620a801ac9a575045f47c7b3c60e94 (patch) | |
tree | 40f36f277611b6a3a064921399bc3b35d0b068e4 /vidix | |
parent | 1e282bf64bc5d63333c6973015109baeb8102488 (diff) | |
download | mpv-5c3ef4674a620a801ac9a575045f47c7b3c60e94.tar.bz2 mpv-5c3ef4674a620a801ac9a575045f47c7b3c60e94.tar.xz |
hack to get rage128 working on ppc-g3
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9045 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vidix')
-rw-r--r-- | vidix/drivers/radeon_vid.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/vidix/drivers/radeon_vid.c b/vidix/drivers/radeon_vid.c index 79480f52d3..e340dad551 100644 --- a/vidix/drivers/radeon_vid.c +++ b/vidix/drivers/radeon_vid.c @@ -194,7 +194,8 @@ static video_registers_t vregs[] = DECLARE_VREG(IDCT_LEVELS), DECLARE_VREG(IDCT_AUTH_CONTROL), DECLARE_VREG(IDCT_AUTH), - DECLARE_VREG(IDCT_CONTROL) + DECLARE_VREG(IDCT_CONTROL), + DECLARE_VREG(CONFIG_CNTL) }; static void * radeon_mmio_base = 0; @@ -207,6 +208,11 @@ static uint32_t SAVED_OV0_GRAPHICS_KEY_MSK = 0; static uint32_t SAVED_OV0_VID_KEY_CLR = 0; static uint32_t SAVED_OV0_VID_KEY_MSK = 0; static uint32_t SAVED_OV0_KEY_CNTL = 0; +#if defined(RAGE128) && (WORDS_BIGENDIAN) +static uint32_t SAVED_CONFIG_CNTL = 0; +#define APER_0_BIG_ENDIAN_16BPP_SWAP (1<<0) +#define APER_0_BIG_ENDIAN_32BPP_SWAP (2<<0) +#endif #define GETREG(TYPE,PTR,OFFZ) (*((volatile TYPE*)((PTR)+(OFFZ)))) #define SETREG(TYPE,PTR,OFFZ,VAL) (*((volatile TYPE*)((PTR)+(OFFZ))))=VAL @@ -426,10 +432,10 @@ static void radeon_engine_restore( void ) (pitch64 << 22)); radeon_fifo_wait(1); -//#if defined(__BIG_ENDIAN) #if defined(WORDS_BIGENDIAN) - OUTREGP(DP_DATATYPE, - HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN); +#ifdef RADEON + OUTREGP(DP_DATATYPE, HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN); +#endif #else OUTREGP(DP_DATATYPE, 0, ~HOST_BIG_ENDIAN_EN); #endif @@ -1060,6 +1066,19 @@ int vixInit( void ) } #endif +/* XXX: hack, but it works for me (tm) */ +#if defined(RAGE128) && (WORDS_BIGENDIAN) + /* code from gatos */ + { + SAVED_CONFIG_CNTL = INREG(CONFIG_CNTL); + OUTREG(CONFIG_CNTL, SAVED_CONFIG_CNTL & + ~(APER_0_BIG_ENDIAN_16BPP_SWAP|APER_0_BIG_ENDIAN_32BPP_SWAP)); + +// printf("saved: %x, current: %x\n", SAVED_CONFIG_CNTL, +// INREG(CONFIG_CNTL)); + } +#endif + if(__verbose > 1) radeon_vid_dump_regs(); return 0; } @@ -1075,6 +1094,12 @@ void vixDestroy( void ) OUTREG(OV0_KEY_CNTL, SAVED_OV0_KEY_CNTL); printf(RADEON_MSG" Restored overlay colorkey settings\n"); +#if defined(RAGE128) && (WORDS_BIGENDIAN) + OUTREG(CONFIG_CNTL, SAVED_CONFIG_CNTL); +// printf("saved: %x, restored: %x\n", SAVED_CONFIG_CNTL, +// INREG(CONFIG_CNTL)); +#endif + unmap_phys_mem(radeon_mem_base,radeon_ram_size); unmap_phys_mem(radeon_mmio_base,0xFFFF); } |