Home | History | Annotate | Line # | Download | only in pci
      1  1.3  rkujawa /*	$NetBSD: tdvfbreg.h,v 1.3 2012/07/20 21:31:28 rkujawa Exp $	*/
      2  1.1  rkujawa 
      3  1.1  rkujawa /*
      4  1.1  rkujawa  * Copyright (c) 2012 The NetBSD Foundation, Inc.
      5  1.1  rkujawa  * All rights reserved.
      6  1.1  rkujawa  *
      7  1.1  rkujawa  * This code is derived from software contributed to The NetBSD Foundation
      8  1.1  rkujawa  * by Radoslaw Kujawa.
      9  1.1  rkujawa  *
     10  1.1  rkujawa  * Redistribution and use in source and binary forms, with or without
     11  1.1  rkujawa  * modification, are permitted provided that the following conditions
     12  1.1  rkujawa  * are met:
     13  1.1  rkujawa  * 1. Redistributions of source code must retain the above copyright
     14  1.1  rkujawa  *    notice, this list of conditions and the following disclaimer.
     15  1.1  rkujawa  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  rkujawa  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  rkujawa  *    documentation and/or other materials provided with the distribution.
     18  1.1  rkujawa  *
     19  1.1  rkujawa  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     20  1.1  rkujawa  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     21  1.1  rkujawa  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     22  1.1  rkujawa  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     23  1.1  rkujawa  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     24  1.1  rkujawa  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  1.1  rkujawa  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  1.1  rkujawa  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  1.1  rkujawa  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     28  1.1  rkujawa  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  1.1  rkujawa  */
     30  1.1  rkujawa 
     31  1.1  rkujawa /* 3Dfx Voodoo 2 register definition (mostly from specification) */
     32  1.1  rkujawa 
     33  1.1  rkujawa #ifndef TDVFBREG_H
     34  1.1  rkujawa #define TDVFBREG_H
     35  1.1  rkujawa 
     36  1.2  rkujawa #define TDV_SST_CLK		50000	/* 50MHz, max is around 60MHz */
     37  1.1  rkujawa #define TDV_CVG_CLK		75000	/* 75MHz, max is around 90MHz */
     38  1.1  rkujawa 
     39  1.1  rkujawa /* CVG PCI config registers */
     40  1.1  rkujawa #define TDV_MM_BAR		0x10
     41  1.1  rkujawa 
     42  1.1  rkujawa #define TDV_INITENABLE_REG	0x40
     43  1.1  rkujawa #define TDV_INITENABLE_EN_INIT  __BIT(0)
     44  1.1  rkujawa #define TDV_INITENABLE_EN_FIFO	__BIT(1)
     45  1.1  rkujawa #define TDV_INITENABLE_REMAPDAC __BIT(2)
     46  1.1  rkujawa #define TDV_VCLK_ENABLE_REG	0xC0	/* undocumented? */
     47  1.1  rkujawa #define TDV_VCLK_DISABLE_REG	0xE0	/* undocumented? */
     48  1.1  rkujawa 
     49  1.1  rkujawa /* CVG address space */
     50  1.1  rkujawa #define TDV_OFF_MMREG		0x0	/* memory mapped registers */
     51  1.1  rkujawa #define TDV_OFF_FB		0x400000/* frame buffer */
     52  1.1  rkujawa #define TDV_FB_SIZE		0x3FFFFF/* 4MB */
     53  1.1  rkujawa 
     54  1.1  rkujawa /* CVG registers */
     55  1.1  rkujawa #define TDV_OFF_STATUS		0x0
     56  1.1  rkujawa #define TDV_STATUS_FBI_BUSY	__BIT(7) /* FBI == CVG Bruce */
     57  1.1  rkujawa #define TDV_STATUS_TREX_BUSY	__BIT(8) /* TREX == CVG Chuck */
     58  1.1  rkujawa #define TDV_STATUS_GFX_BUSY	__BIT(9)
     59  1.1  rkujawa 
     60  1.1  rkujawa #define TDV_OFF_ALPHAMODE	0x10C
     61  1.1  rkujawa 
     62  1.1  rkujawa #define TDV_OFF_FBZMODE		0x0110
     63  1.1  rkujawa #define TDV_FBZMODE_CLIPPING	__BIT(0)
     64  1.1  rkujawa #define TDV_FBZMODE_RGB_WR	__BIT(9)
     65  1.1  rkujawa #define TDV_FBZMODE_ALPHA_WR	__BIT(10)
     66  1.1  rkujawa #define TDV_FBZMODE_INVERT_Y	__BIT(17)
     67  1.1  rkujawa 
     68  1.1  rkujawa #define TDV_OFF_LFBMODE		0x0114
     69  1.1  rkujawa #define TDV_LFBMODE_565		0 //__BIT(0)
     70  1.1  rkujawa #define TDV_LFBMODE_8888	5
     71  1.1  rkujawa #define TDV_LFBMODE_PIXPIPE	__BIT(8)
     72  1.1  rkujawa #define TDV_LFBMODE_WSW_WR	__BIT(11)
     73  1.1  rkujawa #define TDV_LFBMODE_BSW_WR	__BIT(12)
     74  1.1  rkujawa #define TDV_LFBMODE_WSW_RD	__BIT(15)
     75  1.1  rkujawa #define TDV_LFBMODE_BSW_RD	__BIT(16)
     76  1.1  rkujawa 
     77  1.1  rkujawa #define TDV_OFF_CLIP_LR		0x0118
     78  1.1  rkujawa #define TDV_OFF_CLIP_TB		0x011C
     79  1.1  rkujawa 
     80  1.1  rkujawa #define TDV_OFF_NOPCMD		0x0120
     81  1.1  rkujawa 
     82  1.1  rkujawa #define TDV_OFF_FBIINIT0	0x0210
     83  1.1  rkujawa #define TDV_FBIINIT0_VGA_PASS	__BIT(0)
     84  1.1  rkujawa #define TDV_FBIINIT0_FBI_RST	__BIT(1)
     85  1.1  rkujawa #define TDV_FBIINIT0_FIFO_RST	__BIT(2)
     86  1.1  rkujawa 
     87  1.1  rkujawa #define TDV_OFF_FBIINIT1	0x0214
     88  1.1  rkujawa #define TDV_FBIINIT1_PCIWAIT	__BIT(1)
     89  1.1  rkujawa #define TDV_FBIINIT1_LFB_EN	__BIT(3)
     90  1.1  rkujawa #define TDV_FBIINIT1_TILES_X	4	/* shift, bits 4-7 */
     91  1.1  rkujawa #define TDV_FBIINIT1_VIDEO_RST	__BIT(8)
     92  1.1  rkujawa #define TDV_FBIINIT1_BLANKING	__BIT(12)
     93  1.1  rkujawa #define TDV_FBIINIT1_DR_DATA	__BIT(13)
     94  1.1  rkujawa #define TDV_FBIINIT1_DR_BLANKING __BIT(14)
     95  1.1  rkujawa #define TDV_FBIINIT1_DR_HVSYNC	__BIT(15)
     96  1.1  rkujawa #define TDV_FBIINIT1_DR_DCLK	__BIT(16)
     97  1.1  rkujawa #define TDV_FBIINIT1_IN_VCLK_2X 0	/* __BIT(17) */
     98  1.1  rkujawa #define TDV_FBIINIT1_VCLK_SRC	20	/* shift, bits 20-21 actually */
     99  1.1  rkujawa #define TDV_FBIINIT1_VCLK_2X	0x2
    100  1.1  rkujawa #define TDV_FBIINIT1_TILES_X_MSB 24
    101  1.1  rkujawa #define TDV_FBIINIT1_VIDMASK	0x8080010F
    102  1.1  rkujawa 
    103  1.1  rkujawa #define TDV_OFF_FBIINIT2	0x0218
    104  1.1  rkujawa #define TDV_OFF_DAC_READ	TDV_OFF_FBIINIT2
    105  1.1  rkujawa #define TDV_FBIINIT2_FAST_RAS	__BIT(5)
    106  1.1  rkujawa #define TDV_FBIINIT2_DRAM_OE	__BIT(6)
    107  1.1  rkujawa #define TDV_FBIINIT2_SWB_ALG	0 //__BITS(9,10) /* 00 - based on DAC vsync */
    108  1.1  rkujawa #define TDV_FBIINIT2_FIFO_RDA	__BIT(21)
    109  1.1  rkujawa #define TDV_FBIINIT2_DRAM_REFR	__BIT(22)
    110  1.1  rkujawa #define TDV_FBIINIT2_DRAM_REFLD	23	/* shift, bits 23-31 */
    111  1.1  rkujawa #define TDV_FBIINIT2_DRAM_REF16 0x30	/* 16ms */
    112  1.1  rkujawa 
    113  1.1  rkujawa #define TDV_OFF_FBIINIT3	0x021C
    114  1.1  rkujawa #define TDV_FBIINIT3_TREX_DIS	__BIT(6)
    115  1.1  rkujawa 
    116  1.1  rkujawa #define TDV_OFF_FBIINIT4	0x0200
    117  1.1  rkujawa #define TDV_FBIINIT4_PCIWAIT	__BIT(0)
    118  1.1  rkujawa #define TDV_FBIINIT4_LFB_RDA	__BIT(1)
    119  1.1  rkujawa 
    120  1.1  rkujawa #define TDV_OFF_BACKPORCH	0x0208
    121  1.1  rkujawa #define TDV_OFF_VDIMENSIONS	0x020C
    122  1.1  rkujawa #define TDV_OFF_HSYNC		0x0220
    123  1.1  rkujawa #define TDV_OFF_VSYNC		0x0224
    124  1.1  rkujawa 
    125  1.1  rkujawa #define TDV_OFF_DAC_DATA	0x022C
    126  1.1  rkujawa #define TDV_DAC_DATA_READ	__BIT(11)
    127  1.1  rkujawa 
    128  1.1  rkujawa #define TDV_OFF_FBIINIT5	0x0244
    129  1.1  rkujawa #define TDV_FBIINIT5_VIDMASK	0xFA40FFFF
    130  1.1  rkujawa #define TDV_FBIINIT5_PHSYNC	__BIT(23)
    131  1.1  rkujawa #define TDV_FBIINIT5_PVSYNC	__BIT(24)
    132  1.1  rkujawa 
    133  1.1  rkujawa #define TDV_OFF_FBIINIT6	0x0248
    134  1.1  rkujawa #define TDV_FBIINIT6_TILES_X_LSB 30
    135  1.1  rkujawa 
    136  1.3  rkujawa #define TDV_OFF_BLTSRC		0x02C0
    137  1.3  rkujawa #define TDV_OFF_BLTDST		0x02C4
    138  1.3  rkujawa #define TDV_OFF_BLTXYSTRIDE	0x02C8
    139  1.3  rkujawa #define TDV_OFF_BLTSRCCHROMA	0x02CC
    140  1.3  rkujawa #define TDV_OFF_BLTDSTCHROMA	0x02D0
    141  1.3  rkujawa #define TDV_OFF_BLTCLIPX	0x02D4
    142  1.3  rkujawa #define TDV_OFF_BLTCLIPY	0x02D8
    143  1.3  rkujawa #define TDV_OFF_BLTSRCXY	0x02E0
    144  1.3  rkujawa #define TDV_OFF_BLTDSTXY	0x02E4
    145  1.3  rkujawa #define TDV_OFF_BLTSIZE		0x02E8
    146  1.3  rkujawa #define TDV_OFF_BLTROP		0x02EC
    147  1.3  rkujawa #define TDV_BLTROP_COPY		0x0CCCC
    148  1.3  rkujawa #define TDV_BLTROP_INVERT	0x05555
    149  1.3  rkujawa #define TDV_BLTROP_XOR		0x06666
    150  1.3  rkujawa #define TDV_OFF_BLTCOLOR	0x02F0
    151  1.3  rkujawa #define TDV_OFF_BLTCMD		0x02F8
    152  1.3  rkujawa #define TDV_BLTCMD_SCR2SCR	0
    153  1.3  rkujawa #define TDV_BLTCMD_CPU2SCR	1
    154  1.3  rkujawa #define TDV_BLTCMD_RECTFILL	2
    155  1.3  rkujawa #define TDV_BLTCMD_LAUNCH	__BIT(31)
    156  1.3  rkujawa #define TDV_BLTCMD_FMT_565	2
    157  1.3  rkujawa #define TDV_BLTCMD_CLIPRECT	__BIT(16)
    158  1.3  rkujawa #define TDV_BLTCMD_DSTTILED	__BIT(15)
    159  1.3  rkujawa #define TDV_OFF_DATA		0x02FC /* CPU2SCR */
    160  1.3  rkujawa 
    161  1.1  rkujawa /* DAC */
    162  1.1  rkujawa #define TDV_GENDAC_REFFREQ	14318
    163  1.1  rkujawa #define TDV_GENDAC_MAXVCO	250000	/* not sure about that */
    164  1.1  rkujawa 
    165  1.1  rkujawa #define TDV_GENDAC_MIN_N1	1
    166  1.1  rkujawa #define TDV_GENDAC_MAX_N1	31
    167  1.1  rkujawa #define TDV_GENDAC_MIN_N2	0
    168  1.1  rkujawa #define TDV_GENDAC_MAX_N2	3
    169  1.1  rkujawa #define TDV_GENDAC_MIN_M	1
    170  1.1  rkujawa #define TDV_GENDAC_MAX_M	127
    171  1.1  rkujawa 
    172  1.1  rkujawa #define TDV_GENDAC_ADDRMASK	0x07
    173  1.1  rkujawa 
    174  1.1  rkujawa #define TDV_GENDAC_WR		0x0
    175  1.1  rkujawa #define TDV_GENDAC_LUT		0x01
    176  1.1  rkujawa #define TDV_GENDAC_PIXMASK	0x02
    177  1.1  rkujawa #define TDV_GENDAC_RD		0x03
    178  1.1  rkujawa 
    179  1.1  rkujawa #define TDV_GENDAC_PLLWR	0x04
    180  1.1  rkujawa #define TDV_GENDAC_PLLDATA	0x05
    181  1.1  rkujawa #define TDV_GENDAC_CMD		0x06
    182  1.1  rkujawa #define TDV_GENDAC_CMD_16BITS	0x50
    183  1.1  rkujawa #define TDV_GENDAC_CMD_24BITS	0x60
    184  1.1  rkujawa #define TDV_GENDAC_CMD_PWDOWN	__BIT(0)
    185  1.1  rkujawa #define TDV_GENDAC_PLLRD	0x07
    186  1.1  rkujawa 
    187  1.1  rkujawa #define TDV_GENDAC_PLL_A	0xA
    188  1.1  rkujawa #define TDV_GENDAC_PLL_0	0x0
    189  1.1  rkujawa 
    190  1.1  rkujawa #define TDV_GENDAC_PLL_CTRL	0x0
    191  1.1  rkujawa #define TDV_GENDAC_PLL_VIDCLK	__BIT(5)
    192  1.1  rkujawa #define TDV_GENDAC_PLL_VIDCLK0	0
    193  1.1  rkujawa #define TDV_GENDAC_PLL_CVGCLKA	0
    194  1.1  rkujawa 
    195  1.1  rkujawa #define TDV_GENDAC_CVGPLLMASK	0xEF
    196  1.1  rkujawa #define TDV_GENDAC_VIDPLLMASK	0xD8
    197  1.1  rkujawa 
    198  1.1  rkujawa #define TDV_GENDAC_DFLT_F1_M	0x55
    199  1.1  rkujawa #define TDV_GENDAC_DFLT_F1_N	0x49
    200  1.1  rkujawa #define TDV_GENDAC_DFLT_F7_M	0x71
    201  1.1  rkujawa #define TDV_GENDAC_DFLT_F7_N	0x29
    202  1.1  rkujawa #define TDV_GENDAC_DFLT_FB_M	0x79
    203  1.1  rkujawa #define TDV_GENDAC_DFLT_FB_N	0x2E
    204  1.1  rkujawa 
    205  1.1  rkujawa #endif /* TDVFBREG_H */
    206