Merge git://git.denx.de/u-boot-mpc83xx

- Update MPC83xx platform support to current best practices, etc.
This commit is contained in:
Tom Rini
2019-05-21 07:13:35 -04:00
220 changed files with 20058 additions and 5906 deletions

View File

@@ -39,6 +39,12 @@ config MPC8xx
endchoice
config HIGH_BATS
bool "Enable high BAT registers"
help
Enable BATs (block address translation registers) 4-7 on machines
that support them.
source "arch/powerpc/cpu/mpc83xx/Kconfig"
source "arch/powerpc/cpu/mpc85xx/Kconfig"
source "arch/powerpc/cpu/mpc86xx/Kconfig"

View File

@@ -10,38 +10,66 @@ choice
config TARGET_MPC8308_P1M
bool "Support mpc8308_p1m"
select ARCH_MPC8308
config TARGET_SBC8349
bool "Support sbc8349"
select ARCH_MPC8349
config TARGET_VE8313
bool "Support ve8313"
select ARCH_MPC8313
config TARGET_VME8349
bool "Support vme8349"
select ARCH_MPC8349
config TARGET_CADDY2
bool "Support caddy2"
select ARCH_MPC8349
config TARGET_MPC8308RDB
bool "Support MPC8308RDB"
select ARCH_MPC8308
select SYS_FSL_ERRATUM_ESDHC111
config TARGET_MPC8313ERDB
bool "Support MPC8313ERDB"
config TARGET_MPC8313ERDB_NOR
bool "Support MPC8313ERDB_NOR"
select ARCH_MPC8313
select BOARD_EARLY_INIT_F
select SUPPORT_SPL
config TARGET_MPC8313ERDB_NAND
bool "Support MPC8313ERDB_NAND"
select ARCH_MPC8313
select BOARD_EARLY_INIT_F
select SUPPORT_SPL
config TARGET_MPC8315ERDB
bool "Support MPC8315ERDB"
select ARCH_MPC8315
select BOARD_EARLY_INIT_F
config TARGET_MPC8323ERDB
bool "Support MPC8323ERDB"
select ARCH_MPC832X
config TARGET_MPC832XEMDS
bool "Support MPC832XEMDS"
select ARCH_MPC832X
select BOARD_EARLY_INIT_F
config TARGET_MPC8349EMDS
bool "Support MPC8349EMDS"
select ARCH_MPC8349
select BOARD_EARLY_INIT_F
select SYS_FSL_DDR
select SYS_FSL_DDR_BE
select SYS_FSL_HAS_DDR2
config TARGET_MPC8349EMDS_SDRAM
bool "Support MPC8349EMDS_SDRAM"
select ARCH_MPC8349
select BOARD_EARLY_INIT_F
select SYS_FSL_DDR
select SYS_FSL_DDR_BE
@@ -49,53 +77,272 @@ config TARGET_MPC8349EMDS
config TARGET_MPC8349ITX
bool "Support MPC8349ITX"
select ARCH_MPC8349
imply CMD_IRQ
config TARGET_MPC837XEMDS
bool "Support MPC837XEMDS"
select ARCH_MPC837X
select BOARD_EARLY_INIT_F
imply CMD_SATA
imply FSL_SATA
config TARGET_MPC837XERDB
bool "Support MPC837XERDB"
select ARCH_MPC837X
select BOARD_EARLY_INIT_F
config TARGET_IDS8313
bool "Support ids8313"
select ARCH_MPC8313
select DM
imply CMD_DM
config TARGET_KM8360
bool "Support km8360"
config TARGET_KMETER1
bool "Support kmeter1"
select ARCH_MPC8360
imply CMD_CRAMFS
imply CMD_DIAG
imply FS_CRAMFS
config TARGET_KMCOGE5NE
bool "Support kmcoge5ne"
select ARCH_MPC8360
imply CMD_CRAMFS
imply CMD_DIAG
imply FS_CRAMFS
config TARGET_SUVD3
bool "Support suvd3"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_KMVECT1
bool "Support kmvect1"
select ARCH_MPC8309
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_KMTEGR1
bool "Support kmtegr1"
select ARCH_MPC8309
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_TUXX1
bool "Support tuxx1"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_KMSUPX5
bool "Support kmsupx5"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_TUGE1
bool "Support tuge1"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_KMOPTI2
bool "Support kmopti2"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_KMTEPR2
bool "Support kmtepr2"
select ARCH_MPC832X
imply CMD_CRAMFS
imply FS_CRAMFS
config TARGET_TQM834X
bool "Support TQM834x"
select ARCH_MPC8349
config TARGET_HRCON
bool "Support hrcon"
select ARCH_MPC8308
select SYS_FSL_ERRATUM_ESDHC111
config TARGET_STRIDER
bool "Support strider"
select ARCH_MPC8308
select SYS_FSL_ERRATUM_ESDHC111
imply CMD_PCA953X
config TARGET_GAZERBEAM
bool "Support gazerbeam"
select ARCH_MPC8308
select SYS_FSL_ERRATUM_ESDHC111
imply ENV_IS_IN_FLASH
help
The "Gazerbeam" is a modular system by Guntermann & Drunck GmbH
Systementwicklung based on the NXP MPC8308 SoC for usage in KVM
appliances.
Features include:
* Two gigabit ethernet ports
* Multiple USB ports (depending on variant)
* Several gigabit ethernet or optical fiber ports (depending on
variant)
* Several display port inputs and outputs, and supporting redrivers
(depending on variant)
* Several FPGAs with custom logic (depending on variant)
endchoice
config MPC83XX_QUICC_ENGINE
bool
# TODO: Imply MPC83xx PCI driver
config MPC83XX_PCI_SUPPORT
bool
# TODO: Imply TSEC driver
config MPC83XX_TSEC1_SUPPORT
bool
config MPC83XX_TSEC2_SUPPORT
bool
config MPC83XX_PCIE1_SUPPORT
bool
config MPC83XX_PCIE2_SUPPORT
bool
config MPC83XX_SDHC_SUPPORT
bool
config MPC83XX_SATA_SUPPORT
bool
config MPC83XX_SECOND_I2C_SUPPORT
bool
config MPC83XX_LDP_PIN
bool
config ARCH_MPC830X
bool
select MPC83XX_SDHC_SUPPORT
config ARCH_MPC8308
bool
select ARCH_MPC830X
select MPC83XX_TSEC1_SUPPORT
select MPC83XX_TSEC2_SUPPORT
select MPC83XX_PCIE1_SUPPORT
select MPC83XX_SECOND_I2C_SUPPORT
config ARCH_MPC8309
bool
select ARCH_MPC830X
select MPC83XX_QUICC_ENGINE
select MPC83XX_PCI_SUPPORT
select MPC83XX_SECOND_I2C_SUPPORT
config ARCH_MPC831X
bool
select MPC83XX_PCI_SUPPORT
select MPC83XX_TSEC1_SUPPORT
select MPC83XX_TSEC2_SUPPORT
config ARCH_MPC8313
bool
select ARCH_MPC831X
select MPC83XX_SECOND_I2C_SUPPORT
config ARCH_MPC8315
bool
select ARCH_MPC831X
select MPC83XX_PCIE1_SUPPORT
select MPC83XX_PCIE2_SUPPORT
select MPC83XX_SATA_SUPPORT
config ARCH_MPC832X
bool
select MPC83XX_QUICC_ENGINE
select MPC83XX_PCI_SUPPORT
config ARCH_MPC834X
bool
config ARCH_MPC8349
bool
select ARCH_MPC834X
select MPC83XX_PCI_SUPPORT
select MPC83XX_TSEC1_SUPPORT
select MPC83XX_TSEC2_SUPPORT
select MPC83XX_LDP_PIN
select MPC83XX_SECOND_I2C_SUPPORT
config ARCH_MPC8360
bool
select MPC83XX_QUICC_ENGINE
select MPC83XX_PCI_SUPPORT
select MPC83XX_LDP_PIN
select MPC83XX_SECOND_I2C_SUPPORT
config ARCH_MPC837X
bool
select MPC83XX_PCI_SUPPORT
select MPC83XX_TSEC1_SUPPORT
select MPC83XX_TSEC2_SUPPORT
select MPC83XX_PCIE1_SUPPORT
select MPC83XX_PCIE2_SUPPORT
select MPC83XX_SDHC_SUPPORT
select MPC83XX_SATA_SUPPORT
select MPC83XX_LDP_PIN
select MPC83XX_SECOND_I2C_SUPPORT
config SYS_IMMR
hex "Value for IMMR"
default 0xE0000000
help
Address for the Internal Memory-Mapped Registers (IMMR) window used
to configure the features of the SoC.
source "arch/powerpc/cpu/mpc83xx/hrcw/Kconfig"
source "arch/powerpc/cpu/mpc83xx/bats/Kconfig"
source "arch/powerpc/cpu/mpc83xx/lblaw/Kconfig"
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig"
source "arch/powerpc/cpu/mpc83xx/hid/Kconfig"
source "arch/powerpc/cpu/mpc83xx/sysio/Kconfig"
source "arch/powerpc/cpu/mpc83xx/arbiter/Kconfig"
source "arch/powerpc/cpu/mpc83xx/initreg/Kconfig"
menu "Legacy options"
if ARCH_MPC8349
#TODO(mario.six@gdsys.cc): Remove when mpc83xx PCI has been converted to DM/DT
choice
prompt "PMC slot configuration"
config PCI_ALL_PCI1
bool "All PMC slots on PCI1"
config PCI_ONE_PCI1
bool "First PMC1 on PCI1"
config PCI_TWO_PCI1
bool "First two PMC1 on PCI1"
endchoice
config PCI_64BIT
bool "PMC2 is 64bit"
endif
endmenu
source "board/esd/vme8349/Kconfig"
source "board/freescale/mpc8308rdb/Kconfig"
source "board/freescale/mpc8313erdb/Kconfig"

View File

@@ -29,7 +29,9 @@ obj-y += interrupts.o
obj-y += ecc.o
obj-$(CONFIG_QE) += qe_io.o
obj-$(CONFIG_FSL_SERDES) += serdes.o
ifndef CONFIG_ARCH_MPC8308
obj-$(CONFIG_PCI) += pci.o
endif
obj-$(CONFIG_PCIE) += pcie.o
obj-$(CONFIG_OF_LIBFDT) += fdt.o

View File

@@ -0,0 +1,139 @@
menu "Arbiter"
choice
prompt "Pipeline depth"
config ACR_PIPE_DEP_UNSET
bool "Don't set value"
config ACR_PIPE_DEP_1
bool "1"
config ACR_PIPE_DEP_2
bool "2"
config ACR_PIPE_DEP_3
bool "3"
config ACR_PIPE_DEP_4
bool "4"
endchoice
choice
prompt "Repeat count"
config ACR_RPTCNT_UNSET
bool "Don't set value"
config ACR_RPTCNT_1
bool "1"
config ACR_RPTCNT_2
bool "2"
config ACR_RPTCNT_3
bool "3"
config ACR_RPTCNT_4
bool "4"
config ACR_RPTCNT_5
bool "5"
config ACR_RPTCNT_6
bool "6"
config ACR_RPTCNT_7
bool "7"
config ACR_RPTCNT_8
bool "8"
endchoice
choice
prompt "Address parking"
config ACR_APARK_UNSET
bool "Don't set value"
config ACR_APARK_MASTER
bool "Park to master"
config ACR_APARK_LAST
bool "Park to last owner"
config ACR_APARK_DISABLE
bool "Disabled"
endchoice
choice
prompt "Parking master"
config ACR_PARKM_UNSET
bool "Don't set value"
config ACR_PARKM_E300
bool "e300 core"
config ACR_PARKM_TSEC_1_2
bool "TSEC1, TSEC2"
config ACR_PARKM_USB_I2C1_BOOT
bool "USB/I2C1_BOOT"
config ACR_PARKM_DMA_ESDHC_USB
bool "DMA, ESDHC, USB"
config ACR_PARKM_PEX
bool "PCI Express"
if MPC83XX_QUICC_ENGINE
config ACR_PARKM_ENC_CORE
bool "Encryption core"
endif
endchoice
config ACR_PIPE_DEP
hex
default 0x0 if ACR_PIPE_DEP_UNSET
default 0x0 if ACR_PIPE_DEP_1
default 0x10000 if ACR_PIPE_DEP_2
default 0x20000 if ACR_PIPE_DEP_3
default 0x30000 if ACR_PIPE_DEP_4
config ACR_RPTCNT
hex
default 0x0 if ACR_RPTCNT_UNSET
default 0x0 if ACR_RPTCNT_1
default 0x100 if ACR_RPTCNT_2
default 0x200 if ACR_RPTCNT_3
default 0x300 if ACR_RPTCNT_4
default 0x400 if ACR_RPTCNT_5
default 0x500 if ACR_RPTCNT_6
default 0x600 if ACR_RPTCNT_7
default 0x700 if ACR_RPTCNT_8
config ACR_APARK
hex
default 0x0 if ACR_APARK_UNSET
default 0x0 if ACR_APARK_MASTER
default 0x10 if ACR_APARK_LAST
default 0x20 if ACR_APARK_DISABLE
config ACR_PARKM
hex
default 0x0 if ACR_PARKM_UNSET
default 0x0 if ACR_PARKM_E300
default 0x2 if ACR_PARKM_TSEC_1_2
default 0x3 if ACR_PARKM_USB_I2C1_BOOT
default 0x4 if ACR_PARKM_DMA_ESDHC_USB
default 0x5 if ACR_PARKM_PEX
default 0x5 if ACR_PARKM_ENC_CORE
endmenu

View File

@@ -0,0 +1,28 @@
const __be32 acr_mask =
#ifndef CONFIG_ACR_PIPE_DEP_UNSET
ACR_PIPE_DEP |
#endif
#ifndef CONFIG_ACR_RPTCNT_UNSET
ACR_RPTCNT |
#endif
#ifndef CONFIG_ACR_APARK_UNSET
ACR_APARK |
#endif
#ifndef CONFIG_ACR_PARKM_UNSET
ACR_PARKM |
#endif
0;
const __be32 acr_val =
#ifndef CONFIG_ACR_PIPE_DEP_UNSET
CONFIG_ACR_PIPE_DEP |
#endif
#ifndef CONFIG_ACR_RPTCNT_UNSET
CONFIG_ACR_RPTCNT |
#endif
#ifndef CONFIG_ACR_APARK_UNSET
CONFIG_ACR_APARK |
#endif
#ifndef CONFIG_ACR_PARKM_UNSET
CONFIG_ACR_PARKM |
#endif
0;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,223 @@
#ifdef CONFIG_BAT0
#define CONFIG_SYS_IBAT0L (\
(CONFIG_BAT0_BASE) |\
(CONFIG_BAT0_PAGE_PROTECTION) |\
(CONFIG_BAT0_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT0U (\
(CONFIG_BAT0_BASE) |\
(CONFIG_BAT0_LENGTH) |\
(CONFIG_BAT0_VALID_BITS) \
)
#define CONFIG_SYS_DBAT0L (\
(CONFIG_BAT0_BASE) |\
(CONFIG_BAT0_PAGE_PROTECTION) |\
(CONFIG_BAT0_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT0U (\
(CONFIG_BAT0_BASE) |\
(CONFIG_BAT0_LENGTH) |\
(CONFIG_BAT0_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT0L (0)
#define CONFIG_SYS_IBAT0U (0)
#define CONFIG_SYS_DBAT0L (0)
#define CONFIG_SYS_DBAT0U (0)
#endif /* CONFIG_BAT0 */
#ifdef CONFIG_BAT1
#define CONFIG_SYS_IBAT1L (\
(CONFIG_BAT1_BASE) |\
(CONFIG_BAT1_PAGE_PROTECTION) |\
(CONFIG_BAT1_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT1U (\
(CONFIG_BAT1_BASE) |\
(CONFIG_BAT1_LENGTH) |\
(CONFIG_BAT1_VALID_BITS) \
)
#define CONFIG_SYS_DBAT1L (\
(CONFIG_BAT1_BASE) |\
(CONFIG_BAT1_PAGE_PROTECTION) |\
(CONFIG_BAT1_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT1U (\
(CONFIG_BAT1_BASE) |\
(CONFIG_BAT1_LENGTH) |\
(CONFIG_BAT1_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT1L (0)
#define CONFIG_SYS_IBAT1U (0)
#define CONFIG_SYS_DBAT1L (0)
#define CONFIG_SYS_DBAT1U (0)
#endif /* CONFIG_BAT1 */
#ifdef CONFIG_BAT2
#define CONFIG_SYS_IBAT2L (\
(CONFIG_BAT2_BASE) |\
(CONFIG_BAT2_PAGE_PROTECTION) |\
(CONFIG_BAT2_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT2U (\
(CONFIG_BAT2_BASE) |\
(CONFIG_BAT2_LENGTH) |\
(CONFIG_BAT2_VALID_BITS) \
)
#define CONFIG_SYS_DBAT2L (\
(CONFIG_BAT2_BASE) |\
(CONFIG_BAT2_PAGE_PROTECTION) |\
(CONFIG_BAT2_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT2U (\
(CONFIG_BAT2_BASE) |\
(CONFIG_BAT2_LENGTH) |\
(CONFIG_BAT2_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT2L (0)
#define CONFIG_SYS_IBAT2U (0)
#define CONFIG_SYS_DBAT2L (0)
#define CONFIG_SYS_DBAT2U (0)
#endif /* CONFIG_BAT2 */
#ifdef CONFIG_BAT3
#define CONFIG_SYS_IBAT3L (\
(CONFIG_BAT3_BASE) |\
(CONFIG_BAT3_PAGE_PROTECTION) |\
(CONFIG_BAT3_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT3U (\
(CONFIG_BAT3_BASE) |\
(CONFIG_BAT3_LENGTH) |\
(CONFIG_BAT3_VALID_BITS) \
)
#define CONFIG_SYS_DBAT3L (\
(CONFIG_BAT3_BASE) |\
(CONFIG_BAT3_PAGE_PROTECTION) |\
(CONFIG_BAT3_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT3U (\
(CONFIG_BAT3_BASE) |\
(CONFIG_BAT3_LENGTH) |\
(CONFIG_BAT3_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT3L (0)
#define CONFIG_SYS_IBAT3U (0)
#define CONFIG_SYS_DBAT3L (0)
#define CONFIG_SYS_DBAT3U (0)
#endif /* CONFIG_BAT3 */
#ifdef CONFIG_BAT4
#define CONFIG_SYS_IBAT4L (\
(CONFIG_BAT4_BASE) |\
(CONFIG_BAT4_PAGE_PROTECTION) |\
(CONFIG_BAT4_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT4U (\
(CONFIG_BAT4_BASE) |\
(CONFIG_BAT4_LENGTH) |\
(CONFIG_BAT4_VALID_BITS) \
)
#define CONFIG_SYS_DBAT4L (\
(CONFIG_BAT4_BASE) |\
(CONFIG_BAT4_PAGE_PROTECTION) |\
(CONFIG_BAT4_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT4U (\
(CONFIG_BAT4_BASE) |\
(CONFIG_BAT4_LENGTH) |\
(CONFIG_BAT4_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT4L (0)
#define CONFIG_SYS_IBAT4U (0)
#define CONFIG_SYS_DBAT4L (0)
#define CONFIG_SYS_DBAT4U (0)
#endif /* CONFIG_BAT4 */
#ifdef CONFIG_BAT5
#define CONFIG_SYS_IBAT5L (\
(CONFIG_BAT5_BASE) |\
(CONFIG_BAT5_PAGE_PROTECTION) |\
(CONFIG_BAT5_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT5U (\
(CONFIG_BAT5_BASE) |\
(CONFIG_BAT5_LENGTH) |\
(CONFIG_BAT5_VALID_BITS) \
)
#define CONFIG_SYS_DBAT5L (\
(CONFIG_BAT5_BASE) |\
(CONFIG_BAT5_PAGE_PROTECTION) |\
(CONFIG_BAT5_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT5U (\
(CONFIG_BAT5_BASE) |\
(CONFIG_BAT5_LENGTH) |\
(CONFIG_BAT5_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT5L (0)
#define CONFIG_SYS_IBAT5U (0)
#define CONFIG_SYS_DBAT5L (0)
#define CONFIG_SYS_DBAT5U (0)
#endif /* CONFIG_BAT5 */
#ifdef CONFIG_BAT6
#define CONFIG_SYS_IBAT6L (\
(CONFIG_BAT6_BASE) |\
(CONFIG_BAT6_PAGE_PROTECTION) |\
(CONFIG_BAT6_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT6U (\
(CONFIG_BAT6_BASE) |\
(CONFIG_BAT6_LENGTH) |\
(CONFIG_BAT6_VALID_BITS) \
)
#define CONFIG_SYS_DBAT6L (\
(CONFIG_BAT6_BASE) |\
(CONFIG_BAT6_PAGE_PROTECTION) |\
(CONFIG_BAT6_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT6U (\
(CONFIG_BAT6_BASE) |\
(CONFIG_BAT6_LENGTH) |\
(CONFIG_BAT6_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT6L (0)
#define CONFIG_SYS_IBAT6U (0)
#define CONFIG_SYS_DBAT6L (0)
#define CONFIG_SYS_DBAT6U (0)
#endif /* CONFIG_BAT6 */
#ifdef CONFIG_BAT7
#define CONFIG_SYS_IBAT7L (\
(CONFIG_BAT7_BASE) |\
(CONFIG_BAT7_PAGE_PROTECTION) |\
(CONFIG_BAT7_WIMG_ICACHE) \
)
#define CONFIG_SYS_IBAT7U (\
(CONFIG_BAT7_BASE) |\
(CONFIG_BAT7_LENGTH) |\
(CONFIG_BAT7_VALID_BITS) \
)
#define CONFIG_SYS_DBAT7L (\
(CONFIG_BAT7_BASE) |\
(CONFIG_BAT7_PAGE_PROTECTION) |\
(CONFIG_BAT7_WIMG_DCACHE) \
)
#define CONFIG_SYS_DBAT7U (\
(CONFIG_BAT7_BASE) |\
(CONFIG_BAT7_LENGTH) |\
(CONFIG_BAT7_VALID_BITS) \
)
#else
#define CONFIG_SYS_IBAT7L (0)
#define CONFIG_SYS_IBAT7U (0)
#define CONFIG_SYS_DBAT7L (0)
#define CONFIG_SYS_DBAT7U (0)
#endif /* CONFIG_BAT7 */

View File

@@ -18,7 +18,7 @@
#include <tsec.h>
#include <netdev.h>
#include <fsl_esdhc.h>
#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_MPC831x)
#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_ARCH_MPC831X)
#include <linux/immap_qe.h>
#include <asm/io.h>
#endif
@@ -133,18 +133,18 @@ do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
#ifdef MPC83xx_RESET
/* Interrupts and MMU off */
__asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
msr &= ~( MSR_EE | MSR_IR | MSR_DR);
__asm__ __volatile__ ("mtmsr %0"::"r" (msr));
msr = mfmsr();
msr &= ~(MSR_EE | MSR_IR | MSR_DR);
mtmsr(msr);
/* enable Reset Control Reg */
immap->reset.rpr = 0x52535445;
__asm__ __volatile__ ("sync");
__asm__ __volatile__ ("isync");
sync();
isync();
/* confirm Reset Control Reg is enabled */
while(!((immap->reset.rcer) & RCER_CRE));
while(!((immap->reset.rcer) & RCER_CRE))
;
udelay(200);
@@ -156,10 +156,9 @@ do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
immap->reset.rmr = RMR_CSRE; /* Checkstop Reset enable */
/* Interrupts and MMU off */
__asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
msr = mfmsr();
msr &= ~(MSR_ME | MSR_EE | MSR_IR | MSR_DR);
__asm__ __volatile__ ("mtmsr %0"::"r" (msr));
mtmsr(msr);
/*
* Trying to execute the next instruction at a non-existing address
@@ -199,6 +198,7 @@ void watchdog_reset (void)
}
#endif
#ifndef CONFIG_DM_ETH
/*
* Initializes on-chip ethernet controllers.
* to override, implement board_eth_init()
@@ -214,6 +214,7 @@ int cpu_eth_init(bd_t *bis)
#endif
return 0;
}
#endif /* !CONFIG_DM_ETH */
/*
* Initializes on-chip MMC controllers.
@@ -227,3 +228,21 @@ int cpu_mmc_init(bd_t *bis)
return 0;
#endif
}
void ppcDWstore(unsigned int *addr, unsigned int *value)
{
asm("lfd 1, 0(%1)\n\t"
"stfd 1, 0(%0)"
:
: "r" (addr), "r" (value)
: "memory");
}
void ppcDWload(unsigned int *addr, unsigned int *ret)
{
asm("lfd 1, 0(%0)\n\t"
"stfd 1, 0(%1)"
:
: "r" (addr), "r" (ret)
: "memory");
}

View File

@@ -12,6 +12,12 @@
#include <usb/ehci-ci.h>
#endif
#include "lblaw/lblaw.h"
#include "elbc/elbc.h"
#include "sysio/sysio.h"
#include "arbiter/arbiter.h"
#include "initreg/initreg.h"
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_QE
@@ -47,62 +53,6 @@ static void config_qe_ioports(void)
*/
void cpu_init_f (volatile immap_t * im)
{
__be32 acr_mask =
#ifdef CONFIG_SYS_ACR_PIPE_DEP /* Arbiter pipeline depth */
ACR_PIPE_DEP |
#endif
#ifdef CONFIG_SYS_ACR_RPTCNT /* Arbiter repeat count */
ACR_RPTCNT |
#endif
#ifdef CONFIG_SYS_ACR_APARK /* Arbiter address parking mode */
ACR_APARK |
#endif
#ifdef CONFIG_SYS_ACR_PARKM /* Arbiter parking master */
ACR_PARKM |
#endif
0;
__be32 acr_val =
#ifdef CONFIG_SYS_ACR_PIPE_DEP /* Arbiter pipeline depth */
(CONFIG_SYS_ACR_PIPE_DEP << ACR_PIPE_DEP_SHIFT) |
#endif
#ifdef CONFIG_SYS_ACR_RPTCNT /* Arbiter repeat count */
(CONFIG_SYS_ACR_RPTCNT << ACR_RPTCNT_SHIFT) |
#endif
#ifdef CONFIG_SYS_ACR_APARK /* Arbiter address parking mode */
(CONFIG_SYS_ACR_APARK << ACR_APARK_SHIFT) |
#endif
#ifdef CONFIG_SYS_ACR_PARKM /* Arbiter parking master */
(CONFIG_SYS_ACR_PARKM << ACR_PARKM_SHIFT) |
#endif
0;
__be32 spcr_mask =
#ifdef CONFIG_SYS_SPCR_OPT /* Optimize transactions between CSB and other dev */
SPCR_OPT |
#endif
#ifdef CONFIG_SYS_SPCR_TSECEP /* all eTSEC's Emergency priority */
SPCR_TSECEP |
#endif
#ifdef CONFIG_SYS_SPCR_TSEC1EP /* TSEC1 Emergency priority */
SPCR_TSEC1EP |
#endif
#ifdef CONFIG_SYS_SPCR_TSEC2EP /* TSEC2 Emergency priority */
SPCR_TSEC2EP |
#endif
0;
__be32 spcr_val =
#ifdef CONFIG_SYS_SPCR_OPT
(CONFIG_SYS_SPCR_OPT << SPCR_OPT_SHIFT) |
#endif
#ifdef CONFIG_SYS_SPCR_TSECEP /* all eTSEC's Emergency priority */
(CONFIG_SYS_SPCR_TSECEP << SPCR_TSECEP_SHIFT) |
#endif
#ifdef CONFIG_SYS_SPCR_TSEC1EP /* TSEC1 Emergency priority */
(CONFIG_SYS_SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT) |
#endif
#ifdef CONFIG_SYS_SPCR_TSEC2EP /* TSEC2 Emergency priority */
(CONFIG_SYS_SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT) |
#endif
0;
__be32 sccr_mask =
#ifdef CONFIG_SYS_SCCR_ENCCM /* Encryption clock mode */
SCCR_ENCCM |
@@ -177,28 +127,6 @@ void cpu_init_f (volatile immap_t * im)
#endif
#ifdef CONFIG_SYS_SCCR_SATACM /* SATA controller clock mode */
(CONFIG_SYS_SCCR_SATACM << SCCR_SATACM_SHIFT) |
#endif
0;
__be32 lcrr_mask =
#ifdef CONFIG_SYS_LCRR_DBYP /* PLL bypass */
LCRR_DBYP |
#endif
#ifdef CONFIG_SYS_LCRR_EADC /* external address delay */
LCRR_EADC |
#endif
#ifdef CONFIG_SYS_LCRR_CLKDIV /* system clock divider */
LCRR_CLKDIV |
#endif
0;
__be32 lcrr_val =
#ifdef CONFIG_SYS_LCRR_DBYP /* PLL bypass */
CONFIG_SYS_LCRR_DBYP |
#endif
#ifdef CONFIG_SYS_LCRR_EADC
CONFIG_SYS_LCRR_EADC |
#endif
#ifdef CONFIG_SYS_LCRR_CLKDIV /* system clock divider */
CONFIG_SYS_LCRR_CLKDIV |
#endif
0;
@@ -240,7 +168,7 @@ void cpu_init_f (volatile immap_t * im)
/* System General Purpose Register */
#ifdef CONFIG_SYS_SICRH
#if defined(CONFIG_MPC834x) || defined(CONFIG_MPC8313)
#if defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC8313)
/* regarding to MPC34x manual rev.1 bits 28..29 must be preserved */
__raw_writel((im->sysconf.sicrh & 0x0000000C) | CONFIG_SYS_SICRH,
&im->sysconf.sicrh);
@@ -312,7 +240,7 @@ void cpu_init_f (volatile immap_t * im)
im->gpio[1].dat = CONFIG_SYS_GPIO2_DAT;
im->gpio[1].dir = CONFIG_SYS_GPIO2_DIR;
#endif
#if defined(CONFIG_USB_EHCI_FSL) && defined(CONFIG_MPC831x)
#if defined(CONFIG_USB_EHCI_FSL) && defined(CONFIG_ARCH_MPC831X)
uint32_t temp;
struct usb_ehci *ehci = (struct usb_ehci *)CONFIG_SYS_FSL_USB1_ADDR;

View File

@@ -191,8 +191,8 @@ int do_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
}
ddr->err_disable = val;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
return 0;
} else if (strcmp(argv[1], "errdetectclr") == 0) {
val = ddr->err_detect;
@@ -249,8 +249,8 @@ int do_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
printf("Incorrect command\n");
ddr->ecc_err_inject = val;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
return 0;
} else if (strcmp(argv[1], "mirror") == 0) {
val = ddr->ecc_err_inject;
@@ -282,26 +282,26 @@ int do_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
/* enable injects */
ddr->ecc_err_inject |= ECC_ERR_INJECT_EIEN;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
/* write memory location injecting errors */
ppcDWstore((u32 *) i, pattern);
__asm__ __volatile__("sync");
sync();
/* disable injects */
ddr->ecc_err_inject &= ~ECC_ERR_INJECT_EIEN;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
/* read data, this generates ECC error */
ppcDWload((u32 *) i, ret);
__asm__ __volatile__("sync");
sync();
/* re-initialize memory, double word write the location again,
* generates new ECC code this time */
ppcDWstore((u32 *) i, writeback);
__asm__ __volatile__("sync");
sync();
}
enable_interrupts();
return 0;
@@ -321,29 +321,29 @@ int do_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
/* enable injects */
ddr->ecc_err_inject |= ECC_ERR_INJECT_EIEN;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
/* write memory location injecting errors */
*(u32 *) i = 0xfedcba98UL;
__asm__ __volatile__("sync");
sync();
/* sub double word write,
* bus will read-modify-write,
* generates ECC error */
*((u32 *) i + 1) = 0x76543210UL;
__asm__ __volatile__("sync");
sync();
/* disable injects */
ddr->ecc_err_inject &= ~ECC_ERR_INJECT_EIEN;
__asm__ __volatile__("sync");
__asm__ __volatile__("isync");
sync();
isync();
/* re-initialize memory,
* double word write the location again,
* generates new ECC code this time */
ppcDWstore((u32 *) i, writeback);
__asm__ __volatile__("sync");
sync();
}
enable_interrupts();
return 0;

View File

@@ -0,0 +1,32 @@
menu "ELBC register setup"
choice
prompt "OR/BR for NAND SPL"
config ELBC_BR_OR_NAND_PRELIM_NONE
bool "None"
config ELBC_BR_OR_NAND_PRELIM_0
bool "0"
config ELBC_BR_OR_NAND_PRELIM_1
bool "1"
config ELBC_BR_OR_NAND_PRELIM_2
bool "2"
config ELBC_BR_OR_NAND_PRELIM_3
bool "3"
config ELBC_BR_OR_NAND_PRELIM_4
bool "4"
endchoice
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig.elbc0"
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig.elbc1"
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig.elbc2"
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig.elbc3"
source "arch/powerpc/cpu/mpc83xx/elbc/Kconfig.elbc4"
endmenu

View File

@@ -0,0 +1,733 @@
menuconfig ELBC_BR0_OR0
bool "ELBC BR0/OR0"
if ELBC_BR0_OR0
config BR0_OR0_NAME
string "Identifier"
config BR0_OR0_BASE
hex "Port base"
choice
prompt "Port size"
config BR0_PORTSIZE_8BIT
bool "8-bit"
config BR0_PORTSIZE_16BIT
depends on !BR0_MACHINE_FCM
bool "16-bit"
config BR0_PORTSIZE_32BIT
depends on !BR0_MACHINE_FCM
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
bool "32-bit"
endchoice
if BR0_MACHINE_FCM
choice
prompt "Data Error Checking"
config BR0_ERRORCHECKING_DISABLED
bool "Disabled"
config BR0_ERRORCHECKING_ECC_CHECKING
bool "ECC checking / No ECC generation"
config BR0_ERRORCHECKING_BOTH
bool "ECC checking and generation"
endchoice
endif
config BR0_WRITE_PROTECT
bool "Write-protect"
config BR0_MACHINE_UPM
bool
choice
prompt "Machine select"
config BR0_MACHINE_GPCM
bool "GPCM"
config BR0_MACHINE_FCM
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "FCM"
config BR0_MACHINE_SDRAM
depends on ARCH_MPC8349 || ARCH_MPC8360
bool "SDRAM"
config BR0_MACHINE_UPMA
select BR0_MACHINE_UPM
bool "UPM (A)"
config BR0_MACHINE_UPMB
select BR0_MACHINE_UPM
bool "UPM (B)"
config BR0_MACHINE_UPMC
select BR0_MACHINE_UPM
bool "UPM (C)"
endchoice
if ARCH_MPC8313 || ARCH_MPC8323 || ARCH_MPC8360
choice
prompt "Atomic operations"
config BR0_ATOMIC_NONE
bool "No atomic operations"
config BR0_ATOMIC_RAWA
bool "Read-after-write-atomic"
config BR0_ATOMIC_WARA
bool "Write-after-read-atomic"
endchoice
endif
if BR0_MACHINE_GPCM || BR0_MACHINE_FCM || BR0_MACHINE_UPM || BR0_MACHINE_SDRAM
choice
prompt "Address mask"
config OR0_AM_32_KBYTES
depends on !BR0_MACHINE_SDRAM
bool "32 kb"
config OR0_AM_64_KBYTES
bool "64 kb"
config OR0_AM_128_KBYTES
bool "128 kb"
config OR0_AM_256_KBYTES
bool "256 kb"
config OR0_AM_512_KBYTES
bool "512 kb"
config OR0_AM_1_MBYTES
bool "1 mb"
config OR0_AM_2_MBYTES
bool "2 mb"
config OR0_AM_4_MBYTES
bool "4 mb"
config OR0_AM_8_MBYTES
bool "8 mb"
config OR0_AM_16_MBYTES
bool "16 mb"
config OR0_AM_32_MBYTES
bool "32 mb"
config OR0_AM_64_MBYTES
bool "64 mb"
# XXX: Some boards define 128MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR0_AM_128_MBYTES
bool "128 mb"
# XXX: Some boards define 256MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR0_AM_256_MBYTES
bool "256 mb"
config OR0_AM_512_MBYTES
depends on BR0_MACHINE_FCM
bool "512 mb"
# XXX: Some boards define 1GB AM with GPCM, even though it should not be
# possible according to the manuals
config OR0_AM_1_GBYTES
bool "1 gb"
config OR0_AM_2_GBYTES
depends on BR0_MACHINE_FCM
bool "2 gb"
config OR0_AM_4_GBYTES
depends on BR0_MACHINE_FCM
bool "4 gb"
endchoice
config OR0_XAM_SET
bool "Set unused bytes after address mask"
choice
prompt "Buffer control disable"
config OR0_BCTLD_ASSERTED
bool "Asserted"
config OR0_BCTLD_NOT_ASSERTED
bool "Not asserted"
endchoice
endif
if BR0_MACHINE_GPCM || BR0_MACHINE_FCM
choice
prompt "Cycle length in bus clocks"
config OR0_SCY_0
bool "No wait states"
config OR0_SCY_1
bool "1 wait state"
config OR0_SCY_2
bool "2 wait states"
config OR0_SCY_3
bool "3 wait states"
config OR0_SCY_4
bool "4 wait states"
config OR0_SCY_5
bool "5 wait states"
config OR0_SCY_6
bool "6 wait states"
config OR0_SCY_7
bool "7 wait states"
config OR0_SCY_8
depends on BR0_MACHINE_GPCM
bool "8 wait states"
config OR0_SCY_9
depends on BR0_MACHINE_GPCM
bool "9 wait states"
config OR0_SCY_10
depends on BR0_MACHINE_GPCM
bool "10 wait states"
config OR0_SCY_11
depends on BR0_MACHINE_GPCM
bool "11 wait states"
config OR0_SCY_12
depends on BR0_MACHINE_GPCM
bool "12 wait states"
config OR0_SCY_13
depends on BR0_MACHINE_GPCM
bool "13 wait states"
config OR0_SCY_14
depends on BR0_MACHINE_GPCM
bool "14 wait states"
config OR0_SCY_15
depends on BR0_MACHINE_GPCM
bool "15 wait states"
endchoice
endif # BR0_MACHINE_GPCM || BR0_MACHINE_FCM
if BR0_MACHINE_GPCM
choice
prompt "Chip select negotiation time"
config OR0_CSNT_NORMAL
bool "Normal"
config OR0_CSNT_EARLIER
bool "Earlier"
endchoice
choice
prompt "Address to chip-select setup"
config OR0_ACS_SAME_TIME
bool "At the same time"
config OR0_ACS_HALF_CYCLE_EARLIER
bool "Half of a bus clock cycle earlier"
config OR0_ACS_QUARTER_CYCLE_EARLIER
bool "Half/Quarter of a bus clock cycle earlier"
endchoice
choice
prompt "Extra address to check-select setup"
config OR0_XACS_NORMAL
bool "Normal"
config OR0_XACS_EXTENDED
bool "Extended"
endchoice
choice
prompt "External address termination"
config OR0_SETA_INTERNAL
bool "Access is terminated internally"
config OR0_SETA_EXTERNAL
bool "Access is terminated externally"
endchoice
endif # BR0_MACHINE_GPCM
if BR0_MACHINE_FCM
choice
prompt "NAND Flash EEPROM page size"
config OR0_PGS_SMALL
bool "Small page device"
config OR0_PGS_LARGE
bool "Large page device"
endchoice
choice
prompt "Chip select to command time"
config OR0_CSCT_1_CYCLE
depends on OR0_TRLX_NORMAL
bool "1 cycle"
config OR0_CSCT_2_CYCLE
depends on OR0_TRLX_RELAXED
bool "2 cycles"
config OR0_CSCT_4_CYCLE
depends on OR0_TRLX_NORMAL
bool "4 cycles"
config OR0_CSCT_8_CYCLE
depends on OR0_TRLX_RELAXED
bool "8 cycles"
endchoice
choice
prompt "Command setup time"
config OR0_CST_COINCIDENT
depends on OR0_TRLX_NORMAL
bool "Coincident with any command"
config OR0_CST_QUARTER_CLOCK
depends on OR0_TRLX_NORMAL
bool "0.25 clocks after"
config OR0_CST_HALF_CLOCK
depends on OR0_TRLX_RELAXED
bool "0.5 clocks after"
config OR0_CST_ONE_CLOCK
depends on OR0_TRLX_RELAXED
bool "1 clock after"
endchoice
choice
prompt "Command hold time"
config OR0_CHT_HALF_CLOCK
depends on OR0_TRLX_NORMAL
bool "0.5 clocks before"
config OR0_CHT_ONE_CLOCK
depends on OR0_TRLX_NORMAL
bool "1 clock before"
config OR0_CHT_ONE_HALF_CLOCK
depends on OR0_TRLX_RELAXED
bool "1.5 clocks before"
config OR0_CHT_TWO_CLOCK
depends on OR0_TRLX_RELAXED
bool "2 clocks before"
endchoice
choice
prompt "Reset setup time"
config OR0_RST_THREE_QUARTER_CLOCK
depends on OR0_TRLX_NORMAL
bool "0.75 clocks prior"
config OR0_RST_ONE_HALF_CLOCK
depends on OR0_TRLX_RELAXED
bool "0.5 clocks prior"
config OR0_RST_ONE_CLOCK
bool "1 clock prior"
endchoice
endif # BR0_MACHINE_FCM
if BR0_MACHINE_UPM
choice
prompt "Burst inhibit"
config OR0_BI_BURSTSUPPORT
bool "Support burst access"
config OR0_BI_BURSTINHIBIT
bool "Inhibit burst access"
endchoice
endif # BR0_MACHINE_UPM
if BR0_MACHINE_SDRAM
choice
prompt "Number of column address lines"
config OR0_COLS_7
bool "7"
config OR0_COLS_8
bool "8"
config OR0_COLS_9
bool "9"
config OR0_COLS_10
bool "10"
config OR0_COLS_11
bool "11"
config OR0_COLS_12
bool "12"
config OR0_COLS_13
bool "13"
config OR0_COLS_14
bool "14"
endchoice
choice
prompt "Number of rows address lines"
config OR0_ROWS_9
bool "9"
config OR0_ROWS_10
bool "10"
config OR0_ROWS_11
bool "11"
config OR0_ROWS_12
bool "12"
config OR0_ROWS_13
bool "13"
config OR0_ROWS_14
bool "14"
config OR0_ROWS_15
bool "15"
endchoice
choice
prompt "Page mode select"
config OR0_PMSEL_BTB
bool "Back-to-back"
config OR0_PMSEL_KEPT_OPEN
bool "Page kept open until page miss or refresh"
endchoice
endif # BR0_MACHINE_SDRAM
choice
prompt "Relaxed timing"
config OR0_TRLX_NORMAL
bool "Normal"
config OR0_TRLX_RELAXED
bool "Relaxed"
endchoice
choice
prompt "Extended hold time"
config OR0_EHTR_NORMAL
depends on OR0_TRLX_NORMAL
bool "Normal"
config OR0_EHTR_1_CYCLE
depends on OR0_TRLX_NORMAL
bool "1 idle clock cycle inserted"
config OR0_EHTR_4_CYCLE
depends on OR0_TRLX_RELAXED
bool "4 idle clock cycles inserted"
config OR0_EHTR_8_CYCLE
depends on OR0_TRLX_RELAXED
bool "8 idle clock cycles inserted"
endchoice
if !ARCH_MPC8308
choice
prompt "External address latch delay"
config OR0_EAD_NONE
bool "None"
config OR0_EAD_EXTRA
bool "Extra"
endchoice
endif # !ARCH_MPC8308
endif # ELBC_BR0_OR0
config BR0_PORTSIZE
hex
default 0x800 if BR0_PORTSIZE_8BIT
default 0x1000 if BR0_PORTSIZE_16BIT
default 0x1800 if BR0_PORTSIZE_32BIT
config BR0_ERRORCHECKING
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if BR0_ERRORCHECKING_DISABLED
default 0x200 if BR0_ERRORCHECKING_ECC_CHECKING
default 0x400 if BR0_ERRORCHECKING_BOTH
config BR0_WRITE_PROTECT_BIT
hex
default 0x0 if !BR0_WRITE_PROTECT
default 0x100 if BR0_WRITE_PROTECT
config BR0_MACHINE
hex
default 0x0 if BR0_MACHINE_GPCM
default 0x20 if BR0_MACHINE_FCM
default 0x60 if BR0_MACHINE_SDRAM
default 0x80 if BR0_MACHINE_UPMA
default 0xa0 if BR0_MACHINE_UPMB
default 0xc0 if BR0_MACHINE_UPMC
config BR0_ATOMIC
hex
default 0x0 if !ARCH_MPC8313 && !ARCH_MPC8323 && !ARCH_MPC8360
default 0x0 if BR0_ATOMIC_NONE
default 0x4 if BR0_ATOMIC_RAWA
default 0x8 if BR0_ATOMIC_WARA
config BR0_VALID_BIT
hex
default 0x0 if !ELBC_BR0_OR0
default 0x1 if ELBC_BR0_OR0
config OR0_AM
hex
default 0xffff8000 if OR0_AM_32_KBYTES && !BR0_MACHINE_SDRAM
default 0xffff0000 if OR0_AM_64_KBYTES
default 0xfffe0000 if OR0_AM_128_KBYTES
default 0xfffc0000 if OR0_AM_256_KBYTES
default 0xfff80000 if OR0_AM_512_KBYTES
default 0xfff00000 if OR0_AM_1_MBYTES
default 0xffe00000 if OR0_AM_2_MBYTES
default 0xffc00000 if OR0_AM_4_MBYTES
default 0xff800000 if OR0_AM_8_MBYTES
default 0xff000000 if OR0_AM_16_MBYTES
default 0xfe000000 if OR0_AM_32_MBYTES
default 0xfc000000 if OR0_AM_64_MBYTES
default 0xf8000000 if OR0_AM_128_MBYTES
default 0xf0000000 if OR0_AM_256_MBYTES
default 0xe0000000 if OR0_AM_512_MBYTES
default 0xc0000000 if OR0_AM_1_GBYTES
default 0x80000000 if OR0_AM_2_GBYTES
default 0x00000000 if OR0_AM_4_GBYTES
config OR0_XAM
hex
default 0x0 if !OR0_XAM_SET
default 0x6000 if OR0_XAM_SET
config OR0_BCTLD
hex
default 0x0 if OR0_BCTLD_ASSERTED
default 0x1000 if OR0_BCTLD_NOT_ASSERTED
config OR0_BI
hex
default 0x0 if !BR0_MACHINE_UPM
default 0x0 if OR0_BI_BURSTSUPPORT
default 0x100 if OR0_BI_BURSTINHIBIT
config OR0_COLS
hex
default 0x0 if !BR0_MACHINE_SDRAM
default 0x0 if OR0_COLS_7
default 0x400 if OR0_COLS_8
default 0x800 if OR0_COLS_9
default 0xc00 if OR0_COLS_10
default 0x1000 if OR0_COLS_11
default 0x1400 if OR0_COLS_12
default 0x1800 if OR0_COLS_13
default 0x1c00 if OR0_COLS_14
config OR0_ROWS
hex
default 0x0 if !BR0_MACHINE_SDRAM
default 0x0 if OR0_ROWS_9
default 0x40 if OR0_ROWS_10
default 0x80 if OR0_ROWS_11
default 0xc0 if OR0_ROWS_12
default 0x100 if OR0_ROWS_13
default 0x140 if OR0_ROWS_14
default 0x180 if OR0_ROWS_15
config OR0_PMSEL
hex
default 0x0 if !BR0_MACHINE_SDRAM
default 0x0 if OR0_PMSEL_BTB
default 0x20 if OR0_PMSEL_KEPT_OPEN
config OR0_SCY
hex
default 0x0 if !BR0_MACHINE_GPCM && !BR0_MACHINE_FCM
default 0x0 if OR0_SCY_0
default 0x10 if OR0_SCY_1
default 0x20 if OR0_SCY_2
default 0x30 if OR0_SCY_3
default 0x40 if OR0_SCY_4
default 0x50 if OR0_SCY_5
default 0x60 if OR0_SCY_6
default 0x70 if OR0_SCY_7
default 0x80 if OR0_SCY_8
default 0x90 if OR0_SCY_9
default 0xa0 if OR0_SCY_10
default 0xb0 if OR0_SCY_11
default 0xc0 if OR0_SCY_12
default 0xd0 if OR0_SCY_13
default 0xe0 if OR0_SCY_14
default 0xf0 if OR0_SCY_15
config OR0_PGS
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if OR0_PGS_SMALL
default 0x400 if OR0_PGS_LARGE
config OR0_CSCT
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if OR0_CSCT_1_CYCLE
default 0x0 if OR0_CSCT_2_CYCLE
default 0x200 if OR0_CSCT_4_CYCLE
default 0x200 if OR0_CSCT_8_CYCLE
config OR0_CST
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if OR0_CST_COINCIDENT
default 0x100 if OR0_CST_QUARTER_CLOCK
default 0x0 if OR0_CST_HALF_CLOCK
default 0x100 if OR0_CST_ONE_CLOCK
config OR0_CHT
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if OR0_CHT_HALF_CLOCK
default 0x80 if OR0_CHT_ONE_CLOCK
default 0x0 if OR0_CHT_ONE_HALF_CLOCK
default 0x80 if OR0_CHT_TWO_CLOCK
config OR0_RST
hex
default 0x0 if !BR0_MACHINE_FCM
default 0x0 if OR0_RST_THREE_QUARTER_CLOCK
default 0x8 if OR0_RST_ONE_CLOCK
default 0x0 if OR0_RST_ONE_HALF_CLOCK
config OR0_CSNT
hex
default 0x0 if !BR0_MACHINE_GPCM
default 0x0 if OR0_CSNT_NORMAL
default 0x800 if OR0_CSNT_EARLIER
config OR0_ACS
hex
default 0x0 if !BR0_MACHINE_GPCM
default 0x0 if OR0_ACS_SAME_TIME
default 0x400 if OR0_ACS_QUARTER_CYCLE_EARLIER
default 0x600 if OR0_ACS_HALF_CYCLE_EARLIER
config OR0_XACS
hex
default 0x0 if !BR0_MACHINE_GPCM
default 0x0 if OR0_XACS_NORMAL
default 0x100 if OR0_XACS_EXTENDED
config OR0_SETA
hex
default 0x0 if !BR0_MACHINE_GPCM
default 0x0 if OR0_SETA_INTERNAL
default 0x8 if OR0_SETA_EXTERNAL
config OR0_TRLX
hex
default 0x0 if OR0_TRLX_NORMAL
default 0x4 if OR0_TRLX_RELAXED
config OR0_EHTR
hex
default 0x0 if OR0_EHTR_NORMAL
default 0x2 if OR0_EHTR_1_CYCLE
default 0x0 if OR0_EHTR_4_CYCLE
default 0x2 if OR0_EHTR_8_CYCLE
config OR0_EAD
hex
default 0x0 if ARCH_MPC8308
default 0x0 if OR0_EAD_NONE
default 0x1 if OR0_EAD_EXTRA

View File

@@ -0,0 +1,733 @@
menuconfig ELBC_BR1_OR1
bool "ELBC BR1/OR1"
if ELBC_BR1_OR1
config BR1_OR1_NAME
string "Identifier"
config BR1_OR1_BASE
hex "Port base"
choice
prompt "Port size"
config BR1_PORTSIZE_8BIT
bool "8-bit"
config BR1_PORTSIZE_16BIT
depends on !BR1_MACHINE_FCM
bool "16-bit"
config BR1_PORTSIZE_32BIT
depends on !BR1_MACHINE_FCM
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
bool "32-bit"
endchoice
if BR1_MACHINE_FCM
choice
prompt "Data Error Checking"
config BR1_ERRORCHECKING_DISABLED
bool "Disabled"
config BR1_ERRORCHECKING_ECC_CHECKING
bool "ECC checking / No ECC generation"
config BR1_ERRORCHECKING_BOTH
bool "ECC checking and generation"
endchoice
endif
config BR1_WRITE_PROTECT
bool "Write-protect"
config BR1_MACHINE_UPM
bool
choice
prompt "Machine select"
config BR1_MACHINE_GPCM
bool "GPCM"
config BR1_MACHINE_FCM
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "FCM"
config BR1_MACHINE_SDRAM
depends on ARCH_MPC8349 || ARCH_MPC8360
bool "SDRAM"
config BR1_MACHINE_UPMA
select BR1_MACHINE_UPM
bool "UPM (A)"
config BR1_MACHINE_UPMB
select BR1_MACHINE_UPM
bool "UPM (B)"
config BR1_MACHINE_UPMC
select BR1_MACHINE_UPM
bool "UPM (C)"
endchoice
if ARCH_MPC8313 || ARCH_MPC8323 || ARCH_MPC8360
choice
prompt "Atomic operations"
config BR1_ATOMIC_NONE
bool "No atomic operations"
config BR1_ATOMIC_RAWA
bool "Read-after-write-atomic"
config BR1_ATOMIC_WARA
bool "Write-after-read-atomic"
endchoice
endif
if BR1_MACHINE_GPCM || BR1_MACHINE_FCM || BR1_MACHINE_UPM || BR1_MACHINE_SDRAM
choice
prompt "Address mask"
config OR1_AM_32_KBYTES
depends on !BR1_MACHINE_SDRAM
bool "32 kb"
config OR1_AM_64_KBYTES
bool "64 kb"
config OR1_AM_128_KBYTES
bool "128 kb"
config OR1_AM_256_KBYTES
bool "256 kb"
config OR1_AM_512_KBYTES
bool "512 kb"
config OR1_AM_1_MBYTES
bool "1 mb"
config OR1_AM_2_MBYTES
bool "2 mb"
config OR1_AM_4_MBYTES
bool "4 mb"
config OR1_AM_8_MBYTES
bool "8 mb"
config OR1_AM_16_MBYTES
bool "16 mb"
config OR1_AM_32_MBYTES
bool "32 mb"
config OR1_AM_64_MBYTES
bool "64 mb"
# XXX: Some boards define 128MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR1_AM_128_MBYTES
bool "128 mb"
# XXX: Some boards define 256MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR1_AM_256_MBYTES
bool "256 mb"
config OR1_AM_512_MBYTES
depends on BR1_MACHINE_FCM
bool "512 mb"
# XXX: Some boards define 1GB AM with GPCM, even though it should not be
# possible according to the manuals
config OR1_AM_1_GBYTES
bool "1 gb"
config OR1_AM_2_GBYTES
depends on BR1_MACHINE_FCM
bool "2 gb"
config OR1_AM_4_GBYTES
depends on BR1_MACHINE_FCM
bool "4 gb"
endchoice
config OR1_XAM_SET
bool "Set unused bytes after address mask"
choice
prompt "Buffer control disable"
config OR1_BCTLD_ASSERTED
bool "Asserted"
config OR1_BCTLD_NOT_ASSERTED
bool "Not asserted"
endchoice
endif
if BR1_MACHINE_GPCM || BR1_MACHINE_FCM
choice
prompt "Cycle length in bus clocks"
config OR1_SCY_0
bool "No wait states"
config OR1_SCY_1
bool "1 wait state"
config OR1_SCY_2
bool "2 wait states"
config OR1_SCY_3
bool "3 wait states"
config OR1_SCY_4
bool "4 wait states"
config OR1_SCY_5
bool "5 wait states"
config OR1_SCY_6
bool "6 wait states"
config OR1_SCY_7
bool "7 wait states"
config OR1_SCY_8
depends on BR1_MACHINE_GPCM
bool "8 wait states"
config OR1_SCY_9
depends on BR1_MACHINE_GPCM
bool "9 wait states"
config OR1_SCY_10
depends on BR1_MACHINE_GPCM
bool "10 wait states"
config OR1_SCY_11
depends on BR1_MACHINE_GPCM
bool "11 wait states"
config OR1_SCY_12
depends on BR1_MACHINE_GPCM
bool "12 wait states"
config OR1_SCY_13
depends on BR1_MACHINE_GPCM
bool "13 wait states"
config OR1_SCY_14
depends on BR1_MACHINE_GPCM
bool "14 wait states"
config OR1_SCY_15
depends on BR1_MACHINE_GPCM
bool "15 wait states"
endchoice
endif # BR1_MACHINE_GPCM || BR1_MACHINE_FCM
if BR1_MACHINE_GPCM
choice
prompt "Chip select negotiation time"
config OR1_CSNT_NORMAL
bool "Normal"
config OR1_CSNT_EARLIER
bool "Earlier"
endchoice
choice
prompt "Address to chip-select setup"
config OR1_ACS_SAME_TIME
bool "At the same time"
config OR1_ACS_HALF_CYCLE_EARLIER
bool "Half of a bus clock cycle earlier"
config OR1_ACS_QUARTER_CYCLE_EARLIER
bool "Half/Quarter of a bus clock cycle earlier"
endchoice
choice
prompt "Extra address to check-select setup"
config OR1_XACS_NORMAL
bool "Normal"
config OR1_XACS_EXTENDED
bool "Extended"
endchoice
choice
prompt "External address termination"
config OR1_SETA_INTERNAL
bool "Access is terminated internally"
config OR1_SETA_EXTERNAL
bool "Access is terminated externally"
endchoice
endif # BR1_MACHINE_GPCM
if BR1_MACHINE_FCM
choice
prompt "NAND Flash EEPROM page size"
config OR1_PGS_SMALL
bool "Small page device"
config OR1_PGS_LARGE
bool "Large page device"
endchoice
choice
prompt "Chip select to command time"
config OR1_CSCT_1_CYCLE
depends on OR1_TRLX_NORMAL
bool "1 cycle"
config OR1_CSCT_2_CYCLE
depends on OR1_TRLX_RELAXED
bool "2 cycles"
config OR1_CSCT_4_CYCLE
depends on OR1_TRLX_NORMAL
bool "4 cycles"
config OR1_CSCT_8_CYCLE
depends on OR1_TRLX_RELAXED
bool "8 cycles"
endchoice
choice
prompt "Command setup time"
config OR1_CST_COINCIDENT
depends on OR1_TRLX_NORMAL
bool "Coincident with any command"
config OR1_CST_QUARTER_CLOCK
depends on OR1_TRLX_NORMAL
bool "0.25 clocks after"
config OR1_CST_HALF_CLOCK
depends on OR1_TRLX_RELAXED
bool "0.5 clocks after"
config OR1_CST_ONE_CLOCK
depends on OR1_TRLX_RELAXED
bool "1 clock after"
endchoice
choice
prompt "Command hold time"
config OR1_CHT_HALF_CLOCK
depends on OR1_TRLX_NORMAL
bool "0.5 clocks before"
config OR1_CHT_ONE_CLOCK
depends on OR1_TRLX_NORMAL
bool "1 clock before"
config OR1_CHT_ONE_HALF_CLOCK
depends on OR1_TRLX_RELAXED
bool "1.5 clocks before"
config OR1_CHT_TWO_CLOCK
depends on OR1_TRLX_RELAXED
bool "2 clocks before"
endchoice
choice
prompt "Reset setup time"
config OR1_RST_THREE_QUARTER_CLOCK
depends on OR1_TRLX_NORMAL
bool "0.75 clocks prior"
config OR1_RST_ONE_HALF_CLOCK
depends on OR1_TRLX_RELAXED
bool "0.5 clocks prior"
config OR1_RST_ONE_CLOCK
bool "1 clock prior"
endchoice
endif # BR1_MACHINE_FCM
if BR1_MACHINE_UPM
choice
prompt "Burst inhibit"
config OR1_BI_BURSTSUPPORT
bool "Support burst access"
config OR1_BI_BURSTINHIBIT
bool "Inhibit burst access"
endchoice
endif # BR1_MACHINE_UPM
if BR1_MACHINE_SDRAM
choice
prompt "Number of column address lines"
config OR1_COLS_7
bool "7"
config OR1_COLS_8
bool "8"
config OR1_COLS_9
bool "9"
config OR1_COLS_10
bool "10"
config OR1_COLS_11
bool "11"
config OR1_COLS_12
bool "12"
config OR1_COLS_13
bool "13"
config OR1_COLS_14
bool "14"
endchoice
choice
prompt "Number of rows address lines"
config OR1_ROWS_9
bool "9"
config OR1_ROWS_10
bool "10"
config OR1_ROWS_11
bool "11"
config OR1_ROWS_12
bool "12"
config OR1_ROWS_13
bool "13"
config OR1_ROWS_14
bool "14"
config OR1_ROWS_15
bool "15"
endchoice
choice
prompt "Page mode select"
config OR1_PMSEL_BTB
bool "Back-to-back"
config OR1_PMSEL_KEPT_OPEN
bool "Page kept open until page miss or refresh"
endchoice
endif # BR1_MACHINE_SDRAM
choice
prompt "Relaxed timing"
config OR1_TRLX_NORMAL
bool "Normal"
config OR1_TRLX_RELAXED
bool "Relaxed"
endchoice
choice
prompt "Extended hold time"
config OR1_EHTR_NORMAL
depends on OR1_TRLX_NORMAL
bool "Normal"
config OR1_EHTR_1_CYCLE
depends on OR1_TRLX_NORMAL
bool "1 idle clock cycle inserted"
config OR1_EHTR_4_CYCLE
depends on OR1_TRLX_RELAXED
bool "4 idle clock cycles inserted"
config OR1_EHTR_8_CYCLE
depends on OR1_TRLX_RELAXED
bool "8 idle clock cycles inserted"
endchoice
if !ARCH_MPC8308
choice
prompt "External address latch delay"
config OR1_EAD_NONE
bool "None"
config OR1_EAD_EXTRA
bool "Extra"
endchoice
endif # !ARCH_MPC8308
endif # ELBC_BR1_OR1
config BR1_PORTSIZE
hex
default 0x800 if BR1_PORTSIZE_8BIT
default 0x1000 if BR1_PORTSIZE_16BIT
default 0x1800 if BR1_PORTSIZE_32BIT
config BR1_ERRORCHECKING
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if BR1_ERRORCHECKING_DISABLED
default 0x200 if BR1_ERRORCHECKING_ECC_CHECKING
default 0x400 if BR1_ERRORCHECKING_BOTH
config BR1_WRITE_PROTECT_BIT
hex
default 0x0 if !BR1_WRITE_PROTECT
default 0x100 if BR1_WRITE_PROTECT
config BR1_MACHINE
hex
default 0x0 if BR1_MACHINE_GPCM
default 0x20 if BR1_MACHINE_FCM
default 0x60 if BR1_MACHINE_SDRAM
default 0x80 if BR1_MACHINE_UPMA
default 0xa0 if BR1_MACHINE_UPMB
default 0xc0 if BR1_MACHINE_UPMC
config BR1_ATOMIC
hex
default 0x0 if !ARCH_MPC8313 && !ARCH_MPC8323 && !ARCH_MPC8360
default 0x0 if BR1_ATOMIC_NONE
default 0x4 if BR1_ATOMIC_RAWA
default 0x8 if BR1_ATOMIC_WARA
config BR1_VALID_BIT
hex
default 0x0 if !ELBC_BR1_OR1
default 0x1 if ELBC_BR1_OR1
config OR1_AM
hex
default 0xffff8000 if OR1_AM_32_KBYTES && !BR1_MACHINE_SDRAM
default 0xffff0000 if OR1_AM_64_KBYTES
default 0xfffe0000 if OR1_AM_128_KBYTES
default 0xfffc0000 if OR1_AM_256_KBYTES
default 0xfff80000 if OR1_AM_512_KBYTES
default 0xfff00000 if OR1_AM_1_MBYTES
default 0xffe00000 if OR1_AM_2_MBYTES
default 0xffc00000 if OR1_AM_4_MBYTES
default 0xff800000 if OR1_AM_8_MBYTES
default 0xff000000 if OR1_AM_16_MBYTES
default 0xfe000000 if OR1_AM_32_MBYTES
default 0xfc000000 if OR1_AM_64_MBYTES
default 0xf8000000 if OR1_AM_128_MBYTES
default 0xf0000000 if OR1_AM_256_MBYTES
default 0xe0000000 if OR1_AM_512_MBYTES
default 0xc0000000 if OR1_AM_1_GBYTES
default 0x80000000 if OR1_AM_2_GBYTES
default 0x00000000 if OR1_AM_4_GBYTES
config OR1_XAM
hex
default 0x0 if !OR1_XAM_SET
default 0x6000 if OR1_XAM_SET
config OR1_BCTLD
hex
default 0x0 if OR1_BCTLD_ASSERTED
default 0x1000 if OR1_BCTLD_NOT_ASSERTED
config OR1_BI
hex
default 0x0 if !BR1_MACHINE_UPM
default 0x0 if OR1_BI_BURSTSUPPORT
default 0x100 if OR1_BI_BURSTINHIBIT
config OR1_COLS
hex
default 0x0 if !BR1_MACHINE_SDRAM
default 0x0 if OR1_COLS_7
default 0x400 if OR1_COLS_8
default 0x800 if OR1_COLS_9
default 0xc00 if OR1_COLS_10
default 0x1000 if OR1_COLS_11
default 0x1400 if OR1_COLS_12
default 0x1800 if OR1_COLS_13
default 0x1c00 if OR1_COLS_14
config OR1_ROWS
hex
default 0x0 if !BR1_MACHINE_SDRAM
default 0x0 if OR1_ROWS_9
default 0x40 if OR1_ROWS_10
default 0x80 if OR1_ROWS_11
default 0xc0 if OR1_ROWS_12
default 0x100 if OR1_ROWS_13
default 0x140 if OR1_ROWS_14
default 0x180 if OR1_ROWS_15
config OR1_PMSEL
hex
default 0x0 if !BR1_MACHINE_SDRAM
default 0x0 if OR1_PMSEL_BTB
default 0x20 if OR1_PMSEL_KEPT_OPEN
config OR1_SCY
hex
default 0x0 if !BR1_MACHINE_GPCM && !BR1_MACHINE_FCM
default 0x0 if OR1_SCY_0
default 0x10 if OR1_SCY_1
default 0x20 if OR1_SCY_2
default 0x30 if OR1_SCY_3
default 0x40 if OR1_SCY_4
default 0x50 if OR1_SCY_5
default 0x60 if OR1_SCY_6
default 0x70 if OR1_SCY_7
default 0x80 if OR1_SCY_8
default 0x90 if OR1_SCY_9
default 0xa0 if OR1_SCY_10
default 0xb0 if OR1_SCY_11
default 0xc0 if OR1_SCY_12
default 0xd0 if OR1_SCY_13
default 0xe0 if OR1_SCY_14
default 0xf0 if OR1_SCY_15
config OR1_PGS
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if OR1_PGS_SMALL
default 0x400 if OR1_PGS_LARGE
config OR1_CSCT
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if OR1_CSCT_1_CYCLE
default 0x0 if OR1_CSCT_2_CYCLE
default 0x200 if OR1_CSCT_4_CYCLE
default 0x200 if OR1_CSCT_8_CYCLE
config OR1_CST
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if OR1_CST_COINCIDENT
default 0x100 if OR1_CST_QUARTER_CLOCK
default 0x0 if OR1_CST_HALF_CLOCK
default 0x100 if OR1_CST_ONE_CLOCK
config OR1_CHT
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if OR1_CHT_HALF_CLOCK
default 0x80 if OR1_CHT_ONE_CLOCK
default 0x0 if OR1_CHT_ONE_HALF_CLOCK
default 0x80 if OR1_CHT_TWO_CLOCK
config OR1_RST
hex
default 0x0 if !BR1_MACHINE_FCM
default 0x0 if OR1_RST_THREE_QUARTER_CLOCK
default 0x8 if OR1_RST_ONE_CLOCK
default 0x0 if OR1_RST_ONE_HALF_CLOCK
config OR1_CSNT
hex
default 0x0 if !BR1_MACHINE_GPCM
default 0x0 if OR1_CSNT_NORMAL
default 0x800 if OR1_CSNT_EARLIER
config OR1_ACS
hex
default 0x0 if !BR1_MACHINE_GPCM
default 0x0 if OR1_ACS_SAME_TIME
default 0x400 if OR1_ACS_QUARTER_CYCLE_EARLIER
default 0x600 if OR1_ACS_HALF_CYCLE_EARLIER
config OR1_XACS
hex
default 0x0 if !BR1_MACHINE_GPCM
default 0x0 if OR1_XACS_NORMAL
default 0x100 if OR1_XACS_EXTENDED
config OR1_SETA
hex
default 0x0 if !BR1_MACHINE_GPCM
default 0x0 if OR1_SETA_INTERNAL
default 0x8 if OR1_SETA_EXTERNAL
config OR1_TRLX
hex
default 0x0 if OR1_TRLX_NORMAL
default 0x4 if OR1_TRLX_RELAXED
config OR1_EHTR
hex
default 0x0 if OR1_EHTR_NORMAL
default 0x2 if OR1_EHTR_1_CYCLE
default 0x0 if OR1_EHTR_4_CYCLE
default 0x2 if OR1_EHTR_8_CYCLE
config OR1_EAD
hex
default 0x0 if ARCH_MPC8308
default 0x0 if OR1_EAD_NONE
default 0x1 if OR1_EAD_EXTRA

View File

@@ -0,0 +1,733 @@
menuconfig ELBC_BR2_OR2
bool "ELBC BR2/OR2"
if ELBC_BR2_OR2
config BR2_OR2_NAME
string "Identifier"
config BR2_OR2_BASE
hex "Port base"
choice
prompt "Port size"
config BR2_PORTSIZE_8BIT
bool "8-bit"
config BR2_PORTSIZE_16BIT
depends on !BR2_MACHINE_FCM
bool "16-bit"
config BR2_PORTSIZE_32BIT
depends on !BR2_MACHINE_FCM
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
bool "32-bit"
endchoice
if BR2_MACHINE_FCM
choice
prompt "Data Error Checking"
config BR2_ERRORCHECKING_DISABLED
bool "Disabled"
config BR2_ERRORCHECKING_ECC_CHECKING
bool "ECC checking / No ECC generation"
config BR2_ERRORCHECKING_BOTH
bool "ECC checking and generation"
endchoice
endif
config BR2_WRITE_PROTECT
bool "Write-protect"
config BR2_MACHINE_UPM
bool
choice
prompt "Machine select"
config BR2_MACHINE_GPCM
bool "GPCM"
config BR2_MACHINE_FCM
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "FCM"
config BR2_MACHINE_SDRAM
depends on ARCH_MPC8349 || ARCH_MPC8360
bool "SDRAM"
config BR2_MACHINE_UPMA
select BR2_MACHINE_UPM
bool "UPM (A)"
config BR2_MACHINE_UPMB
select BR2_MACHINE_UPM
bool "UPM (B)"
config BR2_MACHINE_UPMC
select BR2_MACHINE_UPM
bool "UPM (C)"
endchoice
if ARCH_MPC8313 || ARCH_MPC8323 || ARCH_MPC8360
choice
prompt "Atomic operations"
config BR2_ATOMIC_NONE
bool "No atomic operations"
config BR2_ATOMIC_RAWA
bool "Read-after-write-atomic"
config BR2_ATOMIC_WARA
bool "Write-after-read-atomic"
endchoice
endif
if BR2_MACHINE_GPCM || BR2_MACHINE_FCM || BR2_MACHINE_UPM || BR2_MACHINE_SDRAM
choice
prompt "Address mask"
config OR2_AM_32_KBYTES
depends on !BR2_MACHINE_SDRAM
bool "32 kb"
config OR2_AM_64_KBYTES
bool "64 kb"
config OR2_AM_128_KBYTES
bool "128 kb"
config OR2_AM_256_KBYTES
bool "256 kb"
config OR2_AM_512_KBYTES
bool "512 kb"
config OR2_AM_1_MBYTES
bool "1 mb"
config OR2_AM_2_MBYTES
bool "2 mb"
config OR2_AM_4_MBYTES
bool "4 mb"
config OR2_AM_8_MBYTES
bool "8 mb"
config OR2_AM_16_MBYTES
bool "16 mb"
config OR2_AM_32_MBYTES
bool "32 mb"
config OR2_AM_64_MBYTES
bool "64 mb"
# XXX: Some boards define 128MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR2_AM_128_MBYTES
bool "128 mb"
# XXX: Some boards define 256MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR2_AM_256_MBYTES
bool "256 mb"
config OR2_AM_512_MBYTES
depends on BR2_MACHINE_FCM
bool "512 mb"
# XXX: Some boards define 1GB AM with GPCM, even though it should not be
# possible according to the manuals
config OR2_AM_1_GBYTES
bool "1 gb"
config OR2_AM_2_GBYTES
depends on BR2_MACHINE_FCM
bool "2 gb"
config OR2_AM_4_GBYTES
depends on BR2_MACHINE_FCM
bool "4 gb"
endchoice
config OR2_XAM_SET
bool "Set unused bytes after address mask"
choice
prompt "Buffer control disable"
config OR2_BCTLD_ASSERTED
bool "Asserted"
config OR2_BCTLD_NOT_ASSERTED
bool "Not asserted"
endchoice
endif
if BR2_MACHINE_GPCM || BR2_MACHINE_FCM
choice
prompt "Cycle length in bus clocks"
config OR2_SCY_0
bool "No wait states"
config OR2_SCY_1
bool "1 wait state"
config OR2_SCY_2
bool "2 wait states"
config OR2_SCY_3
bool "3 wait states"
config OR2_SCY_4
bool "4 wait states"
config OR2_SCY_5
bool "5 wait states"
config OR2_SCY_6
bool "6 wait states"
config OR2_SCY_7
bool "7 wait states"
config OR2_SCY_8
depends on BR2_MACHINE_GPCM
bool "8 wait states"
config OR2_SCY_9
depends on BR2_MACHINE_GPCM
bool "9 wait states"
config OR2_SCY_10
depends on BR2_MACHINE_GPCM
bool "10 wait states"
config OR2_SCY_11
depends on BR2_MACHINE_GPCM
bool "11 wait states"
config OR2_SCY_12
depends on BR2_MACHINE_GPCM
bool "12 wait states"
config OR2_SCY_13
depends on BR2_MACHINE_GPCM
bool "13 wait states"
config OR2_SCY_14
depends on BR2_MACHINE_GPCM
bool "14 wait states"
config OR2_SCY_15
depends on BR2_MACHINE_GPCM
bool "15 wait states"
endchoice
endif # BR2_MACHINE_GPCM || BR2_MACHINE_FCM
if BR2_MACHINE_GPCM
choice
prompt "Chip select negotiation time"
config OR2_CSNT_NORMAL
bool "Normal"
config OR2_CSNT_EARLIER
bool "Earlier"
endchoice
choice
prompt "Address to chip-select setup"
config OR2_ACS_SAME_TIME
bool "At the same time"
config OR2_ACS_HALF_CYCLE_EARLIER
bool "Half of a bus clock cycle earlier"
config OR2_ACS_QUARTER_CYCLE_EARLIER
bool "Half/Quarter of a bus clock cycle earlier"
endchoice
choice
prompt "Extra address to check-select setup"
config OR2_XACS_NORMAL
bool "Normal"
config OR2_XACS_EXTENDED
bool "Extended"
endchoice
choice
prompt "External address termination"
config OR2_SETA_INTERNAL
bool "Access is terminated internally"
config OR2_SETA_EXTERNAL
bool "Access is terminated externally"
endchoice
endif # BR2_MACHINE_GPCM
if BR2_MACHINE_FCM
choice
prompt "NAND Flash EEPROM page size"
config OR2_PGS_SMALL
bool "Small page device"
config OR2_PGS_LARGE
bool "Large page device"
endchoice
choice
prompt "Chip select to command time"
config OR2_CSCT_1_CYCLE
depends on OR2_TRLX_NORMAL
bool "1 cycle"
config OR2_CSCT_2_CYCLE
depends on OR2_TRLX_RELAXED
bool "2 cycles"
config OR2_CSCT_4_CYCLE
depends on OR2_TRLX_NORMAL
bool "4 cycles"
config OR2_CSCT_8_CYCLE
depends on OR2_TRLX_RELAXED
bool "8 cycles"
endchoice
choice
prompt "Command setup time"
config OR2_CST_COINCIDENT
depends on OR2_TRLX_NORMAL
bool "Coincident with any command"
config OR2_CST_QUARTER_CLOCK
depends on OR2_TRLX_NORMAL
bool "0.25 clocks after"
config OR2_CST_HALF_CLOCK
depends on OR2_TRLX_RELAXED
bool "0.5 clocks after"
config OR2_CST_ONE_CLOCK
depends on OR2_TRLX_RELAXED
bool "1 clock after"
endchoice
choice
prompt "Command hold time"
config OR2_CHT_HALF_CLOCK
depends on OR2_TRLX_NORMAL
bool "0.5 clocks before"
config OR2_CHT_ONE_CLOCK
depends on OR2_TRLX_NORMAL
bool "1 clock before"
config OR2_CHT_ONE_HALF_CLOCK
depends on OR2_TRLX_RELAXED
bool "1.5 clocks before"
config OR2_CHT_TWO_CLOCK
depends on OR2_TRLX_RELAXED
bool "2 clocks before"
endchoice
choice
prompt "Reset setup time"
config OR2_RST_THREE_QUARTER_CLOCK
depends on OR2_TRLX_NORMAL
bool "0.75 clocks prior"
config OR2_RST_ONE_HALF_CLOCK
depends on OR2_TRLX_RELAXED
bool "0.5 clocks prior"
config OR2_RST_ONE_CLOCK
bool "1 clock prior"
endchoice
endif # BR2_MACHINE_FCM
if BR2_MACHINE_UPM
choice
prompt "Burst inhibit"
config OR2_BI_BURSTSUPPORT
bool "Support burst access"
config OR2_BI_BURSTINHIBIT
bool "Inhibit burst access"
endchoice
endif # BR2_MACHINE_UPM
if BR2_MACHINE_SDRAM
choice
prompt "Number of column address lines"
config OR2_COLS_7
bool "7"
config OR2_COLS_8
bool "8"
config OR2_COLS_9
bool "9"
config OR2_COLS_10
bool "10"
config OR2_COLS_11
bool "11"
config OR2_COLS_12
bool "12"
config OR2_COLS_13
bool "13"
config OR2_COLS_14
bool "14"
endchoice
choice
prompt "Number of rows address lines"
config OR2_ROWS_9
bool "9"
config OR2_ROWS_10
bool "10"
config OR2_ROWS_11
bool "11"
config OR2_ROWS_12
bool "12"
config OR2_ROWS_13
bool "13"
config OR2_ROWS_14
bool "14"
config OR2_ROWS_15
bool "15"
endchoice
choice
prompt "Page mode select"
config OR2_PMSEL_BTB
bool "Back-to-back"
config OR2_PMSEL_KEPT_OPEN
bool "Page kept open until page miss or refresh"
endchoice
endif # BR2_MACHINE_SDRAM
choice
prompt "Relaxed timing"
config OR2_TRLX_NORMAL
bool "Normal"
config OR2_TRLX_RELAXED
bool "Relaxed"
endchoice
choice
prompt "Extended hold time"
config OR2_EHTR_NORMAL
depends on OR2_TRLX_NORMAL
bool "Normal"
config OR2_EHTR_1_CYCLE
depends on OR2_TRLX_NORMAL
bool "1 idle clock cycle inserted"
config OR2_EHTR_4_CYCLE
depends on OR2_TRLX_RELAXED
bool "4 idle clock cycles inserted"
config OR2_EHTR_8_CYCLE
depends on OR2_TRLX_RELAXED
bool "8 idle clock cycles inserted"
endchoice
if !ARCH_MPC8308
choice
prompt "External address latch delay"
config OR2_EAD_NONE
bool "None"
config OR2_EAD_EXTRA
bool "Extra"
endchoice
endif # !ARCH_MPC8308
endif # ELBC_BR2_OR2
config BR2_PORTSIZE
hex
default 0x800 if BR2_PORTSIZE_8BIT
default 0x1000 if BR2_PORTSIZE_16BIT
default 0x1800 if BR2_PORTSIZE_32BIT
config BR2_ERRORCHECKING
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if BR2_ERRORCHECKING_DISABLED
default 0x200 if BR2_ERRORCHECKING_ECC_CHECKING
default 0x400 if BR2_ERRORCHECKING_BOTH
config BR2_WRITE_PROTECT_BIT
hex
default 0x0 if !BR2_WRITE_PROTECT
default 0x100 if BR2_WRITE_PROTECT
config BR2_MACHINE
hex
default 0x0 if BR2_MACHINE_GPCM
default 0x20 if BR2_MACHINE_FCM
default 0x60 if BR2_MACHINE_SDRAM
default 0x80 if BR2_MACHINE_UPMA
default 0xa0 if BR2_MACHINE_UPMB
default 0xc0 if BR2_MACHINE_UPMC
config BR2_ATOMIC
hex
default 0x0 if !ARCH_MPC8313 && !ARCH_MPC8323 && !ARCH_MPC8360
default 0x0 if BR2_ATOMIC_NONE
default 0x4 if BR2_ATOMIC_RAWA
default 0x8 if BR2_ATOMIC_WARA
config BR2_VALID_BIT
hex
default 0x0 if !ELBC_BR2_OR2
default 0x1 if ELBC_BR2_OR2
config OR2_AM
hex
default 0xffff8000 if OR2_AM_32_KBYTES && !BR2_MACHINE_SDRAM
default 0xffff0000 if OR2_AM_64_KBYTES
default 0xfffe0000 if OR2_AM_128_KBYTES
default 0xfffc0000 if OR2_AM_256_KBYTES
default 0xfff80000 if OR2_AM_512_KBYTES
default 0xfff00000 if OR2_AM_1_MBYTES
default 0xffe00000 if OR2_AM_2_MBYTES
default 0xffc00000 if OR2_AM_4_MBYTES
default 0xff800000 if OR2_AM_8_MBYTES
default 0xff000000 if OR2_AM_16_MBYTES
default 0xfe000000 if OR2_AM_32_MBYTES
default 0xfc000000 if OR2_AM_64_MBYTES
default 0xf8000000 if OR2_AM_128_MBYTES
default 0xf0000000 if OR2_AM_256_MBYTES
default 0xe0000000 if OR2_AM_512_MBYTES
default 0xc0000000 if OR2_AM_1_GBYTES
default 0x80000000 if OR2_AM_2_GBYTES
default 0x00000000 if OR2_AM_4_GBYTES
config OR2_XAM
hex
default 0x0 if !OR2_XAM_SET
default 0x6000 if OR2_XAM_SET
config OR2_BCTLD
hex
default 0x0 if OR2_BCTLD_ASSERTED
default 0x1000 if OR2_BCTLD_NOT_ASSERTED
config OR2_BI
hex
default 0x0 if !BR2_MACHINE_UPM
default 0x0 if OR2_BI_BURSTSUPPORT
default 0x100 if OR2_BI_BURSTINHIBIT
config OR2_COLS
hex
default 0x0 if !BR2_MACHINE_SDRAM
default 0x0 if OR2_COLS_7
default 0x400 if OR2_COLS_8
default 0x800 if OR2_COLS_9
default 0xc00 if OR2_COLS_10
default 0x1000 if OR2_COLS_11
default 0x1400 if OR2_COLS_12
default 0x1800 if OR2_COLS_13
default 0x1c00 if OR2_COLS_14
config OR2_ROWS
hex
default 0x0 if !BR2_MACHINE_SDRAM
default 0x0 if OR2_ROWS_9
default 0x40 if OR2_ROWS_10
default 0x80 if OR2_ROWS_11
default 0xc0 if OR2_ROWS_12
default 0x100 if OR2_ROWS_13
default 0x140 if OR2_ROWS_14
default 0x180 if OR2_ROWS_15
config OR2_PMSEL
hex
default 0x0 if !BR2_MACHINE_SDRAM
default 0x0 if OR2_PMSEL_BTB
default 0x20 if OR2_PMSEL_KEPT_OPEN
config OR2_SCY
hex
default 0x0 if !BR2_MACHINE_GPCM && !BR2_MACHINE_FCM
default 0x0 if OR2_SCY_0
default 0x10 if OR2_SCY_1
default 0x20 if OR2_SCY_2
default 0x30 if OR2_SCY_3
default 0x40 if OR2_SCY_4
default 0x50 if OR2_SCY_5
default 0x60 if OR2_SCY_6
default 0x70 if OR2_SCY_7
default 0x80 if OR2_SCY_8
default 0x90 if OR2_SCY_9
default 0xa0 if OR2_SCY_10
default 0xb0 if OR2_SCY_11
default 0xc0 if OR2_SCY_12
default 0xd0 if OR2_SCY_13
default 0xe0 if OR2_SCY_14
default 0xf0 if OR2_SCY_15
config OR2_PGS
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if OR2_PGS_SMALL
default 0x400 if OR2_PGS_LARGE
config OR2_CSCT
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if OR2_CSCT_1_CYCLE
default 0x0 if OR2_CSCT_2_CYCLE
default 0x200 if OR2_CSCT_4_CYCLE
default 0x200 if OR2_CSCT_8_CYCLE
config OR2_CST
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if OR2_CST_COINCIDENT
default 0x100 if OR2_CST_QUARTER_CLOCK
default 0x0 if OR2_CST_HALF_CLOCK
default 0x100 if OR2_CST_ONE_CLOCK
config OR2_CHT
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if OR2_CHT_HALF_CLOCK
default 0x80 if OR2_CHT_ONE_CLOCK
default 0x0 if OR2_CHT_ONE_HALF_CLOCK
default 0x80 if OR2_CHT_TWO_CLOCK
config OR2_RST
hex
default 0x0 if !BR2_MACHINE_FCM
default 0x0 if OR2_RST_THREE_QUARTER_CLOCK
default 0x8 if OR2_RST_ONE_CLOCK
default 0x0 if OR2_RST_ONE_HALF_CLOCK
config OR2_CSNT
hex
default 0x0 if !BR2_MACHINE_GPCM
default 0x0 if OR2_CSNT_NORMAL
default 0x800 if OR2_CSNT_EARLIER
config OR2_ACS
hex
default 0x0 if !BR2_MACHINE_GPCM
default 0x0 if OR2_ACS_SAME_TIME
default 0x400 if OR2_ACS_QUARTER_CYCLE_EARLIER
default 0x600 if OR2_ACS_HALF_CYCLE_EARLIER
config OR2_XACS
hex
default 0x0 if !BR2_MACHINE_GPCM
default 0x0 if OR2_XACS_NORMAL
default 0x100 if OR2_XACS_EXTENDED
config OR2_SETA
hex
default 0x0 if !BR2_MACHINE_GPCM
default 0x0 if OR2_SETA_INTERNAL
default 0x8 if OR2_SETA_EXTERNAL
config OR2_TRLX
hex
default 0x0 if OR2_TRLX_NORMAL
default 0x4 if OR2_TRLX_RELAXED
config OR2_EHTR
hex
default 0x0 if OR2_EHTR_NORMAL
default 0x2 if OR2_EHTR_1_CYCLE
default 0x0 if OR2_EHTR_4_CYCLE
default 0x2 if OR2_EHTR_8_CYCLE
config OR2_EAD
hex
default 0x0 if ARCH_MPC8308
default 0x0 if OR2_EAD_NONE
default 0x1 if OR2_EAD_EXTRA

View File

@@ -0,0 +1,733 @@
menuconfig ELBC_BR3_OR3
bool "ELBC BR3/OR3"
if ELBC_BR3_OR3
config BR3_OR3_NAME
string "Identifier"
config BR3_OR3_BASE
hex "Port base"
choice
prompt "Port size"
config BR3_PORTSIZE_8BIT
bool "8-bit"
config BR3_PORTSIZE_16BIT
depends on !BR3_MACHINE_FCM
bool "16-bit"
config BR3_PORTSIZE_32BIT
depends on !BR3_MACHINE_FCM
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
bool "32-bit"
endchoice
if BR3_MACHINE_FCM
choice
prompt "Data Error Checking"
config BR3_ERRORCHECKING_DISABLED
bool "Disabled"
config BR3_ERRORCHECKING_ECC_CHECKING
bool "ECC checking / No ECC generation"
config BR3_ERRORCHECKING_BOTH
bool "ECC checking and generation"
endchoice
endif
config BR3_WRITE_PROTECT
bool "Write-protect"
config BR3_MACHINE_UPM
bool
choice
prompt "Machine select"
config BR3_MACHINE_GPCM
bool "GPCM"
config BR3_MACHINE_FCM
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "FCM"
config BR3_MACHINE_SDRAM
depends on ARCH_MPC8349 || ARCH_MPC8360
bool "SDRAM"
config BR3_MACHINE_UPMA
select BR3_MACHINE_UPM
bool "UPM (A)"
config BR3_MACHINE_UPMB
select BR3_MACHINE_UPM
bool "UPM (B)"
config BR3_MACHINE_UPMC
select BR3_MACHINE_UPM
bool "UPM (C)"
endchoice
if ARCH_MPC8313 || ARCH_MPC8323 || ARCH_MPC8360
choice
prompt "Atomic operations"
config BR3_ATOMIC_NONE
bool "No atomic operations"
config BR3_ATOMIC_RAWA
bool "Read-after-write-atomic"
config BR3_ATOMIC_WARA
bool "Write-after-read-atomic"
endchoice
endif
if BR3_MACHINE_GPCM || BR3_MACHINE_FCM || BR3_MACHINE_UPM || BR3_MACHINE_SDRAM
choice
prompt "Address mask"
config OR3_AM_32_KBYTES
depends on !BR3_MACHINE_SDRAM
bool "32 kb"
config OR3_AM_64_KBYTES
bool "64 kb"
config OR3_AM_128_KBYTES
bool "128 kb"
config OR3_AM_256_KBYTES
bool "256 kb"
config OR3_AM_512_KBYTES
bool "512 kb"
config OR3_AM_1_MBYTES
bool "1 mb"
config OR3_AM_2_MBYTES
bool "2 mb"
config OR3_AM_4_MBYTES
bool "4 mb"
config OR3_AM_8_MBYTES
bool "8 mb"
config OR3_AM_16_MBYTES
bool "16 mb"
config OR3_AM_32_MBYTES
bool "32 mb"
config OR3_AM_64_MBYTES
bool "64 mb"
# XXX: Some boards define 128MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR3_AM_128_MBYTES
bool "128 mb"
# XXX: Some boards define 256MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR3_AM_256_MBYTES
bool "256 mb"
config OR3_AM_512_MBYTES
depends on BR3_MACHINE_FCM
bool "512 mb"
# XXX: Some boards define 1GB AM with GPCM, even though it should not be
# possible according to the manuals
config OR3_AM_1_GBYTES
bool "1 gb"
config OR3_AM_2_GBYTES
depends on BR3_MACHINE_FCM
bool "2 gb"
config OR3_AM_4_GBYTES
depends on BR3_MACHINE_FCM
bool "4 gb"
endchoice
config OR3_XAM_SET
bool "Set unused bytes after address mask"
choice
prompt "Buffer control disable"
config OR3_BCTLD_ASSERTED
bool "Asserted"
config OR3_BCTLD_NOT_ASSERTED
bool "Not asserted"
endchoice
endif
if BR3_MACHINE_GPCM || BR3_MACHINE_FCM
choice
prompt "Cycle length in bus clocks"
config OR3_SCY_0
bool "No wait states"
config OR3_SCY_1
bool "1 wait state"
config OR3_SCY_2
bool "2 wait states"
config OR3_SCY_3
bool "3 wait states"
config OR3_SCY_4
bool "4 wait states"
config OR3_SCY_5
bool "5 wait states"
config OR3_SCY_6
bool "6 wait states"
config OR3_SCY_7
bool "7 wait states"
config OR3_SCY_8
depends on BR3_MACHINE_GPCM
bool "8 wait states"
config OR3_SCY_9
depends on BR3_MACHINE_GPCM
bool "9 wait states"
config OR3_SCY_10
depends on BR3_MACHINE_GPCM
bool "10 wait states"
config OR3_SCY_11
depends on BR3_MACHINE_GPCM
bool "11 wait states"
config OR3_SCY_12
depends on BR3_MACHINE_GPCM
bool "12 wait states"
config OR3_SCY_13
depends on BR3_MACHINE_GPCM
bool "13 wait states"
config OR3_SCY_14
depends on BR3_MACHINE_GPCM
bool "14 wait states"
config OR3_SCY_15
depends on BR3_MACHINE_GPCM
bool "15 wait states"
endchoice
endif # BR3_MACHINE_GPCM || BR3_MACHINE_FCM
if BR3_MACHINE_GPCM
choice
prompt "Chip select negotiation time"
config OR3_CSNT_NORMAL
bool "Normal"
config OR3_CSNT_EARLIER
bool "Earlier"
endchoice
choice
prompt "Address to chip-select setup"
config OR3_ACS_SAME_TIME
bool "At the same time"
config OR3_ACS_HALF_CYCLE_EARLIER
bool "Half of a bus clock cycle earlier"
config OR3_ACS_QUARTER_CYCLE_EARLIER
bool "Half/Quarter of a bus clock cycle earlier"
endchoice
choice
prompt "Extra address to check-select setup"
config OR3_XACS_NORMAL
bool "Normal"
config OR3_XACS_EXTENDED
bool "Extended"
endchoice
choice
prompt "External address termination"
config OR3_SETA_INTERNAL
bool "Access is terminated internally"
config OR3_SETA_EXTERNAL
bool "Access is terminated externally"
endchoice
endif # BR3_MACHINE_GPCM
if BR3_MACHINE_FCM
choice
prompt "NAND Flash EEPROM page size"
config OR3_PGS_SMALL
bool "Small page device"
config OR3_PGS_LARGE
bool "Large page device"
endchoice
choice
prompt "Chip select to command time"
config OR3_CSCT_1_CYCLE
depends on OR3_TRLX_NORMAL
bool "1 cycle"
config OR3_CSCT_2_CYCLE
depends on OR3_TRLX_RELAXED
bool "2 cycles"
config OR3_CSCT_4_CYCLE
depends on OR3_TRLX_NORMAL
bool "4 cycles"
config OR3_CSCT_8_CYCLE
depends on OR3_TRLX_RELAXED
bool "8 cycles"
endchoice
choice
prompt "Command setup time"
config OR3_CST_COINCIDENT
depends on OR3_TRLX_NORMAL
bool "Coincident with any command"
config OR3_CST_QUARTER_CLOCK
depends on OR3_TRLX_NORMAL
bool "0.25 clocks after"
config OR3_CST_HALF_CLOCK
depends on OR3_TRLX_RELAXED
bool "0.5 clocks after"
config OR3_CST_ONE_CLOCK
depends on OR3_TRLX_RELAXED
bool "1 clock after"
endchoice
choice
prompt "Command hold time"
config OR3_CHT_HALF_CLOCK
depends on OR3_TRLX_NORMAL
bool "0.5 clocks before"
config OR3_CHT_ONE_CLOCK
depends on OR3_TRLX_NORMAL
bool "1 clock before"
config OR3_CHT_ONE_HALF_CLOCK
depends on OR3_TRLX_RELAXED
bool "1.5 clocks before"
config OR3_CHT_TWO_CLOCK
depends on OR3_TRLX_RELAXED
bool "2 clocks before"
endchoice
choice
prompt "Reset setup time"
config OR3_RST_THREE_QUARTER_CLOCK
depends on OR3_TRLX_NORMAL
bool "0.75 clocks prior"
config OR3_RST_ONE_HALF_CLOCK
depends on OR3_TRLX_RELAXED
bool "0.5 clocks prior"
config OR3_RST_ONE_CLOCK
bool "1 clock prior"
endchoice
endif # BR3_MACHINE_FCM
if BR3_MACHINE_UPM
choice
prompt "Burst inhibit"
config OR3_BI_BURSTSUPPORT
bool "Support burst access"
config OR3_BI_BURSTINHIBIT
bool "Inhibit burst access"
endchoice
endif # BR3_MACHINE_UPM
if BR3_MACHINE_SDRAM
choice
prompt "Number of column address lines"
config OR3_COLS_7
bool "7"
config OR3_COLS_8
bool "8"
config OR3_COLS_9
bool "9"
config OR3_COLS_10
bool "10"
config OR3_COLS_11
bool "11"
config OR3_COLS_12
bool "12"
config OR3_COLS_13
bool "13"
config OR3_COLS_14
bool "14"
endchoice
choice
prompt "Number of rows address lines"
config OR3_ROWS_9
bool "9"
config OR3_ROWS_10
bool "10"
config OR3_ROWS_11
bool "11"
config OR3_ROWS_12
bool "12"
config OR3_ROWS_13
bool "13"
config OR3_ROWS_14
bool "14"
config OR3_ROWS_15
bool "15"
endchoice
choice
prompt "Page mode select"
config OR3_PMSEL_BTB
bool "Back-to-back"
config OR3_PMSEL_KEPT_OPEN
bool "Page kept open until page miss or refresh"
endchoice
endif # BR3_MACHINE_SDRAM
choice
prompt "Relaxed timing"
config OR3_TRLX_NORMAL
bool "Normal"
config OR3_TRLX_RELAXED
bool "Relaxed"
endchoice
choice
prompt "Extended hold time"
config OR3_EHTR_NORMAL
depends on OR3_TRLX_NORMAL
bool "Normal"
config OR3_EHTR_1_CYCLE
depends on OR3_TRLX_NORMAL
bool "1 idle clock cycle inserted"
config OR3_EHTR_4_CYCLE
depends on OR3_TRLX_RELAXED
bool "4 idle clock cycles inserted"
config OR3_EHTR_8_CYCLE
depends on OR3_TRLX_RELAXED
bool "8 idle clock cycles inserted"
endchoice
if !ARCH_MPC8308
choice
prompt "External address latch delay"
config OR3_EAD_NONE
bool "None"
config OR3_EAD_EXTRA
bool "Extra"
endchoice
endif # !ARCH_MPC8308
endif # ELBC_BR3_OR3
config BR3_PORTSIZE
hex
default 0x800 if BR3_PORTSIZE_8BIT
default 0x1000 if BR3_PORTSIZE_16BIT
default 0x1800 if BR3_PORTSIZE_32BIT
config BR3_ERRORCHECKING
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if BR3_ERRORCHECKING_DISABLED
default 0x200 if BR3_ERRORCHECKING_ECC_CHECKING
default 0x400 if BR3_ERRORCHECKING_BOTH
config BR3_WRITE_PROTECT_BIT
hex
default 0x0 if !BR3_WRITE_PROTECT
default 0x100 if BR3_WRITE_PROTECT
config BR3_MACHINE
hex
default 0x0 if BR3_MACHINE_GPCM
default 0x20 if BR3_MACHINE_FCM
default 0x60 if BR3_MACHINE_SDRAM
default 0x80 if BR3_MACHINE_UPMA
default 0xa0 if BR3_MACHINE_UPMB
default 0xc0 if BR3_MACHINE_UPMC
config BR3_ATOMIC
hex
default 0x0 if !ARCH_MPC8313 && !ARCH_MPC8323 && !ARCH_MPC8360
default 0x0 if BR3_ATOMIC_NONE
default 0x4 if BR3_ATOMIC_RAWA
default 0x8 if BR3_ATOMIC_WARA
config BR3_VALID_BIT
hex
default 0x0 if !ELBC_BR3_OR3
default 0x1 if ELBC_BR3_OR3
config OR3_AM
hex
default 0xffff8000 if OR3_AM_32_KBYTES && !BR3_MACHINE_SDRAM
default 0xffff0000 if OR3_AM_64_KBYTES
default 0xfffe0000 if OR3_AM_128_KBYTES
default 0xfffc0000 if OR3_AM_256_KBYTES
default 0xfff80000 if OR3_AM_512_KBYTES
default 0xfff00000 if OR3_AM_1_MBYTES
default 0xffe00000 if OR3_AM_2_MBYTES
default 0xffc00000 if OR3_AM_4_MBYTES
default 0xff800000 if OR3_AM_8_MBYTES
default 0xff000000 if OR3_AM_16_MBYTES
default 0xfe000000 if OR3_AM_32_MBYTES
default 0xfc000000 if OR3_AM_64_MBYTES
default 0xf8000000 if OR3_AM_128_MBYTES
default 0xf0000000 if OR3_AM_256_MBYTES
default 0xe0000000 if OR3_AM_512_MBYTES
default 0xc0000000 if OR3_AM_1_GBYTES
default 0x80000000 if OR3_AM_2_GBYTES
default 0x00000000 if OR3_AM_4_GBYTES
config OR3_XAM
hex
default 0x0 if !OR3_XAM_SET
default 0x6000 if OR3_XAM_SET
config OR3_BCTLD
hex
default 0x0 if OR3_BCTLD_ASSERTED
default 0x1000 if OR3_BCTLD_NOT_ASSERTED
config OR3_BI
hex
default 0x0 if !BR3_MACHINE_UPM
default 0x0 if OR3_BI_BURSTSUPPORT
default 0x100 if OR3_BI_BURSTINHIBIT
config OR3_COLS
hex
default 0x0 if !BR3_MACHINE_SDRAM
default 0x0 if OR3_COLS_7
default 0x400 if OR3_COLS_8
default 0x800 if OR3_COLS_9
default 0xc00 if OR3_COLS_10
default 0x1000 if OR3_COLS_11
default 0x1400 if OR3_COLS_12
default 0x1800 if OR3_COLS_13
default 0x1c00 if OR3_COLS_14
config OR3_ROWS
hex
default 0x0 if !BR3_MACHINE_SDRAM
default 0x0 if OR3_ROWS_9
default 0x40 if OR3_ROWS_10
default 0x80 if OR3_ROWS_11
default 0xc0 if OR3_ROWS_12
default 0x100 if OR3_ROWS_13
default 0x140 if OR3_ROWS_14
default 0x180 if OR3_ROWS_15
config OR3_PMSEL
hex
default 0x0 if !BR3_MACHINE_SDRAM
default 0x0 if OR3_PMSEL_BTB
default 0x20 if OR3_PMSEL_KEPT_OPEN
config OR3_SCY
hex
default 0x0 if !BR3_MACHINE_GPCM && !BR3_MACHINE_FCM
default 0x0 if OR3_SCY_0
default 0x10 if OR3_SCY_1
default 0x20 if OR3_SCY_2
default 0x30 if OR3_SCY_3
default 0x40 if OR3_SCY_4
default 0x50 if OR3_SCY_5
default 0x60 if OR3_SCY_6
default 0x70 if OR3_SCY_7
default 0x80 if OR3_SCY_8
default 0x90 if OR3_SCY_9
default 0xa0 if OR3_SCY_10
default 0xb0 if OR3_SCY_11
default 0xc0 if OR3_SCY_12
default 0xd0 if OR3_SCY_13
default 0xe0 if OR3_SCY_14
default 0xf0 if OR3_SCY_15
config OR3_PGS
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if OR3_PGS_SMALL
default 0x400 if OR3_PGS_LARGE
config OR3_CSCT
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if OR3_CSCT_1_CYCLE
default 0x0 if OR3_CSCT_2_CYCLE
default 0x200 if OR3_CSCT_4_CYCLE
default 0x200 if OR3_CSCT_8_CYCLE
config OR3_CST
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if OR3_CST_COINCIDENT
default 0x100 if OR3_CST_QUARTER_CLOCK
default 0x0 if OR3_CST_HALF_CLOCK
default 0x100 if OR3_CST_ONE_CLOCK
config OR3_CHT
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if OR3_CHT_HALF_CLOCK
default 0x80 if OR3_CHT_ONE_CLOCK
default 0x0 if OR3_CHT_ONE_HALF_CLOCK
default 0x80 if OR3_CHT_TWO_CLOCK
config OR3_RST
hex
default 0x0 if !BR3_MACHINE_FCM
default 0x0 if OR3_RST_THREE_QUARTER_CLOCK
default 0x8 if OR3_RST_ONE_CLOCK
default 0x0 if OR3_RST_ONE_HALF_CLOCK
config OR3_CSNT
hex
default 0x0 if !BR3_MACHINE_GPCM
default 0x0 if OR3_CSNT_NORMAL
default 0x800 if OR3_CSNT_EARLIER
config OR3_ACS
hex
default 0x0 if !BR3_MACHINE_GPCM
default 0x0 if OR3_ACS_SAME_TIME
default 0x400 if OR3_ACS_QUARTER_CYCLE_EARLIER
default 0x600 if OR3_ACS_HALF_CYCLE_EARLIER
config OR3_XACS
hex
default 0x0 if !BR3_MACHINE_GPCM
default 0x0 if OR3_XACS_NORMAL
default 0x100 if OR3_XACS_EXTENDED
config OR3_SETA
hex
default 0x0 if !BR3_MACHINE_GPCM
default 0x0 if OR3_SETA_INTERNAL
default 0x8 if OR3_SETA_EXTERNAL
config OR3_TRLX
hex
default 0x0 if OR3_TRLX_NORMAL
default 0x4 if OR3_TRLX_RELAXED
config OR3_EHTR
hex
default 0x0 if OR3_EHTR_NORMAL
default 0x2 if OR3_EHTR_1_CYCLE
default 0x0 if OR3_EHTR_4_CYCLE
default 0x2 if OR3_EHTR_8_CYCLE
config OR3_EAD
hex
default 0x0 if ARCH_MPC8308
default 0x0 if OR3_EAD_NONE
default 0x1 if OR3_EAD_EXTRA

View File

@@ -0,0 +1,733 @@
menuconfig ELBC_BR4_OR4
bool "ELBC BR4/OR4"
if ELBC_BR4_OR4
config BR4_OR4_NAME
string "Identifier"
config BR4_OR4_BASE
hex "Port base"
choice
prompt "Port size"
config BR4_PORTSIZE_8BIT
bool "8-bit"
config BR4_PORTSIZE_16BIT
depends on !BR4_MACHINE_FCM
bool "16-bit"
config BR4_PORTSIZE_32BIT
depends on !BR4_MACHINE_FCM
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
bool "32-bit"
endchoice
if BR4_MACHINE_FCM
choice
prompt "Data Error Checking"
config BR4_ERRORCHECKING_DISABLED
bool "Disabled"
config BR4_ERRORCHECKING_ECC_CHECKING
bool "ECC checking / No ECC generation"
config BR4_ERRORCHECKING_BOTH
bool "ECC checking and generation"
endchoice
endif
config BR4_WRITE_PROTECT
bool "Write-protect"
config BR4_MACHINE_UPM
bool
choice
prompt "Machine select"
config BR4_MACHINE_GPCM
bool "GPCM"
config BR4_MACHINE_FCM
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "FCM"
config BR4_MACHINE_SDRAM
depends on ARCH_MPC8349 || ARCH_MPC8360
bool "SDRAM"
config BR4_MACHINE_UPMA
select BR4_MACHINE_UPM
bool "UPM (A)"
config BR4_MACHINE_UPMB
select BR4_MACHINE_UPM
bool "UPM (B)"
config BR4_MACHINE_UPMC
select BR4_MACHINE_UPM
bool "UPM (C)"
endchoice
if ARCH_MPC8313 || ARCH_MPC8323 || ARCH_MPC8360
choice
prompt "Atomic operations"
config BR4_ATOMIC_NONE
bool "No atomic operations"
config BR4_ATOMIC_RAWA
bool "Read-after-write-atomic"
config BR4_ATOMIC_WARA
bool "Write-after-read-atomic"
endchoice
endif
if BR4_MACHINE_GPCM || BR4_MACHINE_FCM || BR4_MACHINE_UPM || BR4_MACHINE_SDRAM
choice
prompt "Address mask"
config OR4_AM_32_KBYTES
depends on !BR4_MACHINE_SDRAM
bool "32 kb"
config OR4_AM_64_KBYTES
bool "64 kb"
config OR4_AM_128_KBYTES
bool "128 kb"
config OR4_AM_256_KBYTES
bool "256 kb"
config OR4_AM_512_KBYTES
bool "512 kb"
config OR4_AM_1_MBYTES
bool "1 mb"
config OR4_AM_2_MBYTES
bool "2 mb"
config OR4_AM_4_MBYTES
bool "4 mb"
config OR4_AM_8_MBYTES
bool "8 mb"
config OR4_AM_16_MBYTES
bool "16 mb"
config OR4_AM_32_MBYTES
bool "32 mb"
config OR4_AM_64_MBYTES
bool "64 mb"
# XXX: Some boards define 128MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR4_AM_128_MBYTES
bool "128 mb"
# XXX: Some boards define 256MB AM with GPCM, even though it should not be
# possible according to the manuals
config OR4_AM_256_MBYTES
bool "256 mb"
config OR4_AM_512_MBYTES
depends on BR4_MACHINE_FCM
bool "512 mb"
# XXX: Some boards define 1GB AM with GPCM, even though it should not be
# possible according to the manuals
config OR4_AM_1_GBYTES
bool "1 gb"
config OR4_AM_2_GBYTES
depends on BR4_MACHINE_FCM
bool "2 gb"
config OR4_AM_4_GBYTES
depends on BR4_MACHINE_FCM
bool "4 gb"
endchoice
config OR4_XAM_SET
bool "Set unused bytes after address mask"
choice
prompt "Buffer control disable"
config OR4_BCTLD_ASSERTED
bool "Asserted"
config OR4_BCTLD_NOT_ASSERTED
bool "Not asserted"
endchoice
endif
if BR4_MACHINE_GPCM || BR4_MACHINE_FCM
choice
prompt "Cycle length in bus clocks"
config OR4_SCY_0
bool "No wait states"
config OR4_SCY_1
bool "1 wait state"
config OR4_SCY_2
bool "2 wait states"
config OR4_SCY_3
bool "3 wait states"
config OR4_SCY_4
bool "4 wait states"
config OR4_SCY_5
bool "5 wait states"
config OR4_SCY_6
bool "6 wait states"
config OR4_SCY_7
bool "7 wait states"
config OR4_SCY_8
depends on BR4_MACHINE_GPCM
bool "8 wait states"
config OR4_SCY_9
depends on BR4_MACHINE_GPCM
bool "9 wait states"
config OR4_SCY_10
depends on BR4_MACHINE_GPCM
bool "10 wait states"
config OR4_SCY_11
depends on BR4_MACHINE_GPCM
bool "11 wait states"
config OR4_SCY_12
depends on BR4_MACHINE_GPCM
bool "12 wait states"
config OR4_SCY_13
depends on BR4_MACHINE_GPCM
bool "13 wait states"
config OR4_SCY_14
depends on BR4_MACHINE_GPCM
bool "14 wait states"
config OR4_SCY_15
depends on BR4_MACHINE_GPCM
bool "15 wait states"
endchoice
endif # BR4_MACHINE_GPCM || BR4_MACHINE_FCM
if BR4_MACHINE_GPCM
choice
prompt "Chip select negotiation time"
config OR4_CSNT_NORMAL
bool "Normal"
config OR4_CSNT_EARLIER
bool "Earlier"
endchoice
choice
prompt "Address to chip-select setup"
config OR4_ACS_SAME_TIME
bool "At the same time"
config OR4_ACS_HALF_CYCLE_EARLIER
bool "Half of a bus clock cycle earlier"
config OR4_ACS_QUARTER_CYCLE_EARLIER
bool "Half/Quarter of a bus clock cycle earlier"
endchoice
choice
prompt "Extra address to check-select setup"
config OR4_XACS_NORMAL
bool "Normal"
config OR4_XACS_EXTENDED
bool "Extended"
endchoice
choice
prompt "External address termination"
config OR4_SETA_INTERNAL
bool "Access is terminated internally"
config OR4_SETA_EXTERNAL
bool "Access is terminated externally"
endchoice
endif # BR4_MACHINE_GPCM
if BR4_MACHINE_FCM
choice
prompt "NAND Flash EEPROM page size"
config OR4_PGS_SMALL
bool "Small page device"
config OR4_PGS_LARGE
bool "Large page device"
endchoice
choice
prompt "Chip select to command time"
config OR4_CSCT_1_CYCLE
depends on OR4_TRLX_NORMAL
bool "1 cycle"
config OR4_CSCT_2_CYCLE
depends on OR4_TRLX_RELAXED
bool "2 cycles"
config OR4_CSCT_4_CYCLE
depends on OR4_TRLX_NORMAL
bool "4 cycles"
config OR4_CSCT_8_CYCLE
depends on OR4_TRLX_RELAXED
bool "8 cycles"
endchoice
choice
prompt "Command setup time"
config OR4_CST_COINCIDENT
depends on OR4_TRLX_NORMAL
bool "Coincident with any command"
config OR4_CST_QUARTER_CLOCK
depends on OR4_TRLX_NORMAL
bool "0.25 clocks after"
config OR4_CST_HALF_CLOCK
depends on OR4_TRLX_RELAXED
bool "0.5 clocks after"
config OR4_CST_ONE_CLOCK
depends on OR4_TRLX_RELAXED
bool "1 clock after"
endchoice
choice
prompt "Command hold time"
config OR4_CHT_HALF_CLOCK
depends on OR4_TRLX_NORMAL
bool "0.5 clocks before"
config OR4_CHT_ONE_CLOCK
depends on OR4_TRLX_NORMAL
bool "1 clock before"
config OR4_CHT_ONE_HALF_CLOCK
depends on OR4_TRLX_RELAXED
bool "1.5 clocks before"
config OR4_CHT_TWO_CLOCK
depends on OR4_TRLX_RELAXED
bool "2 clocks before"
endchoice
choice
prompt "Reset setup time"
config OR4_RST_THREE_QUARTER_CLOCK
depends on OR4_TRLX_NORMAL
bool "0.75 clocks prior"
config OR4_RST_ONE_HALF_CLOCK
depends on OR4_TRLX_RELAXED
bool "0.5 clocks prior"
config OR4_RST_ONE_CLOCK
bool "1 clock prior"
endchoice
endif # BR4_MACHINE_FCM
if BR4_MACHINE_UPM
choice
prompt "Burst inhibit"
config OR4_BI_BURSTSUPPORT
bool "Support burst access"
config OR4_BI_BURSTINHIBIT
bool "Inhibit burst access"
endchoice
endif # BR4_MACHINE_UPM
if BR4_MACHINE_SDRAM
choice
prompt "Number of column address lines"
config OR4_COLS_7
bool "7"
config OR4_COLS_8
bool "8"
config OR4_COLS_9
bool "9"
config OR4_COLS_10
bool "10"
config OR4_COLS_11
bool "11"
config OR4_COLS_12
bool "12"
config OR4_COLS_13
bool "13"
config OR4_COLS_14
bool "14"
endchoice
choice
prompt "Number of rows address lines"
config OR4_ROWS_9
bool "9"
config OR4_ROWS_10
bool "10"
config OR4_ROWS_11
bool "11"
config OR4_ROWS_12
bool "12"
config OR4_ROWS_13
bool "13"
config OR4_ROWS_14
bool "14"
config OR4_ROWS_15
bool "15"
endchoice
choice
prompt "Page mode select"
config OR4_PMSEL_BTB
bool "Back-to-back"
config OR4_PMSEL_KEPT_OPEN
bool "Page kept open until page miss or refresh"
endchoice
endif # BR4_MACHINE_SDRAM
choice
prompt "Relaxed timing"
config OR4_TRLX_NORMAL
bool "Normal"
config OR4_TRLX_RELAXED
bool "Relaxed"
endchoice
choice
prompt "Extended hold time"
config OR4_EHTR_NORMAL
depends on OR4_TRLX_NORMAL
bool "Normal"
config OR4_EHTR_1_CYCLE
depends on OR4_TRLX_NORMAL
bool "1 idle clock cycle inserted"
config OR4_EHTR_4_CYCLE
depends on OR4_TRLX_RELAXED
bool "4 idle clock cycles inserted"
config OR4_EHTR_8_CYCLE
depends on OR4_TRLX_RELAXED
bool "8 idle clock cycles inserted"
endchoice
if !ARCH_MPC8308
choice
prompt "External address latch delay"
config OR4_EAD_NONE
bool "None"
config OR4_EAD_EXTRA
bool "Extra"
endchoice
endif # !ARCH_MPC8308
endif # ELBC_BR4_OR4
config BR4_PORTSIZE
hex
default 0x800 if BR4_PORTSIZE_8BIT
default 0x1000 if BR4_PORTSIZE_16BIT
default 0x1800 if BR4_PORTSIZE_32BIT
config BR4_ERRORCHECKING
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if BR4_ERRORCHECKING_DISABLED
default 0x200 if BR4_ERRORCHECKING_ECC_CHECKING
default 0x400 if BR4_ERRORCHECKING_BOTH
config BR4_WRITE_PROTECT_BIT
hex
default 0x0 if !BR4_WRITE_PROTECT
default 0x100 if BR4_WRITE_PROTECT
config BR4_MACHINE
hex
default 0x0 if BR4_MACHINE_GPCM
default 0x20 if BR4_MACHINE_FCM
default 0x60 if BR4_MACHINE_SDRAM
default 0x80 if BR4_MACHINE_UPMA
default 0xa0 if BR4_MACHINE_UPMB
default 0xc0 if BR4_MACHINE_UPMC
config BR4_ATOMIC
hex
default 0x0 if !ARCH_MPC8313 && !ARCH_MPC8323 && !ARCH_MPC8360
default 0x0 if BR4_ATOMIC_NONE
default 0x4 if BR4_ATOMIC_RAWA
default 0x8 if BR4_ATOMIC_WARA
config BR4_VALID_BIT
hex
default 0x0 if !ELBC_BR4_OR4
default 0x1 if ELBC_BR4_OR4
config OR4_AM
hex
default 0xffff8000 if OR4_AM_32_KBYTES && !BR4_MACHINE_SDRAM
default 0xffff0000 if OR4_AM_64_KBYTES
default 0xfffe0000 if OR4_AM_128_KBYTES
default 0xfffc0000 if OR4_AM_256_KBYTES
default 0xfff80000 if OR4_AM_512_KBYTES
default 0xfff00000 if OR4_AM_1_MBYTES
default 0xffe00000 if OR4_AM_2_MBYTES
default 0xffc00000 if OR4_AM_4_MBYTES
default 0xff800000 if OR4_AM_8_MBYTES
default 0xff000000 if OR4_AM_16_MBYTES
default 0xfe000000 if OR4_AM_32_MBYTES
default 0xfc000000 if OR4_AM_64_MBYTES
default 0xf8000000 if OR4_AM_128_MBYTES
default 0xf0000000 if OR4_AM_256_MBYTES
default 0xe0000000 if OR4_AM_512_MBYTES
default 0xc0000000 if OR4_AM_1_GBYTES
default 0x80000000 if OR4_AM_2_GBYTES
default 0x00000000 if OR4_AM_4_GBYTES
config OR4_XAM
hex
default 0x0 if !OR4_XAM_SET
default 0x6000 if OR4_XAM_SET
config OR4_BCTLD
hex
default 0x0 if OR4_BCTLD_ASSERTED
default 0x1000 if OR4_BCTLD_NOT_ASSERTED
config OR4_BI
hex
default 0x0 if !BR4_MACHINE_UPM
default 0x0 if OR4_BI_BURSTSUPPORT
default 0x100 if OR4_BI_BURSTINHIBIT
config OR4_COLS
hex
default 0x0 if !BR4_MACHINE_SDRAM
default 0x0 if OR4_COLS_7
default 0x400 if OR4_COLS_8
default 0x800 if OR4_COLS_9
default 0xc00 if OR4_COLS_10
default 0x1000 if OR4_COLS_11
default 0x1400 if OR4_COLS_12
default 0x1800 if OR4_COLS_13
default 0x1c00 if OR4_COLS_14
config OR4_ROWS
hex
default 0x0 if !BR4_MACHINE_SDRAM
default 0x0 if OR4_ROWS_9
default 0x40 if OR4_ROWS_10
default 0x80 if OR4_ROWS_11
default 0xc0 if OR4_ROWS_12
default 0x100 if OR4_ROWS_13
default 0x140 if OR4_ROWS_14
default 0x180 if OR4_ROWS_15
config OR4_PMSEL
hex
default 0x0 if !BR4_MACHINE_SDRAM
default 0x0 if OR4_PMSEL_BTB
default 0x20 if OR4_PMSEL_KEPT_OPEN
config OR4_SCY
hex
default 0x0 if !BR4_MACHINE_GPCM && !BR4_MACHINE_FCM
default 0x0 if OR4_SCY_0
default 0x10 if OR4_SCY_1
default 0x20 if OR4_SCY_2
default 0x30 if OR4_SCY_3
default 0x40 if OR4_SCY_4
default 0x50 if OR4_SCY_5
default 0x60 if OR4_SCY_6
default 0x70 if OR4_SCY_7
default 0x80 if OR4_SCY_8
default 0x90 if OR4_SCY_9
default 0xa0 if OR4_SCY_10
default 0xb0 if OR4_SCY_11
default 0xc0 if OR4_SCY_12
default 0xd0 if OR4_SCY_13
default 0xe0 if OR4_SCY_14
default 0xf0 if OR4_SCY_15
config OR4_PGS
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if OR4_PGS_SMALL
default 0x400 if OR4_PGS_LARGE
config OR4_CSCT
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if OR4_CSCT_1_CYCLE
default 0x0 if OR4_CSCT_2_CYCLE
default 0x200 if OR4_CSCT_4_CYCLE
default 0x200 if OR4_CSCT_8_CYCLE
config OR4_CST
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if OR4_CST_COINCIDENT
default 0x100 if OR4_CST_QUARTER_CLOCK
default 0x0 if OR4_CST_HALF_CLOCK
default 0x100 if OR4_CST_ONE_CLOCK
config OR4_CHT
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if OR4_CHT_HALF_CLOCK
default 0x80 if OR4_CHT_ONE_CLOCK
default 0x0 if OR4_CHT_ONE_HALF_CLOCK
default 0x80 if OR4_CHT_TWO_CLOCK
config OR4_RST
hex
default 0x0 if !BR4_MACHINE_FCM
default 0x0 if OR4_RST_THREE_QUARTER_CLOCK
default 0x8 if OR4_RST_ONE_CLOCK
default 0x0 if OR4_RST_ONE_HALF_CLOCK
config OR4_CSNT
hex
default 0x0 if !BR4_MACHINE_GPCM
default 0x0 if OR4_CSNT_NORMAL
default 0x800 if OR4_CSNT_EARLIER
config OR4_ACS
hex
default 0x0 if !BR4_MACHINE_GPCM
default 0x0 if OR4_ACS_SAME_TIME
default 0x400 if OR4_ACS_QUARTER_CYCLE_EARLIER
default 0x600 if OR4_ACS_HALF_CYCLE_EARLIER
config OR4_XACS
hex
default 0x0 if !BR4_MACHINE_GPCM
default 0x0 if OR4_XACS_NORMAL
default 0x100 if OR4_XACS_EXTENDED
config OR4_SETA
hex
default 0x0 if !BR4_MACHINE_GPCM
default 0x0 if OR4_SETA_INTERNAL
default 0x8 if OR4_SETA_EXTERNAL
config OR4_TRLX
hex
default 0x0 if OR4_TRLX_NORMAL
default 0x4 if OR4_TRLX_RELAXED
config OR4_EHTR
hex
default 0x0 if OR4_EHTR_NORMAL
default 0x2 if OR4_EHTR_1_CYCLE
default 0x0 if OR4_EHTR_4_CYCLE
default 0x2 if OR4_EHTR_8_CYCLE
config OR4_EAD
hex
default 0x0 if ARCH_MPC8308
default 0x0 if OR4_EAD_NONE
default 0x1 if OR4_EAD_EXTRA

View File

@@ -0,0 +1,186 @@
#ifdef CONFIG_ELBC_BR0_OR0
#define CONFIG_SYS_BR0_PRELIM (\
CONFIG_BR0_OR0_BASE |\
CONFIG_BR0_PORTSIZE |\
CONFIG_BR0_ERRORCHECKING |\
CONFIG_BR0_WRITE_PROTECT_BIT |\
CONFIG_BR0_MACHINE |\
CONFIG_BR0_ATOMIC |\
CONFIG_BR0_VALID_BIT \
)
#define CONFIG_SYS_OR0_PRELIM (\
CONFIG_OR0_AM |\
CONFIG_OR0_XAM |\
CONFIG_OR0_BCTLD |\
CONFIG_OR0_BI |\
CONFIG_OR0_COLS |\
CONFIG_OR0_ROWS |\
CONFIG_OR0_PMSEL |\
CONFIG_OR0_SCY |\
CONFIG_OR0_PGS |\
CONFIG_OR0_CSCT |\
CONFIG_OR0_CST |\
CONFIG_OR0_CHT |\
CONFIG_OR0_RST |\
CONFIG_OR0_CSNT |\
CONFIG_OR0_ACS |\
CONFIG_OR0_XACS |\
CONFIG_OR0_SETA |\
CONFIG_OR0_TRLX |\
CONFIG_OR0_EHTR |\
CONFIG_OR0_EAD \
)
#endif /* CONFIG_ELBC_BR0_OR0 */
#ifdef CONFIG_ELBC_BR1_OR1
#define CONFIG_SYS_BR1_PRELIM (\
CONFIG_BR1_OR1_BASE |\
CONFIG_BR1_PORTSIZE |\
CONFIG_BR1_ERRORCHECKING |\
CONFIG_BR1_WRITE_PROTECT_BIT |\
CONFIG_BR1_MACHINE |\
CONFIG_BR1_ATOMIC |\
CONFIG_BR1_VALID_BIT \
)
#define CONFIG_SYS_OR1_PRELIM (\
CONFIG_OR1_AM |\
CONFIG_OR1_XAM |\
CONFIG_OR1_BCTLD |\
CONFIG_OR1_BI |\
CONFIG_OR1_COLS |\
CONFIG_OR1_ROWS |\
CONFIG_OR1_PMSEL |\
CONFIG_OR1_SCY |\
CONFIG_OR1_PGS |\
CONFIG_OR1_CSCT |\
CONFIG_OR1_CST |\
CONFIG_OR1_CHT |\
CONFIG_OR1_RST |\
CONFIG_OR1_CSNT |\
CONFIG_OR1_ACS |\
CONFIG_OR1_XACS |\
CONFIG_OR1_SETA |\
CONFIG_OR1_TRLX |\
CONFIG_OR1_EHTR |\
CONFIG_OR1_EAD \
)
#endif /* CONFIG_ELBC_BR1_OR1 */
#ifdef CONFIG_ELBC_BR2_OR2
#define CONFIG_SYS_BR2_PRELIM (\
CONFIG_BR2_OR2_BASE |\
CONFIG_BR2_PORTSIZE |\
CONFIG_BR2_ERRORCHECKING |\
CONFIG_BR2_WRITE_PROTECT_BIT |\
CONFIG_BR2_MACHINE |\
CONFIG_BR2_ATOMIC |\
CONFIG_BR2_VALID_BIT \
)
#define CONFIG_SYS_OR2_PRELIM (\
CONFIG_OR2_AM |\
CONFIG_OR2_XAM |\
CONFIG_OR2_BCTLD |\
CONFIG_OR2_BI |\
CONFIG_OR2_COLS |\
CONFIG_OR2_ROWS |\
CONFIG_OR2_PMSEL |\
CONFIG_OR2_SCY |\
CONFIG_OR2_PGS |\
CONFIG_OR2_CSCT |\
CONFIG_OR2_CST |\
CONFIG_OR2_CHT |\
CONFIG_OR2_RST |\
CONFIG_OR2_CSNT |\
CONFIG_OR2_ACS |\
CONFIG_OR2_XACS |\
CONFIG_OR2_SETA |\
CONFIG_OR2_TRLX |\
CONFIG_OR2_EHTR |\
CONFIG_OR2_EAD \
)
#endif /* CONFIG_ELBC_BR2_OR2 */
#ifdef CONFIG_ELBC_BR3_OR3
#define CONFIG_SYS_BR3_PRELIM (\
CONFIG_BR3_OR3_BASE |\
CONFIG_BR3_PORTSIZE |\
CONFIG_BR3_ERRORCHECKING |\
CONFIG_BR3_WRITE_PROTECT_BIT |\
CONFIG_BR3_MACHINE |\
CONFIG_BR3_ATOMIC |\
CONFIG_BR3_VALID_BIT \
)
#define CONFIG_SYS_OR3_PRELIM (\
CONFIG_OR3_AM |\
CONFIG_OR3_XAM |\
CONFIG_OR3_BCTLD |\
CONFIG_OR3_BI |\
CONFIG_OR3_COLS |\
CONFIG_OR3_ROWS |\
CONFIG_OR3_PMSEL |\
CONFIG_OR3_SCY |\
CONFIG_OR3_PGS |\
CONFIG_OR3_CSCT |\
CONFIG_OR3_CST |\
CONFIG_OR3_CHT |\
CONFIG_OR3_RST |\
CONFIG_OR3_CSNT |\
CONFIG_OR3_ACS |\
CONFIG_OR3_XACS |\
CONFIG_OR3_SETA |\
CONFIG_OR3_TRLX |\
CONFIG_OR3_EHTR |\
CONFIG_OR3_EAD \
)
#endif /* CONFIG_ELBC_BR3_OR3 */
#ifdef CONFIG_ELBC_BR4_OR4
#define CONFIG_SYS_BR4_PRELIM (\
CONFIG_BR4_OR4_BASE |\
CONFIG_BR4_PORTSIZE |\
CONFIG_BR4_ERRORCHECKING |\
CONFIG_BR4_WRITE_PROTECT_BIT |\
CONFIG_BR4_MACHINE |\
CONFIG_BR4_ATOMIC |\
CONFIG_BR4_VALID_BIT \
)
#define CONFIG_SYS_OR4_PRELIM (\
CONFIG_OR4_AM |\
CONFIG_OR4_XAM |\
CONFIG_OR4_BCTLD |\
CONFIG_OR4_BI |\
CONFIG_OR4_COLS |\
CONFIG_OR4_ROWS |\
CONFIG_OR4_PMSEL |\
CONFIG_OR4_SCY |\
CONFIG_OR4_PGS |\
CONFIG_OR4_CSCT |\
CONFIG_OR4_CST |\
CONFIG_OR4_CHT |\
CONFIG_OR4_RST |\
CONFIG_OR4_CSNT |\
CONFIG_OR4_ACS |\
CONFIG_OR4_XACS |\
CONFIG_OR4_SETA |\
CONFIG_OR4_TRLX |\
CONFIG_OR4_EHTR |\
CONFIG_OR4_EAD \
)
#endif /* CONFIG_ELBC_BR4_OR4 */
#if defined(CONFIG_ELBC_BR_OR_NAND_PRELIM_0)
#define CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_BR0_PRELIM
#define CONFIG_SYS_NAND_OR_PRELIM CONFIG_SYS_OR0_PRELIM
#elif defined(CONFIG_ELBC_BR_OR_NAND_PRELIM_1)
#define CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_BR1_PRELIM
#define CONFIG_SYS_NAND_OR_PRELIM CONFIG_SYS_OR1_PRELIM
#elif defined(CONFIG_ELBC_BR_OR_NAND_PRELIM_2)
#define CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_BR2_PRELIM
#define CONFIG_SYS_NAND_OR_PRELIM CONFIG_SYS_OR2_PRELIM
#elif defined(CONFIG_ELBC_BR_OR_NAND_PRELIM_3)
#define CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_BR3_PRELIM
#define CONFIG_SYS_NAND_OR_PRELIM CONFIG_SYS_OR3_PRELIM
#elif defined(CONFIG_ELBC_BR_OR_NAND_PRELIM_4)
#define CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_BR4_PRELIM
#define CONFIG_SYS_NAND_OR_PRELIM CONFIG_SYS_OR4_PRELIM
#endif

View File

@@ -16,7 +16,7 @@ extern void ft_qe_setup(void *blob);
DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_BOOTCOUNT_LIMIT) && \
(defined(CONFIG_QE) && !defined(CONFIG_MPC831x))
(defined(CONFIG_QE) && !defined(CONFIG_ARCH_MPC831X))
#include <linux/immap_qe.h>
void fdt_fixup_muram (void *blob)
@@ -52,7 +52,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3) ||\
defined(CONFIG_HAS_ETH4) || defined(CONFIG_HAS_ETH5)
#ifdef CONFIG_MPC8313
#ifdef CONFIG_ARCH_MPC8313
/*
* mpc8313e erratum IPIC1 swapped TSEC interrupt ID numbers on rev. 1
* h/w (see AN3545). The base device tree in use has rev. 1 ID numbers,
@@ -116,14 +116,14 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#endif
#ifdef CONFIG_SYS_NS16550
do_fixup_by_compat_u32(blob, "ns16550",
"clock-frequency", CONFIG_SYS_NS16550_CLK, 1);
do_fixup_by_compat_u32(blob, "ns16550",
"clock-frequency", get_serial_clock(), 1);
#endif
fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
#if defined(CONFIG_BOOTCOUNT_LIMIT) && \
(defined(CONFIG_QE) && !defined(CONFIG_MPC831x))
(defined(CONFIG_QE) && !defined(CONFIG_ARCH_MPC831X))
fdt_fixup_muram (blob);
#endif
}

View File

@@ -0,0 +1,565 @@
menu "HID setup"
menu "HID0 initial"
config HID0_INIT_EMCP
bool "Enable machine check int on mcp"
config HID0_INIT_ECPE
bool "Enable cache parity errors"
config HID0_INIT_EBA
bool "Enable address parity checking"
config HID0_INIT_EBD
bool "Enable data parity checking"
choice
prompt "HID0 clock configuration"
config HID0_INIT_CLKOUT_OFF
bool "Clock output off"
config HID0_INIT_CLKOUT_CORE_HALF
bool "Core clock / 2"
config HID0_INIT_CLKOUT_CORE
bool "Core clock"
config HID0_INIT_CLKOUT_BUS
bool "Bus clock"
endchoice
config HID0_INIT_PAR
bool "Disable precharge of artry_out"
config HID0_INIT_DOZE
bool "Enable doze mode"
config HID0_INIT_NAP
bool "Enable nap mode"
config HID0_INIT_SLEEP
bool "Enable sleep mode"
config HID0_INIT_DPM
bool "Enable dynamic power management"
config HID0_INIT_ICE
bool "Enable instruction cache"
config HID0_INIT_DCE
bool "Enable data cache"
config HID0_INIT_ILOCK
bool "Lock instruction cache"
config HID0_INIT_DLOCK
bool "Lock data cache"
config HID0_INIT_ICFI
bool "Flash invalidate instruction cache"
config HID0_INIT_DCFI
bool "Flash invalidate data cache"
config HID0_INIT_IFEM
bool "Enable m bit on bus for instruction fetches"
config HID0_INIT_DECAREN
bool "Decrementer auto reload"
config HID0_INIT_FBIOB
bool "Force indirect branch on the bus"
config HID0_INIT_ABE
bool "Enable address broadcast"
config HID0_INIT_NOOPTI
bool "No-op data cache touch intructions"
endmenu
menu "HID0 final"
config HID0_FINAL_EMCP
bool "Enable machine check int on mcp"
config HID0_FINAL_ECPE
bool "Enable cache parity errors"
config HID0_FINAL_EBA
bool "Enable address parity checking"
config HID0_FINAL_EBD
bool "Enable data parity checking"
choice
prompt "HID0 clock configuration"
config HID0_FINAL_CLKOUT_OFF
bool "Clock output off"
config HID0_FINAL_CLKOUT_CORE_HALF
bool "Core clock / 2"
config HID0_FINAL_CLKOUT_CORE
bool "Core clock"
config HID0_FINAL_CLKOUT_BUS
bool "Bus clock"
endchoice
config HID0_FINAL_PAR
bool "Disable precharge of artry_out"
config HID0_FINAL_DOZE
bool "Enable doze mode"
config HID0_FINAL_NAP
bool "Enable nap mode"
config HID0_FINAL_SLEEP
bool "Enable sleep mode"
config HID0_FINAL_DPM
bool "Enable dynamic power management"
config HID0_FINAL_ICE
bool "Enable instruction cache"
config HID0_FINAL_DCE
bool "Enable data cache"
config HID0_FINAL_ILOCK
bool "Lock instruction cache"
config HID0_FINAL_DLOCK
bool "Lock data cache"
config HID0_FINAL_ICFI
bool "Flash invalidate instruction cache"
config HID0_FINAL_DCFI
bool "Flash invalidate data cache"
config HID0_FINAL_IFEM
bool "Enable m bit on bus for instruction fetches"
config HID0_FINAL_DECAREN
bool "Decrementer auto reload"
config HID0_FINAL_FBIOB
bool "Force indirect branch on the bus"
config HID0_FINAL_ABE
bool "Enable address broadcast"
config HID0_FINAL_NOOPTI
bool "No-op data cache touch intructions"
endmenu
config HID0_INIT_EMCP_BIT
hex
default 0x0 if !HID0_INIT_EMCP
default 0x80000000 if HID0_INIT_EMCP
config HID0_INIT_ECPE_BIT
hex
default 0x0 if !HID0_INIT_ECPE
default 0x40000000 if HID0_INIT_ECPE
config HID0_INIT_EBA_BIT
hex
default 0x0 if !HID0_INIT_EBA
default 0x20000000 if HID0_INIT_EBA
config HID0_INIT_EBD_BIT
hex
default 0x0 if !HID0_INIT_EBD
default 0x10000000 if HID0_INIT_EBD
config HID0_INIT_CLKOUT
hex
default 0x0 if HID0_INIT_CLKOUT_OFF
default 0x8000000 if HID0_INIT_CLKOUT_CORE_HALF
default 0x2000000 if HID0_INIT_CLKOUT_CORE
default 0xa000000 if HID0_INIT_CLKOUT_BUS
config HID0_INIT_PAR_BIT
hex
default 0x0 if !HID0_INIT_PAR
default 0x1000000 if HID0_INIT_PAR
config HID0_INIT_DOZE_BIT
hex
default 0x0 if !HID0_INIT_DOZE
default 0x800000 if HID0_INIT_DOZE
config HID0_INIT_NAP_BIT
hex
default 0x0 if !HID0_INIT_NAP
default 0x400000 if HID0_INIT_NAP
config HID0_INIT_SLEEP_BIT
hex
default 0x0 if !HID0_INIT_SLEEP
default 0x200000 if HID0_INIT_SLEEP
config HID0_INIT_DPM_BIT
hex
default 0x0 if !HID0_INIT_DPM
default 0x100000 if HID0_INIT_DPM
config HID0_INIT_ICE_BIT
hex
default 0x0 if !HID0_INIT_ICE
default 0x8000 if HID0_INIT_ICE
config HID0_INIT_DCE_BIT
hex
default 0x0 if !HID0_INIT_DCE
default 0x4000 if HID0_INIT_DCE
config HID0_INIT_ILOCK_BIT
hex
default 0x0 if !HID0_INIT_ILOCK
default 0x2000 if HID0_INIT_ILOCK
config HID0_INIT_DLOCK_BIT
hex
default 0x0 if !HID0_INIT_DLOCK
default 0x1000 if HID0_INIT_DLOCK
config HID0_INIT_ICFI_BIT
hex
default 0x0 if !HID0_INIT_ICFI
default 0x800 if HID0_INIT_ICFI
config HID0_INIT_DCFI_BIT
hex
default 0x0 if !HID0_INIT_DCFI
default 0x400 if HID0_INIT_DCFI
config HID0_INIT_IFEM_BIT
hex
default 0x0 if !HID0_INIT_IFEM
default 0x80 if HID0_INIT_IFEM
config HID0_INIT_DECAREN_BIT
hex
default 0x0 if !HID0_INIT_DECAREN
default 0x40 if HID0_INIT_DECAREN
config HID0_INIT_FBIOB_BIT
hex
default 0x0 if !HID0_INIT_FBIOB
default 0x10 if HID0_INIT_FBIOB
config HID0_INIT_ABE_BIT
hex
default 0x0 if !HID0_INIT_ABE
default 0x8 if HID0_INIT_ABE
config HID0_INIT_NOOPTI_BIT
hex
default 0x0 if !HID0_INIT_NOOPTI
default 0x1 if HID0_INIT_NOOPTI
config HID0_FINAL_EMCP_BIT
hex
default 0x0 if !HID0_FINAL_EMCP
default 0x80000000 if HID0_FINAL_EMCP
config HID0_FINAL_ECPE_BIT
hex
default 0x0 if !HID0_FINAL_ECPE
default 0x40000000 if HID0_FINAL_ECPE
config HID0_FINAL_EBA_BIT
hex
default 0x0 if !HID0_FINAL_EBA
default 0x20000000 if HID0_FINAL_EBA
config HID0_FINAL_EBD_BIT
hex
default 0x0 if !HID0_FINAL_EBD
default 0x10000000 if HID0_FINAL_EBD
config HID0_FINAL_CLKOUT
hex
default 0x0 if HID0_FINAL_CLKOUT_OFF
default 0x8000000 if HID0_FINAL_CLKOUT_CORE_HALF
default 0x2000000 if HID0_FINAL_CLKOUT_CORE
default 0xa000000 if HID0_FINAL_CLKOUT_BUS
config HID0_FINAL_SBCLK_BIT
hex
default 0x0 if !HID0_FINAL_SBCLK
default 0x8000000 if HID0_FINAL_SBCLK
config HID0_FINAL_ECLK_BIT
hex
default 0x0 if !HID0_FINAL_ECLK
default 0x2000000 if HID0_FINAL_ECLK
config HID0_FINAL_PAR_BIT
hex
default 0x0 if !HID0_FINAL_PAR
default 0x1000000 if HID0_FINAL_PAR
config HID0_FINAL_DOZE_BIT
hex
default 0x0 if !HID0_FINAL_DOZE
default 0x800000 if HID0_FINAL_DOZE
config HID0_FINAL_NAP_BIT
hex
default 0x0 if !HID0_FINAL_NAP
default 0x400000 if HID0_FINAL_NAP
config HID0_FINAL_SLEEP_BIT
hex
default 0x0 if !HID0_FINAL_SLEEP
default 0x200000 if HID0_FINAL_SLEEP
config HID0_FINAL_DPM_BIT
hex
default 0x0 if !HID0_FINAL_DPM
default 0x100000 if HID0_FINAL_DPM
config HID0_FINAL_ICE_BIT
hex
default 0x0 if !HID0_FINAL_ICE
default 0x8000 if HID0_FINAL_ICE
config HID0_FINAL_DCE_BIT
hex
default 0x0 if !HID0_FINAL_DCE
default 0x4000 if HID0_FINAL_DCE
config HID0_FINAL_ILOCK_BIT
hex
default 0x0 if !HID0_FINAL_ILOCK
default 0x2000 if HID0_FINAL_ILOCK
config HID0_FINAL_DLOCK_BIT
hex
default 0x0 if !HID0_FINAL_DLOCK
default 0x1000 if HID0_FINAL_DLOCK
config HID0_FINAL_ICFI_BIT
hex
default 0x0 if !HID0_FINAL_ICFI
default 0x800 if HID0_FINAL_ICFI
config HID0_FINAL_DCFI_BIT
hex
default 0x0 if !HID0_FINAL_DCFI
default 0x400 if HID0_FINAL_DCFI
config HID0_FINAL_IFEM_BIT
hex
default 0x0 if !HID0_FINAL_IFEM
default 0x80 if HID0_FINAL_IFEM
config HID0_FINAL_DECAREN_BIT
hex
default 0x0 if !HID0_FINAL_DECAREN
default 0x40 if HID0_FINAL_DECAREN
config HID0_FINAL_FBIOB_BIT
hex
default 0x0 if !HID0_FINAL_FBIOB
default 0x10 if HID0_FINAL_FBIOB
config HID0_FINAL_ABE_BIT
hex
default 0x0 if !HID0_FINAL_ABE
default 0x8 if HID0_FINAL_ABE
config HID0_FINAL_NOOPTI_BIT
hex
default 0x0 if !HID0_FINAL_NOOPTI
default 0x1 if HID0_FINAL_NOOPTI
menu "HID2"
config HID2_LET
bool "True little-endian mode"
config HID2_IFEB
bool "Instruction fetch burst extension"
config HID2_MESISTATE
bool "MESI state enable"
config HID2_IFEC
bool "Instruction fetch cancel extension"
config HID2_EBQS
bool "BIU queue sharing"
config HID2_EBPX
bool "BIU pipeline extension"
if !ARCH_MPC8360
config HID2_ELRW
bool "Weighted LRU"
config HID2_NOKS
bool "No kill for snoop"
endif
config HID2_HBE
bool "High bat enable"
choice
prompt "Instruction cache way-lock"
config HID2_IWLCK_NONE
bool "No ways locked"
config HID2_IWLCK_0
bool "Way 0 locked"
config HID2_IWLCK_1
bool "Way 0 through 1 locked"
config HID2_IWLCK_2
bool "Way 0 through 2 locked"
if ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
config HID2_IWLCK_3
bool "Way 0 through 3 locked"
config HID2_IWLCK_4
bool "Way 0 through 4 locked"
config HID2_IWLCK_5
bool "Way 0 through 5 locked"
config HID2_IWLCK_6
bool "Way 0 through 6 locked"
endif
endchoice
config HID2_ICWP
bool "Instruction cache way protection"
choice
prompt "Data cache way-lock"
config HID2_DWLCK_NONE
bool "No ways locked"
config HID2_DWLCK_0
bool "Way 0 locked"
config HID2_DWLCK_1
bool "Way 0 through 1 locked"
config HID2_DWLCK_2
bool "Way 0 through 2 locked"
if ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC8379
config HID2_DWLCK_3
bool "Way 0 through 3 locked"
config HID2_DWLCK_4
bool "Way 0 through 4 locked"
config HID2_DWLCK_5
bool "Way 0 through 5 locked"
config HID2_DWLCK_6
bool "Way 0 through 6 locked"
endif
endchoice
config HID2_LET_BIT
hex
default 0x0 if !HID2_LET
default 0x8000000 if HID2_LET
config HID2_IFEB_BIT
hex
default 0x0 if !HID2_IFEB
default 0x4000000 if HID2_IFEB
config HID2_MESISTATE_BIT
hex
default 0x0 if !HID2_MESISTATE
default 0x1000000 if HID2_MESISTATE
config HID2_IFEC_BIT
hex
default 0x0 if !HID2_IFEC
default 0x800000 if HID2_IFEC
config HID2_EBQS_BIT
hex
default 0x0 if !HID2_EBQS
default 0x400000 if HID2_EBQS
config HID2_EBPX_BIT
hex
default 0x0 if !HID2_EBPX
default 0x200000 if HID2_EBPX
config HID2_ELRW_BIT
hex
default 0x0 if !HID2_ELRW
default 0x100000 if HID2_ELRW
config HID2_NOKS_BIT
hex
default 0x0 if !HID2_NOKS
default 0x80000 if HID2_NOKS
config HID2_HBE_BIT
hex
default 0x0 if !HID2_HBE
default 0x40000 if HID2_HBE
config HID2_IWLCK
hex
default 0x0 if HID2_IWLCK_NONE
default 0x2000 if HID2_IWLCK_0
default 0x4000 if HID2_IWLCK_1
default 0x6000 if HID2_IWLCK_2
default 0x8000 if HID2_IWLCK_3
default 0xA000 if HID2_IWLCK_4
default 0xC000 if HID2_IWLCK_5
default 0xE000 if HID2_IWLCK_6
config HID2_ICWP_BIT
hex
default 0x0 if !HID2_ICWP
default 0x1000 if HID2_ICWP
config HID2_DWLCK
hex
default 0x0 if HID2_DWLCK_NONE
default 0x20 if HID2_DWLCK_0
default 0x40 if HID2_DWLCK_1
default 0x60 if HID2_DWLCK_2
default 0x80 if HID2_DWLCK_3
default 0xA0 if HID2_DWLCK_4
default 0xC0 if HID2_DWLCK_5
default 0xE0 if HID2_DWLCK_6
endmenu
endmenu

View File

@@ -0,0 +1,72 @@
#define CONFIG_SYS_HID0_FINAL ( \
CONFIG_HID0_FINAL_ABE_BIT |\
CONFIG_HID0_FINAL_CLKOUT |\
CONFIG_HID0_FINAL_DCE_BIT |\
CONFIG_HID0_FINAL_DCFI_BIT |\
CONFIG_HID0_FINAL_DECAREN_BIT |\
CONFIG_HID0_FINAL_DLOCK_BIT |\
CONFIG_HID0_FINAL_DOZE_BIT |\
CONFIG_HID0_FINAL_DPM_BIT |\
CONFIG_HID0_FINAL_EBA_BIT |\
CONFIG_HID0_FINAL_EBD_BIT |\
CONFIG_HID0_FINAL_ECLK_BIT |\
CONFIG_HID0_FINAL_ECPE_BIT |\
CONFIG_HID0_FINAL_EMCP_BIT |\
CONFIG_HID0_FINAL_FBIOB_BIT |\
CONFIG_HID0_FINAL_ICE_BIT |\
CONFIG_HID0_FINAL_ICFI_BIT |\
CONFIG_HID0_FINAL_IFEM_BIT |\
CONFIG_HID0_FINAL_ILOCK_BIT |\
CONFIG_HID0_FINAL_NAP_BIT |\
CONFIG_HID0_FINAL_NOOPTI_BIT |\
CONFIG_HID0_FINAL_PAR_BIT |\
CONFIG_HID0_FINAL_SBCLK_BIT |\
CONFIG_HID0_FINAL_SLEEP_BIT \
)
#define CONFIG_SYS_HID0_INIT ( \
CONFIG_HID0_INIT_ABE_BIT |\
CONFIG_HID0_INIT_CLKOUT |\
CONFIG_HID0_INIT_DCE_BIT |\
CONFIG_HID0_INIT_DCFI_BIT |\
CONFIG_HID0_INIT_DECAREN_BIT |\
CONFIG_HID0_INIT_DLOCK_BIT |\
CONFIG_HID0_INIT_DOZE_BIT |\
CONFIG_HID0_INIT_DPM_BIT |\
CONFIG_HID0_INIT_EBA_BIT |\
CONFIG_HID0_INIT_EBD_BIT |\
CONFIG_HID0_INIT_ECPE_BIT |\
CONFIG_HID0_INIT_EMCP_BIT |\
CONFIG_HID0_INIT_FBIOB_BIT |\
CONFIG_HID0_INIT_ICE_BIT |\
CONFIG_HID0_INIT_ICFI_BIT |\
CONFIG_HID0_INIT_IFEM_BIT |\
CONFIG_HID0_INIT_ILOCK_BIT |\
CONFIG_HID0_INIT_NAP_BIT |\
CONFIG_HID0_INIT_NOOPTI_BIT |\
CONFIG_HID0_INIT_PAR_BIT |\
CONFIG_HID0_INIT_SLEEP_BIT \
)
#ifdef CONFIG_TARGET_IDS8313
/* IDS8313 defines a reserved bit; keep to not break compatibility */
#define CONFIG_HID2_SPECIAL 0x00020000
#else
#define CONFIG_HID2_SPECIAL 0x0
#endif
#define CONFIG_SYS_HID2 ( \
CONFIG_HID2_LET_BIT |\
CONFIG_HID2_IFEB_BIT |\
CONFIG_HID2_MESISTATE_BIT |\
CONFIG_HID2_IFEC_BIT |\
CONFIG_HID2_EBQS_BIT |\
CONFIG_HID2_EBPX_BIT |\
CONFIG_HID2_ELRW_BIT |\
CONFIG_HID2_NOKS_BIT |\
CONFIG_HID2_HBE_BIT |\
CONFIG_HID2_IWLCK |\
CONFIG_HID2_ICWP_BIT |\
CONFIG_HID2_DWLCK |\
CONFIG_HID2_SPECIAL \
)

View File

@@ -0,0 +1,816 @@
menu "Reset Configuration Word"
choice
prompt "Local bus memory controller clock mode"
config LBMC_CLOCK_MODE_1_1
bool "1 : 1"
config LBMC_CLOCK_MODE_1_2
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC837X
bool "1 : 2"
endchoice
choice
prompt "DDR SDRAM memory controller clock mode"
config DDR_MC_CLOCK_MODE_1_2
bool "1 : 2"
config DDR_MC_CLOCK_MODE_1_1
depends on ARCH_MPC8315 || ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC837X
bool "1 : 1"
endchoice
if !ARCH_MPC8313 && !ARCH_MPC832X && !ARCH_MPC8349
choice
prompt "System PLL VCO division"
config SYSTEM_PLL_VCO_DIV_1
depends on !ARCH_MPC837X
bool "1"
config SYSTEM_PLL_VCO_DIV_2
bool "2"
config SYSTEM_PLL_VCO_DIV_4
depends on !ARCH_MPC831X
bool "4"
config SYSTEM_PLL_VCO_DIV_8
depends on !ARCH_MPC831X
bool "8"
endchoice
endif
choice
prompt "System PLL multiplication factor"
config SYSTEM_PLL_FACTOR_2_1
bool "2 : 1"
config SYSTEM_PLL_FACTOR_3_1
bool "3 : 1"
config SYSTEM_PLL_FACTOR_4_1
bool "4 : 1"
config SYSTEM_PLL_FACTOR_5_1
bool "5 : 1"
config SYSTEM_PLL_FACTOR_6_1
bool "6 : 1"
config SYSTEM_PLL_FACTOR_7_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "7 : 1"
config SYSTEM_PLL_FACTOR_8_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "8 : 1"
config SYSTEM_PLL_FACTOR_9_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "9 : 1"
config SYSTEM_PLL_FACTOR_10_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "10 : 1"
config SYSTEM_PLL_FACTOR_11_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "11 : 1"
config SYSTEM_PLL_FACTOR_12_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "12 : 1"
config SYSTEM_PLL_FACTOR_13_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "13 : 1"
config SYSTEM_PLL_FACTOR_14_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "14 : 1"
config SYSTEM_PLL_FACTOR_15_1
depends on ARCH_MPC8349 || ARCH_MPV8360 || ARCH_MPC837X
bool "15 : 1"
config SYSTEM_PLL_FACTOR_16_1
depends on ARCH_MPC8349 || ARCH_MPV8360
bool "16 : 1"
endchoice
config CORE_PLL_BYPASS
bool "Core PLL bypassed"
if !CORE_PLL_BYPASS
choice
prompt "Core PLL Ratio"
config CORE_PLL_RATIO_1_1
bool "1 : 1"
config CORE_PLL_RATIO_15_1
bool "1.5 : 1"
config CORE_PLL_RATIO_2_1
bool "2 : 1"
config CORE_PLL_RATIO_25_1
bool "2.5 : 1"
config CORE_PLL_RATIO_3_1
bool "3 : 1"
endchoice
choice
prompt "Core PLL VCO Divider"
config CORE_PLL_VCO_DIVIDER_2
bool "2"
config CORE_PLL_VCO_DIVIDER_4
bool "4"
config CORE_PLL_VCO_DIVIDER_8
depends on !ARCH_MPC8315
bool "8"
endchoice
endif
if MPC83XX_QUICC_ENGINE
choice
prompt "QUICC Engine PLL VCO Divider"
config QUICC_VCO_DIVIDER_2
bool "2"
config QUICC_VCO_DIVIDER_4
bool "4"
config QUICC_VCO_DIVIDER_8
depends on ARCH_MPC8309
bool "8"
endchoice
choice
prompt "QUICC Engine PLL division factor"
config QUICC_DIV_FACTOR_1
bool "1"
config QUICC_DIV_FACTOR_2
bool "2"
endchoice
choice
prompt "QUICC Engine PLL multiplication factor"
config QUICC_MULT_FACTOR_2
bool "2"
config QUICC_MULT_FACTOR_3
bool "3"
config QUICC_MULT_FACTOR_4
bool "4"
config QUICC_MULT_FACTOR_5
bool "5"
config QUICC_MULT_FACTOR_6
bool "6"
config QUICC_MULT_FACTOR_7
bool "7"
config QUICC_MULT_FACTOR_8
bool "8"
config QUICC_MULT_FACTOR_9
depends on ARCH_MPC8360
bool "9"
config QUICC_MULT_FACTOR_10
depends on ARCH_MPC8360
bool "10"
config QUICC_MULT_FACTOR_11
depends on ARCH_MPC8360
bool "11"
config QUICC_MULT_FACTOR_12
depends on ARCH_MPC8360
bool "12"
config QUICC_MULT_FACTOR_13
depends on ARCH_MPC8360
bool "13"
config QUICC_MULT_FACTOR_14
depends on ARCH_MPC8360
bool "14"
config QUICC_MULT_FACTOR_15
depends on ARCH_MPC8360
bool "15"
config QUICC_MULT_FACTOR_16
depends on ARCH_MPC8360
bool "16"
config QUICC_MULT_FACTOR_17
depends on ARCH_MPC8360
bool "17"
config QUICC_MULT_FACTOR_18
depends on ARCH_MPC8360
bool "18"
config QUICC_MULT_FACTOR_19
depends on ARCH_MPC8360
bool "19"
config QUICC_MULT_FACTOR_20
depends on ARCH_MPC8360
bool "20"
config QUICC_MULT_FACTOR_21
depends on ARCH_MPC8360
bool "21"
config QUICC_MULT_FACTOR_22
depends on ARCH_MPC8360
bool "22"
config QUICC_MULT_FACTOR_23
depends on ARCH_MPC8360
bool "23"
config QUICC_MULT_FACTOR_24
depends on ARCH_MPC8360
bool "24"
config QUICC_MULT_FACTOR_25
depends on ARCH_MPC8360
bool "25"
config QUICC_MULT_FACTOR_26
depends on ARCH_MPC8360
bool "26"
config QUICC_MULT_FACTOR_27
depends on ARCH_MPC8360
bool "27"
config QUICC_MULT_FACTOR_28
depends on ARCH_MPC8360
bool "28"
config QUICC_MULT_FACTOR_29
depends on ARCH_MPC8360
bool "29"
config QUICC_MULT_FACTOR_30
depends on ARCH_MPC8360
bool "30"
config QUICC_MULT_FACTOR_31
depends on ARCH_MPC8360
bool "31"
endchoice
endif
if MPC83XX_PCI_SUPPORT
choice
prompt "PCI host mode"
config PCI_HOST_MODE_DISABLE
bool "Disabled"
config PCI_HOST_MODE_ENABLE
bool "Enabled"
endchoice
if ARCH_MPC8349
choice
prompt "PCI 64-bit mode"
config PCI_64BIT_MODE_DISABLE
bool "Disabled"
config PCI_64BIT_MODE_ENABLE
bool "Enabled"
endchoice
endif
choice
prompt "PCI internal arbiter 1 mode"
config PCI_INT_ARBITER1_DISABLE
bool "Disabled"
config PCI_INT_ARBITER1_ENABLE
bool "Enabled"
endchoice
if ARCH_MPC8349
choice
prompt "PCI internal arbiter 2 mode"
config PCI_INT_ARBITER2_DISABLE
bool "Disabled"
config PCI_INT_ARBITER2_ENABLE
bool "Enabled"
endchoice
endif
if ARCH_MPC8360
choice
prompt "PCI clock output drive"
config PCI_CLOCK_OUTPUT_DRIVE_DISABLE
bool "Disabled"
config PCI_CLOCK_OUTPUT_DRIVE_ENABLE
bool "Enabled"
endchoice
endif
endif
choice
prompt "Core disable mode"
config CORE_DISABLE_MODE_OFF
bool "Off"
config CORE_DISABLE_MODE_ON
bool "On"
endchoice
choice
prompt "Boot Memory Space"
config BOOT_MEMORY_SPACE_HIGH
bool "High"
config BOOT_MEMORY_SPACE_LOW
bool "Low"
endchoice
choice
prompt "Boot Sequencer Configuration"
config BOOT_SEQUENCER_DISABLED
bool "Disabled"
config BOOT_SEQUENCER_NORMAL_I2C
bool "Normal I2C"
config BOOT_SEQUENCER_EXTENDED_I2C
bool "Extended I2C"
endchoice
choice
prompt "Software Watchdog"
config SOFTWARE_WATCHDOG_DISABLED
bool "Disabled"
config SOFTWARE_WATCHDOG_ENABLED
bool "Enabled"
endchoice
choice
prompt "Boot ROM interface location"
config BOOT_ROM_INTERFACE_DDR_SDRAM
bool "DDR_SDRAM"
config BOOT_ROM_INTERFACE_PCI1
depends on MPC83XX_PCI_SUPPORT
bool "PCI1"
config BOOT_ROM_INTERFACE_PCI2
depends on MPC83XX_PCI_SUPPORT && ARCH_MPC8349
bool "PCI2"
config BOOT_ROM_INTERFACE_ON_CHIP_BOOT_ROM
depends on ARCH_MPC837X
bool "PCI2"
config BOOT_ROM_INTERFACE_ESDHC
depends on ARCH_MPC8309
bool "eSDHC"
config BOOT_ROM_INTERFACE_SPI
depends on ARCH_MPC8309
bool "SPI"
config BOOT_ROM_INTERFACE_GPCM_8BIT
bool "Local bus GPCM - 8-bit ROM"
config BOOT_ROM_INTERFACE_GPCM_16BIT
bool "Local bus GPCM - 16-bit ROM"
config BOOT_ROM_INTERFACE_GPCM_32BIT
depends on ARCH_MPC8349 || ARCH_MPC8360 || ARCH_MPC837X
bool "Local bus GPCM - 32-bit ROM"
config BOOT_ROM_INTERFACE_NAND_FLASH_8BIT_SMALL
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "Local bus NAND Flash- 8-bit small page ROM"
config BOOT_ROM_INTERFACE_NAND_FLASH_8BIT_LARGE
depends on !ARCH_MPC832X && !ARCH_MPC8349 && !ARCH_MPC8360
bool "Local bus NAND Flash- 8-bit large page ROM"
endchoice
if MPC83XX_TSEC1_SUPPORT
choice
prompt "TSEC1 mode"
config TSEC1_MODE_MII
depends on !ARCH_MPC8349
bool "MII"
config TSEC1_MODE_RMII
depends on ARCH_MPC831X && !ARCH_MPC8349
bool "RMII"
config TSEC1_MODE_RGMII
bool "RGMII"
config TSEC1_MODE_RTBI
depends on ARCH_MPC831X || ARCH_MPC837X
bool "RTBI"
config TSEC1_MODE_GMII
depends on ARCH_MPC8349
bool "GMII"
config TSEC1_MODE_TBI
depends on ARCH_MPC8349
bool "TBI"
config TSEC1_MODE_SGMII
depends on ARCH_MPC831X || ARCH_MPC837X
bool "SGMII"
endchoice
endif
if MPC83XX_TSEC2_SUPPORT
choice
prompt "TSEC2 mode"
config TSEC2_MODE_MII
depends on !ARCH_MPC8349
bool "MII"
config TSEC2_MODE_RMII
depends on ARCH_MPC831X && !ARCH_MPC8349
bool "RMII"
config TSEC2_MODE_RGMII
bool "RGMII"
config TSEC2_MODE_RTBI
depends on ARCH_MPC831X || ARCH_MPC837X
bool "RTBI"
config TSEC2_MODE_GMII
depends on ARCH_MPC8349
bool "GMII"
config TSEC2_MODE_TBI
depends on ARCH_MPC8349
bool "TBI"
config TSEC2_MODE_SGMII
depends on ARCH_MPC831X || ARCH_MPC837X
bool "SGMII"
endchoice
endif
choice
prompt "True litle-endian mode"
config TRUE_LITTLE_ENDIAN_BIG_ENDIAN
bool "Big-endian"
config TRUE_LITTLE_ENDIAN_LITTLE_ENDIAN
bool "Little-endian"
endchoice
if ARCH_MPC8360
choice
prompt "Secondary DDR IO"
config SECONDARY_DDR_IO_DISABLE
bool "Disable"
config SECONDARY_DDR_IO_ENABLE
bool "Enable"
endchoice
endif
if ARCH_MPC831X || ARCH_MPC832X || ARCH_MPC8349 || ARCH_MPC8360
choice
prompt "LALE timing"
config LALE_TIMING_NORMAL
bool "Normal"
config LALE_TIMING_EARLIER
bool "Earlier"
endchoice
endif
if MPC83XX_LDP_PIN
choice
prompt "LDP pin mux state"
config LDP_PIN_MUX_STATE_1
bool "Inital value 1"
config LDP_PIN_MUX_STATE_0
bool "Inital value 0"
endchoice
endif
endmenu
config LBMC_CLOCK_MODE
int
default 0 if LBMC_CLOCK_MODE_1_1
default 1 if LBMC_CLOCK_MODE_1_2
config DDR_MC_CLOCK_MODE
int
default 1 if DDR_MC_CLOCK_MODE_1_2
default 0 if DDR_MC_CLOCK_MODE_1_1
config SYSTEM_PLL_VCO_DIV
int
default 0 if ARCH_MPC8349 || ARCH_MPC832X
default 2 if ARCH_MPC8313
default 0 if SYSTEM_PLL_VCO_DIV_2 && !ARCH_MPC8360 && !ARCH_MPC837X
default 1 if SYSTEM_PLL_VCO_DIV_4 && !ARCH_MPC8360 && !ARCH_MPC837X
default 2 if SYSTEM_PLL_VCO_DIV_8 && !ARCH_MPC8360 && !ARCH_MPC837X
default 0 if SYSTEM_PLL_VCO_DIV_4 && (ARCH_MPC8360 || ARCH_MPC837X)
default 1 if SYSTEM_PLL_VCO_DIV_8 && (ARCH_MPC8360 || ARCH_MPC837X)
default 2 if SYSTEM_PLL_VCO_DIV_2 && (ARCH_MPC8360 || ARCH_MPC837X)
default 3 if SYSTEM_PLL_VCO_DIV_1
config SYSTEM_PLL_FACTOR
int
default 2 if SYSTEM_PLL_FACTOR_2_1
default 3 if SYSTEM_PLL_FACTOR_3_1
default 4 if SYSTEM_PLL_FACTOR_4_1
default 5 if SYSTEM_PLL_FACTOR_5_1
default 6 if SYSTEM_PLL_FACTOR_6_1
default 7 if SYSTEM_PLL_FACTOR_7_1
default 8 if SYSTEM_PLL_FACTOR_8_1
default 9 if SYSTEM_PLL_FACTOR_9_1
default 10 if SYSTEM_PLL_FACTOR_10_1
default 11 if SYSTEM_PLL_FACTOR_11_1
default 12 if SYSTEM_PLL_FACTOR_12_1
default 13 if SYSTEM_PLL_FACTOR_13_1
default 14 if SYSTEM_PLL_FACTOR_14_1
default 15 if SYSTEM_PLL_FACTOR_15_1
default 0 if SYSTEM_PLL_FACTOR_16_1
config CORE_PLL_RATIO
hex
default 0x0 if CORE_PLL_BYPASS
default 0x02 if CORE_PLL_RATIO_1_1 && CORE_PLL_VCO_DIVIDER_2
default 0x22 if CORE_PLL_RATIO_1_1 && CORE_PLL_VCO_DIVIDER_4
default 0x42 if CORE_PLL_RATIO_1_1 && CORE_PLL_VCO_DIVIDER_8
default 0x03 if CORE_PLL_RATIO_15_1 && CORE_PLL_VCO_DIVIDER_2
default 0x23 if CORE_PLL_RATIO_15_1 && CORE_PLL_VCO_DIVIDER_4
default 0x43 if CORE_PLL_RATIO_15_1 && CORE_PLL_VCO_DIVIDER_8
default 0x04 if CORE_PLL_RATIO_2_1 && CORE_PLL_VCO_DIVIDER_2
default 0x24 if CORE_PLL_RATIO_2_1 && CORE_PLL_VCO_DIVIDER_4
default 0x44 if CORE_PLL_RATIO_2_1 && CORE_PLL_VCO_DIVIDER_8
default 0x05 if CORE_PLL_RATIO_25_1 && CORE_PLL_VCO_DIVIDER_2
default 0x25 if CORE_PLL_RATIO_25_1 && CORE_PLL_VCO_DIVIDER_4
default 0x45 if CORE_PLL_RATIO_25_1 && CORE_PLL_VCO_DIVIDER_8
default 0x06 if CORE_PLL_RATIO_3_1 && CORE_PLL_VCO_DIVIDER_2
default 0x26 if CORE_PLL_RATIO_3_1 && CORE_PLL_VCO_DIVIDER_4
default 0x46 if CORE_PLL_RATIO_3_1 && CORE_PLL_VCO_DIVIDER_8
config CORE_DISABLE_MODE
int
default 0 if CORE_DISABLE_MODE_OFF
default 1 if CORE_DISABLE_MODE_ON
config BOOT_MEMORY_SPACE
int
default 0 if BOOT_MEMORY_SPACE_LOW
default 1 if BOOT_MEMORY_SPACE_HIGH
config BOOT_SEQUENCER
int
default 0 if BOOT_SEQUENCER_DISABLED
default 1 if BOOT_SEQUENCER_NORMAL_I2C
default 2 if BOOT_SEQUENCER_EXTENDED_I2C
config SOFTWARE_WATCHDOG
int
default 0 if SOFTWARE_WATCHDOG_DISABLED
default 1 if SOFTWARE_WATCHDOG_ENABLED
config BOOT_ROM_INTERFACE
hex
default 0x0 if BOOT_ROM_INTERFACE_DDR_SDRAM
default 0x4 if BOOT_ROM_INTERFACE_PCI1
default 0x8 if BOOT_ROM_INTERFACE_PCI2
default 0x8 if BOOT_ROM_INTERFACE_ESDHC
default 0xc if BOOT_ROM_INTERFACE_SPI
default 0xc if BOOT_ROM_INTERFACE_ON_CHIP_BOOT_ROM
default 0x14 if BOOT_ROM_INTERFACE_GPCM_8BIT
default 0x18 if BOOT_ROM_INTERFACE_GPCM_16BIT
default 0x1c if BOOT_ROM_INTERFACE_GPCM_32BIT
default 0x5 if BOOT_ROM_INTERFACE_NAND_FLASH_8BIT_SMALL
default 0x15 if BOOT_ROM_INTERFACE_NAND_FLASH_8BIT_LARGE
config TSEC1_MODE
hex
default 0x0 if !MPC83XX_TSEC1_SUPPORT
default 0x0 if TSEC1_MODE_MII
default 0x1 if TSEC1_MODE_RMII
default 0x3 if TSEC1_MODE_RGMII && !ARCH_MPC8349
default 0x5 if TSEC1_MODE_RTBI && !ARCH_MPC8349
default 0x6 if TSEC1_MODE_SGMII
default 0x0 if TSEC1_MODE_RGMII && ARCH_MPC8349
default 0x1 if TSEC1_MODE_RTBI && ARCH_MPC8349
default 0x2 if TSEC1_MODE_GMII
default 0x3 if TSEC1_MODE_TBI
config TSEC2_MODE
hex
default 0x0 if !MPC83XX_TSEC2_SUPPORT
default 0x0 if TSEC2_MODE_MII
default 0x1 if TSEC2_MODE_RMII
default 0x3 if TSEC2_MODE_RGMII && !ARCH_MPC8349
default 0x5 if TSEC2_MODE_RTBI && !ARCH_MPC8349
default 0x6 if TSEC2_MODE_SGMII
default 0x0 if TSEC2_MODE_RGMII && ARCH_MPC8349
default 0x1 if TSEC2_MODE_RTBI && ARCH_MPC8349
default 0x2 if TSEC2_MODE_GMII
default 0x3 if TSEC2_MODE_TBI
config SECONDARY_DDR_IO
int
default 0 if !ARCH_MPC8360
default 0 if SECONDARY_DDR_IO_DISABLE
default 1 if SECONDARY_DDR_IO_ENABLE
config TRUE_LITTLE_ENDIAN
int
default 0 if TRUE_LITTLE_ENDIAN_BIG_ENDIAN
default 1 if TRUE_LITTLE_ENDIAN_LITTLE_ENDIAN
config LALE_TIMING
int
default 0 if ARCH_MPC830X || ARCH_MPC837X
default 0 if LALE_TIMING_NORMAL
default 1 if LALE_TIMING_EARLIER
config LDP_PIN_MUX_STATE
int
default 0 if !MPC83XX_LDP_PIN
default 0 if LDP_PIN_MUX_STATE_1
default 1 if LDP_PIN_MUX_STATE_0
config QUICC_VCO_DIVIDER
int
default 0 if !MPC83XX_QUICC_ENGINE
default 0 if QUICC_VCO_DIVIDER_2 && ARCH_MPC8309
default 1 if QUICC_VCO_DIVIDER_4 && ARCH_MPC8309
default 2 if QUICC_VCO_DIVIDER_8 && ARCH_MPC8309
default 2 if QUICC_VCO_DIVIDER_2 && (ARCH_MPC832X || ARCH_MPC8360)
default 0 if QUICC_VCO_DIVIDER_4 && (ARCH_MPC832X || ARCH_MPC8360)
default 1 if QUICC_VCO_DIVIDER_8 && ARCH_MPC8360
config QUICC_DIV_FACTOR
int
default 0 if !MPC83XX_QUICC_ENGINE
default 0 if QUICC_DIV_FACTOR_1
default 1 if QUICC_DIV_FACTOR_2
config QUICC_MULT_FACTOR
int
default 0 if !MPC83XX_QUICC_ENGINE
default 2 if QUICC_MULT_FACTOR_2
default 3 if QUICC_MULT_FACTOR_3
default 4 if QUICC_MULT_FACTOR_4
default 5 if QUICC_MULT_FACTOR_5
default 6 if QUICC_MULT_FACTOR_6
default 7 if QUICC_MULT_FACTOR_7
default 8 if QUICC_MULT_FACTOR_8
default 9 if QUICC_MULT_FACTOR_9
default 10 if QUICC_MULT_FACTOR_10
default 11 if QUICC_MULT_FACTOR_11
default 12 if QUICC_MULT_FACTOR_12
default 13 if QUICC_MULT_FACTOR_13
default 14 if QUICC_MULT_FACTOR_14
default 15 if QUICC_MULT_FACTOR_15
default 16 if QUICC_MULT_FACTOR_16
default 17 if QUICC_MULT_FACTOR_17
default 18 if QUICC_MULT_FACTOR_18
default 19 if QUICC_MULT_FACTOR_19
default 20 if QUICC_MULT_FACTOR_20
default 21 if QUICC_MULT_FACTOR_21
default 22 if QUICC_MULT_FACTOR_22
default 23 if QUICC_MULT_FACTOR_23
default 24 if QUICC_MULT_FACTOR_24
default 25 if QUICC_MULT_FACTOR_25
default 26 if QUICC_MULT_FACTOR_26
default 27 if QUICC_MULT_FACTOR_27
default 28 if QUICC_MULT_FACTOR_28
default 29 if QUICC_MULT_FACTOR_29
default 30 if QUICC_MULT_FACTOR_30
default 31 if QUICC_MULT_FACTOR_31
config PCI_HOST_MODE
int
default 0 if !MPC83XX_PCI_SUPPORT && !ARCH_MPC8308
default 0 if PCI_HOST_MODE_DISABLE
default 1 if PCI_HOST_MODE_ENABLE || ARCH_MPC8308 # MPC8308 needs this bit set regardless
config PCI_64BIT_MODE
int
default 0 if !ARCH_MPC8349
default 0 if PCI_64BIT_MODE_DISABLE
default 1 if PCI_64BIT_MODE_ENABLE
config PCI_INT_ARBITER1
int
default 0 if !MPC83XX_PCI_SUPPORT && !ARCH_MPC8308
default 0 if PCI_INT_ARBITER1_DISABLE
default 1 if PCI_INT_ARBITER1_ENABLE || ARCH_MPC8308 # MPC8308 needs this bit set regardless
config PCI_INT_ARBITER2
int
default 0 if !ARCH_MPC8349
default 0 if PCI_INT_ARBITER2_DISABLE
default 1 if PCI_INT_ARBITER2_ENABLE
config PCI_CLOCK_OUTPUT_DRIVE
int
default 0 if !ARCH_MPC8360
default 0 if PCI_CLOCK_OUTPUT_DRIVE_DISABLE
default 1 if PCI_CLOCK_OUTPUT_DRIVE_ENABLE

View File

@@ -0,0 +1,37 @@
#ifdef CONFIG_ARCH_MPC8349
#define TSEC1_MODE_SHIFT 17
#define TSEC2_MODE_SHIFT 19
#else
#define TSEC1_MODE_SHIFT 18
#define TSEC2_MODE_SHIFT 21
#endif
#define CONFIG_SYS_HRCW_LOW (\
(CONFIG_LBMC_CLOCK_MODE << (31 - 0)) |\
(CONFIG_DDR_MC_CLOCK_MODE << (31 - 1)) |\
(CONFIG_SYSTEM_PLL_VCO_DIV << (31 - 3)) |\
(CONFIG_SYSTEM_PLL_FACTOR << (31 - 7)) |\
(CONFIG_CORE_PLL_RATIO << (31 - 15)) |\
(CONFIG_QUICC_VCO_DIVIDER << (31 - 25)) |\
(CONFIG_QUICC_DIV_FACTOR << (31 - 26)) |\
(CONFIG_QUICC_MULT_FACTOR << (31 - 31)) \
)
#define CONFIG_SYS_HRCW_HIGH (\
(CONFIG_PCI_HOST_MODE << (31 - 0)) |\
(CONFIG_PCI_64BIT_MODE << (31 - 1)) |\
(CONFIG_PCI_INT_ARBITER1 << (31 - 2)) |\
(CONFIG_PCI_INT_ARBITER2 << (31 - 3)) |\
(CONFIG_PCI_CLOCK_OUTPUT_DRIVE << (31 - 3)) |\
(CONFIG_CORE_DISABLE_MODE << (31 - 4)) |\
(CONFIG_BOOT_MEMORY_SPACE << (31 - 5)) |\
(CONFIG_BOOT_SEQUENCER << (31 - 7)) |\
(CONFIG_SOFTWARE_WATCHDOG << (31 - 8)) |\
(CONFIG_BOOT_ROM_INTERFACE << (31 - 13)) |\
(CONFIG_TSEC1_MODE << (31 - TSEC1_MODE_SHIFT)) |\
(CONFIG_TSEC2_MODE << (31 - TSEC2_MODE_SHIFT)) |\
(CONFIG_SECONDARY_DDR_IO << (31 - 27)) |\
(CONFIG_TRUE_LITTLE_ENDIAN << (31 - 28)) |\
(CONFIG_LALE_TIMING << (31 - 29)) |\
(CONFIG_LDP_PIN_MUX_STATE << (31 - 30)) \
)

View File

@@ -0,0 +1,6 @@
menu "Initial register configuration"
source "arch/powerpc/cpu/mpc83xx/initreg/Kconfig.spcr"
source "arch/powerpc/cpu/mpc83xx/initreg/Kconfig.lcrr"
endmenu

View File

@@ -0,0 +1,139 @@
menu "LCRR - Clock Ratio Register register"
if !ARCH_MPC8309 && !ARCH_MPC831X && !ARCH_MPC832X
choice
prompt "DLL bypass"
config LCRR_DBYP_UNSET
bool "Don't set value"
config LCRR_DBYP_PLL_ENABLED
bool "PLL enabled"
config LCRR_DBYP_PLL_BYPASSED
bool "PLL bypassed"
endchoice
endif
if ARCH_MPC834X || ARCH_MPC8360
choice
prompt "Additional delay cycles for SDRAM control signals"
config LCRR_BUFCMDC_UNSET
bool "Don't set value"
config LCRR_BUFCMDC_4
bool "4"
config LCRR_BUFCMDC_1
bool "1"
config LCRR_BUFCMDC_2
bool "2"
config LCRR_BUFCMDC_3
bool "3"
endchoice
choice
prompt "Extended CAS latency"
config LCRR_ECL_UNSET
bool "Don't set value"
config LCRR_ECL_4
bool "4"
config LCRR_ECL_5
bool "5"
config LCRR_ECL_6
bool "6"
config LCRR_ECL_7
bool "7"
endchoice
endif # ARCH_MPC834X || ARCH_MPC8360
if !ARCH_MPC8308
choice
prompt "External address delay cycles"
config LCRR_EADC_UNSET
bool "Don't set value"
config LCRR_EADC_4
bool "4"
config LCRR_EADC_1
bool "1"
config LCRR_EADC_2
bool "2"
config LCRR_EADC_3
bool "3"
endchoice
endif # !ARCH_MPC8308
choice
prompt "System clock divider"
config LCRR_CLKDIV_UNSET
bool "Don't set value"
config LCRR_CLKDIV_2
bool "2"
config LCRR_CLKDIV_4
bool "4"
config LCRR_CLKDIV_8
bool "8"
endchoice
config LCRR_DBYP
hex
default 0x0 if LCRR_DBYP_UNSET || LCRR_DBYP_PLL_ENABLED
default 0x80000000 if LCRR_DBYP_PLL_BYPASSED
config LCRR_BUFCMDC
hex
default 0x0 if LCRR_BUFCMDC_4 || LCRR_BUFCMDC_UNSET
default 0x10000000 if LCRR_BUFCMDC_1
default 0x20000000 if LCRR_BUFCMDC_2
default 0x30000000 if LCRR_BUFCMDC_3
config LCRR_ECL
hex
default 0x0 if LCRR_ECL_4 || LCRR_ECL_UNSET
default 0x1000000 if LCRR_ECL_5
default 0x2000000 if LCRR_ECL_6
default 0x3000000 if LCRR_ECL_7
config LCRR_EADC
hex
default 0x0 if LCRR_EADC_4 || LCRR_EADC_UNSET
default 0x10000 if LCRR_EADC_1
default 0x20000 if LCRR_EADC_2
default 0x30000 if LCRR_EADC_3
config LCRR_CLKDIV
hex
default 0x0 if LCRR_CLKDIV_UNSET
default 0x2 if LCRR_CLKDIV_2
default 0x4 if LCRR_CLKDIV_4
default 0x8 if LCRR_CLKDIV_8
endmenu

View File

@@ -0,0 +1,115 @@
menu "SPCR - System priority and configuration register"
choice
prompt "Optimize"
config SPCR_OPT_UNSET
bool "Don't set value"
config SPCR_OPT_NONE
bool "No performance enhancement"
config SPCR_OPT_SPEC_READ
bool "Performance enhancement by speculative read"
endchoice
if ARCH_MPC8308 || ARCH_MPC831X || ARCH_MPC837X
choice
prompt "TSEC emergency priority"
config SPCR_TSECEP_UNSET
bool "Don't set value"
config SPCR_TSECEP_0
bool "Level 0 (lowest priority)"
config SPCR_TSECEP_1
bool "Level 1"
config SPCR_TSECEP_2
bool "Level 2"
config SPCR_TSECEP_3
bool "Level 3 (highest priority)"
endchoice
endif
if ARCH_MPC8349
choice
prompt "TSEC1 emergency priority"
config SPCR_TSEC1EP_UNSET
bool "Don't set value"
config SPCR_TSEC1EP_0
bool "Level 0 (lowest priority)"
config SPCR_TSEC1EP_1
bool "Level 1"
config SPCR_TSEC1EP_2
bool "Level 2"
config SPCR_TSEC1EP_3
bool "Level 3 (highest priority)"
endchoice
choice
prompt "TSEC2 emergency priority"
config SPCR_TSEC2EP_UNSET
bool "Don't set value"
config SPCR_TSEC2EP_0
bool "Level 0 (lowest priority)"
config SPCR_TSEC2EP_1
bool "Level 1"
config SPCR_TSEC2EP_2
bool "Level 2"
config SPCR_TSEC2EP_3
bool "Level 3 (highest priority)"
endchoice
endif
config SPCR_OPT
hex
default 0x0 if SPCR_OPT_UNSET
default 0x0 if SPCR_OPT_NONE
default 0x800000 if SPCR_OPT_SPEC_READ
config SPCR_TSECEP
hex
default 0x0 if SPCR_TSECEP_UNSET
default 0x0 if SPCR_TSECEP_0
default 0x100 if SPCR_TSECEP_1
default 0x200 if SPCR_TSECEP_2
default 0x300 if SPCR_TSECEP_3
config SPCR_TSEC1EP
hex
default 0x0 if SPCR_TSEC1EP_UNSET
default 0x0 if SPCR_TSEC1EP_0
default 0x100 if SPCR_TSEC1EP_1
default 0x200 if SPCR_TSEC1EP_2
default 0x300 if SPCR_TSEC1EP_3
config SPCR_TSEC2EP
hex
default 0x0 if SPCR_TSEC2EP_UNSET
default 0x0 if SPCR_TSEC2EP_0
default 0x1 if SPCR_TSEC2EP_1
default 0x2 if SPCR_TSEC2EP_2
default 0x3 if SPCR_TSEC2EP_3
endmenu

View File

@@ -0,0 +1,79 @@
#define SPCR_PCIHPE_MASK 0x10000000
#define SPCR_PCIPR_MASK 0x03000000
#define SPCR_OPT_MASK 0x00800000
#define SPCR_TBEN_MASK 0x00400000
#define SPCR_COREPR_MASK 0x00300000
#define SPCR_TSEC1DP_MASK 0x00003000
#define SPCR_TSEC1BDP_MASK 0x00000C00
#define SPCR_TSEC1EP_MASK 0x00000300
#define SPCR_TSEC2DP_MASK 0x00000030
#define SPCR_TSEC2BDP_MASK 0x0000000C
#define SPCR_TSEC2EP_MASK 0x00000003
#define SPCR_TSECDP_MASK 0x00003000
#define SPCR_TSECBDP_MASK 0x00000C00
#define SPCR_TSECEP_MASK 0x00000300
const __be32 spcr_mask =
#if defined(CONFIG_SPCR_OPT) && !defined(CONFIG_SPCR_OPT_UNSET)
SPCR_OPT_MASK |
#endif
#if defined(CONFIG_SPCR_TSECEP) && !defined(CONFIG_SPCR_TSECEP_UNSET)
SPCR_TSECEP_MASK |
#endif
#if defined(CONFIG_SPCR_TSEC1EP) && !defined(CONFIG_SPCR_TSEC1EP_UNSET)
SPCR_TSEC1EP_MASK |
#endif
#if defined(CONFIG_SPCR_TSEC2EP) && !defined(CONFIG_SPCR_TSEC2EP_UNSET)
SPCR_TSEC2EP_MASK |
#endif
0;
const __be32 spcr_val =
#if defined(CONFIG_SPCR_OPT) && !defined(CONFIG_SPCR_OPT_UNSET)
CONFIG_SPCR_OPT |
#endif
#if defined(CONFIG_SPCR_TSECEP) && !defined(CONFIG_SPCR_TSECEP_UNSET)
CONFIG_SPCR_TSECEP |
#endif
#if defined(CONFIG_SPCR_TSEC1EP) && !defined(CONFIG_SPCR_TSEC1EP_UNSET)
CONFIG_SPCR_TSEC1EP |
#endif
#if defined(CONFIG_SPCR_TSEC2EP) && !defined(CONFIG_SPCR_TSEC2EP_UNSET)
CONFIG_SPCR_TSEC2EP |
#endif
0;
const __be32 lcrr_mask =
#if defined(CONFIG_LCRR_DBYP) && !defined(CONFIG_LCRR_DBYP_UNSET)
LCRR_DBYP |
#endif
#if defined(CONFIG_LCRR_BUFCMDC) && !defined(CONFIG_LCRR_BUFCMDC_UNSET)
LCRR_BUFCMDC |
#endif
#if defined(CONFIG_LCRR_ECL) && !defined(CONFIG_LCRR_ECL_UNSET)
LCRR_ECL |
#endif
#if defined(CONFIG_LCRR_EADC) && !defined(CONFIG_LCRR_EADC_UNSET)
LCRR_EADC |
#endif
#if defined(CONFIG_LCRR_CLKDIV) && !defined(CONFIG_LCRR_CLKDIV_UNSET)
LCRR_CLKDIV |
#endif
0;
const __be32 lcrr_val =
#if defined(CONFIG_LCRR_DBYP) && !defined(CONFIG_LCRR_DBYP_UNSET)
CONFIG_LCRR_DBYP |
#endif
#if defined(CONFIG_LCRR_BUFCMDC) && !defined(CONFIG_LCRR_BUFCMDC_UNSET)
CONFIG_LCRR_BUFCMDC |
#endif
#if defined(CONFIG_LCRR_ECL) && !defined(CONFIG_LCRR_ECL_UNSET)
CONFIG_LCRR_ECL |
#endif
#if defined(CONFIG_LCRR_EADC) && !defined(CONFIG_LCRR_EADC_UNSET)
CONFIG_LCRR_EADC |
#endif
#if defined(CONFIG_LCRR_CLKDIV) && !defined(CONFIG_LCRR_CLKDIV_UNSET)
CONFIG_LCRR_CLKDIV |
#endif
0;

View File

@@ -0,0 +1,519 @@
menu "LBLAW setup"
choice
prompt "NAND LAWBAR for NAND SPL"
config NAND_LBLAWBAR_PRELIM_NONE
bool "None"
config NAND_LBLAWBAR_PRELIM_0
bool "0"
depends on LBLAW0
config NAND_LBLAWBAR_PRELIM_1
bool "1"
depends on LBLAW1
config NAND_LBLAWBAR_PRELIM_2
bool "2"
depends on LBLAW2
config NAND_LBLAWBAR_PRELIM_3
bool "3"
depends on LBLAW3
endchoice
menuconfig LBLAW0
bool "LBLAW0"
if LBLAW0
config LBLAW0_ENABLE
bool "Window enable"
default "y"
if !LBLAW0_ENABLE
config LBLAW0_BASE
hex
default 0x0
endif
if LBLAW0_ENABLE
config LBLAW0_NAME
string "Identifier"
config LBLAW0_BASE
hex "Window base"
choice
prompt "Window size"
config LBLAW0_LENGTH_4_KBYTES
bool "4 kb"
config LBLAW0_LENGTH_8_KBYTES
bool "8 kb"
config LBLAW0_LENGTH_16_KBYTES
bool "16 kb"
config LBLAW0_LENGTH_32_KBYTES
bool "32 kb"
config LBLAW0_LENGTH_64_KBYTES
bool "64 kb"
config LBLAW0_LENGTH_128_KBYTES
bool "128 kb"
config LBLAW0_LENGTH_256_KBYTES
bool "256 kb"
config LBLAW0_LENGTH_512_KBYTES
bool "512 kb"
config LBLAW0_LENGTH_1_MBYTES
bool "1 mb"
config LBLAW0_LENGTH_2_MBYTES
bool "2 mb"
config LBLAW0_LENGTH_4_MBYTES
bool "4 mb"
config LBLAW0_LENGTH_8_MBYTES
bool "8 mb"
config LBLAW0_LENGTH_16_MBYTES
bool "16 mb"
config LBLAW0_LENGTH_32_MBYTES
bool "32 mb"
config LBLAW0_LENGTH_64_MBYTES
bool "64 mb"
config LBLAW0_LENGTH_128_MBYTES
bool "128 mb"
config LBLAW0_LENGTH_256_MBYTES
bool "256 mb"
config LBLAW0_LENGTH_512_MBYTES
bool "512 mb"
config LBLAW0_LENGTH_1_GBYTES
bool "1 gb"
config LBLAW0_LENGTH_2_GBYTES
bool "2 gb"
endchoice
endif # LBLAW0_ENABLE
endif # LBLAW0
config LBLAW0_ENABLE_BIT
hex
default 0x0 if !LBLAW0_ENABLE
default 0x80000000 if LBLAW0_ENABLE
config LBLAW0_LENGTH
hex
default 0x0 if !LBLAW0_ENABLE
default 0x0000000B if LBLAW0_LENGTH_4_KBYTES
default 0x0000000C if LBLAW0_LENGTH_8_KBYTES
default 0x0000000D if LBLAW0_LENGTH_16_KBYTES
default 0x0000000E if LBLAW0_LENGTH_32_KBYTES
default 0x0000000F if LBLAW0_LENGTH_64_KBYTES
default 0x00000010 if LBLAW0_LENGTH_128_KBYTES
default 0x00000011 if LBLAW0_LENGTH_256_KBYTES
default 0x00000012 if LBLAW0_LENGTH_512_KBYTES
default 0x00000013 if LBLAW0_LENGTH_1_MBYTES
default 0x00000014 if LBLAW0_LENGTH_2_MBYTES
default 0x00000015 if LBLAW0_LENGTH_4_MBYTES
default 0x00000016 if LBLAW0_LENGTH_8_MBYTES
default 0x00000017 if LBLAW0_LENGTH_16_MBYTES
default 0x00000018 if LBLAW0_LENGTH_32_MBYTES
default 0x00000019 if LBLAW0_LENGTH_64_MBYTES
default 0x0000001A if LBLAW0_LENGTH_128_MBYTES
default 0x0000001B if LBLAW0_LENGTH_256_MBYTES
default 0x0000001C if LBLAW0_LENGTH_512_MBYTES
default 0x0000001D if LBLAW0_LENGTH_1_GBYTES
default 0x0000001E if LBLAW0_LENGTH_2_GBYTES
menuconfig LBLAW1
bool "LBLAW1"
if LBLAW1
config LBLAW1_ENABLE
bool "Window enable"
default "y"
if !LBLAW1_ENABLE
config LBLAW1_BASE
hex
default 0x0
endif
if LBLAW1_ENABLE
config LBLAW1_NAME
string "Identifier"
config LBLAW1_BASE
hex "Window base"
choice
prompt "Window size"
config LBLAW1_LENGTH_4_KBYTES
bool "4 kb"
config LBLAW1_LENGTH_8_KBYTES
bool "8 kb"
config LBLAW1_LENGTH_16_KBYTES
bool "16 kb"
config LBLAW1_LENGTH_32_KBYTES
bool "32 kb"
config LBLAW1_LENGTH_64_KBYTES
bool "64 kb"
config LBLAW1_LENGTH_128_KBYTES
bool "128 kb"
config LBLAW1_LENGTH_256_KBYTES
bool "256 kb"
config LBLAW1_LENGTH_512_KBYTES
bool "512 kb"
config LBLAW1_LENGTH_1_MBYTES
bool "1 mb"
config LBLAW1_LENGTH_2_MBYTES
bool "2 mb"
config LBLAW1_LENGTH_4_MBYTES
bool "4 mb"
config LBLAW1_LENGTH_8_MBYTES
bool "8 mb"
config LBLAW1_LENGTH_16_MBYTES
bool "16 mb"
config LBLAW1_LENGTH_32_MBYTES
bool "32 mb"
config LBLAW1_LENGTH_64_MBYTES
bool "64 mb"
config LBLAW1_LENGTH_128_MBYTES
bool "128 mb"
config LBLAW1_LENGTH_256_MBYTES
bool "256 mb"
config LBLAW1_LENGTH_512_MBYTES
bool "512 mb"
config LBLAW1_LENGTH_1_GBYTES
bool "1 gb"
config LBLAW1_LENGTH_2_GBYTES
bool "2 gb"
endchoice
endif # LBLAW1_ENABLE
endif # LBLAW1
config LBLAW1_ENABLE_BIT
hex
default 0x0 if !LBLAW1_ENABLE
default 0x80000000 if LBLAW1_ENABLE
config LBLAW1_LENGTH
hex
default 0x0 if !LBLAW1_ENABLE
default 0x0000000B if LBLAW1_LENGTH_4_KBYTES
default 0x0000000C if LBLAW1_LENGTH_8_KBYTES
default 0x0000000D if LBLAW1_LENGTH_16_KBYTES
default 0x0000000E if LBLAW1_LENGTH_32_KBYTES
default 0x0000000F if LBLAW1_LENGTH_64_KBYTES
default 0x00000010 if LBLAW1_LENGTH_128_KBYTES
default 0x00000011 if LBLAW1_LENGTH_256_KBYTES
default 0x00000012 if LBLAW1_LENGTH_512_KBYTES
default 0x00000013 if LBLAW1_LENGTH_1_MBYTES
default 0x00000014 if LBLAW1_LENGTH_2_MBYTES
default 0x00000015 if LBLAW1_LENGTH_4_MBYTES
default 0x00000016 if LBLAW1_LENGTH_8_MBYTES
default 0x00000017 if LBLAW1_LENGTH_16_MBYTES
default 0x00000018 if LBLAW1_LENGTH_32_MBYTES
default 0x00000019 if LBLAW1_LENGTH_64_MBYTES
default 0x0000001A if LBLAW1_LENGTH_128_MBYTES
default 0x0000001B if LBLAW1_LENGTH_256_MBYTES
default 0x0000001C if LBLAW1_LENGTH_512_MBYTES
default 0x0000001D if LBLAW1_LENGTH_1_GBYTES
default 0x0000001E if LBLAW1_LENGTH_2_GBYTES
menuconfig LBLAW2
bool "LBLAW2"
if LBLAW2
config LBLAW2_ENABLE
bool "Window enable"
default "y"
if !LBLAW2_ENABLE
config LBLAW2_BASE
hex
default 0x0
endif
if LBLAW2_ENABLE
config LBLAW2_NAME
string "Identifier"
config LBLAW2_BASE
hex "Window base"
choice
prompt "Window size"
config LBLAW2_LENGTH_4_KBYTES
bool "4 kb"
config LBLAW2_LENGTH_8_KBYTES
bool "8 kb"
config LBLAW2_LENGTH_16_KBYTES
bool "16 kb"
config LBLAW2_LENGTH_32_KBYTES
bool "32 kb"
config LBLAW2_LENGTH_64_KBYTES
bool "64 kb"
config LBLAW2_LENGTH_128_KBYTES
bool "128 kb"
config LBLAW2_LENGTH_256_KBYTES
bool "256 kb"
config LBLAW2_LENGTH_512_KBYTES
bool "512 kb"
config LBLAW2_LENGTH_1_MBYTES
bool "1 mb"
config LBLAW2_LENGTH_2_MBYTES
bool "2 mb"
config LBLAW2_LENGTH_4_MBYTES
bool "4 mb"
config LBLAW2_LENGTH_8_MBYTES
bool "8 mb"
config LBLAW2_LENGTH_16_MBYTES
bool "16 mb"
config LBLAW2_LENGTH_32_MBYTES
bool "32 mb"
config LBLAW2_LENGTH_64_MBYTES
bool "64 mb"
config LBLAW2_LENGTH_128_MBYTES
bool "128 mb"
config LBLAW2_LENGTH_256_MBYTES
bool "256 mb"
config LBLAW2_LENGTH_512_MBYTES
bool "512 mb"
config LBLAW2_LENGTH_1_GBYTES
bool "1 gb"
config LBLAW2_LENGTH_2_GBYTES
bool "2 gb"
endchoice
endif # LBLAW2_ENABLE
endif # LBLAW2
config LBLAW2_ENABLE_BIT
hex
default 0x0 if !LBLAW2_ENABLE
default 0x80000000 if LBLAW2_ENABLE
config LBLAW2_LENGTH
hex
default 0x0 if !LBLAW2_ENABLE
default 0x0000000B if LBLAW2_LENGTH_4_KBYTES
default 0x0000000C if LBLAW2_LENGTH_8_KBYTES
default 0x0000000D if LBLAW2_LENGTH_16_KBYTES
default 0x0000000E if LBLAW2_LENGTH_32_KBYTES
default 0x0000000F if LBLAW2_LENGTH_64_KBYTES
default 0x00000010 if LBLAW2_LENGTH_128_KBYTES
default 0x00000011 if LBLAW2_LENGTH_256_KBYTES
default 0x00000012 if LBLAW2_LENGTH_512_KBYTES
default 0x00000013 if LBLAW2_LENGTH_1_MBYTES
default 0x00000014 if LBLAW2_LENGTH_2_MBYTES
default 0x00000015 if LBLAW2_LENGTH_4_MBYTES
default 0x00000016 if LBLAW2_LENGTH_8_MBYTES
default 0x00000017 if LBLAW2_LENGTH_16_MBYTES
default 0x00000018 if LBLAW2_LENGTH_32_MBYTES
default 0x00000019 if LBLAW2_LENGTH_64_MBYTES
default 0x0000001A if LBLAW2_LENGTH_128_MBYTES
default 0x0000001B if LBLAW2_LENGTH_256_MBYTES
default 0x0000001C if LBLAW2_LENGTH_512_MBYTES
default 0x0000001D if LBLAW2_LENGTH_1_GBYTES
default 0x0000001E if LBLAW2_LENGTH_2_GBYTES
menuconfig LBLAW3
bool "LBLAW3"
if LBLAW3
config LBLAW3_ENABLE
bool "Window enable"
default "y"
if !LBLAW3_ENABLE
config LBLAW3_BASE
hex
default 0x0
endif
if LBLAW3_ENABLE
config LBLAW3_NAME
string "Identifier"
config LBLAW3_BASE
hex "Window base"
choice
prompt "Window size"
config LBLAW3_LENGTH_4_KBYTES
bool "4 kb"
config LBLAW3_LENGTH_8_KBYTES
bool "8 kb"
config LBLAW3_LENGTH_16_KBYTES
bool "16 kb"
config LBLAW3_LENGTH_32_KBYTES
bool "32 kb"
config LBLAW3_LENGTH_64_KBYTES
bool "64 kb"
config LBLAW3_LENGTH_128_KBYTES
bool "128 kb"
config LBLAW3_LENGTH_256_KBYTES
bool "256 kb"
config LBLAW3_LENGTH_512_KBYTES
bool "512 kb"
config LBLAW3_LENGTH_1_MBYTES
bool "1 mb"
config LBLAW3_LENGTH_2_MBYTES
bool "2 mb"
config LBLAW3_LENGTH_4_MBYTES
bool "4 mb"
config LBLAW3_LENGTH_8_MBYTES
bool "8 mb"
config LBLAW3_LENGTH_16_MBYTES
bool "16 mb"
config LBLAW3_LENGTH_32_MBYTES
bool "32 mb"
config LBLAW3_LENGTH_64_MBYTES
bool "64 mb"
config LBLAW3_LENGTH_128_MBYTES
bool "128 mb"
config LBLAW3_LENGTH_256_MBYTES
bool "256 mb"
config LBLAW3_LENGTH_512_MBYTES
bool "512 mb"
config LBLAW3_LENGTH_1_GBYTES
bool "1 gb"
config LBLAW3_LENGTH_2_GBYTES
bool "2 gb"
endchoice
endif # LBLAW3_ENABLE
endif # LBLAW3
config LBLAW3_ENABLE_BIT
hex
default 0x0 if !LBLAW3_ENABLE
default 0x80000000 if LBLAW3_ENABLE
config LBLAW3_LENGTH
hex
default 0x0 if !LBLAW3_ENABLE
default 0x0000000B if LBLAW3_LENGTH_4_KBYTES
default 0x0000000C if LBLAW3_LENGTH_8_KBYTES
default 0x0000000D if LBLAW3_LENGTH_16_KBYTES
default 0x0000000E if LBLAW3_LENGTH_32_KBYTES
default 0x0000000F if LBLAW3_LENGTH_64_KBYTES
default 0x00000010 if LBLAW3_LENGTH_128_KBYTES
default 0x00000011 if LBLAW3_LENGTH_256_KBYTES
default 0x00000012 if LBLAW3_LENGTH_512_KBYTES
default 0x00000013 if LBLAW3_LENGTH_1_MBYTES
default 0x00000014 if LBLAW3_LENGTH_2_MBYTES
default 0x00000015 if LBLAW3_LENGTH_4_MBYTES
default 0x00000016 if LBLAW3_LENGTH_8_MBYTES
default 0x00000017 if LBLAW3_LENGTH_16_MBYTES
default 0x00000018 if LBLAW3_LENGTH_32_MBYTES
default 0x00000019 if LBLAW3_LENGTH_64_MBYTES
default 0x0000001A if LBLAW3_LENGTH_128_MBYTES
default 0x0000001B if LBLAW3_LENGTH_256_MBYTES
default 0x0000001C if LBLAW3_LENGTH_512_MBYTES
default 0x0000001D if LBLAW3_LENGTH_1_GBYTES
default 0x0000001E if LBLAW3_LENGTH_2_GBYTES
endmenu

View File

@@ -0,0 +1,55 @@
#if defined(CONFIG_LBLAW0)
#define CONFIG_SYS_LBLAWBAR0_PRELIM \
CONFIG_LBLAW0_BASE
#define CONFIG_SYS_LBLAWAR0_PRELIM (\
CONFIG_LBLAW0_ENABLE_BIT |\
CONFIG_LBLAW0_LENGTH \
)
#endif
#if defined(CONFIG_LBLAW1)
#define CONFIG_SYS_LBLAWBAR1_PRELIM \
CONFIG_LBLAW1_BASE
#define CONFIG_SYS_LBLAWAR1_PRELIM (\
CONFIG_LBLAW1_ENABLE_BIT |\
CONFIG_LBLAW1_LENGTH \
)
#endif
#if defined(CONFIG_LBLAW2)
#define CONFIG_SYS_LBLAWBAR2_PRELIM \
CONFIG_LBLAW2_BASE
#define CONFIG_SYS_LBLAWAR2_PRELIM (\
CONFIG_LBLAW2_ENABLE_BIT |\
CONFIG_LBLAW2_LENGTH \
)
#endif
#if defined(CONFIG_LBLAW3)
#define CONFIG_SYS_LBLAWBAR3_PRELIM \
CONFIG_LBLAW3_BASE
#define CONFIG_SYS_LBLAWAR3_PRELIM (\
CONFIG_LBLAW3_ENABLE_BIT |\
CONFIG_LBLAW3_LENGTH \
)
#endif
#ifdef CONFIG_NAND_LBLAWBAR_PRELIM_0
#define CONFIG_SYS_NAND_LBLAWBAR_PRELIM CONFIG_SYS_LBLAWBAR0_PRELIM
#define CONFIG_SYS_NAND_LBLAWAR_PRELIM CONFIG_SYS_LBLAWAR0_PRELIM
#endif
#ifdef CONFIG_NAND_LBLAWBAR_PRELIM_1
#define CONFIG_SYS_NAND_LBLAWBAR_PRELIM CONFIG_SYS_LBLAWBAR1_PRELIM
#define CONFIG_SYS_NAND_LBLAWAR_PRELIM CONFIG_SYS_LBLAWAR1_PRELIM
#endif
#ifdef CONFIG_NAND_LBLAWBAR_PRELIM_2
#define CONFIG_SYS_NAND_LBLAWBAR_PRELIM CONFIG_SYS_LBLAWBAR2_PRELIM
#define CONFIG_SYS_NAND_LBLAWAR_PRELIM CONFIG_SYS_LBLAWAR2_PRELIM
#endif
#ifdef CONFIG_NAND_LBLAWBAR_PRELIM_3
#define CONFIG_SYS_NAND_LBLAWBAR_PRELIM CONFIG_SYS_LBLAWBAR3_PRELIM
#define CONFIG_SYS_NAND_LBLAWAR_PRELIM CONFIG_SYS_LBLAWAR3_PRELIM
#endif

View File

@@ -174,6 +174,41 @@ static void mpc83xx_pcie_register_hose(int bus, struct pci_region *reg,
#endif /* CONFIG_83XX_GENERIC_PCIE_REGISTER_HOSES */
int get_pcie_clk(int index)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
u32 pci_sync_in;
u8 spmf;
u8 clkin_div;
u32 sccr;
u32 csb_clk;
u32 testval;
clkin_div = ((im->clk.spmr & SPMR_CKID) >> SPMR_CKID_SHIFT);
sccr = im->clk.sccr;
pci_sync_in = CONFIG_SYS_CLK_FREQ / (1 + clkin_div);
spmf = (im->clk.spmr & SPMR_SPMF) >> SPMR_SPMF_SHIFT;
csb_clk = pci_sync_in * (1 + clkin_div) * spmf;
if (index)
testval = (sccr & SCCR_PCIEXP2CM) >> SCCR_PCIEXP2CM_SHIFT;
else
testval = (sccr & SCCR_PCIEXP1CM) >> SCCR_PCIEXP1CM_SHIFT;
switch (testval) {
case 0:
return 0;
case 1:
return csb_clk;
case 2:
return csb_clk / 2;
case 3:
return csb_clk / 3;
}
return 0;
}
static void mpc83xx_pcie_init_bus(int bus, struct pci_region *reg)
{
immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
@@ -269,11 +304,9 @@ static void mpc83xx_pcie_init_bus(int bus, struct pci_region *reg)
/* Hose configure header is memory-mapped */
hose_cfg_base = (void *)pex;
get_clocks();
/* Configure the PCIE controller core clock ratio */
out_le32(hose_cfg_base + PEX_GCLK_RATIO,
(((bus ? gd->arch.pciexp2_clk : gd->arch.pciexp1_clk)
/ 1000000) * 16) / 333);
((get_pcie_clk(bus) / 1000000) * 16) / 333);
udelay(1000000);
/* Do Type 1 bridge configuration */

View File

@@ -31,7 +31,7 @@ void board_add_ram_info(int use_default)
printf(" (DDR%d", ((ddr->sdram_cfg & SDRAM_CFG_SDRAM_TYPE_MASK)
>> SDRAM_CFG_SDRAM_TYPE_SHIFT) - 1);
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X)
if ((ddr->sdram_cfg & SDRAM_CFG_DBW_MASK) == SDRAM_CFG_DBW_16)
puts(", 16-bit");
else if ((ddr->sdram_cfg & SDRAM_CFG_DBW_MASK) == SDRAM_CFG_DBW_32)
@@ -281,7 +281,7 @@ long int spd_sdram()
/*
* Set up LAWBAR for all of DDR.
*/
ecm->bar = CONFIG_SYS_DDR_SDRAM_BASE & 0xfffff000;
ecm->bar = CONFIG_SYS_SDRAM_BASE & 0xfffff000;
ecm->ar = (LAWAR_EN | LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & law_size));
debug("DDR:bar=0x%08x\n", ecm->bar);
debug("DDR:ar=0x%08x\n", ecm->ar);
@@ -426,7 +426,7 @@ long int spd_sdram()
/*
* Errata DDR6 work around: input enable 2 cycles earlier.
* including MPC834x Rev1.0/1.1 and MPC8360 Rev1.1/1.2.
* including MPC834X Rev1.0/1.1 and MPC8360 Rev1.1/1.2.
*/
if(PVR_MAJ(pvr) <= 1 && spd.mem_type == SPD_MEMTYPE_DDR){
if (caslat == 2)
@@ -436,7 +436,7 @@ long int spd_sdram()
else if (caslat == 4)
ddr->debug_reg = 0x202c0000; /* CL=3.0 */
__asm__ __volatile__ ("sync");
sync();
debug("Errata DDR6 (debug_reg=0x%08x)\n", ddr->debug_reg);
}
@@ -765,7 +765,8 @@ long int spd_sdram()
#endif
debug("DDR:sdram_clk_cntl=0x%08x\n", ddr->sdram_clk_cntl);
asm("sync;isync");
sync();
isync();
udelay(600);
@@ -834,7 +835,8 @@ long int spd_sdram()
#endif
/* Enable controller, and GO! */
ddr->sdram_cfg = sdram_cfg;
asm("sync;isync");
sync();
isync();
udelay(500);
debug("DDR:sdram_cfg=0x%08x\n", ddr->sdram_cfg);
@@ -843,6 +845,22 @@ long int spd_sdram()
#endif /* CONFIG_SPD_EEPROM */
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
static inline u32 mftbu(void)
{
u32 rval;
asm volatile("mftbu %0" : "=r" (rval));
return rval;
}
static inline u32 mftb(void)
{
u32 rval;
asm volatile("mftb %0" : "=r" (rval));
return rval;
}
/*
* Use timebase counter, get_timer() is not available
* at this point of initialization yet.
@@ -858,9 +876,9 @@ static __inline__ unsigned long get_tbms (void)
/* get the timebase ticks */
do {
asm volatile ("mftbu %0":"=r" (tbu1):);
asm volatile ("mftb %0":"=r" (tbl):);
asm volatile ("mftbu %0":"=r" (tbu2):);
tbu1 = mftbu();
tbl = mftb();
tbu2 = mftbu();
} while (tbu1 != tbu2);
/* convert ticks to ms */
@@ -897,7 +915,7 @@ void ddr_enable_ecc(unsigned int dram_size)
for (p = 0; p < (u64*)(size); p++) {
ppcDWstore((u32*)p, pattern);
}
__asm__ __volatile__ ("sync");
sync();
#endif
t_end = get_tbms();
@@ -922,8 +940,8 @@ void ddr_enable_ecc(unsigned int dram_size)
/* Enable errors for ECC */
ddr->err_disable &= ECC_ERROR_ENABLE;
__asm__ __volatile__ ("sync");
__asm__ __volatile__ ("isync");
sync();
isync();
}
#endif /* CONFIG_DDR_ECC */

View File

@@ -85,35 +85,35 @@ int get_clocks(void)
u32 lcrr;
u32 csb_clk;
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
u32 tsec1_clk;
u32 tsec2_clk;
u32 usbdr_clk;
#elif defined(CONFIG_MPC8309)
#elif defined(CONFIG_ARCH_MPC8309)
u32 usbdr_clk;
#endif
#ifdef CONFIG_MPC834x
#ifdef CONFIG_ARCH_MPC834X
u32 usbmph_clk;
#endif
u32 core_clk;
u32 i2c1_clk;
#if !defined(CONFIG_MPC832x)
#if !defined(CONFIG_ARCH_MPC832X)
u32 i2c2_clk;
#endif
#if defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC8315)
u32 tdm_clk;
#endif
#if defined(CONFIG_FSL_ESDHC)
u32 sdhc_clk;
#endif
#if !defined(CONFIG_MPC8309)
#if !defined(CONFIG_ARCH_MPC8309)
u32 enc_clk;
#endif
u32 lbiu_clk;
u32 lclk_clk;
u32 mem_clk;
#if defined(CONFIG_MPC8360)
#if defined(CONFIG_ARCH_MPC8360)
u32 mem_sec_clk;
#endif
#if defined(CONFIG_QE)
@@ -122,12 +122,12 @@ int get_clocks(void)
u32 qe_clk;
u32 brg_clk;
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC837X)
u32 pciexp1_clk;
u32 pciexp2_clk;
#endif
#if defined(CONFIG_MPC837x) || defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC837X) || defined(CONFIG_ARCH_MPC8315)
u32 sata_clk;
#endif
@@ -137,8 +137,8 @@ int get_clocks(void)
clkin_div = ((im->clk.spmr & SPMR_CKID) >> SPMR_CKID_SHIFT);
if (im->reset.rcwh & HRCWH_PCI_HOST) {
#if defined(CONFIG_83XX_CLKIN)
pci_sync_in = CONFIG_83XX_CLKIN / (1 + clkin_div);
#if defined(CONFIG_SYS_CLK_FREQ)
pci_sync_in = CONFIG_SYS_CLK_FREQ / (1 + clkin_div);
#else
pci_sync_in = 0xDEADBEEF;
#endif
@@ -155,8 +155,8 @@ int get_clocks(void)
sccr = im->clk.sccr;
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
switch ((sccr & SCCR_TSEC1CM) >> SCCR_TSEC1CM_SHIFT) {
case 0:
tsec1_clk = 0;
@@ -176,8 +176,8 @@ int get_clocks(void)
}
#endif
#if defined(CONFIG_MPC830x) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC830X) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
switch ((sccr & SCCR_USBDRCM) >> SCCR_USBDRCM_SHIFT) {
case 0:
usbdr_clk = 0;
@@ -197,8 +197,8 @@ int get_clocks(void)
}
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC8315) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC8315) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
switch ((sccr & SCCR_TSEC2CM) >> SCCR_TSEC2CM_SHIFT) {
case 0:
tsec2_clk = 0;
@@ -216,7 +216,7 @@ int get_clocks(void)
/* unknown SCCR_TSEC2CM value */
return -4;
}
#elif defined(CONFIG_MPC8313)
#elif defined(CONFIG_ARCH_MPC8313)
tsec2_clk = tsec1_clk;
if (!(sccr & SCCR_TSEC1ON))
@@ -225,7 +225,7 @@ int get_clocks(void)
tsec2_clk = 0;
#endif
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
switch ((sccr & SCCR_USBMPHCM) >> SCCR_USBMPHCM_SHIFT) {
case 0:
usbmph_clk = 0;
@@ -252,7 +252,7 @@ int get_clocks(void)
return -6;
}
#endif
#if !defined(CONFIG_MPC8309)
#if !defined(CONFIG_ARCH_MPC8309)
switch ((sccr & SCCR_ENCCM) >> SCCR_ENCCM_SHIFT) {
case 0:
enc_clk = 0;
@@ -291,7 +291,7 @@ int get_clocks(void)
return -8;
}
#endif
#if defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC8315)
switch ((sccr & SCCR_TDMCM) >> SCCR_TDMCM_SHIFT) {
case 0:
tdm_clk = 0;
@@ -311,27 +311,27 @@ int get_clocks(void)
}
#endif
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
i2c1_clk = tsec2_clk;
#elif defined(CONFIG_MPC8360)
#elif defined(CONFIG_ARCH_MPC8360)
i2c1_clk = csb_clk;
#elif defined(CONFIG_MPC832x)
#elif defined(CONFIG_ARCH_MPC832X)
i2c1_clk = enc_clk;
#elif defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x)
#elif defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X)
i2c1_clk = enc_clk;
#elif defined(CONFIG_FSL_ESDHC)
i2c1_clk = sdhc_clk;
#elif defined(CONFIG_MPC837x)
#elif defined(CONFIG_ARCH_MPC837X)
i2c1_clk = enc_clk;
#elif defined(CONFIG_MPC8309)
#elif defined(CONFIG_ARCH_MPC8309)
i2c1_clk = csb_clk;
#endif
#if !defined(CONFIG_MPC832x)
#if !defined(CONFIG_ARCH_MPC832X)
i2c2_clk = csb_clk; /* i2c-2 clk is equal to csb clk */
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC837X)
switch ((sccr & SCCR_PCIEXP1CM) >> SCCR_PCIEXP1CM_SHIFT) {
case 0:
pciexp1_clk = 0;
@@ -369,7 +369,7 @@ int get_clocks(void)
}
#endif
#if defined(CONFIG_MPC837x) || defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC837X) || defined(CONFIG_ARCH_MPC8315)
switch ((sccr & SCCR_SATA1CM) >> SCCR_SATA1CM_SHIFT) {
case 0:
sata_clk = 0;
@@ -407,7 +407,7 @@ int get_clocks(void)
(1 + ((im->clk.spmr & SPMR_DDRCM) >> SPMR_DDRCM_SHIFT));
corepll = (im->clk.spmr & SPMR_COREPLL) >> SPMR_COREPLL_SHIFT;
#if defined(CONFIG_MPC8360)
#if defined(CONFIG_ARCH_MPC8360)
mem_sec_clk = csb_clk * (1 +
((im->clk.spmr & SPMR_LBIUCM) >> SPMR_LBIUCM_SHIFT));
#endif
@@ -448,18 +448,18 @@ int get_clocks(void)
#endif
gd->arch.csb_clk = csb_clk;
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
gd->arch.tsec1_clk = tsec1_clk;
gd->arch.tsec2_clk = tsec2_clk;
gd->arch.usbdr_clk = usbdr_clk;
#elif defined(CONFIG_MPC8309)
#elif defined(CONFIG_ARCH_MPC8309)
gd->arch.usbdr_clk = usbdr_clk;
#endif
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
gd->arch.usbmph_clk = usbmph_clk;
#endif
#if defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC8315)
gd->arch.tdm_clk = tdm_clk;
#endif
#if defined(CONFIG_FSL_ESDHC)
@@ -467,28 +467,28 @@ int get_clocks(void)
#endif
gd->arch.core_clk = core_clk;
gd->arch.i2c1_clk = i2c1_clk;
#if !defined(CONFIG_MPC832x)
#if !defined(CONFIG_ARCH_MPC832X)
gd->arch.i2c2_clk = i2c2_clk;
#endif
#if !defined(CONFIG_MPC8309)
#if !defined(CONFIG_ARCH_MPC8309)
gd->arch.enc_clk = enc_clk;
#endif
gd->arch.lbiu_clk = lbiu_clk;
gd->arch.lclk_clk = lclk_clk;
gd->mem_clk = mem_clk;
#if defined(CONFIG_MPC8360)
#if defined(CONFIG_ARCH_MPC8360)
gd->arch.mem_sec_clk = mem_sec_clk;
#endif
#if defined(CONFIG_QE)
gd->arch.qe_clk = qe_clk;
gd->arch.brg_clk = brg_clk;
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC837X)
gd->arch.pciexp1_clk = pciexp1_clk;
gd->arch.pciexp2_clk = pciexp2_clk;
#endif
#if defined(CONFIG_MPC837x) || defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC837X) || defined(CONFIG_ARCH_MPC8315)
gd->arch.sata_clk = sata_clk;
#endif
gd->pci_clk = pci_sync_in;
@@ -516,6 +516,11 @@ ulong get_ddr_freq(ulong dummy)
return gd->mem_clk;
}
int get_serial_clock(void)
{
return get_bus_freq(0);
}
static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
char buf[32];
@@ -536,21 +541,21 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf(" Local Bus: %-4s MHz\n",
strmhz(buf, gd->arch.lclk_clk));
printf(" DDR: %-4s MHz\n", strmhz(buf, gd->mem_clk));
#if defined(CONFIG_MPC8360)
#if defined(CONFIG_ARCH_MPC8360)
printf(" DDR Secondary: %-4s MHz\n",
strmhz(buf, gd->arch.mem_sec_clk));
#endif
#if !defined(CONFIG_MPC8309)
#if !defined(CONFIG_ARCH_MPC8309)
printf(" SEC: %-4s MHz\n",
strmhz(buf, gd->arch.enc_clk));
#endif
printf(" I2C1: %-4s MHz\n",
strmhz(buf, gd->arch.i2c1_clk));
#if !defined(CONFIG_MPC832x)
#if !defined(CONFIG_ARCH_MPC832X)
printf(" I2C2: %-4s MHz\n",
strmhz(buf, gd->arch.i2c2_clk));
#endif
#if defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC8315)
printf(" TDM: %-4s MHz\n",
strmhz(buf, gd->arch.tdm_clk));
#endif
@@ -558,30 +563,30 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf(" SDHC: %-4s MHz\n",
strmhz(buf, gd->arch.sdhc_clk));
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
printf(" TSEC1: %-4s MHz\n",
strmhz(buf, gd->arch.tsec1_clk));
printf(" TSEC2: %-4s MHz\n",
strmhz(buf, gd->arch.tsec2_clk));
printf(" USB DR: %-4s MHz\n",
strmhz(buf, gd->arch.usbdr_clk));
#elif defined(CONFIG_MPC8309)
#elif defined(CONFIG_ARCH_MPC8309)
printf(" USB DR: %-4s MHz\n",
strmhz(buf, gd->arch.usbdr_clk));
#endif
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
printf(" USB MPH: %-4s MHz\n",
strmhz(buf, gd->arch.usbmph_clk));
#endif
#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC837X)
printf(" PCIEXP1: %-4s MHz\n",
strmhz(buf, gd->arch.pciexp1_clk));
printf(" PCIEXP2: %-4s MHz\n",
strmhz(buf, gd->arch.pciexp2_clk));
#endif
#if defined(CONFIG_MPC837x) || defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC837X) || defined(CONFIG_ARCH_MPC8315)
printf(" SATA: %-4s MHz\n",
strmhz(buf, gd->arch.sata_clk));
#endif

View File

@@ -6,6 +6,9 @@
#include <common.h>
#include <mpc83xx.h>
#include "lblaw/lblaw.h"
#include "elbc/elbc.h"
DECLARE_GLOBAL_DATA_PTR;
/*
@@ -24,16 +27,16 @@ void cpu_init_f (volatile immap_t * im)
/* system performance tweaking */
#ifdef CONFIG_SYS_ACR_PIPE_DEP
#ifndef CONFIG_ACR_PIPE_DEP_UNSET
/* Arbiter pipeline depth */
im->arbiter.acr = (im->arbiter.acr & ~ACR_PIPE_DEP) |
(CONFIG_SYS_ACR_PIPE_DEP << ACR_PIPE_DEP_SHIFT);
CONFIG_ACR_PIPE_DEP;
#endif
#ifdef CONFIG_SYS_ACR_RPTCNT
#ifndef CONFIG_ACR_RPTCNT_UNSET
/* Arbiter repeat count */
im->arbiter.acr = (im->arbiter.acr & ~(ACR_RPTCNT)) |
(CONFIG_SYS_ACR_RPTCNT << ACR_RPTCNT_SHIFT);
CONFIG_ACR_RPTCNT;
#endif
#ifdef CONFIG_SYS_SPCR_OPT
@@ -89,3 +92,11 @@ void puts(const char *str)
while (*str)
putc(*str++);
}
ulong get_bus_freq(ulong dummy)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
u8 spmf = (im->clk.spmr & SPMR_SPMF) >> SPMR_SPMF_SHIFT;
return CONFIG_SYS_CLK_FREQ * spmf;
}

View File

@@ -24,6 +24,10 @@
#include <asm/mmu.h>
#include <asm/u-boot.h>
#include "hrcw/hrcw.h"
#include "bats/bats.h"
#include "hid/hid.h"
/* We don't want the MMU yet.
*/
#undef MSR_KERNEL
@@ -115,18 +119,6 @@ disable_addr_trans:
mtspr SRR1, r3
rfi
.globl ppcDWstore
ppcDWstore:
lfd 1, 0(r4)
stfd 1, 0(r3)
blr
.globl ppcDWload
ppcDWload:
lfd 1, 0(r3)
stfd 1, 0(r4)
blr
#ifndef CONFIG_DEFAULT_IMMR
#error CONFIG_DEFAULT_IMMR must be defined
#endif /* CONFIG_DEFAULT_IMMR */

View File

@@ -0,0 +1,7 @@
menu "System I/O configuration"
if ARCH_MPC8308
source "arch/powerpc/cpu/mpc83xx/sysio/Kconfig.mpc8308"
endif
endmenu

View File

@@ -0,0 +1,323 @@
choice
prompt "SPI group"
config SICR_SPI_SPI
bool "SPI"
config SICR_SPI_MSRCID
bool "MSRCID"
config SICR_SPI_LSRCID
bool "LSRCID"
endchoice
choice
prompt "UART group"
config SICR_UART_SPI
bool "UART"
config SICR_UART_MSRCID
bool "MSRCID"
config SICR_UART_LSRCID
bool "LSRCID"
endchoice
choice
prompt "IRQ group"
config SICR_IRQ_SPI
bool "IRQ"
config SICR_IRQ_MCP_CKSTOP
bool "MCP/CKSTOP"
config SICR_IRQ_INTA
bool "INTA"
endchoice
choice
prompt "I2C2 group"
config SICR_I2C2_I2C
bool "IRQ"
config SICR_I2C2_CKSTOP
bool "CKSTOP"
endchoice
choice
prompt "ETSEC1 A group"
config SICR_ETSEC1_A_TSEC2
bool "TSEC1"
config SICR_ETSEC1_A_TSEC_GTX_CLK125
bool "TSEC1 GTX_CLK125"
endchoice
choice
prompt "eSDHC A group"
config SICR_ESDHC_A_SD
bool "SD"
config SICR_ESDHC_A_GTM
bool "GTM"
config SICR_ESDHC_A_GPIO
bool "GPIO"
endchoice
choice
prompt "eSDHC B group"
config SICR_ESDHC_B_SD
bool "SD"
config SICR_ESDHC_B_GTM
bool "GTM"
config SICR_ESDHC_B_GPIO
bool "GPIO"
endchoice
choice
prompt "eSDHC C group"
config SICR_ESDHC_C_SD
bool "SD"
config SICR_ESDHC_C_GTM
bool "GTM"
config SICR_ESDHC_C_GPIO
bool "GPIO"
endchoice
choice
prompt "GPIO A group"
config SICR_GPIO_A_GPIO
bool "GPIO"
config SICR_GPIO_A_TSEC2
bool "TSEC2"
endchoice
choice
prompt "GPIO B group"
config SICR_GPIO_B_GPIO
bool "GPIO"
config SICR_GPIO_B_TSEC2
bool "TSEC2"
config SICR_GPIO_B_TSEC_GTX_CLK125
bool "TSEC2 GTX_CLK125"
endchoice
choice
prompt "IEEE1588 A group"
config SICR_IEEE1588_A_TSEC
bool "TSEC"
config SICR_IEEE1588_A_GPIO
bool "GPIO"
endchoice
choice
prompt "USB group"
config SICR_USB_TSEC
bool "USB"
endchoice
choice
prompt "GTM group"
config SICR_GTM_TSEC
bool "GTM"
config SICR_GTM_GPIO
bool "GPIO"
endchoice
choice
prompt "IEEE1588 B group"
config SICR_IEEE1588_B_GPIO
bool "GPIO"
endchoice
choice
prompt "ETSEC2 group"
config SICR_ETSEC2_TSEC2
bool "TSEC2"
config SICR_ETSEC2_GPIO
bool "GPIO"
endchoice
choice
prompt "GPIO selection"
config SICR_GPIOSEL_GPIO
bool "GPIO_A, GPIO_B"
config SICR_GPIOSEL_IEEE1588
bool "IEEE1588_A, IEEE1588_B, ETSEC2"
endchoice
choice
prompt "IEEE1588 timer output buffer impedance"
config SICR_TMROBI_3_3_V
bool "40 Ohm, 3.3V"
config SICR_TMROBI_2_5_V
bool "40 Ohm, 2.5V"
endchoice
choice
prompt "TSEC1 output buffer impedance"
config SICR_TMSOBI1_3_3_V
bool "40 Ohm, 3.3V"
config SICR_TMSOBI1_2_5_V
bool "40 Ohm, 2.5V"
endchoice
choice
prompt "TSEC2 output buffer impedance"
config SICR_TMSOBI2_3_3_V
bool "40 Ohm, 3.3V"
config SICR_TMSOBI2_2_5_V
bool "40 Ohm, 2.5V"
endchoice
config SICRL_SPI
hex
default 0x0 if SICR_SPI_SPI
default 0x10000000 if SICR_SPI_MSRCID
default 0x30000000 if SICR_SPI_LSRCID
config SICRL_UART
hex
default 0x0 if SICR_UART_SPI
default 0x4000000 if SICR_UART_MSRCID
default 0xc000000 if SICR_UART_LSRCID
config SICRL_IRQ
hex
default 0x0 if SICR_IRQ_SPI
default 0x1000000 if SICR_IRQ_MCP_CKSTOP
default 0x3000000 if SICR_IRQ_INTA
config SICRL_I2C2
hex
default 0x0 if SICR_I2C2_I2C
default 0x100000 if SICR_I2C2_CKSTOP
config SICRL_ETSEC1_A
hex
default 0x0 if SICR_ETSEC1_A_TSEC2
default 0x40 if SICR_ETSEC1_A_TSEC_GTX_CLK125
config SICRH_ESDHC_A
hex
default 0x0 if SICR_ESDHC_A_SD
default 0x40000000 if SICR_ESDHC_A_GTM
default 0xc0000000 if SICR_ESDHC_A_GPIO
config SICRH_ESDHC_B
hex
default 0x0 if SICR_ESDHC_B_SD
default 0x10000000 if SICR_ESDHC_B_GTM
default 0x30000000 if SICR_ESDHC_B_GPIO
config SICRH_ESDHC_C
hex
default 0x0 if SICR_ESDHC_C_SD
default 0x4000000 if SICR_ESDHC_C_GTM
default 0xc000000 if SICR_ESDHC_C_GPIO
config SICRH_GPIO_A
hex
default 0x0 if SICR_GPIO_A_GPIO
default 0x1000000 if SICR_GPIO_A_TSEC2
config SICRH_GPIO_B
hex
default 0x0 if SICR_GPIO_B_GPIO
default 0x400000 if SICR_GPIO_B_TSEC2
default 0x800000 if SICR_GPIO_B_TSEC_GTX_CLK125
config SICRH_IEEE1588_A
hex
default 0x100000 if SICR_IEEE1588_A_TSEC
default 0x300000 if SICR_IEEE1588_A_GPIO
config SICRH_USB
hex
default 0x40000 if SICR_USB_TSEC
config SICRH_GTM
hex
default 0x10000 if SICR_GTM_TSEC
default 0x30000 if SICR_GTM_GPIO
config SICRH_IEEE1588_B
hex
default 0xc000 if SICR_IEEE1588_B_GPIO
config SICRH_ETSEC2
hex
default 0x1000 if SICR_ETSEC2_TSEC2
default 0x3000 if SICR_ETSEC2_GPIO
config SICRH_GPIOSEL
hex
default 0x0 if SICR_GPIOSEL_GPIO
default 0x100 if SICR_GPIOSEL_IEEE1588
config SICRH_TMROBI
hex
default 0x0 if SICR_TMROBI_3_3_V
default 0x10 if SICR_TMROBI_2_5_V
config SICRH_TMSOBI1
hex
default 0x0 if SICR_TMSOBI1_3_3_V
default 0x2 if SICR_TMSOBI1_2_5_V
config SICRH_TMSOBI2
hex
default 0x0 if SICR_TMSOBI2_3_3_V
default 0x1 if SICR_TMSOBI2_2_5_V

View File

@@ -0,0 +1,32 @@
#ifdef CONFIG_ARCH_MPC8308
#ifndef CONFIG_SYS_SICRL
#define CONFIG_SYS_SICRL (\
CONFIG_SICRL_SPI |\
CONFIG_SICRL_UART |\
CONFIG_SICRL_IRQ |\
CONFIG_SICRL_I2C2 |\
CONFIG_SICRL_ETSEC1_A \
)
#endif
#ifndef CONFIG_SYS_SICRH
#define CONFIG_SYS_SICRH (\
CONFIG_SICRH_ESDHC_A |\
CONFIG_SICRH_ESDHC_B |\
CONFIG_SICRH_ESDHC_C |\
CONFIG_SICRH_GPIO_A |\
CONFIG_SICRH_GPIO_B |\
CONFIG_SICRH_IEEE1588_A |\
CONFIG_SICRH_USB |\
CONFIG_SICRH_GTM |\
CONFIG_SICRH_IEEE1588_B |\
CONFIG_SICRH_ETSEC2 |\
CONFIG_SICRH_GPIOSEL |\
CONFIG_SICRH_TMROBI |\
CONFIG_SICRH_TMSOBI1 |\
CONFIG_SICRH_TMSOBI2 \
)
#endif
#endif

View File

@@ -52,6 +52,12 @@ SECTIONS
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
/*
* _end - This is end of u-boot.bin image.
* dtb will be appended here to make u-boot-dtb.bin
*/
_end = .;
. = ALIGN(4096);
__init_begin = .;
.text.init : { *(.text.init) }

View File

@@ -6,6 +6,10 @@
#include <common.h>
#include <asm/fsl_lbc.h>
#ifdef CONFIG_MPC83xx
#include "../mpc83xx/elbc/elbc.h"
#endif
#ifdef CONFIG_MPC85xx
/* Boards should provide their own version of this if they use lbc sdram */
static void __lbc_sdram_init(void)

View File

@@ -131,10 +131,10 @@ static int pamu_config_ppaace(uint32_t liodn, uint64_t win_addr,
set_bf(ppaace->addr_bitfields, PAACE_AF_AP, PAACE_AP_PERMS_ALL);
}
asm volatile("sync" : : : "memory");
sync();
/* Mark the ppace entry valid */
ppaace->addr_bitfields |= PAACE_V_VALID;
asm volatile("sync" : : : "memory");
sync();
return 0;
}
@@ -279,7 +279,7 @@ int pamu_init(void)
out_be32(&regs->splah, spaact_lim >> 32);
out_be32(&regs->splal, (uint32_t)spaact_lim);
}
asm volatile("sync" : : : "memory");
sync();
base_addr += PAMU_OFFSET;
}
@@ -294,7 +294,7 @@ void pamu_enable(void)
for (i = 0; i < CONFIG_NUM_PAMU; i++) {
setbits_be32((void *)base_addr + PAMU_PCR_OFFSET,
PAMU_PCR_PE);
asm volatile("sync" : : : "memory");
sync();
base_addr += PAMU_OFFSET;
}
}
@@ -318,7 +318,7 @@ void pamu_reset(void)
out_be32(&regs->splal, 0);
clrbits_be32((void *)regs + PAMU_PCR_OFFSET, PAMU_PCR_PE);
asm volatile("sync" : : : "memory");
sync();
base_addr += PAMU_OFFSET;
}
}
@@ -331,7 +331,7 @@ void pamu_disable(void)
for (i = 0; i < CONFIG_NUM_PAMU; i++) {
clrbits_be32((void *)base_addr + PAMU_PCR_OFFSET, PAMU_PCR_PE);
asm volatile("sync" : : : "memory");
sync();
base_addr += PAMU_OFFSET;
}
}

1
arch/powerpc/dts/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.dtb

View File

@@ -2,6 +2,7 @@
dtb-$(CONFIG_TARGET_T2080QDS) += t2080qds.dtb
dtb-$(CONFIG_TARGET_MCR3000) += mcr3000.dtb
dtb-$(CONFIG_TARGET_GAZERBEAM) += gazerbeam.dtb
targets += $(dtb-y)

View File

@@ -0,0 +1,602 @@
/*
* Gazerbeam CON Device Tree Source
*
* (C) Copyright 2015
* Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#include "gdsys/mpc8308.dtsi"
/include/ "gdsys/gazerbeam-base.dtsi"
/include/ "gdsys/soc/i2c/cirrus-audio-codec.dtsi"
/include/ "gdsys/soc/i2c/dallas-rtc.dtsi"
/include/ "gdsys/soc/lbc/gazerbeam.dtsi"
/include/ "gdsys/soc/nor/flash-80k-partition.dtsi"
&board_lbc {
FPGA0:iocon_uart@1,0 {
reg = <0x1 0x0 0x100000>;
little-endian;
interrupts = <48 0x8>;
interrupt-parent = <&ipic>;
};
FPGA1:iocon_uart@2,0 {
reg = <0x2 0x0 0x100000>;
little-endian;
interrupts = <17 0x8>;
interrupt-parent = <&ipic>;
};
};
&FPGA0 {
compatible = "gdsys,iocon_fpga";
#gpio-cells = <2>;
gpio-controller;
bus = <&FPGA0BUS>;
unit_id = <0>;
fpga-type = <1>;
usb_base = <0x0080>;
audio_base = <0x0040>;
timebase_base = <0x013c>;
/*
* for every interrupt source there must be a dataset specifying
* 1. type (1: standard)
* 2. status register offset
* 3. mask register offset
* 4. default mask
*/
fpga_interrupt_sources =
<1 0x000a 0x000c 0x4000>, /* 0: TOP_INTERRUPT */
<1 0x001c 0x001e 0x0000>; /* 1: EXTENDED_INTERRUPT */
/*
* for every interrupt there must be a dataset specifying
* 1. type (1: status, 2: event)
* 2. interrupt source index
* 3. interrupt register bit
* 4. mask register bit
*/
#fpga_interrupt_map-cells = <4>;
fpga_interrupt_map =
<1 0 14 14>, /* 0: EXTENDED_INTERRUPT */
<1 0 0 0>, /* 1: VIDEO 0 */
<1 0 1 1>, /* 2: VIDEO 1 */
<1 0 2 2>, /* 3: VIDEO IC 0 */
<1 0 3 3>, /* 4: VIDEO IC 1 */
<1 0 4 4>, /* 5: IIC MAIN */
<1 0 6 6>, /* 6: IIC VIDEO 0 */
<1 0 7 7>, /* 7: IIC VIDEO 1 */
<1 1 0 0>, /* 8: OSD 0 */
<1 1 1 1>, /* 9: OSD 1 */
<1 1 2 2>, /* 10: SPDIF 0 */
<1 1 3 3>, /* 11: SPDIF 1 */
<1 0 12 12>, /* 12: COMM 0 */
<1 0 13 13>, /* 13: COMM 1 */
<1 0 10 10>, /* 14: COMM 2 */
<1 0 11 11>, /* 15: COMM 3 */
<2 0 5 5>, /* 16: MDIO */
<1 0 8 8>, /* 17: PHY */
<1 1 4 4>, /* 18: RS232 */
<1 1 5 5>, /* 19: AUDIO */
<1 1 8 8>, /* 20: PROC_AUDIO */
<1 1 7 7>, /* 21: USB/ETH-UART INT */
<2 1 10 10>, /* 22: AXI Bridge 0 */
<2 1 11 11>, /* 23: AXI Bridge 1 */
<2 1 9 9>, /* 24: USB/ETH-Secondary IIC */
<>;
};
&FPGA1 {
compatible = "gdsys,iocon_fpga";
#gpio-cells = <2>;
gpio-controller;
bus = <&FPGA1BUS>;
unit_id = <1>;
fpga-type = <1>;
usb_base = <0x0070>;
audio_base = <0x0040>;
timebase_base = <0x013c>;
/*
* for every interrupt source there must be a dataset specifying
* 1. type (1: standard)
* 2. status register offset
* 3. mask register offset
* 4. default mask
*/
fpga_interrupt_sources =
<1 0x000a 0x000c 0x4000>, /* 0: TOP_INTERRUPT */
<1 0x001c 0x001e 0x0000>; /* 1: EXTENDED_INTERRUPT */
/*
* for every interrupt there must be a dataset specifying
* 1. type (1: status, 2: event)
* 2. interrupt source index
* 3. interrupt register bit
* 4. mask register bit
*/
#fpga_interrupt_map-cells = <4>;
fpga_interrupt_map =
<1 0 14 14>, /* 0: EXTENDED_INTERRUPT */
<1 0 0 0>, /* 1: VIDEO 0 */
<1 0 1 1>, /* 2: VIDEO 1 */
<1 0 2 2>, /* 3: VIDEO IC 0 */
<1 0 3 3>, /* 4: VIDEO IC 1 */
<1 0 4 4>, /* 5: IIC MAIN */
<1 0 6 6>, /* 6: IIC VIDEO 0 */
<1 0 7 7>, /* 7: IIC VIDEO 1 */
<1 1 0 0>, /* 8: OSD 0 */
<1 1 1 1>, /* 9: OSD 1 */
<1 1 2 2>, /* 10: SPDIF 0 */
<1 1 3 3>, /* 11: SPDIF 1 */
<1 0 12 12>, /* 12: COMM 0 */
<1 0 13 13>, /* 13: COMM 1 */
<1 0 10 10>, /* 14: COMM 2 */
<1 0 11 11>, /* 15: COMM 3 */
<2 0 5 5>, /* 16: MDIO */
<1 0 8 8>, /* 17: PHY */
<1 1 4 4>, /* 18: RS232 */
<1 1 5 5>, /* 19: AUDIO */
<1 1 8 8>, /* 20: PROC_AUDIO */
<1 1 7 7>, /* 21: USB/ETH-UART INT */
<2 1 10 10>, /* 22: AXI Bridge 0 */
<2 1 11 11>, /* 23: AXI Bridge 1 */
<2 1 9 9>, /* 24: USB/ETH-Secondary IIC */
<>;
};
/ {
FPGA0BUS: fpga0bus {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0x00002000>;
compatible = "gdsys,soc";
fpga0_rs232 {
compatible = "gdsys,ihs_trans_rs232";
reg = <0x50 0x08>;
little-endian;
};
fpga0_uart_usb {
compatible = "gdsys,ihs_simple_uart";
reg = <0xa0 0x08>;
little-endian;
fpga_interrupts = <21>;
line = <0>;
};
fpga0_iic_main {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x60 0x10>;
little-endian;
fpga_interrupts = <5>;
#address-cells = <1>;
#size-cells = <0>;
fpga0_dp_video0_redriver: fpga0_dp_video0_redriver {
compatible = "ti,sn75dp130";
reg = <0x2c>;
eq-i2c-enable = <3 2 1 0
3 2 1 0
3 2 1 0
3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
};
fpga0_dp_video1_redriver: fpga0_dp_video1_redriver {
compatible = "ti,sn75dp130";
reg = <0x2e>;
eq-i2c-enable = <3 2 1 0
3 2 1 0
3 2 1 0
3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
};
lm77@48 {
compatible = "national,lm77";
reg = <0x48>;
};
ads1015@49 {
compatible = "ti,ads1015";
reg = <0x49>;
};
ads1015@4b {
compatible = "ti,ads1015";
reg = <0x4b>;
};
};
fpga0_video0 {
compatible = "gdsys,ihs_video_out";
reg = <0x100 0x40>;
little-endian;
fpga_interrupts = <1 8>; /* VIDEO OSD */
osd_base = <0x180>;
osd_buffer_base = <0x1000>;
spdif_audio_base = <0x1e0>;
video_index = <0>;
video_id = <0>;
fpga-force-pos-pol;
sync-source;
fpga-pb-pixels = <2730>; /* 8192 / 3 */
fpga-ra-lines = <2>;
video_tx = <&fpga0_dp_video0>;
clk_gen = <&fpga0_video0_clkgen>;
ddc_ci = <&fpga0_dp_video0>;
};
fpga0_iic_video0 {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x1c0 0x10>;
little-endian;
fpga_interrupts = <6>;
#address-cells = <1>;
#size-cells = <0>;
fpga0_video0_clkgen: fpga0_video0_clkgen {
compatible = "idt,ics8n3qv01";
reg = <0x6e>;
channel = <0>;
};
};
fpga0_axi_video0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "gdsys,ihs_axi";
reg = <0x170 0x10>;
little-endian;
fpga_interrupts = <22>;
fpga0_dp_video0: fpga0_dp_video0 {
compatible = "gdsys,logicore_dp_tx";
reg = <0x44a10000 0x1000>;
little-endian;
redriver = <&fpga0_dp_video0_redriver>;
video_id = <0>;
};
};
fpga0_video1 {
compatible = "gdsys,ihs_video_out";
reg = <0x200 0x40>;
little-endian;
fpga_interrupts = <2 9>; /* VIDEO OSD */
osd_base = <0x280>;
osd_buffer_base = <0x2000>;
spdif_audio_base = <0x2e0>;
video_index = <1>;
video_id = <1>;
fpga-force-pos-pol;
sync-source;
fpga-pb-pixels = <2730>; /* 8192 / 3 */
fpga-ra-lines = <2>;
video_tx = <&fpga0_dp_video1>;
clk_gen = <&fpga0_video1_clkgen>;
ddc_ci = <&fpga0_dp_video1>;
};
fpga0_iic_video1 {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x2c0 0x10>;
little-endian;
fpga_interrupts = <7>;
#address-cells = <1>;
#size-cells = <0>;
fpga0_video1_clkgen: fpga0_video1_clkgen {
compatible = "idt,ics8n3qv01";
reg = <0x6e>;
channel = <1>;
};
};
fpga0_axi_video1 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "gdsys,ihs_axi";
reg = <0x270 0x10>;
little-endian;
fpga_interrupts = <23>;
fpga0_dp_video1: fpga0_dp_video1 {
compatible = "gdsys,logicore_dp_tx";
reg = <0x44a10000 0x1000>;
little-endian;
redriver = <&fpga0_dp_video1_redriver>;
video_id = <1>;
};
};
fpga0_iic_usb {
compatible = "gdsys,ihs_i2cmaster";
reg = <0xb0 0x10>;
little-endian;
fpga_interrupts = <24>;
#address-cells = <1>;
#size-cells = <0>;
pca9555@20 {
compatible = "nxp,pca9555";
reg = <0x20>;
#gpio-cells = <2>;
gpio-controller;
};
};
fpga0_ep0 {
compatible = "gdsys,io-endpoint";
reg = < 0x020 0x10
0x320 0x10
0x340 0x10
0x360 0x10>;
little-endian;
irq-model-local;
fpga_interrupts = <12 13 14 15>;
pollcycle = <200>;
nprot_channel = <16>;
uart_line = <0>;
ep_index = <0>;
line_protocol = <1>;
};
fpga0_mdio {
compatible = "gdsys,ihs_mdiomaster";
reg = <0x0058 0x10>;
little-endian;
fpga_interrupts = <16>;
#address-cells = <1>;
#size-cells = <0>;
fpga0_phy0 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <0>;
};
fpga0_phy1 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <1>;
};
fpga0_phy2 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <2>;
};
fpga0_phy3 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <3>;
};
};
};
FPGA1BUS: fpga1bus {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0x00002000>;
compatible = "gdsys,soc";
fpga1_uart_usb {
compatible = "gdsys,ihs_simple_uart";
reg = <0xa0 0x08>;
little-endian;
fpga_interrupts = <21>;
line = <4>; /* TODO check and FIX */
};
fpga1_iic_main {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x60 0x10>;
little-endian;
fpga_interrupts = <5>;
#address-cells = <1>;
#size-cells = <0>;
fpga1_dp_video0_redriver: fpga1_dp_video0_redriver {
compatible = "ti,sn75dp130";
reg = <0x2c>;
eq-i2c-enable = <3 2 1 0
3 2 1 0
3 2 1 0
3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
};
fpga1_dp_video1_redriver: fpga1_dp_video1_redriver {
compatible = "ti,sn75dp130";
reg = <0x2e>;
eq-i2c-enable = <3 2 1 0
3 2 1 0
3 2 1 0
3 2 1 0>; /* 3.5 dB for all pe values for all lanes */
};
lm77@48 {
compatible = "national,lm77";
reg = <0x48>;
};
ads1015@49 {
compatible = "ti,ads1015";
reg = <0x49>;
};
ads1015@4b {
compatible = "ti,ads1015";
reg = <0x4b>;
};
};
fpga1_video0 {
compatible = "gdsys,ihs_video_out";
reg = <0x100 0x40>;
little-endian;
fpga_interrupts = <1 8>; /* VIDEO OSD */
osd_base = <0x180>;
osd_buffer_base = <0x1000>;
spdif_audio_base = <0x1e0>;
video_index = <0>;
video_id = <4>;
fpga-force-pos-pol;
sync-source;
fpga-pb-pixels = <2730>; /* 8192 / 3 */
fpga-ra-lines = <2>;
video_tx = <&fpga1_dp_video0>;
clk_gen = <&fpga1_video0_clkgen>;
ddc_ci = <&fpga1_dp_video0>;
};
fpga1_iic_video0 {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x1c0 0x10>;
little-endian;
fpga_interrupts = <6>;
#address-cells = <1>;
#size-cells = <0>;
fpga1_video0_clkgen: fpga1_video0_clkgen {
compatible = "idt,ics8n3qv01";
reg = <0x6e>;
channel = <4>;
};
};
fpga1_axi_video0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "gdsys,ihs_axi";
reg = <0x170 0x10>;
little-endian;
fpga_interrupts = <22>;
fpga1_dp_video0: fpga1_dp_video0 {
compatible = "gdsys,logicore_dp_tx";
reg = <0x44a10000 0x1000>;
little-endian;
redriver = <&fpga1_dp_video0_redriver>;
video_id = <4>;
};
};
fpga1_video1 {
compatible = "gdsys,ihs_video_out";
reg = <0x200 0x40>;
little-endian;
fpga_interrupts = <2 9>; /* VIDEO OSD */
osd_base = <0x280>;
osd_buffer_base = <0x2000>;
spdif_audio_base = <0x2e0>;
video_index = <1>;
video_id = <5>;
fpga-force-pos-pol;
sync-source;
fpga-pb-pixels = <2730>; /* 8192 / 3 */
fpga-ra-lines = <2>;
video_tx = <&fpga1_dp_video1>;
clk_gen = <&fpga1_video1_clkgen>;
ddc_ci = <&fpga1_dp_video1>;
};
fpga1_iic_video1 {
compatible = "gdsys,ihs_i2cmaster";
reg = <0x2c0 0x10>;
little-endian;
fpga_interrupts = <7>;
#address-cells = <1>;
#size-cells = <0>;
fpga1_video1_clkgen: fpga1_video1_clkgen {
compatible = "idt,ics8n3qv01";
reg = <0x6e>;
channel = <5>;
};
};
fpga1_axi_video1 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "gdsys,ihs_axi";
reg = <0x270 0x10>;
little-endian;
fpga_interrupts = <23>;
fpga1_dp_video1: fpga1_dp_video1 {
compatible = "gdsys,logicore_dp_tx";
reg = <0x44a10000 0x1000>;
little-endian;
redriver = <&fpga1_dp_video1_redriver>;
video_id = <5>;
};
};
fpga1_iic_usb {
compatible = "gdsys,ihs_i2cmaster";
reg = <0xb0 0x10>;
little-endian;
fpga_interrupts = <24>;
#address-cells = <1>;
#size-cells = <0>;
pca9555@20 {
compatible = "nxp,pca9555";
reg = <0x20>;
#gpio-cells = <2>;
gpio-controller;
};
};
fpga1_ep0 {
compatible = "gdsys,io-endpoint";
reg = < 0x020 0x10
0x320 0x10
0x340 0x10
0x360 0x10>;
little-endian;
irq-model-local;
fpga_interrupts = <12 13 14 15>;
pollcycle = <200>;
nprot_channel = <17>;
uart_line = <1>;
ep_index = <0>;
line_protocol = <1>;
};
fpga1_mdio {
compatible = "gdsys,ihs_mdiomaster";
reg = <0x0058 0x10>;
little-endian;
fpga_interrupts = <16>;
#address-cells = <1>;
#size-cells = <0>;
fpga1_phy0 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <0>;
};
fpga1_phy1 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <1>;
};
fpga1_phy2 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <2>;
};
fpga1_phy3 {
compatible = "ethernet-phy-ieee802.3-c45";
device_type ="ethernet-phy";
reg = <3>;
};
};
};
};
#include "gdsys/gazerbeam-uboot.dtsi"

View File

@@ -0,0 +1,185 @@
/*
* Gazerbeam Device Tree Source
*
* (C) Copyright 2015
* Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
/ {
model = "gdsys,gazerbeam";
compatible = "fsl,mpc8308rdb";
aliases {
ethernet0 = &enet0;
ethernet1 = &enet1;
};
memory {
device_type = "memory";
};
};
&enet1 {
status = "okay";
};
&IIC {
fsl,preserve-clocking;
at97sc3205t@29 {
compatible = "atmel,at97sc3204t";
reg = <0x29>;
};
lm77@48 {
compatible = "national,lm77";
reg = <0x48>;
};
ads1015@49 {
compatible = "ti,ads1015";
reg = <0x49>;
};
lm77@4a {
compatible = "national,lm77";
reg = <0x4a>;
};
emc2305@2e {
compatible = "smsc,emc2305";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x2e>;
fan@0 {
reg = <0>;
};
fan@1 {
reg = <1>;
};
fan@2 {
reg = <2>;
};
fan@3 {
reg = <3>;
};
fan@4 {
reg = <4>;
};
};
emc2305@4c {
compatible = "smsc,emc2305";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x4c>;
fan@0 {
reg = <0>;
};
fan@1 {
reg = <1>;
};
fan@2 {
reg = <2>;
};
fan@3 {
reg = <3>;
};
fan@4 {
reg = <4>;
};
};
at24c512@54 {
compatible = "atmel,24c512";
reg = <0x54>;
};
/* PPC-Board */
pca9698@22 {
compatible = "nxp,pca9698";
reg = <0x22>;
#gpio-cells = <2>;
gpio-controller;
};
/* IO-Board */
pca9698@20 {
compatible = "nxp,pca9698";
reg = <0x20>;
#gpio-cells = <2>;
gpio-controller;
};
};
&IIC2 {
fsl,preserve-clocking;
status = "okay";
/* MC2/SC-Board */
GPIO_VB0: pca9698@20 {
compatible = "nxp,pca9698";
reg = <0x20>;
#gpio-cells = <2>;
gpio-controller;
};
/* MC4-Board */
GPIO_VB1: pca9698@22 {
compatible = "nxp,pca9698";
reg = <0x22>;
#gpio-cells = <2>;
gpio-controller;
};
};
&SPI {
gpios = < /*SPI-CSS-FPGA-U-FLASH#*/ &gpio0 8 0
/*SPI-CSS-FPGA-O-FLASH#*/ &gpio0 6 0
/*SPI-CSS-STDP1_U-FLASH#*/ &gpio0 12 0
/*SPI-CSS-STDP2_U-FLASH#*/ &gpio0 11 0
/*SPI-CSS-STDP1_O-FLASH#*/ &gpio0 15 0
/*SPI-CSS-STDP2_O-FLASH#*/ &gpio0 3 0>;
m25p16@0 {
compatible = "st,n25q128a11";
reg = <0x0>;
spi-max-frequency = <20000000>;
};
m25p16@1 {
compatible = "st,n25q128a11";
reg = <0x1>;
spi-max-frequency = <20000000>;
};
m25p16@2 {
compatible = "st,m25p40";
reg = <0x2>;
spi-max-frequency = <20000000>;
};
m25p16@3 {
compatible = "st,m25p40";
reg = <0x3>;
spi-max-frequency = <20000000>;
};
m25p16@4 {
compatible = "st,m25p40";
reg = <0x4>;
spi-max-frequency = <20000000>;
};
m25p16@5 {
compatible = "st,m25p40";
reg = <0x5>;
spi-max-frequency = <20000000>;
};
};

View File

@@ -0,0 +1,250 @@
#include <dt-bindings/memory/mpc83xx-sdram.h>
#include <dt-bindings/clk/mpc83xx-clk.h>
/ {
aliases {
i2c0 = &IIC;
i2c1 = &IIC2;
i2c2 = "/fpga0bus/fpga0_iic_main";
i2c3 = "/fpga0bus/fpga0_iic_video0";
i2c4 = "/fpga0bus/fpga0_iic_video1";
i2c5 = "/fpga0bus/fpga0_iic_usb";
gdsys_soc0 = "/fpga0bus";
gdsys_soc1 = "/fpga1bus";
ioep0 = "/fpga0bus/fpga0_ep0";
ioep1 = "/fpga0bus/fpga1_ep0";
};
chosen {
stdout-path = &serial1;
};
cpus {
compatible = "cpu_bus";
u-boot,dm-pre-reloc;
PowerPC,8308@0 {
compatible = "fsl,mpc8308";
clocks = <&socclocks MPC83XX_CLK_CORE
&socclocks MPC83XX_CLK_CSB>;
u-boot,dm-pre-reloc;
};
};
board {
compatible = "gdsys,board_gazerbeam";
csb = <&board_soc>;
serdes = <&SERDES>;
rxaui0 = <&RXAUI0_0>;
rxaui1 = <&RXAUI0_1>;
rxaui2 = <&RXAUI0_2>;
rxaui3 = <&RXAUI0_3>;
rxaui4 = <&RXAUI1_0>;
rxaui5 = <&RXAUI1_1>;
rxaui6 = <&RXAUI1_2>;
rxaui7 = <&RXAUI1_3>;
fpga0 = <&FPGA0>;
fpga1 = <&FPGA1>;
ioep0 = <&IOEP0>;
ioep1 = <&IOEP1>;
ver-gpios = <&PPCPCA 12 0
&PPCPCA 13 0
&PPCPCA 14 0
&PPCPCA 15 0>;
/* MC2/SC-Board */
var-gpios-mc2 = <&GPIO_VB0 0 0 /* VAR-MC_SC */
&GPIO_VB0 11 0>; /* VAR-CON */
/* MC4-Board */
var-gpios-mc4 = <&GPIO_VB1 0 0 /* VAR-MC_SC */
&GPIO_VB1 11 0>; /* VAR-CON */
reset-gpios = <&gpio0 1 0 &gpio0 2 1>;
};
socclocks: clocks {
compatible = "fsl,mpc8308-clk";
#clock-cells = <1>;
u-boot,dm-pre-reloc;
};
timer {
compatible = "fsl,mpc83xx-timer";
clocks = <&socclocks MPC83XX_CLK_CSB>;
};
};
&FPGA0 {
reset-gpios = <&PPCPCA 26 0>;
done-gpios = <&GPIO_VB0 19 0>;
};
&FPGA1 {
status = "disable";
};
&FPGA0BUS {
ranges = <0x0 0xe0600000 0x00004000>;
fpga = <&FPGA0>;
fpga0_video0 {
mode = "640_480_60";
status = "disabled";
};
RXAUI0_0: fpga0_rxaui@fc0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fc0 0x10>;
};
fpga0_iic_video0 {
status = "disabled";
};
fpga0_axi_video0 {
status = "disabled";
};
fpga0_video1 {
mode = "640_480_60";
status = "disabled";
};
fpga0_iic_video1 {
status = "disabled";
};
fpga0_axi_video1 {
status = "disabled";
};
IOEP0: fpga0_ep0 {
};
RXAUI0_1: fpga0_rxaui@fd0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fd0 0x10>;
};
RXAUI0_2: fpga0_rxaui@fe0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fe0 0x10>;
};
RXAUI0_3: fpga0_rxaui@ff0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0ff0 0x10>;
};
};
&FPGA1BUS {
ranges = <0x0 0xe0700000 0x00004000>;
fpga = <&FPGA1>;
status = "disable";
fpga1_video0 {
mode = "640_480_60";
};
RXAUI1_0: fpga0_rxaui@fc0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fc0 0x10>;
};
fpga1_video1 {
mode = "640_480_60";
};
IOEP1: fpga1_ep0 {
};
RXAUI1_1: fpga0_rxaui@fd0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fd0 0x10>;
};
RXAUI1_2: fpga0_rxaui@fe0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0fe0 0x10>;
};
RXAUI1_3: fpga0_rxaui@ff0 {
compatible = "gdsys,rxaui_ctrl";
reg = <0x0ff0 0x10>;
};
};
&board_soc {
u-boot,dm-pre-reloc;
clocks = <&socclocks MPC83XX_CLK_CSB>;
memory@2000 {
u-boot,dm-pre-reloc;
};
sdhc@2e000 {
clocks = <&socclocks MPC83XX_CLK_SDHC>;
clock-names = "per";
};
SERDES: serdes@e3000 {
reg = <0xe3000 0x200>;
compatible = "fsl,mpc83xx-serdes";
proto = "pex";
serdes-clk = <100>;
vdd;
};
};
&IIC {
clocks = <&socclocks MPC83XX_CLK_I2C1>;
PPCPCA: pca9698@20 {
label = "ppc";
};
IOPCA: pca9698@22 {
label = "io";
};
at97sc3205t@29 {
u-boot,i2c-offset-len = <0>;
};
};
&IIC2 {
clocks = <&socclocks MPC83XX_CLK_I2C2>;
GPIO_VB0: pca9698@20 {
label = "mc2-sc";
};
GPIO_VB1: pca9698@22 {
label = "mc4";
};
};
&board_soc {
u-boot,dm-pre-reloc;
};
&GPIO_VB0 {
u-boot,dm-pre-reloc;
};
&serial0 {
clocks = <&socclocks MPC83XX_CLK_CSB>;
u-boot,dm-pre-reloc;
};
&serial1 {
clocks = <&socclocks MPC83XX_CLK_CSB>;
u-boot,dm-pre-reloc;
};
&pci0 {
clocks = <&socclocks MPC83XX_CLK_PCIEXP1>;
};

View File

@@ -0,0 +1,354 @@
/*
* Basic platform for gdsys mpc8308 based devices
*
* (C) Copyright 2014
* Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de
*
* based on mpc8308rdb
* Copyright 2009 Freescale Semiconductor Inc.
* Copyright 2010 Ilya Yanok, Emcraft Systems, yanok@emcraft.com
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
/dts-v1/;
#include <dt-bindings/memory/mpc83xx-sdram.h>
/ {
compatible = "fsl,mpc8308rdb";
#address-cells = <1>;
#size-cells = <1>;
aliases {
serial0 = &serial0;
serial1 = &serial1;
};
memory {
device_type = "memory";
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
PowerPC,8308@0 {
device_type = "cpu";
reg = <0x0>;
d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <16384>;
i-cache-size = <16384>;
timebase-frequency = <0>; // from bootloader
bus-frequency = <0>; // from bootloader
clock-frequency = <0>; // from bootloader
};
};
board_lbc: localbus@e0005000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,mpc8315-elbc", "fsl,elbc", "simple-bus";
reg = <0xe0005000 0x1000>;
interrupts = <77 0x8>;
interrupt-parent = <&ipic>;
};
board_soc: immr@e0000000 {
#address-cells = <1>;
#size-cells = <1>;
device_type = "soc";
compatible = "fsl,mpc8308-immr", "simple-bus";
ranges = <0 0xe0000000 0x00100000>;
reg = <0xe0000000 0x00000200>;
bus-frequency = <0>;
wdt@200 {
device_type = "watchdog";
compatible = "mpc83xx_wdt";
reg = <0x200 0x100>;
};
memory@2000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "fsl,mpc83xx-mem-controller";
reg = <0x2000 0x1000>;
device_type = "memory";
driver_software_override = <DSO_ENABLE>;
p_impedance_override = <DSO_P_IMPEDANCE_NOMINAL>;
n_impedance_override = <DSO_N_IMPEDANCE_NOMINAL>;
odt_termination_value = <ODT_TERMINATION_150_OHM>;
ddr_type = <DDR_TYPE_DDR2_1_8_VOLT>;
clock_adjust = <CLOCK_ADJUST_05>;
read_to_write = <0>;
write_to_read = <0>;
read_to_read = <0>;
write_to_write = <0>;
active_powerdown_exit = <2>;
precharge_powerdown_exit = <6>;
odt_powerdown_exit = <8>;
mode_reg_set_cycle = <2>;
precharge_to_activate = <2>;
activate_to_precharge = <6>;
activate_to_readwrite = <2>;
mcas_latency = <CASLAT_40>;
refresh_recovery = <17>;
last_data_to_precharge = <2>;
activate_to_activate = <2>;
last_write_data_to_read = <2>;
additive_latency = <0>;
mcas_to_preamble_override = <READ_LAT_PLUS_1_2>;
write_latency = <3>;
read_to_precharge = <2>;
write_cmd_to_write_data = <CLOCK_DELAY_1_2>;
minimum_cke_pulse_width = <3>;
four_activates_window = <5>;
self_refresh = <SREN_ENABLE>;
sdram_type = <TYPE_DDR2>;
databus_width = <DATA_BUS_WIDTH_32>;
force_self_refresh = <MODE_NORMAL>;
dll_reset = <DLL_RESET_ENABLE>;
dqs_config = <DQS_TRUE>;
odt_config = <ODT_ASSERT_READS>;
posted_refreshes = <1>;
refresh_interval = <2084>;
precharge_interval = <256>;
sdmode = <0x0242>;
esdmode = <0x0440>;
ram@0 {
reg = <0x0 0x0 0x8000000>;
compatible = "nanya,nt5tu64m16hg";
odt_rd_cfg = <ODT_RD_NEVER>;
odt_wr_cfg = <ODT_WR_ONLY_CURRENT>;
bank_bits = <3>;
row_bits = <13>;
col_bits = <10>;
};
};
IIC:i2c@3000 {
#address-cells = <1>;
#size-cells = <0>;
cell-index = <0>;
compatible = "fsl-i2c";
reg = <0x3000 0x100>;
interrupts = <14 0x8>;
interrupt-parent = <&ipic>;
dfsrr;
};
IIC2: i2c@3100 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl-i2c";
reg = <0x3100 0x100>;
interrupts = <15 0x8>;
interrupt-parent = <&ipic>;
dfsrr;
status = "disabled";
};
SPI:spi@7000 {
#address-cells = <1>;
#size-cells = <0>;
cell-index = <0>;
compatible = "fsl,spi";
reg = <0x7000 0x1000>;
interrupts = <16 0x8>;
interrupt-parent = <&ipic>;
mode = "cpu";
};
sdhc@2e000 {
compatible = "fsl,esdhc", "fsl,mpc8308-esdhc";
reg = <0x2e000 0x1000>;
interrupts = <42 0x8>;
interrupt-parent = <&ipic>;
sdhci,auto-cmd12;
/* Filled in by U-Boot */
clock-frequency = <0>;
};
serial0: serial@4500 {
cell-index = <0>;
device_type = "serial";
compatible = "fsl,ns16550", "ns16550";
reg = <0x4500 0x100>;
clock-frequency = <133333333>;
interrupts = <9 0x8>;
interrupt-parent = <&ipic>;
};
serial1: serial@4600 {
cell-index = <1>;
device_type = "serial";
compatible = "fsl,ns16550", "ns16550";
reg = <0x4600 0x100>;
clock-frequency = <133333333>;
interrupts = <10 0x8>;
interrupt-parent = <&ipic>;
};
gpio0: gpio@c00 {
#gpio-cells = <2>;
device_type = "gpio";
compatible = "fsl,mpc8308-gpio", "fsl,mpc8349-gpio";
reg = <0xc00 0x18>;
interrupts = <74 0x8>;
interrupt-parent = <&ipic>;
gpio-controller;
};
/* IPIC
* interrupts cell = <intr #, sense>
* sense values match linux IORESOURCE_IRQ_* defines:
* sense == 8: Level, low assertion
* sense == 2: Edge, high-to-low change
*/
ipic: interrupt-controller@700 {
compatible = "fsl,ipic";
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <2>;
reg = <0x700 0x100>;
device_type = "ipic";
};
ipic-msi@7c0 {
compatible = "fsl,ipic-msi";
reg = <0x7c0 0x40>;
msi-available-ranges = <0x0 0x100>;
interrupts = < 0x43 0x8
0x4 0x8
0x51 0x8
0x52 0x8
0x56 0x8
0x57 0x8
0x58 0x8
0x59 0x8 >;
interrupt-parent = < &ipic >;
};
dma@2c000 {
compatible = "fsl,mpc8308-dma", "fsl,mpc5121-dma";
reg = <0x2c000 0x1800>;
interrupts = <3 0x8
94 0x8>;
interrupt-parent = < &ipic >;
};
enet0: ethernet@24000 {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x24000 0x1000>;
cell-index = <0>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar", "fsl,tsec";
reg = <0x24000 0x1000>;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <32 0x8 33 0x8 34 0x8>;
interrupt-parent = <&ipic>;
tbi-handle = < &tbi0 >;
phy-handle = < &phy1 >;
fsl,magic-packet;
mdio@520 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,gianfar-mdio";
reg = <0x520 0x20>;
phy1: ethernet-phy@1 {
reg = <0x1>;
};
phy2: ethernet-phy@0 {
reg = <0x0>;
device_type = "ethernet-phy";
};
tbi0: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
};
enet1: ethernet@25000 {
#address-cells = <1>;
#size-cells = <1>;
cell-index = <1>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar", "fsl,tsec";
reg = <0x25000 0x1000>;
ranges = <0x0 0x25000 0x1000>;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <35 0x8 36 0x8 37 0x8>;
interrupt-parent = <&ipic>;
phy-handle = < &phy2 >;
status = "disabled";
mdio@520 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,gianfar-tbi";
reg = <0x520 0x20>;
tbi1: tbi-phy@11 {
reg = <0x11>;
device_type = "tbi-phy";
};
};
};
};
pci0: pcie@e0009000 {
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
device_type = "pci";
compatible = "fsl,mpc8308-pcie", "fsl,mpc8314-pcie";
reg = <0xe0009000 0x00001000
0xb0000000 0x01000000>;
ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
0x01000000 0 0x00000000 0xb1000000 0 0x00800000>;
bus-range = <0 0>;
interrupt-map-mask = <0xf800 0 0 7>;
interrupt-map = <0 0 0 1 &ipic 1 8
0 0 0 2 &ipic 1 8
0 0 0 3 &ipic 1 8
0 0 0 4 &ipic 1 8>;
interrupts = <0x1 0x8>;
interrupt-parent = <&ipic>;
clock-frequency = <0>;
pcie@0 {
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
reg = <0 0 0 0 0>;
ranges = <0x02000000 0 0xa0000000
0x02000000 0 0xa0000000
0 0x10000000
0x01000000 0 0x00000000
0x01000000 0 0x00000000
0 0x00800000>;
};
};
};

View File

@@ -0,0 +1,6 @@
&IIC {
cs4265@4f {
compatible = "cirrus,cs4265";
reg = <0x0000004f>;
};
};

View File

@@ -0,0 +1,6 @@
&IIC {
ds1339@68 {
compatible = "dallas,ds1339";
reg = <0x68>;
};
};

View File

@@ -0,0 +1,5 @@
&board_lbc {
ranges = <0x0 0x0 0xfe000000 0x00800000
0x1 0x0 0xe0600000 0x00003000
0x2 0x0 0xe0700000 0x00003000>;
};

View File

@@ -0,0 +1,20 @@
&board_lbc {
flash@0,0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "cfi-flash";
reg = <0x0 0x0 0x100000>;
bank-width = <2>;
device-width = <1>;
u-boot@0 {
reg = <0x0 0x80000>;
};
env@80000 {
reg = <0x80000 0x10000>;
};
env1@90000 {
reg = <0x90000 0x10000>;
};
};
};

View File

@@ -0,0 +1,22 @@
/*
* (C) Copyright 2018
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __ASM_POWERPC_CLOCK_H
#define __ASM_POWERPC_CLOCK_H
/* Make fsl_esdhc driver happy */
enum mxc_clock {
MXC_ESDHC_CLK,
};
DECLARE_GLOBAL_DATA_PTR;
uint mxc_get_clock(int clk)
{
return gd->arch.sdhc_clk;
}
#endif /* __ASM_POWERPC_CLOCK_H */

View File

@@ -6,10 +6,10 @@
/*
* The MCP83xx's 1-2 GPIO controllers each with 32 bits.
*/
#if defined(CONFIG_MPC8313) || defined(CONFIG_MPC8308) || \
defined(CONFIG_MPC8315)
#if defined(CONFIG_ARCH_MPC8313) || defined(CONFIG_ARCH_MPC8308) || \
defined(CONFIG_ARCH_MPC8315)
#define MPC83XX_GPIO_CTRLRS 1
#elif defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
#elif defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
#define MPC83XX_GPIO_CTRLRS 2
#else
#define MPC83XX_GPIO_CTRLRS 0
@@ -17,7 +17,15 @@
#define MAX_NUM_GPIOS (32 * MPC83XX_GPIO_CTRLRS)
struct mpc8xxx_gpio_plat {
ulong addr;
unsigned long size;
uint ngpios;
};
#ifndef DM_GPIO
void mpc83xx_gpio_init_f(void);
void mpc83xx_gpio_init_r(void);
#endif /* DM_GPIO */
#endif /* MPC83XX_GPIO_H_ */

View File

@@ -43,10 +43,10 @@ void lbc_sdram_init(void);
#define BR_MSEL 0x000000E0
#define BR_MSEL_SHIFT 5
#define BR_MS_GPCM 0x00000000 /* GPCM */
#if !defined(CONFIG_MPC834x) && !defined(CONFIG_MPC8360)
#if !defined(CONFIG_ARCH_MPC834X) && !defined(CONFIG_ARCH_MPC8360)
#define BR_MS_FCM 0x00000020 /* FCM */
#endif
#if defined(CONFIG_MPC834x) || defined(CONFIG_MPC8360)
#if defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC8360)
#define BR_MS_SDRAM 0x00000060 /* SDRAM */
#elif defined(CONFIG_MPC85xx)
#define BR_MS_SDRAM 0x00000000 /* SDRAM */
@@ -54,7 +54,7 @@ void lbc_sdram_init(void);
#define BR_MS_UPMA 0x00000080 /* UPMA */
#define BR_MS_UPMB 0x000000A0 /* UPMB */
#define BR_MS_UPMC 0x000000C0 /* UPMC */
#if !defined(CONFIG_MPC834x)
#if !defined(CONFIG_ARCH_MPC834X)
#define BR_ATOM 0x0000000C
#define BR_ATOM_SHIFT 2
#endif
@@ -67,7 +67,7 @@ void lbc_sdram_init(void);
#define UPMB 1
#define UPMC 2
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
#define BR_RES ~(BR_BA | BR_PS | BR_DECC | BR_WP | BR_MSEL | BR_V)
#else
#define BR_RES ~(BR_BA | BR_PS | BR_DECC | BR_WP | BR_MSEL | BR_ATOM | BR_V)
@@ -133,7 +133,7 @@ void lbc_sdram_init(void);
#define OR_GPCM_EHTR_SHIFT 1
#define OR_GPCM_EHTR_CLEAR 0x00000000
#define OR_GPCM_EHTR_SET 0x00000002
#if !defined(CONFIG_MPC8308)
#if !defined(CONFIG_ARCH_MPC8308)
#define OR_GPCM_EAD 0x00000001
#define OR_GPCM_EAD_SHIFT 0
#endif
@@ -428,14 +428,17 @@ void lbc_sdram_init(void);
#define LSDMR_BSMA1516 (3 << (31 - 10))
#define LSDMR_BSMA1617 (4 << (31 - 10))
#define LSDMR_RFCR5 (3 << (31 - 16))
#define LSDMR_RFCR8 (5 << (31 - 16))
#define LSDMR_RFCR16 (7 << (31 - 16))
#define LSDMR_PRETOACT3 (3 << (31 - 19))
#define LSDMR_PRETOACT6 (5 << (31 - 19))
#define LSDMR_PRETOACT7 (7 << (31 - 19))
#define LSDMR_ACTTORW3 (3 << (31 - 22))
#define LSDMR_ACTTORW7 (7 << (31 - 22))
#define LSDMR_ACTTORW6 (6 << (31 - 22))
#define LSDMR_BL8 (1 << (31 - 23))
#define LSDMR_WRC2 (2 << (31 - 27))
#define LSDMR_WRC3 (3 << (31 - 27))
#define LSDMR_WRC4 (0 << (31 - 27))
#define LSDMR_BUFCMD (1 << (31 - 29))
#define LSDMR_CL3 (3 << (31 - 31))

View File

@@ -35,35 +35,35 @@ struct arch_global_data {
#else
/* There are other clocks in the MPC83XX */
u32 csb_clk;
# if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
# if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC834X) || defined(CONFIG_ARCH_MPC837X)
u32 tsec1_clk;
u32 tsec2_clk;
u32 usbdr_clk;
# elif defined(CONFIG_MPC8309)
# elif defined(CONFIG_ARCH_MPC8309)
u32 usbdr_clk;
# endif
# if defined(CONFIG_MPC834x)
# if defined(CONFIG_ARCH_MPC834X)
u32 usbmph_clk;
# endif /* CONFIG_MPC834x */
# if defined(CONFIG_MPC8315)
# endif /* CONFIG_ARCH_MPC834X */
# if defined(CONFIG_ARCH_MPC8315)
u32 tdm_clk;
# endif
u32 core_clk;
u32 enc_clk;
u32 lbiu_clk;
u32 lclk_clk;
# if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
defined(CONFIG_MPC837x)
# if defined(CONFIG_ARCH_MPC8308) || defined(CONFIG_ARCH_MPC831X) || \
defined(CONFIG_ARCH_MPC837X)
u32 pciexp1_clk;
u32 pciexp2_clk;
# endif
# if defined(CONFIG_MPC837x) || defined(CONFIG_MPC8315)
# if defined(CONFIG_ARCH_MPC837X) || defined(CONFIG_ARCH_MPC8315)
u32 sata_clk;
# endif
# if defined(CONFIG_MPC8360)
# if defined(CONFIG_ARCH_MPC8360)
u32 mem_sec_clk;
# endif /* CONFIG_MPC8360 */
# endif /* CONFIG_ARCH_MPC8360 */
#endif
#endif
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)

View File

@@ -59,12 +59,12 @@ typedef struct sysconf83xx {
u32 obir; /* Output Buffer Impedance Register */
u8 res8[0xC];
u32 pecr1; /* PCI Express control register 1 */
#if defined(CONFIG_MPC830x)
#if defined(CONFIG_ARCH_MPC830X)
u32 sdhccr; /* eSDHC Control Registers for MPC830x */
#else
u32 pecr2; /* PCI Express control register 2 */
#endif
#if defined(CONFIG_MPC8309)
#if defined(CONFIG_ARCH_MPC8309)
u32 can_dbg_ctrl;
u32 res9a;
u32 gpr1;
@@ -604,7 +604,7 @@ typedef struct serdes83xx {
* On Chip ROM
*/
typedef struct rom83xx {
#if defined(CONFIG_MPC8309)
#if defined(CONFIG_ARCH_MPC8309)
u8 mem[0x8000];
#else
u8 mem[0x10000];
@@ -625,7 +625,7 @@ typedef struct tdmdmac83xx {
u8 fixme[0x2000];
} tdmdmac83xx_t;
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -666,7 +666,7 @@ typedef struct immap {
u8 res7[0xC0000];
} immap_t;
#ifndef CONFIG_MPC834x
#ifndef CONFIG_ARCH_MPC834X
#ifdef CONFIG_HAS_FSL_MPH_USB
#define CONFIG_SYS_MPC83xx_USB1_OFFSET 0x22000 /* use the MPH controller */
#define CONFIG_SYS_MPC83xx_USB2_OFFSET 0
@@ -679,7 +679,7 @@ typedef struct immap {
#define CONFIG_SYS_MPC83xx_USB2_OFFSET 0x23000
#endif
#elif defined(CONFIG_MPC8313)
#elif defined(CONFIG_ARCH_MPC8313)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -714,7 +714,7 @@ typedef struct immap {
u8 res7[0xC0000];
} immap_t;
#elif defined(CONFIG_MPC8308) || defined(CONFIG_MPC8315)
#elif defined(CONFIG_ARCH_MPC8315)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -729,8 +729,8 @@ typedef struct immap {
gpio83xx_t gpio[1]; /* General purpose I/O module */
u8 res0[0x1300];
ddr83xx_t ddr; /* DDR Memory Controller Memory */
fsl_i2c_t i2c[2]; /* I2C Controllers */
u8 res1[0x1300];
fsl_i2c_t i2c[1]; /* I2C Controllers */
u8 res1[0x1400];
duart83xx_t duart[2]; /* DUART */
u8 res2[0x900];
fsl_lbc_t im_lbc; /* Local Bus Controller Regs */
@@ -759,7 +759,43 @@ typedef struct immap {
u8 res12[0x1CF00];
} immap_t;
#elif defined(CONFIG_MPC837x)
#elif defined(CONFIG_ARCH_MPC8308)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
rtclk83xx_t rtc; /* Real Time Clock Module Registers */
rtclk83xx_t pit; /* Periodic Interval Timer */
gtm83xx_t gtm[1]; /* Global Timers Module */
u8 res0[0x100];
ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
arbiter83xx_t arbiter; /* System Arbiter Registers */
reset83xx_t reset; /* Reset Module */
clk83xx_t clk; /* System Clock Module */
pmc83xx_t pmc; /* Power Management Control Module */
gpio83xx_t gpio[1]; /* General purpose I/O module */
u8 res1[0x1300];
ddr83xx_t ddr; /* DDR Memory Controller Memory */
fsl_i2c_t i2c[2]; /* I2C Controllers */
u8 res2[0x1300];
duart83xx_t duart[2]; /* DUART */
u8 res3[0x900];
fsl_lbc_t im_lbc; /* Local Bus Controller Regs */
u8 res4[0x1000];
spi8xxx_t spi; /* Serial Peripheral Interface */
u8 res5[0x1000];
pex83xx_t pciexp[1]; /* PCI Express Controller */
u8 res6[0x19000];
usb83xx_t usb[1]; /* USB DR Controller */
tsec83xx_t tsec[2];
u8 res7[0x6000];
tdmdmac83xx_t tdmdmac; /* TDM DMAC */
sdhc83xx_t sdhc; /* SDHC Controller */
u8 res8[0xb4000];
serdes83xx_t serdes[1]; /* SerDes Registers */
u8 res9[0x1CF00];
} immap_t;
#elif defined(CONFIG_ARCH_MPC837X)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -803,7 +839,7 @@ typedef struct immap {
rom83xx_t rom; /* On Chip ROM */
} immap_t;
#elif defined(CONFIG_MPC8360)
#elif defined(CONFIG_ARCH_MPC8360)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -843,7 +879,7 @@ typedef struct immap {
u8 qe[0x100000]; /* QE block */
} immap_t;
#elif defined(CONFIG_MPC832x)
#elif defined(CONFIG_ARCH_MPC832X)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -879,7 +915,7 @@ typedef struct immap {
u8 res8[0xC0000];
u8 qe[0x100000]; /* QE block */
} immap_t;
#elif defined(CONFIG_MPC8309)
#elif defined(CONFIG_ARCH_MPC8309)
typedef struct immap {
sysconf83xx_t sysconf; /* System configuration */
wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
@@ -946,7 +982,7 @@ typedef struct immap {
#endif
#define CONFIG_SYS_MPC83xx_USB1_ADDR \
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB1_OFFSET)
#if defined(CONFIG_MPC834x)
#if defined(CONFIG_ARCH_MPC834X)
#define CONFIG_SYS_MPC83xx_USB2_ADDR \
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB2_OFFSET)
#endif

View File

@@ -10,11 +10,11 @@
#include <asm/types.h>
#if defined(CONFIG_MPC8308) || \
defined(CONFIG_MPC8313) || \
defined(CONFIG_MPC8315) || \
defined(CONFIG_MPC834x) || \
defined(CONFIG_MPC837x)
#if defined(CONFIG_ARCH_MPC8308) || \
defined(CONFIG_ARCH_MPC8313) || \
defined(CONFIG_ARCH_MPC8315) || \
defined(CONFIG_ARCH_MPC834X) || \
defined(CONFIG_ARCH_MPC837X)
typedef struct spi8xxx {
u8 res0[0x20]; /* 0x0-0x01f reserved */

View File

@@ -1203,127 +1203,7 @@ int fsl_qoriq_dsp_core_to_cluster(unsigned int core);
#endif
#endif
/* what kind of prep workstation we are */
extern int _prep_type;
/*
* This is used to identify the board type from a given PReP board
* vendor. Board revision is also made available.
*/
extern unsigned char ucSystemType;
extern unsigned char ucBoardRev;
extern unsigned char ucBoardRevMaj, ucBoardRevMin;
struct task_struct;
void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
void release_thread(struct task_struct *);
/*
* Create a new kernel thread.
*/
extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
/*
* Bus types
*/
#define EISA_bus 0
#define EISA_bus__is_a_macro /* for versions in ksyms.c */
#define MCA_bus 0
#define MCA_bus__is_a_macro /* for versions in ksyms.c */
/* Lazy FPU handling on uni-processor */
extern struct task_struct *last_task_used_math;
extern struct task_struct *last_task_used_altivec;
/*
* this is the minimum allowable io space due to the location
* of the io areas on prep (first one at 0x80000000) but
* as soon as I get around to remapping the io areas with the BATs
* to match the mac we can raise this. -- Cort
*/
#define TASK_SIZE (0x80000000UL)
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
*/
#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
typedef struct {
unsigned long seg;
} mm_segment_t;
struct thread_struct {
unsigned long ksp; /* Kernel stack pointer */
unsigned long wchan; /* Event task is sleeping on */
struct pt_regs *regs; /* Pointer to saved register state */
mm_segment_t fs; /* for get_fs() validation */
void *pgdir; /* root of page-table tree */
signed long last_syscall;
double fpr[32]; /* Complete floating point set */
unsigned long fpscr_pad; /* fpr ... fpscr must be contiguous */
unsigned long fpscr; /* Floating point status */
#ifdef CONFIG_ALTIVEC
vector128 vr[32]; /* Complete AltiVec set */
vector128 vscr; /* AltiVec status */
unsigned long vrsave;
#endif /* CONFIG_ALTIVEC */
};
#define INIT_SP (sizeof(init_stack) + (unsigned long) &init_stack)
#define INIT_THREAD { \
INIT_SP, /* ksp */ \
0, /* wchan */ \
(struct pt_regs *)INIT_SP - 1, /* regs */ \
KERNEL_DS, /*fs*/ \
swapper_pg_dir, /* pgdir */ \
0, /* last_syscall */ \
{0}, 0, 0 \
}
/*
* Note: the vm_start and vm_end fields here should *not*
* be in kernel space. (Could vm_end == vm_start perhaps?)
*/
#define INIT_MMAP { &init_mm, 0, 0x1000, NULL, \
PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, \
1, NULL, NULL }
/*
* Return saved PC of a blocked thread. For now, this is the "user" PC
*/
static inline unsigned long thread_saved_pc(struct thread_struct *t)
{
return (t->regs) ? t->regs->nip : 0;
}
#define copy_segments(tsk, mm) do { } while (0)
#define release_segments(mm) do { } while (0)
#define forget_segments() do { } while (0)
unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) ((tsk)->thread.regs->nip)
#define KSTK_ESP(tsk) ((tsk)->thread.regs->gpr[1])
/*
* NOTE! The task struct and the stack go together
*/
#define THREAD_SIZE (2*PAGE_SIZE)
#define alloc_task_struct() \
((struct task_struct *) __get_free_pages(GFP_KERNEL,1))
#define free_task_struct(p) free_pages((unsigned long)(p),1)
#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count)
/* in process.c - for early bootup debug -- Cort */
int ll_printk(const char *, ...);
void ll_puts(const char *);
#define init_task (init_task_union.task)
#define init_stack (init_task_union.stack)
/* In misc.c */
void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
#ifndef CONFIG_CPU_MPC83XX
int prt_83xx_rsr(void);