forked from rrcarlosr/Jetpack
425 lines
12 KiB
C
425 lines
12 KiB
C
/*
|
|
* (C) Copyright 2003
|
|
* Denis Peter, d.peter@mpl.ch
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
/************************************************************************
|
|
* MACROS and register definitions for PATI Registers
|
|
************************************************************************/
|
|
#ifndef __PATI_H_
|
|
#define __PATI_H_ 1
|
|
|
|
#define PLD_PART_ID 0x0
|
|
#define PLD_BOARD_TIMING 0x4
|
|
#define PLD_CONF_REG1 0x8
|
|
#define PLD_CONF_REG2 0xC
|
|
#define PLD_CONF_RES 0x10
|
|
|
|
#define SET_REG_BIT(y,x) (y<<(31-x))
|
|
#define GET_REG_BIT(y,x) ((y>>(31-x)) & 0x1L)
|
|
|
|
/* SDRAM Controller PLD_PART_ID */
|
|
/* 9 10 11 12 13 14 19 31 */
|
|
#define SDRAM_PART3 9
|
|
#define SDRAM_PART2 10
|
|
#define SDRAM_PART1 11
|
|
#define SDRAM_PART0 12
|
|
#define SDRAM_ID3 13
|
|
#define SDRAM_ID2 14
|
|
#define SDRAM_ID1 19
|
|
#define SDRAM_ID0 31
|
|
|
|
#define SDRAM_PART(x) ( \
|
|
(GET_REG_BIT(x,SDRAM_PART3)<<3) |\
|
|
(GET_REG_BIT(x,SDRAM_PART2)<<2) |\
|
|
(GET_REG_BIT(x,SDRAM_PART1)<<1) |\
|
|
(GET_REG_BIT(x,SDRAM_PART0)))
|
|
|
|
#define SDRAM_ID(x) ( \
|
|
(GET_REG_BIT(x,SDRAM_ID3)<<3) |\
|
|
(GET_REG_BIT(x,SDRAM_ID2)<<2) |\
|
|
(GET_REG_BIT(x,SDRAM_ID1)<<1) |\
|
|
(GET_REG_BIT(x,SDRAM_ID0)))
|
|
|
|
/* System Controller */
|
|
/* 0 1 3 4 5 16 20 28 29 30 */
|
|
#define SYSCNTR_PART4 0
|
|
#define SYSCNTR_PART3 1
|
|
#define SYSCNTR_PART2 3
|
|
#define SYSCNTR_PART1 4
|
|
#define SYSCNTR_PART0 5
|
|
#define SYSCNTR_ID4 16
|
|
#define SYSCNTR_ID3 20
|
|
#define SYSCNTR_ID2 28
|
|
#define SYSCNTR_ID1 29
|
|
#define SYSCNTR_ID0 30
|
|
|
|
#define SYSCNTR_PART(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_PART4)<<4) |\
|
|
(GET_REG_BIT(x,SYSCNTR_PART3)<<3) |\
|
|
(GET_REG_BIT(x,SYSCNTR_PART2)<<2) |\
|
|
(GET_REG_BIT(x,SYSCNTR_PART1)<<1) |\
|
|
(GET_REG_BIT(x,SYSCNTR_PART0)))
|
|
|
|
#define SYSCNTR_ID(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_ID4)<<4) |\
|
|
(GET_REG_BIT(x,SYSCNTR_ID3)<<3) |\
|
|
(GET_REG_BIT(x,SYSCNTR_ID2)<<2) |\
|
|
(GET_REG_BIT(x,SYSCNTR_ID1)<<1) |\
|
|
(GET_REG_BIT(x,SYSCNTR_ID0)))
|
|
|
|
/* SDRAM Controller PLD_BOARD_TIMING */
|
|
/* 9 10 11 12 13 14 19 31 */
|
|
#define SDRAM_CAL 9
|
|
#define SDRAM_RCD 10
|
|
#define SDRAM_WREQ 11
|
|
#define SDRAM_PR 12
|
|
#define SDRAM_RC 13
|
|
#define SDRAM_LMR 14
|
|
#define SDRAM_IIP 19
|
|
#define SDRAM_RES0 31
|
|
/* System Controller */
|
|
/* 0 1 3 4 5 16 20 28 29 30 */
|
|
#define SYSCNTR_BREV0 0
|
|
#define SYSCNTR_BREV1 1
|
|
#define SYSCNTR_BREV2 3
|
|
#define SYSCNTR_BREV3 4
|
|
#define SYSCNTR_RES0 5
|
|
#define SYSCNTR_RES1 16
|
|
#define SYSCNTR_RES2 20
|
|
#define SYSCNTR_FLWAIT2 28
|
|
#define SYSCNTR_FLWAIT1 29
|
|
#define SYSCNTR_FLWAIT0 30
|
|
|
|
#define SYSCNTR_BREV(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_BREV3)<<3) |\
|
|
(GET_REG_BIT(x,SYSCNTR_BREV2)<<2) |\
|
|
(GET_REG_BIT(x,SYSCNTR_BREV1)<<1) |\
|
|
(GET_REG_BIT(x,SYSCNTR_BREV0)))
|
|
|
|
#define GET_SYSCNTR_FLWAIT(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_FLWAIT2)<<2) |\
|
|
(GET_REG_BIT(x,SYSCNTR_FLWAIT1)<<1) |\
|
|
(GET_REG_BIT(x,SYSCNTR_FLWAIT0)))
|
|
|
|
#define SET_SYSCNTR_FLWAIT(x) ( \
|
|
(SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_FLWAIT2)) |\
|
|
(SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_FLWAIT1)) |\
|
|
(SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_FLWAIT0)))
|
|
|
|
/* SDRAM Controller REG 2*/
|
|
/* 9 10 11 12 13 14 19 31 */
|
|
#define SDRAM_MUX0 9
|
|
#define SDRAM_MUX1 10
|
|
#define SDRAM_PDIS 11
|
|
#define SDRAM_RES1 12
|
|
#define SDRAM_RES2 13
|
|
#define SDRAM_RES3 14
|
|
#define SDRAM_RES4 19
|
|
#define SDRAM_RIP 31
|
|
|
|
#define GET_SDRAM_MUX(x) ( \
|
|
(GET_REG_BIT(x,SDRAM_MUX1)<<1)| \
|
|
(GET_REG_BIT(x,SDRAM_MUX0)))
|
|
|
|
|
|
/* System Controller */
|
|
/* 0 1 3 4 5 16 20 28 29 30 */
|
|
#define SYSCNTR_FLAG 0
|
|
#define SYSCNTR_IP 1
|
|
#define SYSCNTR_BIND2 3
|
|
#define SYSCNTR_BIND1 4
|
|
#define SYSCNTR_BIND0 5
|
|
#define SYSCNTR_PRM 16
|
|
#define SYSCNTR_ICW 20
|
|
#define SYSCNTR_ISB2 28
|
|
#define SYSCNTR_ISB1 29
|
|
#define SYSCNTR_ISB0 30
|
|
|
|
#define GET_SYSCNTR_BOOTIND(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_BIND2)<<2) |\
|
|
(GET_REG_BIT(x,SYSCNTR_BIND1)<<1) |\
|
|
(GET_REG_BIT(x,SYSCNTR_BIND0)))
|
|
|
|
#define SET_SYSCNTR_BOOTIND(x) ( \
|
|
(SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_BIND2)) |\
|
|
(SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_BIND1))| \
|
|
(SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_BIND0)))
|
|
|
|
#define GET_SYSCNTR_ISB(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_ISB2)<<2)| \
|
|
(GET_REG_BIT(x,SYSCNTR_ISB1)<<1)| \
|
|
(GET_REG_BIT(x,SYSCNTR_ISB0)))
|
|
|
|
#define SET_SYSCNTR_ISB(x) ( \
|
|
(SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_ISB2))| \
|
|
(SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_ISB))| \
|
|
(SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_ISB0)))
|
|
|
|
/* SDRAM Controller REG 3*/
|
|
/* 9 10 11 12 13 14 19 31 */
|
|
#define SDRAM_RES5 9
|
|
#define SDRAM_CFG1 10
|
|
#define SDRAM_CFG2 11
|
|
#define SDRAM_CFG3 12
|
|
#define SDRAM_RES6 13
|
|
#define SDRAM_CFG5 14
|
|
#define SDRAM_CFG6 19
|
|
#define SDRAM_RES7 31
|
|
|
|
#define GET_SDRAM_CFG(x) ( \
|
|
(GET_REG_BIT(x,SDRAM_CFG6)<<4) |\
|
|
(GET_REG_BIT(x,SDRAM_CFG5)<<3) |\
|
|
(GET_REG_BIT(x,SDRAM_CFG3)<<2) |\
|
|
(GET_REG_BIT(x,SDRAM_CFG2)<<1) |\
|
|
(GET_REG_BIT(x,SDRAM_CFG1)))
|
|
|
|
/* System Controller */
|
|
/* 0 1 3 4 5 16 20 28 29 30 */
|
|
#define SYSCNTR_BDIS 0
|
|
#define SYSCNTR_PCIM 1
|
|
#define SYSCNTR_CFG0 3
|
|
#define SYSCNTR_CFG1 4
|
|
#define SYSCNTR_CFG2 5
|
|
#define SYSCNTR_CFG3 16
|
|
#define SYSCNTR_BOOTEN 20
|
|
#define SYSCNTR_CPU_VPP 28
|
|
#define SYSCNTR_FL_VPP 29
|
|
#define SYSCNTR_FL_WP 30
|
|
|
|
#define GET_SYSCNTR_CFG(x) ( \
|
|
(GET_REG_BIT(x,SYSCNTR_CFG3)<<3)| \
|
|
(GET_REG_BIT(x,SYSCNTR_CFG2)<<2)| \
|
|
(GET_REG_BIT(x,SYSCNTR_CFG1)<<1)| \
|
|
(GET_REG_BIT(x,SYSCNTR_CFG0)))
|
|
|
|
|
|
/***************************************************************
|
|
* MISC Defines
|
|
***************************************************************/
|
|
|
|
#define PCI_VENDOR_ID_MPL 0x18E6
|
|
#define PCI_DEVICE_ID_PATI 0x00DA
|
|
|
|
#if defined(CONFIG_MIP405)
|
|
#define PATI_FIRMWARE_START_OFFSET 0x00300000
|
|
#define PATI_ISO_STRING "MEV-10084-001"
|
|
#endif
|
|
|
|
#define PATI_ENDIAN_MODE 0x3E
|
|
|
|
/*******************************************
|
|
* PATI Mapping:
|
|
* -------------
|
|
* PCI Map:
|
|
* -------
|
|
* All addreses are mapped into the memory area
|
|
* (IO Area on some areas may also be possible)
|
|
* - pci_cfg_mem_base: fixed address to the PLX config area size 512Bytes
|
|
* - pci_space0_addr: configurable
|
|
* - pci_space1_addr configurable
|
|
*
|
|
* Local Map:
|
|
* ----------
|
|
* Local addresses (Remap)
|
|
* - SDRAM 0x06000000 Size 16MByte mask 0xff000000
|
|
* - EPLD CFG 0x07000000 Size 512Bytes
|
|
* - FLASH 0x03000000 Size up to 8MByte
|
|
* - CPU 0x01000000 Size 4MByte (only accessable if special configured)
|
|
*
|
|
* Implemention:
|
|
* -------------
|
|
* To prevent using large resources reservation on the host following
|
|
* PCI mapping is choosed:
|
|
* - pci_cfg_mem_base: fixed address to the PLX config area size 512Bytes
|
|
* - pci_space0_addr: configured to the EPLD Config Area size 256Bytes
|
|
* - pci_space1_addr: configured to the SDRAM Area size 1MBytes, this
|
|
* space is used to switch between SDRAM, Flash and CPU
|
|
*
|
|
*/
|
|
|
|
/* Attribute definitions */
|
|
#define PATI_BUS_SIZE_8 0
|
|
#define PATI_BUS_SIZE_16 1
|
|
#define PATI_BUS_SIZE_32 3
|
|
|
|
#define PATI_SPACE0_MASK (0xFEFFFE00) /* Mask Attributes */
|
|
#define PATI_SPACE1_MASK (0x00000000) /* Mask Attributes */
|
|
|
|
#define PATI_EXTRA_LONG_EEPROM 1
|
|
|
|
#define SPACE0_TA_ENABLE (1<<6)
|
|
#define SPACE1_TA_ENABLE (1<<6)
|
|
|
|
/* Config Area */
|
|
#define PATI_LOC_CFG_ADDR 0x07000000 /* Local Address */
|
|
#define PATI_LOC_CFG_MASK 0xFFFFFF00 /* 256 Bytes */
|
|
/* Attributes */
|
|
#define PATI_LOC_CFG_BUS_SIZE PATI_BUS_SIZE_32 /* 32 Bit */
|
|
#define PATI_LOC_CFG_BURST 0 /* No Burst */
|
|
#define PATI_LOC_CFG_NO_PREFETCH 1 /* No Prefetch */
|
|
#define PATI_LOC_CFG_TA_ENABLE 1 /* Enable TA */
|
|
|
|
#define PATI_LOC_CFG_SPACE0_ATTR ( \
|
|
PATI_LOC_CFG_BUS_SIZE | \
|
|
(PATI_LOC_CFG_TA_ENABLE << 6) | \
|
|
(PATI_LOC_CFG_NO_PREFETCH << 8) | \
|
|
(PATI_LOC_CFG_BURST << 24) | \
|
|
(PATI_EXTRA_LONG_EEPROM << 25))
|
|
|
|
/* should never be used */
|
|
#define PATI_LOC_CFG_SPACE1_ATTR ( \
|
|
PATI_LOC_CFG_BUS_SIZE | \
|
|
(PATI_LOC_CFG_TA_ENABLE << 6) | \
|
|
(PATI_LOC_CFG_NO_PREFETCH << 9) | \
|
|
(PATI_LOC_CFG_BURST << 8))
|
|
|
|
|
|
/* SDRAM Area */
|
|
#define PATI_LOC_SDRAM_ADDR 0x06000000 /* Local Address */
|
|
#define PATI_LOC_SDRAM_MASK 0xFFF00000 /* 1MByte */
|
|
/* Attributes */
|
|
#define PATI_LOC_SDRAM_BUS_SIZE PATI_BUS_SIZE_32 /* 32 Bit */
|
|
#define PATI_LOC_SDRAM_BURST 0 /* No Burst */
|
|
#define PATI_LOC_SDRAM_NO_PREFETCH 0 /* Prefetch */
|
|
#define PATI_LOC_SDRAM_TA_ENABLE 1 /* Enable TA */
|
|
|
|
/* should never be used */
|
|
#define PATI_LOC_SDRAM_SPACE0_ATTR ( \
|
|
PATI_LOC_SDRAM_BUS_SIZE | \
|
|
(PATI_LOC_SDRAM_TA_ENABLE << 6) | \
|
|
(PATI_LOC_SDRAM_NO_PREFETCH << 8) | \
|
|
(PATI_LOC_SDRAM_BURST << 24) | \
|
|
(PATI_EXTRA_LONG_EEPROM << 25))
|
|
|
|
#define PATI_LOC_SDRAM_SPACE1_ATTR ( \
|
|
PATI_LOC_SDRAM_BUS_SIZE | \
|
|
(PATI_LOC_SDRAM_TA_ENABLE << 6) | \
|
|
(PATI_LOC_SDRAM_NO_PREFETCH << 9) | \
|
|
(PATI_LOC_SDRAM_BURST << 8))
|
|
|
|
|
|
/* Flash Area */
|
|
#define PATI_LOC_FLASH_ADDR 0x03000000 /* Local Address */
|
|
#define PATI_LOC_FLASH_MASK 0xFFF00000 /* 1MByte */
|
|
/* Attributes */
|
|
#define PATI_LOC_FLASH_BUS_SIZE PATI_BUS_SIZE_16 /* 16 Bit */
|
|
#define PATI_LOC_FLASH_BURST 0 /* No Burst */
|
|
#define PATI_LOC_FLASH_NO_PREFETCH 1 /* No Prefetch */
|
|
#define PATI_LOC_FLASH_TA_ENABLE 1 /* Enable TA */
|
|
|
|
/* should never be used */
|
|
#define PATI_LOC_FLASH_SPACE0_ATTR ( \
|
|
PATI_LOC_FLASH_BUS_SIZE | \
|
|
(PATI_LOC_FLASH_TA_ENABLE << 6) | \
|
|
(PATI_LOC_FLASH_NO_PREFETCH << 8) | \
|
|
(PATI_LOC_FLASH_BURST << 24) | \
|
|
(PATI_EXTRA_LONG_EEPROM << 25))
|
|
|
|
#define PATI_LOC_FLASH_SPACE1_ATTR ( \
|
|
PATI_LOC_FLASH_BUS_SIZE | \
|
|
(PATI_LOC_FLASH_TA_ENABLE << 6) | \
|
|
(PATI_LOC_FLASH_NO_PREFETCH << 9) | \
|
|
(PATI_LOC_FLASH_BURST << 8))
|
|
|
|
|
|
/* CPU Area */
|
|
#define PATI_LOC_CPU_ADDR 0x01000000 /* Local Address */
|
|
#define PATI_LOC_CPU_MASK 0xFFF00000 /* 1Mbyte */
|
|
/* Attributes */
|
|
#define PATI_LOC_CPU_BUS_SIZE PATI_BUS_SIZE_32 /* 32 Bit */
|
|
#define PATI_LOC_CPU_BURST 0 /* No Burst */
|
|
#define PATI_LOC_CPU_NO_PREFETCH 1 /* No Prefetch */
|
|
#define PATI_LOC_CPU_TA_ENABLE 1 /* Enable TA */
|
|
|
|
/* should never be used */
|
|
#define PATI_LOC_CPU_SPACE0_ATTR ( \
|
|
PATI_LOC_CPU_BUS_SIZE | \
|
|
(PATI_LOC_CPU_TA_ENABLE << 6) | \
|
|
(PATI_LOC_CPU_NO_PREFETCH << 8) | \
|
|
(PATI_LOC_CPU_BURST << 24) | \
|
|
(PATI_EXTRA_CPU_EEPROM << 25))
|
|
|
|
#define PATI_LOC_CPU_SPACE1_ATTR ( \
|
|
PATI_LOC_CPU_BUS_SIZE | \
|
|
(PATI_LOC_CPU_TA_ENABLE << 6) | \
|
|
(PATI_LOC_CPU_NO_PREFETCH << 9) | \
|
|
(PATI_LOC_CPU_BURST << 8))
|
|
|
|
/***************************************************
|
|
* Hardware Config word definition
|
|
***************************************************/
|
|
#define BOOT_EXT_FLASH 0x00000000
|
|
#define BOOT_INT_FLASH 0x00000004
|
|
#define BOOT_FROM_PCI 0x00000006
|
|
#define BOOT_FROM_SDRAM 0x00000005
|
|
|
|
#define ENABLE_INT_ARB 0x00000008
|
|
|
|
#define INITIAL_IRQ_PREF 0x00000010
|
|
|
|
#define INITIAL_MEM_0M 0x00000000
|
|
#define INITIAL_MEM_4M 0x00000080
|
|
#define INITIAL_MEM_8M 0x00000040
|
|
#define INITIAL_MEM_12M 0x000000C0
|
|
#define INITIAL_MEM_16M 0x00000020
|
|
#define INITIAL_MEM_20M 0x000000A0
|
|
#define INITIAL_MEM_24M 0x00000060
|
|
#define INITIAL_MEM_28M 0x000000E0
|
|
/* CONF */
|
|
#define INTERNAL_HWCONF 0x00000100
|
|
/* PRPM */
|
|
#define LOCAL_CPU_SLAVE 0x00000200
|
|
/* BDIS */
|
|
#define DISABLE_MEM_CNTR 0x00000400
|
|
/* PCIM */
|
|
#define PCI_MASTER_ONLY 0x00000800
|
|
|
|
|
|
#define PATI_HW_START ((BOOT_EXT_FLASH | INITIAL_MEM_28M | INITIAL_IRQ_PREF))
|
|
#define PATI_HW_PCI_ONLY ((BOOT_EXT_FLASH | INITIAL_MEM_28M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY))
|
|
#define PATI_HW_CPU_ACC ((BOOT_EXT_FLASH | INITIAL_MEM_12M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY))
|
|
#define PATI_HW_CPU_SLAVE ((BOOT_EXT_FLASH | INITIAL_MEM_12M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY | LOCAL_CPU_SLAVE))
|
|
|
|
/***************************************************
|
|
* Direct Master Config
|
|
***************************************************/
|
|
#define PATI_DMASTER_PCI_ADDR 0x01000000
|
|
#define PATI_BUS_MASTER 1
|
|
|
|
|
|
#define PATI_DMASTER_MASK 0xFFF00000 /* 1MByte */
|
|
#define PATI_DMASTER_ADDR 0x01000000 /* Local Address */
|
|
|
|
#define PATI_DMASTER_MEMORY_EN 0x00000001 /* 0x00000001 */
|
|
#define PATI_DMASTER_READ_AHEAD 0x00000004 /* 0x00000004 */
|
|
#define PATI_DMASTER_READ_NOT_AHEAD 0x00000000 /* 0x00000004 */
|
|
#define PATI_DMASTER_PRE_SIZE_CNTRL_0 0x00000000
|
|
#define PATI_DMASTER_PRE_SIZE_CNTRL_4 0x00000008
|
|
#define PATI_DMASTER_PRE_SIZE_CNTRL_8 0x00001000
|
|
#define PATI_DMASTER_PRE_SIZE_CNTRL_16 0x00001008
|
|
#define PATI_DMASTER_REL_PCI 0x00000000
|
|
#define PATI_DMASTER_NOT_REL_PCI 0x00000010
|
|
#define PATI_DMASTER_WR_INVAL 0x00000200
|
|
#define PATI_DMASTER_NOT_WR_INVAL 0x00000000
|
|
#define PATI_DMASTER_PRE_LIMIT 0x00000800
|
|
#define PATI_DMASTER_PRE_CONT 0x00000000
|
|
#define PATI_DMASTER_DELAY_WR_0 0x00000000
|
|
#define PATI_DMASTER_DELAY_WR_4 0x00004000
|
|
#define PATI_DMASTER_DELAY_WR_8 0x00008000
|
|
#define PATI_DMASTER_DELAY_WR_16 0x0000C000
|
|
|
|
#define PATI_DMASTER_PCI_ADDR_MASK 0xFFFF0000
|
|
|
|
#define PATI_DMASTER_ATTR \
|
|
PATI_DMASTER_MEMORY_EN | \
|
|
PATI_DMASTER_READ_AHEAD | \
|
|
PATI_DMASTER_PRE_SIZE_CNTRL_4 | \
|
|
PATI_DMASTER_REL_PCI | \
|
|
PATI_DMASTER_NOT_WR_INVAL | \
|
|
PATI_DMASTER_PRE_LIMIT | \
|
|
PATI_DMASTER_DELAY_WR_0
|
|
|
|
|
|
#endif /* #ifndef __PATI_H_ */
|