150806d53Smrg/* 250806d53Smrg * Copyright 1994-2000 by Robin Cutshaw <robin@XFree86.Org> 350806d53Smrg * 450806d53Smrg * Permission to use, copy, modify, distribute, and sell this software and its 550806d53Smrg * documentation for any purpose is hereby granted without fee, provided that 650806d53Smrg * the above copyright notice appear in all copies and that both that 750806d53Smrg * copyright notice and this permission notice appear in supporting 850806d53Smrg * documentation, and that the name of Robin Cutshaw not be used in 950806d53Smrg * advertising or publicity pertaining to distribution of the software without 1050806d53Smrg * specific, written prior permission. Robin Cutshaw makes no representations 1150806d53Smrg * about the suitability of this software for any purpose. It is provided 1250806d53Smrg * "as is" without express or implied warranty. 1350806d53Smrg * 1450806d53Smrg * ROBIN CUTSHAW DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1550806d53Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1650806d53Smrg * EVENT SHALL ROBIN CUTSHAW BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1750806d53Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1850806d53Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1950806d53Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2050806d53Smrg * PERFORMANCE OF THIS SOFTWARE. 2150806d53Smrg * 2250806d53Smrg */ 2350806d53Smrg 2450806d53Smrg#include "compiler.h" 2550806d53Smrg 2650806d53Smrg/* Indirect indexed registers */ 2750806d53Smrg 2850806d53Smrg#define TI_CURS_X_LOW 0x00 2950806d53Smrg#define TI_CURS_X_HIGH 0x01 /* only lower 4 bits are used */ 3050806d53Smrg#define TI_CURS_Y_LOW 0x02 3150806d53Smrg#define TI_CURS_Y_HIGH 0x03 /* only lower 4 bits are used */ 3250806d53Smrg#define TI_SPRITE_ORIGIN_X 0x04 3350806d53Smrg#define TI_SPRITE_ORIGIN_Y 0x05 3450806d53Smrg#define TI_CURS_CONTROL 0x06 3550806d53Smrg#define TI_PLANAR_ACCESS 0x80 /* 3025 only - 80 == BT485 mode */ 3650806d53Smrg#define TI_CURS_SPRITE_ENABLE 0x40 3750806d53Smrg#define TI_CURS_X_WINDOW_MODE 0x10 3850806d53Smrg#define TI_CURS_CTRL_MASK (TI_CURS_SPRITE_ENABLE | TI_CURS_X_WINDOW_MODE) 3950806d53Smrg#define TI_CURS_RAM_ADDR_LOW 0x08 4050806d53Smrg#define TI_CURS_RAM_ADDR_HIGH 0x09 4150806d53Smrg#define TI_CURS_RAM_DATA 0x0A 4250806d53Smrg#define TI_TRUE_COLOR_CONTROL 0x0E /* 3025 only */ 4350806d53Smrg#define TI_TC_BTMODE 0x04 /* on = BT485 mode, off = TI3020 mode */ 4450806d53Smrg#define TI_TC_NONVGAMODE 0x02 /* on = nonvgamode, off = vgamode */ 4550806d53Smrg#define TI_TC_8BIT 0x01 /* on = 8/4bit, off = 16/32bit */ 4650806d53Smrg#define TI_VGA_SWITCH_CONTROL 0x0F /* 3025 only */ 4750806d53Smrg#define TI_LATCH_CONTROL 0x0F /* 3026 only */ 4850806d53Smrg#define TI_WINDOW_START_X_LOW 0x10 4950806d53Smrg#define TI_WINDOW_START_X_HIGH 0x11 5050806d53Smrg#define TI_WINDOW_STOP_X_LOW 0x12 5150806d53Smrg#define TI_WINDOW_STOP_X_HIGH 0x13 5250806d53Smrg#define TI_WINDOW_START_Y_LOW 0x14 5350806d53Smrg#define TI_WINDOW_START_Y_HIGH 0x15 5450806d53Smrg#define TI_WINDOW_STOP_Y_LOW 0x16 5550806d53Smrg#define TI_WINDOW_STOP_Y_HIGH 0x17 5650806d53Smrg#define TI_MUX_CONTROL_1 0x18 5750806d53Smrg#define TI_MUX1_PSEUDO_COLOR 0x80 5850806d53Smrg#define TI_MUX1_DIRECT_888 0x06 5950806d53Smrg#define TI_MUX1_DIRECT_565 0x05 6050806d53Smrg#define TI_MUX1_DIRECT_555 0x04 6150806d53Smrg#define TI_MUX1_DIRECT_664 0x03 6250806d53Smrg#define TI_MUX1_TRUE_888 0x46 6350806d53Smrg#define TI_MUX1_TRUE_565 0x45 6450806d53Smrg#define TI_MUX1_TRUE_555 0x44 6550806d53Smrg#define TI_MUX1_TRUE_664 0x43 6650806d53Smrg#define TI_MUX1_3025D_888 0x0E /* 3025 only */ 6750806d53Smrg#define TI_MUX1_3025D_565 0x0D /* 3025 only */ 6850806d53Smrg#define TI_MUX1_3025D_555 0x0C /* 3025 only */ 6950806d53Smrg#define TI_MUX1_3025T_888 0x4E /* 3025 only */ 7050806d53Smrg#define TI_MUX1_3025T_565 0x4D /* 3025 only */ 7150806d53Smrg#define TI_MUX1_3025T_555 0x4C /* 3025 only */ 7250806d53Smrg#define TI_MUX1_3026D_888 0x06 /* 3026 only */ 7350806d53Smrg#define TI_MUX1_3026D_565 0x05 /* 3026 only */ 7450806d53Smrg#define TI_MUX1_3026D_555 0x04 /* 3026 only */ 7550806d53Smrg#define TI_MUX1_3026D_888_P8 0x16 /* 3026 only */ 7650806d53Smrg#define TI_MUX1_3026D_888_P5 0x1e /* 3026 only */ 7750806d53Smrg#define TI_MUX1_3026T_888 0x46 /* 3026 only */ 7850806d53Smrg#define TI_MUX1_3026T_565 0x45 /* 3026 only */ 7950806d53Smrg#define TI_MUX1_3026T_555 0x44 /* 3026 only */ 8050806d53Smrg#define TI_MUX1_3026T_888_P8 0x56 /* 3026 only */ 8150806d53Smrg#define TI_MUX1_3026T_888_P5 0x5e /* 3026 only */ 8250806d53Smrg#define TI_MUX_CONTROL_2 0x19 8350806d53Smrg#define TI_MUX2_BUS_VGA 0x98 8450806d53Smrg#define TI_MUX2_BUS_PC_D8P64 0x1C 8550806d53Smrg#define TI_MUX2_BUS_DC_D24P64 0x1C 8650806d53Smrg#define TI_MUX2_BUS_DC_D16P64 0x04 8750806d53Smrg#define TI_MUX2_BUS_DC_D15P64 0x04 8850806d53Smrg#define TI_MUX2_BUS_TC_D24P64 0x04 8950806d53Smrg#define TI_MUX2_BUS_TC_D16P64 0x04 9050806d53Smrg#define TI_MUX2_BUS_TC_D15P64 0x04 9150806d53Smrg#define TI_MUX2_BUS_3026PC_D8P64 0x4C 9250806d53Smrg#define TI_MUX2_BUS_3026DC_D24P64 0x5C 9350806d53Smrg#define TI_MUX2_BUS_3026DC_D16P64 0x54 9450806d53Smrg#define TI_MUX2_BUS_3026DC_D15P64 0x54 9550806d53Smrg#define TI_MUX2_BUS_3026TC_D24P64 0x5c 9650806d53Smrg#define TI_MUX2_BUS_3026TC_D16P64 0x54 9750806d53Smrg#define TI_MUX2_BUS_3026TC_D15P64 0x54 9850806d53Smrg#define TI_MUX2_BUS_3030PC_D8P128 0x4d 9950806d53Smrg#define TI_MUX2_BUS_3030DC_D24P128 0x5d 10050806d53Smrg#define TI_MUX2_BUS_3030DC_D16P128 0x55 10150806d53Smrg#define TI_MUX2_BUS_3030DC_D15P128 0x55 10250806d53Smrg#define TI_MUX2_BUS_3030TC_D24P128 0x5d 10350806d53Smrg#define TI_MUX2_BUS_3030TC_D16P128 0x55 10450806d53Smrg#define TI_MUX2_BUS_3030TC_D15P128 0x55 10550806d53Smrg#define TI_INPUT_CLOCK_SELECT 0x1A 10650806d53Smrg#define TI_ICLK_CLK0 0x00 10750806d53Smrg#define TI_ICLK_CLK0_DOUBLE 0x10 10850806d53Smrg#define TI_ICLK_CLK1 0x01 10950806d53Smrg#define TI_ICLK_CLK1_DOUBLE 0x11 11050806d53Smrg#define TI_ICLK_CLK2 0x02 /* 3025 only */ 11150806d53Smrg#define TI_ICLK_CLK2_DOUBLE 0x12 /* 3025 only */ 11250806d53Smrg#define TI_ICLK_CLK2_I 0x03 /* 3025 only */ 11350806d53Smrg#define TI_ICLK_CLK2_I_DOUBLE 0x13 /* 3025 only */ 11450806d53Smrg#define TI_ICLK_CLK2_E 0x04 /* 3025 only */ 11550806d53Smrg#define TI_ICLK_CLK2_E_DOUBLE 0x14 /* 3025 only */ 11650806d53Smrg#define TI_ICLK_PLL 0x05 /* 3025 only */ 11750806d53Smrg#define TI_OUTPUT_CLOCK_SELECT 0x1B 11850806d53Smrg#define TI_OCLK_VGA 0x3E 11950806d53Smrg#define TI_OCLK_S 0x40 12050806d53Smrg#define TI_OCLK_NS 0x80 /* 3025 only */ 12150806d53Smrg#define TI_OCLK_V1 0x00 12250806d53Smrg#define TI_OCLK_V2 0x08 12350806d53Smrg#define TI_OCLK_V4 0x10 12450806d53Smrg#define TI_OCLK_V8 0x18 12550806d53Smrg#define TI_OCLK_R1 0x00 12650806d53Smrg#define TI_OCLK_R2 0x01 12750806d53Smrg#define TI_OCLK_R4 0x02 12850806d53Smrg#define TI_OCLK_R8 0x03 12950806d53Smrg#define TI_OCLK_S_V1_R8 (TI_OCLK_S | TI_OCLK_V1 | TI_OCLK_R8) 13050806d53Smrg#define TI_OCLK_S_V2_R8 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R8) 13150806d53Smrg#define TI_OCLK_S_V4_R8 (TI_OCLK_S | TI_OCLK_V4 | TI_OCLK_R8) 13250806d53Smrg#define TI_OCLK_S_V8_R8 (TI_OCLK_S | TI_OCLK_V8 | TI_OCLK_R8) 13350806d53Smrg#define TI_OCLK_S_V2_R4 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R4) 13450806d53Smrg#define TI_OCLK_S_V4_R4 (TI_OCLK_S | TI_OCLK_V4 | TI_OCLK_R4) 13550806d53Smrg#define TI_OCLK_S_V1_R2 (TI_OCLK_S | TI_OCLK_V1 | TI_OCLK_R2) 13650806d53Smrg#define TI_OCLK_S_V2_R2 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R2) 13750806d53Smrg#define TI_OCLK_NS_V1_R1 (TI_OCLK_NS | TI_OCLK_V1 | TI_OCLK_R1) 13850806d53Smrg#define TI_OCLK_NS_V2_R2 (TI_OCLK_NS | TI_OCLK_V2 | TI_OCLK_R2) 13950806d53Smrg#define TI_OCLK_NS_V4_R4 (TI_OCLK_NS | TI_OCLK_V4 | TI_OCLK_R4) 14050806d53Smrg#define TI_PALETTE_PAGE 0x1C 14150806d53Smrg#define TI_GENERAL_CONTROL 0x1D 14250806d53Smrg#define TI_MISC_CONTROL 0x1E /* 3025 only */ 14350806d53Smrg#define TI_MC_POWER_DOWN 0x01 14450806d53Smrg#define TI_MC_DOTCLK_DISABLE 0x02 14550806d53Smrg#define TI_MC_INT_6_8_CONTROL 0x04 /* 00 == external 6/8 pin */ 14650806d53Smrg#define TI_MC_8_BPP 0x08 /* 00 == 6bpp */ 14750806d53Smrg#define TI_MC_PSEL_POLARITY 0x20 /* 3026 only, PSEL polarity select */ 14850806d53Smrg#define TI_MC_VCLK_POLARITY 0x20 14950806d53Smrg#define TI_MC_LCLK_LATCH 0x40 /* VCLK == 00, default */ 15050806d53Smrg#define TI_MC_LOOP_PLL_RCLK 0x80 15150806d53Smrg#define TI_OVERSCAN_COLOR_RED 0x20 15250806d53Smrg#define TI_OVERSCAN_COLOR_GREEN 0x21 15350806d53Smrg#define TI_OVERSCAN_COLOR_BLUE 0x22 15450806d53Smrg#define TI_CURSOR_COLOR_0_RED 0x23 15550806d53Smrg#define TI_CURSOR_COLOR_0_GREEN 0x24 15650806d53Smrg#define TI_CURSOR_COLOR_0_BLUE 0x25 15750806d53Smrg#define TI_CURSOR_COLOR_1_RED 0x26 15850806d53Smrg#define TI_CURSOR_COLOR_1_GREEN 0x27 15950806d53Smrg#define TI_CURSOR_COLOR_1_BLUE 0x28 16050806d53Smrg#define TI_AUXILIARY_CONTROL 0x29 16150806d53Smrg#define TI_AUX_SELF_CLOCK 0x08 16250806d53Smrg#define TI_AUX_W_CMPL 0x01 16350806d53Smrg#define TI_GENERAL_IO_CONTROL 0x2A 16450806d53Smrg#define TI_GIC_ALL_BITS 0x1F 16550806d53Smrg#define TI_GENERAL_IO_DATA 0x2B 16650806d53Smrg#define TI_GID_W2000_6BIT 0x00 16750806d53Smrg#define TI_GID_N9_964 0x01 16850806d53Smrg#define TI_GID_ELSA_SOG 0x04 16950806d53Smrg#define TI_GID_W2000_8BIT 0x08 17050806d53Smrg#define TI_GID_S3_DAC_6BIT 0x1C 17150806d53Smrg#define TI_GID_S3_DAC_8BIT 0x1E 17250806d53Smrg#define TI_GID_TI_DAC_6BIT 0x1D 17350806d53Smrg#define TI_GID_TI_DAC_8BIT 0x1F 17450806d53Smrg#define TI_PLL_CONTROL 0x2C /* 3025 only */ 17550806d53Smrg#define TI_PIXEL_CLOCK_PLL_DATA 0x2D /* 3025 only */ 17650806d53Smrg#define TI_PLL_ENABLE 0x08 /* 3025 only */ 17750806d53Smrg#define TI_MCLK_PLL_DATA 0x2E /* 3025 only */ 17850806d53Smrg#define TI_LOOP_CLOCK_PLL_DATA 0x2F /* 3025 only */ 17950806d53Smrg#define TI_COLOR_KEY_OLVGA_LOW 0x30 18050806d53Smrg#define TI_COLOR_KEY_OLVGA_HIGH 0x31 18150806d53Smrg#define TI_COLOR_KEY_RED_LOW 0x32 18250806d53Smrg#define TI_COLOR_KEY_RED_HIGH 0x33 18350806d53Smrg#define TI_COLOR_KEY_GREEN_LOW 0x34 18450806d53Smrg#define TI_COLOR_KEY_GREEN_HIGH 0x35 18550806d53Smrg#define TI_COLOR_KEY_BLUE_LOW 0x36 18650806d53Smrg#define TI_COLOR_KEY_BLUE_HIGH 0x37 18750806d53Smrg#define TI_COLOR_KEY_CONTROL 0x38 18850806d53Smrg#define TI_COLOR_KEY_CMPL 0x10 18950806d53Smrg#define TI_MCLK_DCLK_CONTROL 0x39 /* 3025 only */ 19050806d53Smrg#define TI_MCLK_LCLK_CONTROL 0x39 /* 3026 only */ 19150806d53Smrg#define TI_SENSE_TEST 0x3A 19250806d53Smrg#define TI_TEST_DATA 0x3B 19350806d53Smrg#define TI_CRC_LOW 0x3C 19450806d53Smrg#define TI_CRC_HIGH 0x3D 19550806d53Smrg#define TI_CRC_CONTROL 0x3E 19650806d53Smrg#define TI_ID 0x3F 19750806d53Smrg#define TI_VIEWPOINT20_ID 0x20 19850806d53Smrg#define TI_VIEWPOINT25_ID 0x25 19950806d53Smrg#define TI_MODE_85_CONTROL 0xD5 /* 3025 only */ 20050806d53Smrg 20150806d53Smrg#define TI_REF_FREQ 14.31818 /* 3025 only */ 20250806d53Smrg 20350806d53Smrg/* 20450806d53Smrg * which clocks should be set (just flags...) 20550806d53Smrg */ 20650806d53Smrg#define TI_BOTH_CLOCKS 1 20750806d53Smrg#define TI_LOOP_CLOCK 2 208