cg6tec.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1991,1997-1998 by Sun Microsystems, Inc.
* All rights reserved.
*/
#ifndef _SYS_CG6TEC_H
#define _SYS_CG6TEC_H
#pragma ident "%Z%%M% %I% %E% SMI" /* SunOS-4.1 1.2 */
#ifdef __cplusplus
extern "C" {
#endif
/*
* TEC register offsets from base address. These offsets are
* u_intended to be added to a pointer-to-integer whose value is the
* base address of the CG6 memory mapped register area.
*/
/* base for transform data registers */
#define L_TEC_DATA_BASE (0x100/sizeof (uint32_t))
#define L_TEC_DATA00 (0x100/sizeof (uint32_t))
#define L_TEC_DATA01 (0x104/sizeof (uint32_t))
#define L_TEC_DATA02 (0x108/sizeof (uint32_t))
#define L_TEC_DATA03 (0x10C/sizeof (uint32_t))
#define L_TEC_DATA04 (0x110/sizeof (uint32_t))
#define L_TEC_DATA05 (0x114/sizeof (uint32_t))
#define L_TEC_DATA06 (0x118/sizeof (uint32_t))
#define L_TEC_DATA07 (0x11C/sizeof (uint32_t))
#define L_TEC_DATA08 (0x120/sizeof (uint32_t))
#define L_TEC_DATA09 (0x124/sizeof (uint32_t))
#define L_TEC_DATA10 (0x128/sizeof (uint32_t))
#define L_TEC_DATA11 (0x12C/sizeof (uint32_t))
#define L_TEC_DATA12 (0x130/sizeof (uint32_t))
#define L_TEC_DATA13 (0x134/sizeof (uint32_t))
#define L_TEC_DATA14 (0x138/sizeof (uint32_t))
#define L_TEC_DATA15 (0x13C/sizeof (uint32_t))
#define L_TEC_DATA16 (0x140/sizeof (uint32_t))
#define L_TEC_DATA17 (0x144/sizeof (uint32_t))
#define L_TEC_DATA18 (0x148/sizeof (uint32_t))
#define L_TEC_DATA19 (0x14C/sizeof (uint32_t))
#define L_TEC_DATA20 (0x150/sizeof (uint32_t))
#define L_TEC_DATA21 (0x154/sizeof (uint32_t))
#define L_TEC_DATA22 (0x158/sizeof (uint32_t))
#define L_TEC_DATA23 (0x15C/sizeof (uint32_t))
#define L_TEC_DATA24 (0x160/sizeof (uint32_t))
#define L_TEC_DATA25 (0x164/sizeof (uint32_t))
#define L_TEC_DATA26 (0x168/sizeof (uint32_t))
#define L_TEC_DATA27 (0x16C/sizeof (uint32_t))
#define L_TEC_DATA28 (0x170/sizeof (uint32_t))
#define L_TEC_DATA29 (0x174/sizeof (uint32_t))
#define L_TEC_DATA30 (0x178/sizeof (uint32_t))
#define L_TEC_DATA31 (0x17C/sizeof (uint32_t))
#define L_TEC_DATA32 (0x180/sizeof (uint32_t))
#define L_TEC_DATA33 (0x184/sizeof (uint32_t))
#define L_TEC_DATA34 (0x188/sizeof (uint32_t))
#define L_TEC_DATA35 (0x18C/sizeof (uint32_t))
#define L_TEC_DATA36 (0x190/sizeof (uint32_t))
#define L_TEC_DATA37 (0x194/sizeof (uint32_t))
#define L_TEC_DATA38 (0x198/sizeof (uint32_t))
#define L_TEC_DATA39 (0x19C/sizeof (uint32_t))
#define L_TEC_DATA40 (0x1A0/sizeof (uint32_t))
#define L_TEC_DATA41 (0x1A4/sizeof (uint32_t))
#define L_TEC_DATA42 (0x1A8/sizeof (uint32_t))
#define L_TEC_DATA43 (0x1AC/sizeof (uint32_t))
#define L_TEC_DATA44 (0x1B0/sizeof (uint32_t))
#define L_TEC_DATA45 (0x1B4/sizeof (uint32_t))
#define L_TEC_DATA46 (0x1B8/sizeof (uint32_t))
#define L_TEC_DATA47 (0x1BC/sizeof (uint32_t))
#define L_TEC_DATA48 (0x1C0/sizeof (uint32_t))
#define L_TEC_DATA49 (0x1C4/sizeof (uint32_t))
#define L_TEC_DATA50 (0x1C8/sizeof (uint32_t))
#define L_TEC_DATA51 (0x1CC/sizeof (uint32_t))
#define L_TEC_DATA52 (0x1D0/sizeof (uint32_t))
#define L_TEC_DATA53 (0x1D4/sizeof (uint32_t))
#define L_TEC_DATA54 (0x1D8/sizeof (uint32_t))
#define L_TEC_DATA55 (0x1DC/sizeof (uint32_t))
#define L_TEC_DATA56 (0x1E0/sizeof (uint32_t))
#define L_TEC_DATA57 (0x1E4/sizeof (uint32_t))
#define L_TEC_DATA58 (0x1E8/sizeof (uint32_t))
#define L_TEC_DATA59 (0x1EC/sizeof (uint32_t))
#define L_TEC_DATA60 (0x1F0/sizeof (uint32_t))
#define L_TEC_DATA61 (0x1F4/sizeof (uint32_t))
#define L_TEC_DATA62 (0x1F8/sizeof (uint32_t))
#define L_TEC_DATA63 (0x1FC/sizeof (uint32_t))
/* matrix registers */
#define L_TEC_MV_MATRIX (0x000/sizeof (uint32_t))
#define L_TEC_CLIPCHECK (0x004/sizeof (uint32_t))
#define L_TEC_VDC_MATRIX (0x008/sizeof (uint32_t))
/* command register */
#define L_TEC_COMMAND1 (0x0010/sizeof (uint32_t))
#define L_TEC_COMMAND2 (0x0014/sizeof (uint32_t))
#define L_TEC_COMMAND3 (0x0018/sizeof (uint32_t))
#define L_TEC_COMMAND4 (0x001c/sizeof (uint32_t))
/* uint32_teger indexed address registers */
#define L_TEC_IPOINTABSX (0x800 / sizeof (uint32_t))
#define L_TEC_IPOINTABSY (0x804 / sizeof (uint32_t))
#define L_TEC_IPOINTABSZ (0x808 / sizeof (uint32_t))
#define L_TEC_IPOINTABSW (0x80C / sizeof (uint32_t))
#define L_TEC_IPOINTRELX (0x810 / sizeof (uint32_t))
#define L_TEC_IPOINTRELY (0x814 / sizeof (uint32_t))
#define L_TEC_IPOINTRELZ (0x818 / sizeof (uint32_t))
#define L_TEC_IPOINTRELW (0x81C / sizeof (uint32_t))
#define L_TEC_ILINEABSX (0x840 / sizeof (uint32_t))
#define L_TEC_ILINEABSY (0x844 / sizeof (uint32_t))
#define L_TEC_ILINEABSZ (0x848 / sizeof (uint32_t))
#define L_TEC_ILINEABSW (0x84C / sizeof (uint32_t))
#define L_TEC_ILINERELX (0x850 / sizeof (uint32_t))
#define L_TEC_ILINERELY (0x854 / sizeof (uint32_t))
#define L_TEC_ILINERELZ (0x858 / sizeof (uint32_t))
#define L_TEC_ILINERELW (0x85C / sizeof (uint32_t))
#define L_TEC_ITRIABSX (0x880 / sizeof (uint32_t))
#define L_TEC_ITRIABSY (0x884 / sizeof (uint32_t))
#define L_TEC_ITRIABSZ (0x888 / sizeof (uint32_t))
#define L_TEC_ITRIABSW (0x88C / sizeof (uint32_t))
#define L_TEC_ITRIRELX (0x890 / sizeof (uint32_t))
#define L_TEC_ITRIRELY (0x894 / sizeof (uint32_t))
#define L_TEC_ITRIRELZ (0x898 / sizeof (uint32_t))
#define L_TEC_ITRIRELW (0x89C / sizeof (uint32_t))
#define L_TEC_IQUADABSX (0x8C0 / sizeof (uint32_t))
#define L_TEC_IQUADABSY (0x8C4 / sizeof (uint32_t))
#define L_TEC_IQUADABSZ (0x8C8 / sizeof (uint32_t))
#define L_TEC_IQUADABSW (0x8CC / sizeof (uint32_t))
#define L_TEC_IQUADRELX (0x8D0 / sizeof (uint32_t))
#define L_TEC_IQUADRELY (0x8D4 / sizeof (uint32_t))
#define L_TEC_IQUADRELZ (0x8D8 / sizeof (uint32_t))
#define L_TEC_IQUADRELW (0x8DC / sizeof (uint32_t))
#define L_TEC_IRECTABSX (0x900 / sizeof (uint32_t))
#define L_TEC_IRECTABSY (0x904 / sizeof (uint32_t))
#define L_TEC_IRECTABSZ (0x908 / sizeof (uint32_t))
#define L_TEC_IRECTABSW (0x90C / sizeof (uint32_t))
#define L_TEC_IRECTRELX (0x910 / sizeof (uint32_t))
#define L_TEC_IRECTRELY (0x914 / sizeof (uint32_t))
#define L_TEC_IRECTRELZ (0x918 / sizeof (uint32_t))
#define L_TEC_IRECTRELW (0x91C / sizeof (uint32_t))
/* fixed pouint32_t indexed address registers */
#define L_TEC_BPOINTABSX (0xA00 / sizeof (uint32_t))
#define L_TEC_BPOINTABSY (0xA04 / sizeof (uint32_t))
#define L_TEC_BPOINTABSZ (0xA08 / sizeof (uint32_t))
#define L_TEC_BPOINTABSW (0xA0C / sizeof (uint32_t))
#define L_TEC_BPOINTRELX (0xA10 / sizeof (uint32_t))
#define L_TEC_BPOINTRELY (0xA14 / sizeof (uint32_t))
#define L_TEC_BPOINTRELZ (0xA18 / sizeof (uint32_t))
#define L_TEC_BPOINTRELW (0xA1C / sizeof (uint32_t))
#define L_TEC_BLINEABSX (0xA40 / sizeof (uint32_t))
#define L_TEC_BLINEABSY (0xA44 / sizeof (uint32_t))
#define L_TEC_BLINEABSZ (0xA48 / sizeof (uint32_t))
#define L_TEC_BLINEABSW (0xA4C / sizeof (uint32_t))
#define L_TEC_BLINERELX (0xA50 / sizeof (uint32_t))
#define L_TEC_BLINERELY (0xA54 / sizeof (uint32_t))
#define L_TEC_BLINERELZ (0xA58 / sizeof (uint32_t))
#define L_TEC_BLINERELW (0xA5C / sizeof (uint32_t))
#define L_TEC_BTRIABSX (0xA80 / sizeof (uint32_t))
#define L_TEC_BTRIABSY (0xA84 / sizeof (uint32_t))
#define L_TEC_BTRIABSZ (0xA88 / sizeof (uint32_t))
#define L_TEC_BTRIABSW (0xA8C / sizeof (uint32_t))
#define L_TEC_BTRIRELX (0xA90 / sizeof (uint32_t))
#define L_TEC_BTRIRELY (0xA94 / sizeof (uint32_t))
#define L_TEC_BTRIRELZ (0xA98 / sizeof (uint32_t))
#define L_TEC_BTRIRELW (0xA9C / sizeof (uint32_t))
#define L_TEC_BQUADABSX (0xAC0 / sizeof (uint32_t))
#define L_TEC_BQUADABSY (0xAC4 / sizeof (uint32_t))
#define L_TEC_BQUADABSZ (0xAC8 / sizeof (uint32_t))
#define L_TEC_BQUADABSW (0xACC / sizeof (uint32_t))
#define L_TEC_BQUADRELX (0xAD0 / sizeof (uint32_t))
#define L_TEC_BQUADRELY (0xAD4 / sizeof (uint32_t))
#define L_TEC_BQUADRELZ (0xAD8 / sizeof (uint32_t))
#define L_TEC_BQUADRELW (0xADC / sizeof (uint32_t))
#define L_TEC_BRECTABSX (0xB00 / sizeof (uint32_t))
#define L_TEC_BRECTABSY (0xB04 / sizeof (uint32_t))
#define L_TEC_BRECTABSZ (0xB08 / sizeof (uint32_t))
#define L_TEC_BRECTABSW (0xB0C / sizeof (uint32_t))
#define L_TEC_BRECTRELX (0xB10 / sizeof (uint32_t))
#define L_TEC_BRECTRELY (0xB14 / sizeof (uint32_t))
#define L_TEC_BRECTRELZ (0xB18 / sizeof (uint32_t))
#define L_TEC_BRECTRELW (0xB1C / sizeof (uint32_t))
/* floating pouint32_t indexed address registers */
#define L_TEC_FPOINTABSX (0xC00 / sizeof (uint32_t))
#define L_TEC_FPOINTABSY (0xC04 / sizeof (uint32_t))
#define L_TEC_FPOINTABSZ (0xC08 / sizeof (uint32_t))
#define L_TEC_FPOINTABSW (0xC0C / sizeof (uint32_t))
#define L_TEC_FPOINTRELX (0xC10 / sizeof (uint32_t))
#define L_TEC_FPOINTRELY (0xC14 / sizeof (uint32_t))
#define L_TEC_FPOINTRELZ (0xC18 / sizeof (uint32_t))
#define L_TEC_FPOINTRELW (0xC1C / sizeof (uint32_t))
#define L_TEC_FLINEABSX (0xC40 / sizeof (uint32_t))
#define L_TEC_FLINEABSY (0xC44 / sizeof (uint32_t))
#define L_TEC_FLINEABSZ (0xC48 / sizeof (uint32_t))
#define L_TEC_FLINEABSW (0xC4C / sizeof (uint32_t))
#define L_TEC_FLINERELX (0xC50 / sizeof (uint32_t))
#define L_TEC_FLINERELY (0xC54 / sizeof (uint32_t))
#define L_TEC_FLINERELZ (0xC58 / sizeof (uint32_t))
#define L_TEC_FLINERELW (0xC5C / sizeof (uint32_t))
#define L_TEC_FTRIABSX (0xC80 / sizeof (uint32_t))
#define L_TEC_FTRIABSY (0xC84 / sizeof (uint32_t))
#define L_TEC_FTRIABSZ (0xC88 / sizeof (uint32_t))
#define L_TEC_FTRIABSW (0xC8C / sizeof (uint32_t))
#define L_TEC_FTRIRELX (0xC90 / sizeof (uint32_t))
#define L_TEC_FTRIRELY (0xC94 / sizeof (uint32_t))
#define L_TEC_FTRIRELZ (0xC98 / sizeof (uint32_t))
#define L_TEC_FTRIRELW (0xC9C / sizeof (uint32_t))
#define L_TEC_FQUADABSX (0xCC0 / sizeof (uint32_t))
#define L_TEC_FQUADABSY (0xCC4 / sizeof (uint32_t))
#define L_TEC_FQUADABSZ (0xCC8 / sizeof (uint32_t))
#define L_TEC_FQUADABSW (0xCCC / sizeof (uint32_t))
#define L_TEC_FQUADRELX (0xCD0 / sizeof (uint32_t))
#define L_TEC_FQUADRELY (0xCD4 / sizeof (uint32_t))
#define L_TEC_FQUADRELZ (0xCD8 / sizeof (uint32_t))
#define L_TEC_FQUADRELW (0xCDC / sizeof (uint32_t))
#define L_TEC_FRECTABSX (0xD00 / sizeof (uint32_t))
#define L_TEC_FRECTABSY (0xD04 / sizeof (uint32_t))
#define L_TEC_FRECTABSZ (0xD08 / sizeof (uint32_t))
#define L_TEC_FRECTABSW (0xD0C / sizeof (uint32_t))
#define L_TEC_FRECTRELX (0xD10 / sizeof (uint32_t))
#define L_TEC_FRECTRELY (0xD14 / sizeof (uint32_t))
#define L_TEC_FRECTRELZ (0xD18 / sizeof (uint32_t))
#define L_TEC_FRECTRELW (0xD1C / sizeof (uint32_t))
/*
* Generic unsigned types for bit fields
*/
typedef enum {
L_TEC_UNUSED = 0
} l_tec_unused_t;
/*
* typedefs for entering index registers
*/
typedef enum { /* coordinate type of {pou_int,line,etc} */
L_TEC_X = 0,
L_TEC_Y = 1,
L_TEC_Z = 2,
L_TEC_W = 3, /* used as index to store index writes in */
/* tec_data array */
L_TEC_X_MV = 4,
L_TEC_Y_MV = 5,
L_TEC_Z_MV = 6,
L_TEC_W_MV = 7, /* used as index to store xform results */
L_TEC_X_VDC = 8,
L_TEC_Y_VDC = 9,
L_TEC_Z_VDC = 10, /* used as index to store VDC multiply result */
L_TEC_SCRATCH = 11 /* scratch register */
} l_tec_coord_t;
typedef enum { /* index coordinate type */
L_TEC_INT = 0,
L_TEC_FRAC = 1,
L_TEC_FLOAT = 2
} l_tec_type_t;
typedef enum { /* index object type */
L_TEC_POINT = 0,
L_TEC_LINE = 1,
L_TEC_TRI = 2,
L_TEC_QUAD = 3,
L_TEC_RECT = 4
} l_tec_object_t;
typedef enum {
L_TEC_ABS = 0,
L_TEC_REL = 1
} l_tec_mode_t;
/*
* TEC MV_MATRIX register bits.
*/
typedef enum {
L_TEC_MV_DIV_OFF = 0,
L_TEC_MV_DIV_ON = 1
} l_tec_mv_div_t;
typedef enum {
L_TEC_MV_AUTO_OFF = 0,
L_TEC_MV_AUTO_ON = 1
} l_tec_mv_auto_t;
typedef enum {
L_TEC_MV_H_FALSE = 0,
L_TEC_MV_H_TRUE = 1
} l_tec_mv_h_t;
typedef enum {
L_TEC_MV_Z_FALSE = 0, L_TEC_MV_Z_TRUE = 1
} l_tec_mv_z_t;
typedef enum {
L_TEC_MV_I3 = 0, L_TEC_MV_I4 = 1
} l_tec_mv_i_t;
typedef enum {
L_TEC_MV_J1 = 0, L_TEC_MV_J2 = 1, L_TEC_MV_J3 = 2, L_TEC_MV_J4 = 3
} l_tec_mv_j_t;
typedef struct l_tec_mv {
l_tec_unused_t l_tec_mv_unused1 :16; /* NOT USED */
l_tec_mv_div_t l_tec_mv_div : 1; /* divide enable */
l_tec_mv_auto_t l_tec_mv_autoload : 1; /* autoload enable */
l_tec_mv_h_t l_tec_mv_h : 1; /* pou_int size */
l_tec_mv_z_t l_tec_mv_z : 1; /* pou_int size */
l_tec_unused_t l_tec_mv_unused2 : 1; /* NOT USED */
l_tec_mv_i_t l_tec_mv_i : 1; /* matrix rows */
l_tec_mv_j_t l_tec_mv_j : 2; /* matrix columns */
l_tec_unused_t l_tec_mv_unused3 : 2; /* NOT USED */
uint32_t l_tec_mv_index : 6; /* matrix start data */
/* register */
} l_tec_mv_t;
/*
* TEC CLIPCHECK bits.
*/
typedef enum {
L_TEC_EXCEPTION_OFF = 0, L_TEC_EXCEPTION_ON = 1
} l_tec_clip_exception_t;
typedef enum {
L_TEC_HIDDEN_OFF = 0, L_TEC_HIDDEN_ON = 1
} l_tec_clip_hidden_t;
typedef enum {
L_TEC_INTERSECT_OFF = 0, L_TEC_INTERSECT_ON = 1
} l_tec_clip_u_intersect_t;
typedef enum {
L_TEC_VISIBLE_OFF = 0, L_TEC_VISIBLE_ON = 1
} l_tec_clip_visible_t;
typedef enum {
L_TEC_ACC_BACKSIDE_FALSE = 0, L_TEC_ACC_BACKSIDE_TRUE = 1
} l_tec_clip_acc_backside_t;
typedef enum {
L_TEC_ACC_LT_FALSE = 0, L_TEC_ACC_LT_TRUE = 1
} l_tec_clip_acc_lt_t;
typedef enum {
L_TEC_ACC_INSIDE_FALSE = 0, L_TEC_ACC_INSIDE_TRUE = 1
} l_tec_clip_acc_inside_t;
typedef enum {
L_TEC_ACC_GT_FALSE = 0, L_TEC_ACC_GT_TRUE = 1
} l_tec_clip_acc_gt_t;
typedef enum {
L_TEC_LT_FALSE = 0, L_TEC_LT_TRUE = 1
} l_tec_clip_lt_t;
typedef enum {
L_TEC_GT_FALSE = 0, L_TEC_GT_TRUE = 1
} l_tec_clip_gt_t;
typedef enum {
L_TEC_CLIP_OFF = 0, L_TEC_CLIP_ON = 1
} l_tec_clip_enable_t;
typedef struct l_tec_clip { /* big assumption here is compiler */
/* assigns bit fields left to right */
l_tec_clip_exception_t l_tec_clip_exception : 1;
l_tec_clip_hidden_t l_tec_clip_hidden : 1;
l_tec_clip_u_intersect_t l_tec_clip_intersect : 1;
l_tec_clip_visible_t l_tec_clip_visible : 1;
l_tec_unused_t l_tec_clip_unused1 : 3;
l_tec_clip_enable_t l_tec_clip_enable : 1;
l_tec_clip_acc_backside_t l_tec_clip_acc_z_backside : 1;
l_tec_clip_acc_lt_t l_tec_clip_acc_z_lt_front : 1;
l_tec_clip_acc_inside_t l_tec_clip_acc_z_inside : 1;
l_tec_clip_acc_gt_t l_tec_clip_acc_z_gt_back : 1;
l_tec_clip_lt_t l_tec_clip_z_lt_front : 1;
l_tec_clip_gt_t l_tec_clip_z_gt_back : 1;
l_tec_clip_enable_t l_tec_clip_front : 1;
l_tec_clip_enable_t l_tec_clip_back : 1;
l_tec_clip_acc_backside_t l_tec_clip_acc_y_backside : 1;
l_tec_clip_acc_lt_t l_tec_clip_acc_y_lt_bottom : 1;
l_tec_clip_acc_inside_t l_tec_clip_acc_y_inside : 1;
l_tec_clip_acc_gt_t l_tec_clip_acc_y_gt_top : 1;
l_tec_clip_lt_t l_tec_clip_y_lt_bottom : 1;
l_tec_clip_gt_t l_tec_clip_y_gt_top : 1;
l_tec_clip_enable_t l_tec_clip_bottom : 1;
l_tec_clip_enable_t l_tec_clip_top : 1;
l_tec_clip_acc_backside_t l_tec_clip_acc_x_backside : 1;
l_tec_clip_acc_lt_t l_tec_clip_acc_x_lt_left : 1;
l_tec_clip_acc_inside_t l_tec_clip_acc_x_inside : 1;
l_tec_clip_acc_gt_t l_tec_clip_acc_x_gt_right : 1;
l_tec_clip_lt_t l_tec_clip_x_lt_left : 1;
l_tec_clip_gt_t l_tec_clip_x_gt_right : 1;
l_tec_clip_enable_t l_tec_clip_left : 1;
l_tec_clip_enable_t l_tec_clip_right : 1;
} l_tec_clip_t;
/*
* TEC VDC_MATRIX register bits.
*/
typedef enum {
L_TEC_VDC_INT = 0, L_TEC_VDC_FIXED = 1, L_TEC_VDC_FLOAT = 2,
L_TEC_VDC_INTRNL0 = 4, L_TEC_VDC_INTRNL1 = 5
}l_tec_vdc_type_t;
typedef enum {
L_TEC_VDC_2D = 0, L_TEC_VDC_3D = 1
}l_tec_vdc_k_t;
typedef enum {
L_TEC_VDC_MUL_OFF = 0, L_TEC_VDC_MUL_ON = 1
}l_tec_vdc_mul_t;
typedef struct l_tec_vdc {
l_tec_unused_t l_tec_vdc_unused1 : 16; /* NOT USED */
l_tec_vdc_type_t l_tec_vdc_type : 3; /* reg. access type */
l_tec_vdc_mul_t l_tec_vdc_mul : 1; /* enable VDC mult. */
l_tec_unused_t l_tec_vdc_unused2 : 3; /* NOT USED */
l_tec_vdc_k_t l_tec_vdc_k : 1; /* 2D/3D format */
l_tec_unused_t l_tec_vdc_unused3 : 2; /* NOT USED */
uint32_t l_tec_vdc_index : 6; /* matrix start data */
/* register */
} l_tec_vdc_t;
/*
* TEC COMMAND register bits.
*/
typedef enum {
L_TEC_CMD_M1 = 0,
L_TEC_CMD_M2 = 1,
L_TEC_CMD_M3 = 2,
L_TEC_CMD_M4 = 3
}l_tec_cmd_m_t;
typedef enum {
L_TEC_CMD_N1 = 0,
L_TEC_CMD_N2 = 1,
L_TEC_CMD_N3 = 2,
L_TEC_CMD_N4 = 3
}l_tec_cmd_n_t;
typedef enum {
L_TEC_CMD_I_POS = 0,
L_TEC_CMD_I_NEG = 1
}l_tec_cmd_i_t;
typedef struct l_tec_cmd {
l_tec_cmd_m_t l_tec_cmd_m : 2; /* matrix A columns */
l_tec_cmd_n_t l_tec_cmd_n : 2; /* matrix B columns */
l_tec_cmd_i_t l_tec_cmd_i11 : 1; /* identity diagonal sign */
l_tec_cmd_i_t l_tec_cmd_i22 : 1; /* identity diagonal sign */
l_tec_cmd_i_t l_tec_cmd_i33 : 1; /* identity diagonal sign */
l_tec_cmd_i_t l_tec_cmd_i44 : 1; /* identity diagonal sign */
l_tec_unused_t l_tec_cmd_unused1 : 2; /* NOT USED */
uint32_t l_tec_cmd_Aindex : 6; /* A matrix start data reg. */
l_tec_unused_t l_tec_cmd_unused2 : 2; /* NOT USED */
uint32_t l_tec_cmd_Bindex : 6; /* B matrix start data reg. */
l_tec_unused_t l_tec_cmd_unused3 : 2; /* NOT USED */
uint32_t l_tec_cmd_Cindex : 6; /* C matrix start data reg. */
} l_tec_cmd_t;
/*
* TEC registers defined as a structure.
*/
struct tec {
#ifdef structures
struct l_tec_mv l_tec_mv; /* 0 */
struct l_tec_clip l_tec_clip; /* 1 */
struct l_tec_vdc l_tec_vdc; /* 2 */
uint32_t l_tec_pad_3[4-3];
struct l_tec_cmd l_tec_command1; /* 4 */
struct l_tec_cmd l_tec_command2; /* 5 */
struct l_tec_cmd l_tec_command3; /* 6 */
struct l_tec_cmd l_tec_command4; /* 7 */
#else
uint32_t l_tec_mv; /* 0 */
uint32_t l_tec_clip; /* 1 */
uint32_t l_tec_vdc; /* 2 */
uint32_t l_tec_pad_3[4-3];
uint32_t l_tec_command1; /* 4 */
uint32_t l_tec_command2; /* 5 */
uint32_t l_tec_command3; /* 6 */
uint32_t l_tec_command4; /* 7 */
#endif
uint32_t l_tec_pad_8[64-8];
uint32_t l_tec_data00; /* 64 */
uint32_t l_tec_data01; /* 65 */
uint32_t l_tec_data02; /* 66 */
uint32_t l_tec_data03; /* 67 */
uint32_t l_tec_data04; /* 68 */
uint32_t l_tec_data05; /* 69 */
uint32_t l_tec_data06; /* 70 */
uint32_t l_tec_data07; /* 71 */
uint32_t l_tec_data08; /* 72 */
uint32_t l_tec_data09; /* 73 */
uint32_t l_tec_data10; /* 74 */
uint32_t l_tec_data11; /* 75 */
uint32_t l_tec_data12; /* 76 */
uint32_t l_tec_data13; /* 77 */
uint32_t l_tec_data14; /* 78 */
uint32_t l_tec_data15; /* 79 */
uint32_t l_tec_data16; /* 80 */
uint32_t l_tec_data17; /* 81 */
uint32_t l_tec_data18; /* 82 */
uint32_t l_tec_data19; /* 83 */
uint32_t l_tec_data20; /* 84 */
uint32_t l_tec_data21; /* 85 */
uint32_t l_tec_data22; /* 86 */
uint32_t l_tec_data23; /* 87 */
uint32_t l_tec_data24; /* 88 */
uint32_t l_tec_data25; /* 89 */
uint32_t l_tec_data26; /* 90 */
uint32_t l_tec_data27; /* 91 */
uint32_t l_tec_data28; /* 92 */
uint32_t l_tec_data29; /* 93 */
uint32_t l_tec_data30; /* 94 */
uint32_t l_tec_data31; /* 95 */
uint32_t l_tec_data32; /* 96 */
uint32_t l_tec_data33; /* 97 */
uint32_t l_tec_data34; /* 98 */
uint32_t l_tec_data35; /* 99 */
uint32_t l_tec_data36; /* 100 */
uint32_t l_tec_data37; /* 101 */
uint32_t l_tec_data38; /* 102 */
uint32_t l_tec_data39; /* 103 */
uint32_t l_tec_data40; /* 104 */
uint32_t l_tec_data41; /* 105 */
uint32_t l_tec_data42; /* 106 */
uint32_t l_tec_data43; /* 107 */
uint32_t l_tec_data44; /* 108 */
uint32_t l_tec_data45; /* 109 */
uint32_t l_tec_data46; /* 110 */
uint32_t l_tec_data47; /* 111 */
uint32_t l_tec_data48; /* 112 */
uint32_t l_tec_data49; /* 113 */
uint32_t l_tec_data50; /* 114 */
uint32_t l_tec_data51; /* 115 */
uint32_t l_tec_data52; /* 116 */
uint32_t l_tec_data53; /* 117 */
uint32_t l_tec_data54; /* 118 */
uint32_t l_tec_data55; /* 119 */
uint32_t l_tec_data56; /* 120 */
uint32_t l_tec_data57; /* 121 */
uint32_t l_tec_data58; /* 122 */
uint32_t l_tec_data59; /* 123 */
uint32_t l_tec_data60; /* 124 */
uint32_t l_tec_data61; /* 125 */
uint32_t l_tec_data62; /* 126 */
uint32_t l_tec_data63; /* 127 */
uint32_t l_tec_pad_128[512-128];
uint32_t l_tec_ipointabsx; /* 512 */
uint32_t l_tec_ipointabsy; /* 513 */
uint32_t l_tec_ipointabsz; /* 514 */
uint32_t l_tec_ipointabsw; /* 515 */
uint32_t l_tec_ipointrelx; /* 516 */
uint32_t l_tec_ipointrely; /* 517 */
uint32_t l_tec_ipointrelz; /* 518 */
uint32_t l_tec_ipointrelw; /* 519 */
uint32_t l_tec_pad_520[528-520];
uint32_t l_tec_ilineabsx; /* 528 */
uint32_t l_tec_ilineabsy; /* 529 */
uint32_t l_tec_ilineabsz; /* 530 */
uint32_t l_tec_ilineabsw; /* 531 */
uint32_t l_tec_ilinerelx; /* 532 */
uint32_t l_tec_ilinerely; /* 533 */
uint32_t l_tec_ilinerelz; /* 534 */
uint32_t l_tec_ilinerelw; /* 535 */
uint32_t l_tec_pad_536[544-536];
uint32_t l_tec_itriabsx; /* 544 */
uint32_t l_tec_itriabsy; /* 545 */
uint32_t l_tec_itriabsz; /* 546 */
uint32_t l_tec_itriabsw; /* 547 */
uint32_t l_tec_itrirelx; /* 548 */
uint32_t l_tec_itrirely; /* 549 */
uint32_t l_tec_itrirelz; /* 550 */
uint32_t l_tec_itrirelw; /* 551 */
uint32_t l_tec_pad_552[560-552];
uint32_t l_tec_iquadabsx; /* 560 */
uint32_t l_tec_iquadabsy; /* 561 */
uint32_t l_tec_iquadabsz; /* 562 */
uint32_t l_tec_iquadabsw; /* 563 */
uint32_t l_tec_iquadrelx; /* 564 */
uint32_t l_tec_iquadrely; /* 565 */
uint32_t l_tec_iquadrelz; /* 566 */
uint32_t l_tec_iquadrelw; /* 567 */
uint32_t l_tec_pad_568[576-568];
uint32_t l_tec_irectabsx; /* 576 */
uint32_t l_tec_irectabsy; /* 577 */
uint32_t l_tec_irectabsz; /* 578 */
uint32_t l_tec_irectabsw; /* 579 */
uint32_t l_tec_irectrelx; /* 580 */
uint32_t l_tec_irectrely; /* 581 */
uint32_t l_tec_irectrelz; /* 582 */
uint32_t l_tec_irectrelw; /* 583 */
uint32_t l_tec_pad_584[640-584];
uint32_t l_tec_bpointabsx; /* 640 */
uint32_t l_tec_bpointabsy; /* 641 */
uint32_t l_tec_bpointabsz; /* 642 */
uint32_t l_tec_bpointabsw; /* 643 */
uint32_t l_tec_bpointrelx; /* 644 */
uint32_t l_tec_bpointrely; /* 645 */
uint32_t l_tec_bpointrelz; /* 646 */
uint32_t l_tec_bpointrelw; /* 647 */
uint32_t l_tec_pad_648[656-648];
uint32_t l_tec_blineabsx; /* 656 */
uint32_t l_tec_blineabsy; /* 657 */
uint32_t l_tec_blineabsz; /* 658 */
uint32_t l_tec_blineabsw; /* 659 */
uint32_t l_tec_blinerelx; /* 660 */
uint32_t l_tec_blinerely; /* 661 */
uint32_t l_tec_blinerelz; /* 662 */
uint32_t l_tec_blinerelw; /* 663 */
uint32_t l_tec_pad_664[672-664];
uint32_t l_tec_btriabsx; /* 672 */
uint32_t l_tec_btriabsy; /* 673 */
uint32_t l_tec_btriabsz; /* 674 */
uint32_t l_tec_btriabsw; /* 675 */
uint32_t l_tec_btrirelx; /* 676 */
uint32_t l_tec_btrirely; /* 677 */
uint32_t l_tec_btrirelz; /* 678 */
uint32_t l_tec_btrirelw; /* 679 */
uint32_t l_tec_pad_680[688-680];
uint32_t l_tec_bquadabsx; /* 688 */
uint32_t l_tec_bquadabsy; /* 689 */
uint32_t l_tec_bquadabsz; /* 690 */
uint32_t l_tec_bquadabsw; /* 691 */
uint32_t l_tec_bquadrelx; /* 692 */
uint32_t l_tec_bquadrely; /* 693 */
uint32_t l_tec_bquadrelz; /* 694 */
uint32_t l_tec_bquadrelw; /* 695 */
uint32_t l_tec_pad_696[704-696];
uint32_t l_tec_brectabsx; /* 704 */
uint32_t l_tec_brectabsy; /* 705 */
uint32_t l_tec_brectabsz; /* 706 */
uint32_t l_tec_brectabsw; /* 707 */
uint32_t l_tec_brectrelx; /* 708 */
uint32_t l_tec_brectrely; /* 709 */
uint32_t l_tec_brectrelz; /* 710 */
uint32_t l_tec_brectrelw; /* 711 */
uint32_t l_tec_pad_712[768-712];
uint32_t l_tec_fpointabsx; /* 768 */
uint32_t l_tec_fpointabsy; /* 769 */
uint32_t l_tec_fpointabsz; /* 770 */
uint32_t l_tec_fpointabsw; /* 771 */
uint32_t l_tec_fpointrelx; /* 772 */
uint32_t l_tec_fpointrely; /* 773 */
uint32_t l_tec_fpointrelz; /* 774 */
uint32_t l_tec_fpointrelw; /* 775 */
uint32_t l_tec_pad_776[784-776];
uint32_t l_tec_flineabsx; /* 784 */
uint32_t l_tec_flineabsy; /* 785 */
uint32_t l_tec_flineabsz; /* 786 */
uint32_t l_tec_flineabsw; /* 787 */
uint32_t l_tec_flinerelx; /* 788 */
uint32_t l_tec_flinerely; /* 789 */
uint32_t l_tec_flinerelz; /* 790 */
uint32_t l_tec_flinerelw; /* 791 */
uint32_t l_tec_pad_792[800-792];
uint32_t l_tec_ftriabsx; /* 800 */
uint32_t l_tec_ftriabsy; /* 801 */
uint32_t l_tec_ftriabsz; /* 802 */
uint32_t l_tec_ftriabsw; /* 803 */
uint32_t l_tec_ftrirelx; /* 804 */
uint32_t l_tec_ftrirely; /* 805 */
uint32_t l_tec_ftrirelz; /* 806 */
uint32_t l_tec_ftrirelw; /* 807 */
uint32_t l_tec_pad_808[816-808];
uint32_t l_tec_fquadabsx; /* 816 */
uint32_t l_tec_fquadabsy; /* 817 */
uint32_t l_tec_fquadabsz; /* 818 */
uint32_t l_tec_fquadabsw; /* 819 */
uint32_t l_tec_fquadrelx; /* 820 */
uint32_t l_tec_fquadrely; /* 821 */
uint32_t l_tec_fquadrelz; /* 822 */
uint32_t l_tec_fquadrelw; /* 823 */
uint32_t l_tec_pad_824[832-824];
uint32_t l_tec_frectabsx; /* 832 */
uint32_t l_tec_frectabsy; /* 833 */
uint32_t l_tec_frectabsz; /* 834 */
uint32_t l_tec_frectabsw; /* 835 */
uint32_t l_tec_frectrelx; /* 836 */
uint32_t l_tec_frectrely; /* 837 */
uint32_t l_tec_frectrelz; /* 838 */
uint32_t l_tec_frectrelw; /* 839 */
};
#define NUM_TEC_REGS (sizeof (struct l_tec)/sizeof (uint_t))
#ifdef __cplusplus
}
#endif
#endif /* _SYS_CG6TEC_H */