162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or modify it 362306a36Sopenharmony_ci * under the terms of the GNU General Public License as published by the 462306a36Sopenharmony_ci * Free Software Foundation; either version 2 of the License, or (at your 562306a36Sopenharmony_ci * option) any later version. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 862306a36Sopenharmony_ci * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 962306a36Sopenharmony_ci * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 1062306a36Sopenharmony_ci * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1162306a36Sopenharmony_ci * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1262306a36Sopenharmony_ci * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 1362306a36Sopenharmony_ci * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 1462306a36Sopenharmony_ci * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1562306a36Sopenharmony_ci * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 1662306a36Sopenharmony_ci * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * You should have received a copy of the GNU General Public License along 1962306a36Sopenharmony_ci * with this program; if not, write to the Free Software Foundation, Inc., 2062306a36Sopenharmony_ci * 675 Mass Ave, Cambridge, MA 02139, USA. 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci * Copyright 2004 IDT Inc. (rischelp@idt.com) 2362306a36Sopenharmony_ci * 2462306a36Sopenharmony_ci * Initial Release 2562306a36Sopenharmony_ci */ 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#ifndef _ASM_RC32434_PCI_H_ 2862306a36Sopenharmony_ci#define _ASM_RC32434_PCI_H_ 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#define epld_mask ((volatile unsigned char *)0xB900000d) 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci#define PCI0_BASE_ADDR 0x18080000 3362306a36Sopenharmony_ci#define PCI_LBA_COUNT 4 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct pci_map { 3662306a36Sopenharmony_ci u32 address; /* Address. */ 3762306a36Sopenharmony_ci u32 control; /* Control. */ 3862306a36Sopenharmony_ci u32 mapping; /* mapping. */ 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistruct pci_reg { 4262306a36Sopenharmony_ci u32 pcic; 4362306a36Sopenharmony_ci u32 pcis; 4462306a36Sopenharmony_ci u32 pcism; 4562306a36Sopenharmony_ci u32 pcicfga; 4662306a36Sopenharmony_ci u32 pcicfgd; 4762306a36Sopenharmony_ci volatile struct pci_map pcilba[PCI_LBA_COUNT]; 4862306a36Sopenharmony_ci u32 pcidac; 4962306a36Sopenharmony_ci u32 pcidas; 5062306a36Sopenharmony_ci u32 pcidasm; 5162306a36Sopenharmony_ci u32 pcidad; 5262306a36Sopenharmony_ci u32 pcidma8c; 5362306a36Sopenharmony_ci u32 pcidma9c; 5462306a36Sopenharmony_ci u32 pcitc; 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define PCI_MSU_COUNT 2 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistruct pci_msu { 6062306a36Sopenharmony_ci u32 pciim[PCI_MSU_COUNT]; 6162306a36Sopenharmony_ci u32 pciom[PCI_MSU_COUNT]; 6262306a36Sopenharmony_ci u32 pciid; 6362306a36Sopenharmony_ci u32 pciiic; 6462306a36Sopenharmony_ci u32 pciiim; 6562306a36Sopenharmony_ci u32 pciiod; 6662306a36Sopenharmony_ci u32 pciioic; 6762306a36Sopenharmony_ci u32 pciioim; 6862306a36Sopenharmony_ci}; 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci/* 7162306a36Sopenharmony_ci * PCI Control Register 7262306a36Sopenharmony_ci */ 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci#define PCI_CTL_EN (1 << 0) 7562306a36Sopenharmony_ci#define PCI_CTL_TNR (1 << 1) 7662306a36Sopenharmony_ci#define PCI_CTL_SCE (1 << 2) 7762306a36Sopenharmony_ci#define PCI_CTL_IEN (1 << 3) 7862306a36Sopenharmony_ci#define PCI_CTL_AAA (1 << 4) 7962306a36Sopenharmony_ci#define PCI_CTL_EAP (1 << 5) 8062306a36Sopenharmony_ci#define PCI_CTL_PCIM_BIT 6 8162306a36Sopenharmony_ci#define PCI_CTL_PCIM 0x000001c0 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#define PCI_CTL_PCIM_DIS 0 8462306a36Sopenharmony_ci#define PCI_CTL_PCIM_TNR 1 /* Satellite - target not ready */ 8562306a36Sopenharmony_ci#define PCI_CTL_PCIM_SUS 2 /* Satellite - suspended CPU. */ 8662306a36Sopenharmony_ci#define PCI_CTL_PCIM_EXT 3 /* Host - external arbiter. */ 8762306a36Sopenharmony_ci#define PCI_CTL PCIM_PRIO 4 /* Host - fixed priority arb. */ 8862306a36Sopenharmony_ci#define PCI_CTL_PCIM_RR 5 /* Host - round robin priority. */ 8962306a36Sopenharmony_ci#define PCI_CTL_PCIM_RSVD6 6 9062306a36Sopenharmony_ci#define PCI_CTL_PCIM_RSVD7 7 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci#define PCI_CTL_IGM (1 << 9) 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci/* 9562306a36Sopenharmony_ci * PCI Status Register 9662306a36Sopenharmony_ci */ 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci#define PCI_STAT_EED (1 << 0) 9962306a36Sopenharmony_ci#define PCI_STAT_WR (1 << 1) 10062306a36Sopenharmony_ci#define PCI_STAT_NMI (1 << 2) 10162306a36Sopenharmony_ci#define PCI_STAT_II (1 << 3) 10262306a36Sopenharmony_ci#define PCI_STAT_CWE (1 << 4) 10362306a36Sopenharmony_ci#define PCI_STAT_CRE (1 << 5) 10462306a36Sopenharmony_ci#define PCI_STAT_MDPE (1 << 6) 10562306a36Sopenharmony_ci#define PCI_STAT_STA (1 << 7) 10662306a36Sopenharmony_ci#define PCI_STAT_RTA (1 << 8) 10762306a36Sopenharmony_ci#define PCI_STAT_RMA (1 << 9) 10862306a36Sopenharmony_ci#define PCI_STAT_SSE (1 << 10) 10962306a36Sopenharmony_ci#define PCI_STAT_OSE (1 << 11) 11062306a36Sopenharmony_ci#define PCI_STAT_PE (1 << 12) 11162306a36Sopenharmony_ci#define PCI_STAT_TAE (1 << 13) 11262306a36Sopenharmony_ci#define PCI_STAT_RLE (1 << 14) 11362306a36Sopenharmony_ci#define PCI_STAT_BME (1 << 15) 11462306a36Sopenharmony_ci#define PCI_STAT_PRD (1 << 16) 11562306a36Sopenharmony_ci#define PCI_STAT_RIP (1 << 17) 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci/* 11862306a36Sopenharmony_ci * PCI Status Mask Register 11962306a36Sopenharmony_ci */ 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci#define PCI_STATM_EED PCI_STAT_EED 12262306a36Sopenharmony_ci#define PCI_STATM_WR PCI_STAT_WR 12362306a36Sopenharmony_ci#define PCI_STATM_NMI PCI_STAT_NMI 12462306a36Sopenharmony_ci#define PCI_STATM_II PCI_STAT_II 12562306a36Sopenharmony_ci#define PCI_STATM_CWE PCI_STAT_CWE 12662306a36Sopenharmony_ci#define PCI_STATM_CRE PCI_STAT_CRE 12762306a36Sopenharmony_ci#define PCI_STATM_MDPE PCI_STAT_MDPE 12862306a36Sopenharmony_ci#define PCI_STATM_STA PCI_STAT_STA 12962306a36Sopenharmony_ci#define PCI_STATM_RTA PCI_STAT_RTA 13062306a36Sopenharmony_ci#define PCI_STATM_RMA PCI_STAT_RMA 13162306a36Sopenharmony_ci#define PCI_STATM_SSE PCI_STAT_SSE 13262306a36Sopenharmony_ci#define PCI_STATM_OSE PCI_STAT_OSE 13362306a36Sopenharmony_ci#define PCI_STATM_PE PCI_STAT_PE 13462306a36Sopenharmony_ci#define PCI_STATM_TAE PCI_STAT_TAE 13562306a36Sopenharmony_ci#define PCI_STATM_RLE PCI_STAT_RLE 13662306a36Sopenharmony_ci#define PCI_STATM_BME PCI_STAT_BME 13762306a36Sopenharmony_ci#define PCI_STATM_PRD PCI_STAT_PRD 13862306a36Sopenharmony_ci#define PCI_STATM_RIP PCI_STAT_RIP 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci/* 14162306a36Sopenharmony_ci * PCI Configuration Address Register 14262306a36Sopenharmony_ci */ 14362306a36Sopenharmony_ci#define PCI_CFGA_REG_BIT 2 14462306a36Sopenharmony_ci#define PCI_CFGA_REG 0x000000fc 14562306a36Sopenharmony_ci#define PCI_CFGA_REG_ID (0x00 >> 2) /* use PCFGID */ 14662306a36Sopenharmony_ci#define PCI_CFGA_REG_04 (0x04 >> 2) /* use PCFG04_ */ 14762306a36Sopenharmony_ci#define PCI_CFGA_REG_08 (0x08 >> 2) /* use PCFG08_ */ 14862306a36Sopenharmony_ci#define PCI_CFGA_REG_0C (0x0C >> 2) /* use PCFG0C_ */ 14962306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA0 (0x10 >> 2) /* use PCIPBA_ */ 15062306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA1 (0x14 >> 2) /* use PCIPBA_ */ 15162306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA2 (0x18 >> 2) /* use PCIPBA_ */ 15262306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA3 (0x1c >> 2) /* use PCIPBA_ */ 15362306a36Sopenharmony_ci#define PCI_CFGA_REG_SUBSYS (0x2c >> 2) /* use PCFGSS_ */ 15462306a36Sopenharmony_ci#define PCI_CFGA_REG_3C (0x3C >> 2) /* use PCFG3C_ */ 15562306a36Sopenharmony_ci#define PCI_CFGA_REG_PBBA0C (0x44 >> 2) /* use PCIPBAC_ */ 15662306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA0M (0x48 >> 2) 15762306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA1C (0x4c >> 2) /* use PCIPBAC_ */ 15862306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA1M (0x50 >> 2) 15962306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA2C (0x54 >> 2) /* use PCIPBAC_ */ 16062306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA2M (0x58 >> 2) 16162306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA3C (0x5c >> 2) /* use PCIPBAC_ */ 16262306a36Sopenharmony_ci#define PCI_CFGA_REG_PBA3M (0x60 >> 2) 16362306a36Sopenharmony_ci#define PCI_CFGA_REG_PMGT (0x64 >> 2) 16462306a36Sopenharmony_ci#define PCI_CFGA_FUNC_BIT 8 16562306a36Sopenharmony_ci#define PCI_CFGA_FUNC 0x00000700 16662306a36Sopenharmony_ci#define PCI_CFGA_DEV_BIT 11 16762306a36Sopenharmony_ci#define PCI_CFGA_DEV 0x0000f800 16862306a36Sopenharmony_ci#define PCI_CFGA_DEV_INTERN 0 16962306a36Sopenharmony_ci#define PCI_CFGA_BUS_BIT 16 17062306a36Sopenharmony_ci#define PCI CFGA_BUS 0x00ff0000 17162306a36Sopenharmony_ci#define PCI_CFGA_BUS_TYPE0 0 17262306a36Sopenharmony_ci#define PCI_CFGA_EN (1 << 31) 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci/* PCI CFG04 commands */ 17562306a36Sopenharmony_ci#define PCI_CFG04_CMD_IO_ENA (1 << 0) 17662306a36Sopenharmony_ci#define PCI_CFG04_CMD_MEM_ENA (1 << 1) 17762306a36Sopenharmony_ci#define PCI_CFG04_CMD_BM_ENA (1 << 2) 17862306a36Sopenharmony_ci#define PCI_CFG04_CMD_MW_INV (1 << 4) 17962306a36Sopenharmony_ci#define PCI_CFG04_CMD_PAR_ENA (1 << 6) 18062306a36Sopenharmony_ci#define PCI_CFG04_CMD_SER_ENA (1 << 8) 18162306a36Sopenharmony_ci#define PCI_CFG04_CMD_FAST_ENA (1 << 9) 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci/* PCI CFG04 status fields */ 18462306a36Sopenharmony_ci#define PCI_CFG04_STAT_BIT 16 18562306a36Sopenharmony_ci#define PCI_CFG04_STAT 0xffff0000 18662306a36Sopenharmony_ci#define PCI_CFG04_STAT_66_MHZ (1 << 21) 18762306a36Sopenharmony_ci#define PCI_CFG04_STAT_FBB (1 << 23) 18862306a36Sopenharmony_ci#define PCI_CFG04_STAT_MDPE (1 << 24) 18962306a36Sopenharmony_ci#define PCI_CFG04_STAT_DST (1 << 25) 19062306a36Sopenharmony_ci#define PCI_CFG04_STAT_STA (1 << 27) 19162306a36Sopenharmony_ci#define PCI_CFG04_STAT_RTA (1 << 28) 19262306a36Sopenharmony_ci#define PCI_CFG04_STAT_RMA (1 << 29) 19362306a36Sopenharmony_ci#define PCI_CFG04_STAT_SSE (1 << 30) 19462306a36Sopenharmony_ci#define PCI_CFG04_STAT_PE (1 << 31) 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci#define PCI_PBA_MSI (1 << 0) 19762306a36Sopenharmony_ci#define PCI_PBA_P (1 << 2) 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci/* PCI PBAC registers */ 20062306a36Sopenharmony_ci#define PCI_PBAC_MSI (1 << 0) 20162306a36Sopenharmony_ci#define PCI_PBAC_P (1 << 1) 20262306a36Sopenharmony_ci#define PCI_PBAC_SIZE_BIT 2 20362306a36Sopenharmony_ci#define PCI_PBAC_SIZE 0x0000007c 20462306a36Sopenharmony_ci#define PCI_PBAC_SB (1 << 7) 20562306a36Sopenharmony_ci#define PCI_PBAC_PP (1 << 8) 20662306a36Sopenharmony_ci#define PCI_PBAC_MR_BIT 9 20762306a36Sopenharmony_ci#define PCI_PBAC_MR 0x00000600 20862306a36Sopenharmony_ci#define PCI_PBAC_MR_RD 0 20962306a36Sopenharmony_ci#define PCI_PBAC_MR_RD_LINE 1 21062306a36Sopenharmony_ci#define PCI_PBAC_MR_RD_MULT 2 21162306a36Sopenharmony_ci#define PCI_PBAC_MRL (1 << 11) 21262306a36Sopenharmony_ci#define PCI_PBAC_MRM (1 << 12) 21362306a36Sopenharmony_ci#define PCI_PBAC_TRP (1 << 13) 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci#define PCI_CFG40_TRDY_TIM 0x000000ff 21662306a36Sopenharmony_ci#define PCI_CFG40_RET_LIM 0x0000ff00 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* 21962306a36Sopenharmony_ci * PCI Local Base Address [0|1|2|3] Register 22062306a36Sopenharmony_ci */ 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci#define PCI_LBA_BADDR_BIT 0 22362306a36Sopenharmony_ci#define PCI_LBA_BADDR 0xffffff00 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci/* 22662306a36Sopenharmony_ci * PCI Local Base Address Control Register 22762306a36Sopenharmony_ci */ 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ci#define PCI_LBAC_MSI (1 << 0) 23062306a36Sopenharmony_ci#define PCI_LBAC_MSI_MEM 0 23162306a36Sopenharmony_ci#define PCI_LBAC_MSI_IO 1 23262306a36Sopenharmony_ci#define PCI_LBAC_SIZE_BIT 2 23362306a36Sopenharmony_ci#define PCI_LBAC_SIZE 0x0000007c 23462306a36Sopenharmony_ci#define PCI_LBAC_SB (1 << 7) 23562306a36Sopenharmony_ci#define PCI_LBAC_RT (1 << 8) 23662306a36Sopenharmony_ci#define PCI_LBAC_RT_NO_PREF 0 23762306a36Sopenharmony_ci#define PCI_LBAC_RT_PREF 1 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci/* 24062306a36Sopenharmony_ci * PCI Local Base Address [0|1|2|3] Mapping Register 24162306a36Sopenharmony_ci */ 24262306a36Sopenharmony_ci#define PCI_LBAM_MADDR_BIT 8 24362306a36Sopenharmony_ci#define PCI_LBAM_MADDR 0xffffff00 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci/* 24662306a36Sopenharmony_ci * PCI Decoupled Access Control Register 24762306a36Sopenharmony_ci */ 24862306a36Sopenharmony_ci#define PCI_DAC_DEN (1 << 0) 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci/* 25162306a36Sopenharmony_ci * PCI Decoupled Access Status Register 25262306a36Sopenharmony_ci */ 25362306a36Sopenharmony_ci#define PCI_DAS_D (1 << 0) 25462306a36Sopenharmony_ci#define PCI_DAS_B (1 << 1) 25562306a36Sopenharmony_ci#define PCI_DAS_E (1 << 2) 25662306a36Sopenharmony_ci#define PCI_DAS_OFE (1 << 3) 25762306a36Sopenharmony_ci#define PCI_DAS_OFF (1 << 4) 25862306a36Sopenharmony_ci#define PCI_DAS_IFE (1 << 5) 25962306a36Sopenharmony_ci#define PCI_DAS_IFF (1 << 6) 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci/* 26262306a36Sopenharmony_ci * PCI DMA Channel 8 Configuration Register 26362306a36Sopenharmony_ci */ 26462306a36Sopenharmony_ci#define PCI_DMA8C_MBS_BIT 0 26562306a36Sopenharmony_ci#define PCI_DMA8C_MBS 0x00000fff /* Maximum Burst Size. */ 26662306a36Sopenharmony_ci#define PCI_DMA8C_OUR (1 << 12) 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci/* 26962306a36Sopenharmony_ci * PCI DMA Channel 9 Configuration Register 27062306a36Sopenharmony_ci */ 27162306a36Sopenharmony_ci#define PCI_DMA9C_MBS_BIT 0 /* Maximum Burst Size. */ 27262306a36Sopenharmony_ci#define PCI_DMA9C_MBS 0x00000fff 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci/* 27562306a36Sopenharmony_ci * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors 27662306a36Sopenharmony_ci */ 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci#define PCI_DMAD_PT_BIT 22 /* in DEVCMD field (descriptor) */ 27962306a36Sopenharmony_ci#define PCI_DMAD_PT 0x00c00000 /* preferred transaction field */ 28062306a36Sopenharmony_ci/* These are for reads (DMA channel 8) */ 28162306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_MR 0 /* memory read */ 28262306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_MRL 1 /* memory read line */ 28362306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_MRM 2 /* memory read multiple */ 28462306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_IOR 3 /* I/O read */ 28562306a36Sopenharmony_ci/* These are for writes (DMA channel 9) */ 28662306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_MW 0 /* memory write */ 28762306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_MWI 1 /* memory write invalidate */ 28862306a36Sopenharmony_ci#define PCI_DMAD_DEVCMD_IOW 3 /* I/O write */ 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci/* Swap byte field applies to both DMA channel 8 and 9 */ 29162306a36Sopenharmony_ci#define PCI_DMAD_SB (1 << 24) /* swap byte field */ 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci/* 29562306a36Sopenharmony_ci * PCI Target Control Register 29662306a36Sopenharmony_ci */ 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci#define PCI_TC_RTIMER_BIT 0 29962306a36Sopenharmony_ci#define PCI_TC_RTIMER 0x000000ff 30062306a36Sopenharmony_ci#define PCI_TC_DTIMER_BIT 8 30162306a36Sopenharmony_ci#define PCI_TC_DTIMER 0x0000ff00 30262306a36Sopenharmony_ci#define PCI_TC_RDR (1 << 18) 30362306a36Sopenharmony_ci#define PCI_TC_DDT (1 << 19) 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci/* 30662306a36Sopenharmony_ci * PCI messaging unit [applies to both inbound and outbound registers ] 30762306a36Sopenharmony_ci */ 30862306a36Sopenharmony_ci#define PCI_MSU_M0 (1 << 0) 30962306a36Sopenharmony_ci#define PCI_MSU_M1 (1 << 1) 31062306a36Sopenharmony_ci#define PCI_MSU_DB (1 << 2) 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci#define PCI_MSG_ADDR 0xB8088010 31362306a36Sopenharmony_ci#define PCI0_ADDR 0xB8080000 31462306a36Sopenharmony_ci#define rc32434_pci ((struct pci_reg *) PCI0_ADDR) 31562306a36Sopenharmony_ci#define rc32434_pci_msg ((struct pci_msu *) PCI_MSG_ADDR) 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci#define PCIM_SHFT 0x6 31862306a36Sopenharmony_ci#define PCIM_BIT_LEN 0x7 31962306a36Sopenharmony_ci#define PCIM_H_EA 0x3 32062306a36Sopenharmony_ci#define PCIM_H_IA_FIX 0x4 32162306a36Sopenharmony_ci#define PCIM_H_IA_RR 0x5 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci#define PCI_ADDR_START 0x50000000 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ci#define CPUTOPCI_MEM_WIN 0x02000000 32662306a36Sopenharmony_ci#define CPUTOPCI_IO_WIN 0x00100000 32762306a36Sopenharmony_ci#define PCILBA_SIZE_SHFT 2 32862306a36Sopenharmony_ci#define PCILBA_SIZE_MASK 0x1F 32962306a36Sopenharmony_ci#define SIZE_256MB 0x1C 33062306a36Sopenharmony_ci#define SIZE_128MB 0x1B 33162306a36Sopenharmony_ci#define SIZE_64MB 0x1A 33262306a36Sopenharmony_ci#define SIZE_32MB 0x19 33362306a36Sopenharmony_ci#define SIZE_16MB 0x18 33462306a36Sopenharmony_ci#define SIZE_4MB 0x16 33562306a36Sopenharmony_ci#define SIZE_2MB 0x15 33662306a36Sopenharmony_ci#define SIZE_1MB 0x14 33762306a36Sopenharmony_ci#define KORINA_CONFIG0_ADDR 0x80000000 33862306a36Sopenharmony_ci#define KORINA_CONFIG1_ADDR 0x80000004 33962306a36Sopenharmony_ci#define KORINA_CONFIG2_ADDR 0x80000008 34062306a36Sopenharmony_ci#define KORINA_CONFIG3_ADDR 0x8000000C 34162306a36Sopenharmony_ci#define KORINA_CONFIG4_ADDR 0x80000010 34262306a36Sopenharmony_ci#define KORINA_CONFIG5_ADDR 0x80000014 34362306a36Sopenharmony_ci#define KORINA_CONFIG6_ADDR 0x80000018 34462306a36Sopenharmony_ci#define KORINA_CONFIG7_ADDR 0x8000001C 34562306a36Sopenharmony_ci#define KORINA_CONFIG8_ADDR 0x80000020 34662306a36Sopenharmony_ci#define KORINA_CONFIG9_ADDR 0x80000024 34762306a36Sopenharmony_ci#define KORINA_CONFIG10_ADDR 0x80000028 34862306a36Sopenharmony_ci#define KORINA_CONFIG11_ADDR 0x8000002C 34962306a36Sopenharmony_ci#define KORINA_CONFIG12_ADDR 0x80000030 35062306a36Sopenharmony_ci#define KORINA_CONFIG13_ADDR 0x80000034 35162306a36Sopenharmony_ci#define KORINA_CONFIG14_ADDR 0x80000038 35262306a36Sopenharmony_ci#define KORINA_CONFIG15_ADDR 0x8000003C 35362306a36Sopenharmony_ci#define KORINA_CONFIG16_ADDR 0x80000040 35462306a36Sopenharmony_ci#define KORINA_CONFIG17_ADDR 0x80000044 35562306a36Sopenharmony_ci#define KORINA_CONFIG18_ADDR 0x80000048 35662306a36Sopenharmony_ci#define KORINA_CONFIG19_ADDR 0x8000004C 35762306a36Sopenharmony_ci#define KORINA_CONFIG20_ADDR 0x80000050 35862306a36Sopenharmony_ci#define KORINA_CONFIG21_ADDR 0x80000054 35962306a36Sopenharmony_ci#define KORINA_CONFIG22_ADDR 0x80000058 36062306a36Sopenharmony_ci#define KORINA_CONFIG23_ADDR 0x8000005C 36162306a36Sopenharmony_ci#define KORINA_CONFIG24_ADDR 0x80000060 36262306a36Sopenharmony_ci#define KORINA_CONFIG25_ADDR 0x80000064 36362306a36Sopenharmony_ci#define KORINA_CMD (PCI_CFG04_CMD_IO_ENA | \ 36462306a36Sopenharmony_ci PCI_CFG04_CMD_MEM_ENA | \ 36562306a36Sopenharmony_ci PCI_CFG04_CMD_BM_ENA | \ 36662306a36Sopenharmony_ci PCI_CFG04_CMD_MW_INV | \ 36762306a36Sopenharmony_ci PCI_CFG04_CMD_PAR_ENA | \ 36862306a36Sopenharmony_ci PCI_CFG04_CMD_SER_ENA) 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci#define KORINA_STAT (PCI_CFG04_STAT_MDPE | \ 37162306a36Sopenharmony_ci PCI_CFG04_STAT_STA | \ 37262306a36Sopenharmony_ci PCI_CFG04_STAT_RTA | \ 37362306a36Sopenharmony_ci PCI_CFG04_STAT_RMA | \ 37462306a36Sopenharmony_ci PCI_CFG04_STAT_SSE | \ 37562306a36Sopenharmony_ci PCI_CFG04_STAT_PE) 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci#define KORINA_CNFG1 (KORINA_STAT | KORINA_CMD) 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_ci#define KORINA_REVID 0 38062306a36Sopenharmony_ci#define KORINA_CLASS_CODE 0 38162306a36Sopenharmony_ci#define KORINA_CNFG2 ((KORINA_CLASS_CODE<<8) | \ 38262306a36Sopenharmony_ci KORINA_REVID) 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci#define KORINA_CACHE_LINE_SIZE 4 38562306a36Sopenharmony_ci#define KORINA_MASTER_LAT 0x3c 38662306a36Sopenharmony_ci#define KORINA_HEADER_TYPE 0 38762306a36Sopenharmony_ci#define KORINA_BIST 0 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci#define KORINA_CNFG3 ((KORINA_BIST << 24) | \ 39062306a36Sopenharmony_ci (KORINA_HEADER_TYPE<<16) | \ 39162306a36Sopenharmony_ci (KORINA_MASTER_LAT<<8) | \ 39262306a36Sopenharmony_ci KORINA_CACHE_LINE_SIZE) 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_ci#define KORINA_BAR0 0x00000008 /* 128 MB Memory */ 39562306a36Sopenharmony_ci#define KORINA_BAR1 0x18800001 /* 1 MB IO */ 39662306a36Sopenharmony_ci#define KORINA_BAR2 0x18000001 /* 2 MB IO window for Korina 39762306a36Sopenharmony_ci internal Registers */ 39862306a36Sopenharmony_ci#define KORINA_BAR3 0x48000008 /* Spare 128 MB Memory */ 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci#define KORINA_CNFG4 KORINA_BAR0 40162306a36Sopenharmony_ci#define KORINA_CNFG5 KORINA_BAR1 40262306a36Sopenharmony_ci#define KORINA_CNFG6 KORINA_BAR2 40362306a36Sopenharmony_ci#define KORINA_CNFG7 KORINA_BAR3 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci#define KORINA_SUBSYS_VENDOR_ID 0x011d 40662306a36Sopenharmony_ci#define KORINA_SUBSYSTEM_ID 0x0214 40762306a36Sopenharmony_ci#define KORINA_CNFG8 0 40862306a36Sopenharmony_ci#define KORINA_CNFG9 0 40962306a36Sopenharmony_ci#define KORINA_CNFG10 0 41062306a36Sopenharmony_ci#define KORINA_CNFG11 ((KORINA_SUBSYS_VENDOR_ID<<16) | \ 41162306a36Sopenharmony_ci KORINA_SUBSYSTEM_ID) 41262306a36Sopenharmony_ci#define KORINA_INT_LINE 1 41362306a36Sopenharmony_ci#define KORINA_INT_PIN 1 41462306a36Sopenharmony_ci#define KORINA_MIN_GNT 8 41562306a36Sopenharmony_ci#define KORINA_MAX_LAT 0x38 41662306a36Sopenharmony_ci#define KORINA_CNFG12 0 41762306a36Sopenharmony_ci#define KORINA_CNFG13 0 41862306a36Sopenharmony_ci#define KORINA_CNFG14 0 41962306a36Sopenharmony_ci#define KORINA_CNFG15 ((KORINA_MAX_LAT<<24) | \ 42062306a36Sopenharmony_ci (KORINA_MIN_GNT<<16) | \ 42162306a36Sopenharmony_ci (KORINA_INT_PIN<<8) | \ 42262306a36Sopenharmony_ci KORINA_INT_LINE) 42362306a36Sopenharmony_ci#define KORINA_RETRY_LIMIT 0x80 42462306a36Sopenharmony_ci#define KORINA_TRDY_LIMIT 0x80 42562306a36Sopenharmony_ci#define KORINA_CNFG16 ((KORINA_RETRY_LIMIT<<8) | \ 42662306a36Sopenharmony_ci KORINA_TRDY_LIMIT) 42762306a36Sopenharmony_ci#define PCI_PBAxC_R 0x0 42862306a36Sopenharmony_ci#define PCI_PBAxC_RL 0x1 42962306a36Sopenharmony_ci#define PCI_PBAxC_RM 0x2 43062306a36Sopenharmony_ci#define SIZE_SHFT 2 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci#if defined(__MIPSEB__) 43362306a36Sopenharmony_ci#define KORINA_PBA0C (PCI_PBAC_MRL | PCI_PBAC_SB | \ 43462306a36Sopenharmony_ci ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \ 43562306a36Sopenharmony_ci PCI_PBAC_PP | \ 43662306a36Sopenharmony_ci (SIZE_128MB<<SIZE_SHFT) | \ 43762306a36Sopenharmony_ci PCI_PBAC_P) 43862306a36Sopenharmony_ci#else 43962306a36Sopenharmony_ci#define KORINA_PBA0C (PCI_PBAC_MRL | \ 44062306a36Sopenharmony_ci ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \ 44162306a36Sopenharmony_ci PCI_PBAC_PP | \ 44262306a36Sopenharmony_ci (SIZE_128MB<<SIZE_SHFT) | \ 44362306a36Sopenharmony_ci PCI_PBAC_P) 44462306a36Sopenharmony_ci#endif 44562306a36Sopenharmony_ci#define KORINA_CNFG17 KORINA_PBA0C 44662306a36Sopenharmony_ci#define KORINA_PBA0M 0x0 44762306a36Sopenharmony_ci#define KORINA_CNFG18 KORINA_PBA0M 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ci#if defined(__MIPSEB__) 45062306a36Sopenharmony_ci#define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | PCI_PBAC_SB | \ 45162306a36Sopenharmony_ci PCI_PBAC_MSI) 45262306a36Sopenharmony_ci#else 45362306a36Sopenharmony_ci#define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | \ 45462306a36Sopenharmony_ci PCI_PBAC_MSI) 45562306a36Sopenharmony_ci#endif 45662306a36Sopenharmony_ci#define KORINA_CNFG19 KORINA_PBA1C 45762306a36Sopenharmony_ci#define KORINA_PBA1M 0x0 45862306a36Sopenharmony_ci#define KORINA_CNFG20 KORINA_PBA1M 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ci#if defined(__MIPSEB__) 46162306a36Sopenharmony_ci#define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | PCI_PBAC_SB | \ 46262306a36Sopenharmony_ci PCI_PBAC_MSI) 46362306a36Sopenharmony_ci#else 46462306a36Sopenharmony_ci#define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | \ 46562306a36Sopenharmony_ci PCI_PBAC_MSI) 46662306a36Sopenharmony_ci#endif 46762306a36Sopenharmony_ci#define KORINA_CNFG21 KORINA_PBA2C 46862306a36Sopenharmony_ci#define KORINA_PBA2M 0x18000000 46962306a36Sopenharmony_ci#define KORINA_CNFG22 KORINA_PBA2M 47062306a36Sopenharmony_ci#define KORINA_PBA3C 0 47162306a36Sopenharmony_ci#define KORINA_CNFG23 KORINA_PBA3C 47262306a36Sopenharmony_ci#define KORINA_PBA3M 0 47362306a36Sopenharmony_ci#define KORINA_CNFG24 KORINA_PBA3M 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ci#define PCITC_DTIMER_VAL 8 47662306a36Sopenharmony_ci#define PCITC_RTIMER_VAL 0x10 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci#endif /* __ASM_RC32434_PCI_H */ 479