#ifndef __ALPHA_TITAN__H__ #define __ALPHA_TITAN__H__ #include #include /* * TITAN is the internal names for a core logic chipset which provides * memory controller and PCI/AGP access for 21264 based systems. * * This file is based on: * * Titan Chipset Engineering Specification * Revision 0.12 * 13 July 1999 * */ /* XXX: Do we need to conditionalize on this? */ #ifdef USE_48_BIT_KSEG #define TI_BIAS 0x80000000000UL #else #define TI_BIAS 0x10000000000UL #endif /* * CChip, DChip, and PChip registers */ typedef struct { volatile unsigned long csr __attribute__((aligned(64))); } titan_64; typedef struct { titan_64 csc; titan_64 mtr; titan_64 misc; titan_64 mpd; titan_64 aar0; titan_64 aar1; titan_64 aar2; titan_64 aar3; titan_64 dim0; titan_64 dim1; titan_64 dir0; titan_64 dir1; titan_64 drir; titan_64 prben; titan_64 iic0; titan_64 iic1; titan_64 mpr0; titan_64 mpr1; titan_64 mpr2; titan_64 mpr3; titan_64 rsvd[2]; titan_64 ttr; titan_64 tdr; titan_64 dim2; titan_64 dim3; titan_64 dir2; titan_64 dir3; titan_64 iic2; titan_64 iic3; titan_64 pwr; titan_64 reserved[17]; titan_64 cmonctla; titan_64 cmonctlb; titan_64 cmoncnt01; titan_64 cmoncnt23; titan_64 cpen; } titan_cchip; typedef struct { titan_64 dsc; titan_64 str; titan_64 drev; titan_64 dsc2; } titan_dchip; typedef struct { titan_64 wsba[4]; titan_64 wsm[4]; titan_64 tba[4]; titan_64 pctl; titan_64 plat; titan_64 reserved0[2]; union { struct { titan_64 serror; titan_64 serren; titan_64 serrset; titan_64 reserved0; titan_64 gperror; titan_64 gperren; titan_64 gperrset; titan_64 reserved1; titan_64 gtlbiv; titan_64 gtlbia; titan_64 reserved2[2]; titan_64 sctl; titan_64 reserved3[3]; } g; struct { titan_64 agperror; titan_64 agperren; titan_64 agperrset; titan_64 agplastwr; titan_64 aperror; titan_64 aperren; titan_64 aperrset; titan_64 reserved0; titan_64 atlbiv; titan_64 atlbia; titan_64 reserved1[6]; } a; } port_specific; titan_64 sprst; titan_64 reserved1[31]; } titan_pachip_port; typedef struct { titan_pachip_port g_port; titan_pachip_port a_port; } titan_pachip; #define TITAN_cchip ((titan_cchip *)(IDENT_ADDR+TI_BIAS+0x1A0000000UL)) #define TITAN_dchip ((titan_dchip *)(IDENT_ADDR+TI_BIAS+0x1B0000800UL)) #define TITAN_pachip0 ((titan_pachip *)(IDENT_ADDR+TI_BIAS+0x180000000UL)) #define TITAN_pachip1 ((titan_pachip *)(IDENT_ADDR+TI_BIAS+0x380000000UL)) extern unsigned TITAN_agp; extern int TITAN_bootcpu; /* * TITAN PA-chip Window Space Base Address register. * (WSBA[0-2]) */ #define wsba_m_ena 0x1 #define wsba_m_sg 0x2 #define wsba_m_addr 0xFFF00000 #define wmask_k_sz1gb 0x3FF00000 union TPAchipWSBA { struct { unsigned wsba_v_ena : 1; unsigned wsba_v_sg : 1; unsigned wsba_v_rsvd1 : 18; unsigned wsba_v_addr : 12; unsigned wsba_v_rsvd2 : 32; } wsba_r_bits; int wsba_q_whole [2]; }; /* * TITAN PA-chip Control Register * This definition covers both the G-Port GPCTL and the A-PORT APCTL. * Bits <51:0> are the same in both cases. APCTL<63:52> are only * applicable to AGP. */ #define pctl_m_fbtb 0x00000001 #define pctl_m_thdis 0x00000002