1*4882a593Smuzhiyun /***************************************************************************** 2*4882a593Smuzhiyun * (C) Copyright 2003; Tundra Semiconductor Corp. 3*4882a593Smuzhiyun * (C) Copyright 2006; Freescale Semiconductor Corp. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun *****************************************************************************/ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun * FILENAME: tsi108.h 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * Originator: Alex Bounine 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun * DESCRIPTION: 14*4882a593Smuzhiyun * Common definitions for the Tundra Tsi108 bridge chip 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #ifndef _TSI108_H_ 19*4882a593Smuzhiyun #define _TSI108_H_ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #define TSI108_HLP_REG_OFFSET (0x0000) 22*4882a593Smuzhiyun #define TSI108_PCI_REG_OFFSET (0x1000) 23*4882a593Smuzhiyun #define TSI108_CLK_REG_OFFSET (0x2000) 24*4882a593Smuzhiyun #define TSI108_PB_REG_OFFSET (0x3000) 25*4882a593Smuzhiyun #define TSI108_SD_REG_OFFSET (0x4000) 26*4882a593Smuzhiyun #define TSI108_MPIC_REG_OFFSET (0x7400) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define PB_ID (0x000) 29*4882a593Smuzhiyun #define PB_RSR (0x004) 30*4882a593Smuzhiyun #define PB_BUS_MS_SELECT (0x008) 31*4882a593Smuzhiyun #define PB_ISR (0x00C) 32*4882a593Smuzhiyun #define PB_ARB_CTRL (0x018) 33*4882a593Smuzhiyun #define PB_PVT_CTRL2 (0x034) 34*4882a593Smuzhiyun #define PB_SCR (0x400) 35*4882a593Smuzhiyun #define PB_ERRCS (0x404) 36*4882a593Smuzhiyun #define PB_AERR (0x408) 37*4882a593Smuzhiyun #define PB_REG_BAR (0x410) 38*4882a593Smuzhiyun #define PB_OCN_BAR1 (0x414) 39*4882a593Smuzhiyun #define PB_OCN_BAR2 (0x418) 40*4882a593Smuzhiyun #define PB_SDRAM_BAR1 (0x41C) 41*4882a593Smuzhiyun #define PB_SDRAM_BAR2 (0x420) 42*4882a593Smuzhiyun #define PB_MCR (0xC00) 43*4882a593Smuzhiyun #define PB_MCMD (0xC04) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define HLP_B0_ADDR (0x000) 46*4882a593Smuzhiyun #define HLP_B1_ADDR (0x010) 47*4882a593Smuzhiyun #define HLP_B2_ADDR (0x020) 48*4882a593Smuzhiyun #define HLP_B3_ADDR (0x030) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #define HLP_B0_MASK (0x004) 51*4882a593Smuzhiyun #define HLP_B1_MASK (0x014) 52*4882a593Smuzhiyun #define HLP_B2_MASK (0x024) 53*4882a593Smuzhiyun #define HLP_B3_MASK (0x034) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #define HLP_B0_CTRL0 (0x008) 56*4882a593Smuzhiyun #define HLP_B1_CTRL0 (0x018) 57*4882a593Smuzhiyun #define HLP_B2_CTRL0 (0x028) 58*4882a593Smuzhiyun #define HLP_B3_CTRL0 (0x038) 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #define HLP_B0_CTRL1 (0x00C) 61*4882a593Smuzhiyun #define HLP_B1_CTRL1 (0x01C) 62*4882a593Smuzhiyun #define HLP_B2_CTRL1 (0x02C) 63*4882a593Smuzhiyun #define HLP_B3_CTRL1 (0x03C) 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define PCI_CSR (0x004) 66*4882a593Smuzhiyun #define PCI_P2O_BAR0 (0x010) 67*4882a593Smuzhiyun #define PCI_P2O_BAR0_UPPER (0x014) 68*4882a593Smuzhiyun #define PCI_P2O_BAR2 (0x018) 69*4882a593Smuzhiyun #define PCI_P2O_BAR2_UPPER (0x01C) 70*4882a593Smuzhiyun #define PCI_P2O_BAR3 (0x020) 71*4882a593Smuzhiyun #define PCI_P2O_BAR3_UPPER (0x024) 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define PCI_MISC_CSR (0x040) 74*4882a593Smuzhiyun #define PCI_P2O_PAGE_SIZES (0x04C) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun #define PCI_PCIX_STAT (0x0F4) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #define PCI_IRP_STAT (0x184) 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #define PCI_PFAB_BAR0 (0x204) 81*4882a593Smuzhiyun #define PCI_PFAB_BAR0_UPPER (0x208) 82*4882a593Smuzhiyun #define PCI_PFAB_IO (0x20C) 83*4882a593Smuzhiyun #define PCI_PFAB_IO_UPPER (0x210) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #define PCI_PFAB_MEM32 (0x214) 86*4882a593Smuzhiyun #define PCI_PFAB_MEM32_REMAP (0x218) 87*4882a593Smuzhiyun #define PCI_PFAB_MEM32_MASK (0x21C) 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #define CG_PLL0_CTRL0 (0x210) 90*4882a593Smuzhiyun #define CG_PLL0_CTRL1 (0x214) 91*4882a593Smuzhiyun #define CG_PLL1_CTRL0 (0x220) 92*4882a593Smuzhiyun #define CG_PLL1_CTRL1 (0x224) 93*4882a593Smuzhiyun #define CG_PWRUP_STATUS (0x234) 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #define MPIC_CSR(n) (0x30C + (n * 0x40)) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define SD_CTRL (0x000) 98*4882a593Smuzhiyun #define SD_STATUS (0x004) 99*4882a593Smuzhiyun #define SD_TIMING (0x008) 100*4882a593Smuzhiyun #define SD_REFRESH (0x00C) 101*4882a593Smuzhiyun #define SD_INT_STATUS (0x010) 102*4882a593Smuzhiyun #define SD_INT_ENABLE (0x014) 103*4882a593Smuzhiyun #define SD_INT_SET (0x018) 104*4882a593Smuzhiyun #define SD_D0_CTRL (0x020) 105*4882a593Smuzhiyun #define SD_D1_CTRL (0x024) 106*4882a593Smuzhiyun #define SD_D0_BAR (0x028) 107*4882a593Smuzhiyun #define SD_D1_BAR (0x02C) 108*4882a593Smuzhiyun #define SD_ECC_CTRL (0x040) 109*4882a593Smuzhiyun #define SD_DLL_STATUS (0x250) 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun #define TS_SD_CTRL_ENABLE (1 << 31) 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun #define PB_ERRCS_ES (1 << 1) 114*4882a593Smuzhiyun #define PB_ISR_PBS_RD_ERR (1 << 8) 115*4882a593Smuzhiyun #define PCI_IRP_STAT_P_CSR (1 << 23) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* 118*4882a593Smuzhiyun * I2C : Register address offset definitions 119*4882a593Smuzhiyun */ 120*4882a593Smuzhiyun #define I2C_CNTRL1 (0x00000000) 121*4882a593Smuzhiyun #define I2C_CNTRL2 (0x00000004) 122*4882a593Smuzhiyun #define I2C_RD_DATA (0x00000008) 123*4882a593Smuzhiyun #define I2C_TX_DATA (0x0000000c) 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun /* 126*4882a593Smuzhiyun * I2C : Register Bit Masks and Reset Values 127*4882a593Smuzhiyun * definitions for every register 128*4882a593Smuzhiyun */ 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun /* I2C_CNTRL1 : Reset Value */ 131*4882a593Smuzhiyun #define I2C_CNTRL1_RESET_VALUE (0x0000000a) 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun /* I2C_CNTRL1 : Register Bits Masks Definitions */ 134*4882a593Smuzhiyun #define I2C_CNTRL1_DEVCODE (0x0000000f) 135*4882a593Smuzhiyun #define I2C_CNTRL1_PAGE (0x00000700) 136*4882a593Smuzhiyun #define I2C_CNTRL1_BYTADDR (0x00ff0000) 137*4882a593Smuzhiyun #define I2C_CNTRL1_I2CWRITE (0x01000000) 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* I2C_CNTRL1 : Read/Write Bit Mask Definition */ 140*4882a593Smuzhiyun #define I2C_CNTRL1_RWMASK (0x01ff070f) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun /* I2C_CNTRL1 : Unused/Reserved bits Definition */ 143*4882a593Smuzhiyun #define I2C_CNTRL1_RESERVED (0xfe00f8f0) 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun /* I2C_CNTRL2 : Reset Value */ 146*4882a593Smuzhiyun #define I2C_CNTRL2_RESET_VALUE (0x00000000) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* I2C_CNTRL2 : Register Bits Masks Definitions */ 149*4882a593Smuzhiyun #define I2C_CNTRL2_SIZE (0x00000003) 150*4882a593Smuzhiyun #define I2C_CNTRL2_LANE (0x0000000c) 151*4882a593Smuzhiyun #define I2C_CNTRL2_MULTIBYTE (0x00000010) 152*4882a593Smuzhiyun #define I2C_CNTRL2_START (0x00000100) 153*4882a593Smuzhiyun #define I2C_CNTRL2_WR_STATUS (0x00010000) 154*4882a593Smuzhiyun #define I2C_CNTRL2_RD_STATUS (0x00020000) 155*4882a593Smuzhiyun #define I2C_CNTRL2_I2C_TO_ERR (0x04000000) 156*4882a593Smuzhiyun #define I2C_CNTRL2_I2C_CFGERR (0x08000000) 157*4882a593Smuzhiyun #define I2C_CNTRL2_I2C_CMPLT (0x10000000) 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* I2C_CNTRL2 : Read/Write Bit Mask Definition */ 160*4882a593Smuzhiyun #define I2C_CNTRL2_RWMASK (0x0000011f) 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun /* I2C_CNTRL2 : Unused/Reserved bits Definition */ 163*4882a593Smuzhiyun #define I2C_CNTRL2_RESERVED (0xe3fcfee0) 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun /* I2C_RD_DATA : Reset Value */ 166*4882a593Smuzhiyun #define I2C_RD_DATA_RESET_VALUE (0x00000000) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun /* I2C_RD_DATA : Register Bits Masks Definitions */ 169*4882a593Smuzhiyun #define I2C_RD_DATA_RBYTE0 (0x000000ff) 170*4882a593Smuzhiyun #define I2C_RD_DATA_RBYTE1 (0x0000ff00) 171*4882a593Smuzhiyun #define I2C_RD_DATA_RBYTE2 (0x00ff0000) 172*4882a593Smuzhiyun #define I2C_RD_DATA_RBYTE3 (0xff000000) 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun /* I2C_RD_DATA : Read/Write Bit Mask Definition */ 175*4882a593Smuzhiyun #define I2C_RD_DATA_RWMASK (0x00000000) 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /* I2C_RD_DATA : Unused/Reserved bits Definition */ 178*4882a593Smuzhiyun #define I2C_RD_DATA_RESERVED (0x00000000) 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun /* I2C_TX_DATA : Reset Value */ 181*4882a593Smuzhiyun #define I2C_TX_DATA_RESET_VALUE (0x00000000) 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun /* I2C_TX_DATA : Register Bits Masks Definitions */ 184*4882a593Smuzhiyun #define I2C_TX_DATA_TBYTE0 (0x000000ff) 185*4882a593Smuzhiyun #define I2C_TX_DATA_TBYTE1 (0x0000ff00) 186*4882a593Smuzhiyun #define I2C_TX_DATA_TBYTE2 (0x00ff0000) 187*4882a593Smuzhiyun #define I2C_TX_DATA_TBYTE3 (0xff000000) 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun /* I2C_TX_DATA : Read/Write Bit Mask Definition */ 190*4882a593Smuzhiyun #define I2C_TX_DATA_RWMASK (0xffffffff) 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun /* I2C_TX_DATA : Unused/Reserved bits Definition */ 193*4882a593Smuzhiyun #define I2C_TX_DATA_RESERVED (0x00000000) 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun #define TSI108_I2C_OFFSET 0x7000 /* offset for general use I2C channel */ 196*4882a593Smuzhiyun #define TSI108_I2C_SDRAM_OFFSET 0x4400 /* offset for SPD I2C channel */ 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun #define I2C_EEPROM_DEVCODE 0xA /* standard I2C EEPROM device code */ 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun /* I2C status codes */ 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #define TSI108_I2C_SUCCESS 0 203*4882a593Smuzhiyun #define TSI108_I2C_PARAM_ERR 1 204*4882a593Smuzhiyun #define TSI108_I2C_TIMEOUT_ERR 2 205*4882a593Smuzhiyun #define TSI108_I2C_IF_BUSY 3 206*4882a593Smuzhiyun #define TSI108_I2C_IF_ERROR 4 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun #endif /* _TSI108_H_ */ 209