mpc83xx: Split PIB init code from pci.c and add Qoc3 ATM card support
PATCH 1/1 mpc83xx: Split PIB init code from pci.c and add Qoc3 ATM card support
The patch split the PIB init code from pci.c to a single file board/freescale/common/pq-mds-pib.c And add Qoc3 ATM card support for MPC8360EMDS and MPC832XEMDS board.
Signed-off-by Tony Li <[email protected]>
---
board/freescale/common/pq-mds-pib.c | 101 +++++++++++++++++++++++++++++++++++ board/freescale/common/pq-mds-pib.h | 9 +++ board/mpc832xemds/Makefile | 2 +- board/mpc832xemds/mpc832xemds.c | 11 ++++ board/mpc832xemds/pci.c | 40 -------------- board/mpc8360emds/Makefile | 2 +- board/mpc8360emds/mpc8360emds.c | 11 ++++ board/mpc8360emds/pci.c | 40 -------------- include/configs/MPC832XEMDS.h | 3 + include/configs/MPC8360EMDS.h | 7 ++- 10 files changed, 142 insertions(+), 84 deletions(-) create mode 100644 board/freescale/common/pq-mds-pib.c create mode 100644 board/freescale/common/pq-mds-pib.h
board/freescale/common/pq-mds-pib.c new file +101 -0
@@ -0,0 +1,101 @@ +/* +* Copyright (C) 2007 Freescale Semiconductor, Inc. +* +* Tony Li <[email protected]> +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License version 2 as +* published by the Free Software Foundation; +*/ + +#include <common.h> +#include <i2c.h> +#include <asm/io.h> + +#include "pq-mds-pib.h" + +int pib_init (void ) +{ +u8 val8; +u8 orig_i2c_bus; + +/* Switch temporarily to I2C bus #2 */ + orig_i2c_bus =i2c_get_bus_num (); +i2c_set_bus_num (1 ); +#if defined(CONFIG_PCI ) && !defined(CONFIG_PCISLAVE ) +/* Assign PIB PMC slot to desired PCI bus */ + val8 =0 ; +i2c_write (0x23 ,0x6 ,1 , &val8,1 ); +i2c_write (0x23 ,0x7 ,1 , &val8,1 ); + val8 =0xff ; +i2c_write (0x23 ,0x2 ,1 , &val8,1 ); +i2c_write (0x23 ,0x3 ,1 , &val8,1 ); + + val8 =0 ; +i2c_write (0x26 ,0x6 ,1 , &val8,1 ); + val8 =0x34 ; +i2c_write (0x26 ,0x7 ,1 , &val8,1 ); +#if defined(CONFIG_MPC832XEMDS ) + val8 =0xf9 ;/* PMC2, PMC3 slot to PCI bus */ +#else + val8 =0xf3 ;/* PMC1, PMC2, PMC3 slot to PCI bus */ +#endif +i2c_write (0x26 ,0x2 ,1 , &val8,1 ); + val8 =0xff ; +i2c_write (0x26 ,0x3 ,1 , &val8,1 ); + + val8 =0 ; +i2c_write (0x27 ,0x6 ,1 , &val8,1 ); +i2c_write (0x27 ,0x7 ,1 , &val8,1 ); + val8 =0xff ; +i2c_write (0x27 ,0x2 ,1 , &val8,1 ); + val8 =0xef ; +i2c_write (0x27 ,0x3 ,1 , &val8,1 ); + +eieio (); + +#if defined(CONFIG_MPC832XEMDS ) +printf ("PCI 32bit bus on PMC2 &PMC3\n" ); +#else +printf ("PCI 32bit bus on PMC1 & PMC2 &PMC3\n" ); +#endif +#endif + +#if defined(CONFIG_PQ_MDS_PIB_ATM ) +#if defined(CONFIG_MPC8360EMDS ) + val8 =0 ; +i2c_write (0x20 ,0x6 ,1 , &val8,1 ); +i2c_write (0x20 ,0x7 ,1 , &val8,1 ); + + val8 =0xdf ; +i2c_write (0x20 ,0x2 ,1 , &val8,1 ); + val8 =0xf7 ; +i2c_write (0x20 ,0x3 ,1 , &val8,1 ); + +eieio (); + +printf ("QOC3 ATM card on PMC0\n" ); +#elif defined(CONFIG_MPC832XEMDS ) + val =0 ; +i2c_write (0x26 ,0x7 ,1 , &val,1 ); + val =0xf7 ; +i2c_write (0x26 ,0x3 ,1 , &val,1 ); + + val =0 ; +i2c_write (0x21 ,0x6 ,1 , &val,1 ); +i2c_write (0x21 ,0x7 ,1 , &val,1 ); + + val =0xdf ; +i2c_write (0x21 ,0x2 ,1 , &val,1 ); + val =0xef ; +i2c_write (0x21 ,0x3 ,1 , &val,1 ); + +eieio (); + +printf ("QOC3 ATM card on PMC1\n" ); +#endif +#endif +/* Reset to original I2C bus */ +i2c_set_bus_num (orig_i2c_bus); +return 0 ; +}
board/freescale/common/pq-mds-pib.h new file +9 -0
@@ -0,0 +1,9 @@ +/* +* Copyright (C) 2007 Freescale Semiconductor, Inc. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License version 2 as +* published by the Free Software Foundation; +*/ + +extern int pib_init (void );
board/mpc832xemds/Makefile +1 -1
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a -COBJS := $(BOARD).o pci.o +COBJS := $(BOARD).o pci.o ../freescale/common/pq-mds-pib.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
board/mpc832xemds/mpc832xemds.c +11 -0
@@ -30,6 +30,9 @@#if defined(CONFIG_OF_FLAT_TREE )#include <ft_build.h> #endif +#if defined(CONFIG_PQ_MDS_PIB ) +#include "../freescale/common/pq-mds-pib.h" +#endif const qe_iop_conf_t qe_iop_conf_tab[] = {/* ETH3 */
@@ -86,6 +89,14 @@ int board_early_init_f(void)return 0 ; } +int board_early_init_r (void ) +{ +#ifdef CONFIG_PQ_MDS_PIB +pib_init (); +#endif +return 0 ; +} +int fixed_sdram (void );long int initdram (int board_type)
board/mpc832xemds/pci.c +0 -40
@@ -129,7 +129,6 @@ void pci_init_board(void)volatile pcictrl83xx_t *pci_ctrl;volatile pciconf83xx_t *pci_conf; -u8 val8, orig_i2c_bus;u16 reg16;u32 val32;u32 dev;
@@ -198,43 +197,6 @@ void pci_init_board(void)PIWAR_IWS_2G ;/* -* Assign PIB PMC slot to desired PCI bus -*/ - -/* Switch temporarily to I2C bus #2 */ - orig_i2c_bus =i2c_get_bus_num (); -i2c_set_bus_num (1 ); - - val8 =0 ; -i2c_write (0x23 ,0x6 ,1 , &val8,1 ); -i2c_write (0x23 ,0x7 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x23 ,0x2 ,1 , &val8,1 ); -i2c_write (0x23 ,0x3 ,1 , &val8,1 ); - - val8 =0 ; -i2c_write (0x26 ,0x6 ,1 , &val8,1 ); - val8 =0x34 ; -i2c_write (0x26 ,0x7 ,1 , &val8,1 ); - - val8 =0xf9 ;/* PMC2, PMC3 slot to PCI bus */ -i2c_write (0x26 ,0x2 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x26 ,0x3 ,1 , &val8,1 ); - - val8 =0 ; -i2c_write (0x27 ,0x6 ,1 , &val8,1 ); -i2c_write (0x27 ,0x7 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x27 ,0x2 ,1 , &val8,1 ); - val8 =0xef ; -i2c_write (0x27 ,0x3 ,1 , &val8,1 ); - asm("eieio" ); - -/* Reset to original I2C bus */ -i2c_set_bus_num (orig_i2c_bus); - -/* * Release PCI RST Output signal */ udelay (2000 );
@@ -290,8 +252,6 @@ void pci_init_board(void)pci_hose_write_config_byte (&hose[0 ], dev,PCI_LATENCY_TIMER ,0x80 );pci_hose_write_config_byte (&hose[0 ], dev,PCI_CACHE_LINE_SIZE ,0x08 ); -printf ("PCI 32bit bus on PMC2 & PMC3\n" ); -/* * Hose scan. */
board/mpc8360emds/Makefile +1 -1
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a -COBJS := $(BOARD).o pci.o +COBJS := $(BOARD).o pci.o ../freescale/common/pq-mds-pib.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
board/mpc8360emds/mpc8360emds.c +11 -0
@@ -31,6 +31,9 @@#include <libfdt.h> #include <libfdt_env.h> #endif +#if defined(CONFIG_PQ_MDS_PIB ) +#include "../freescale/common/pq-mds-pib.h" +#endif const qe_iop_conf_t qe_iop_conf_tab[] = {/* GETH1 */
@@ -107,6 +110,14 @@ int board_early_init_f(void)return 0 ; } +int board_early_init_r (void ) +{ +#ifdef CONFIG_PQ_MDS_PIB +pib_init (); +#endif +return 0 ; +} +#if defined(CONFIG_DDR_ECC ) && !defined(CONFIG_ECC_INIT_VIA_DDRC )extern void ddr_enable_ecc (unsigned int dram_size);#endif
board/mpc8360emds/pci.c +0 -40
@@ -132,7 +132,6 @@ void pci_init_board(void)volatile pcictrl83xx_t *pci_ctrl;volatile pciconf83xx_t *pci_conf; -u8 val8, orig_i2c_bus;u16 reg16;u32 val32;u32 dev;
@@ -201,43 +200,6 @@ void pci_init_board(void)PIWAR_IWS_2G ;/* -* Assign PIB PMC slot to desired PCI bus -*/ - -/* Switch temporarily to I2C bus #2 */ - orig_i2c_bus =i2c_get_bus_num (); -i2c_set_bus_num (1 ); - - val8 =0 ; -i2c_write (0x23 ,0x6 ,1 , &val8,1 ); -i2c_write (0x23 ,0x7 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x23 ,0x2 ,1 , &val8,1 ); -i2c_write (0x23 ,0x3 ,1 , &val8,1 ); - - val8 =0 ; -i2c_write (0x26 ,0x6 ,1 , &val8,1 ); - val8 =0x34 ; -i2c_write (0x26 ,0x7 ,1 , &val8,1 ); - - val8 =0xf3 ;/*PMC1, PMC2, PMC3 slot to PCI bus */ -i2c_write (0x26 ,0x2 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x26 ,0x3 ,1 , &val8,1 ); - - val8 =0 ; -i2c_write (0x27 ,0x6 ,1 , &val8,1 ); -i2c_write (0x27 ,0x7 ,1 , &val8,1 ); - val8 =0xff ; -i2c_write (0x27 ,0x2 ,1 , &val8,1 ); - val8 =0xef ; -i2c_write (0x27 ,0x3 ,1 , &val8,1 ); - asm("eieio" ); - -/* Reset to original I2C bus */ -i2c_set_bus_num (orig_i2c_bus); - -/* * Release PCI RST Output signal */ udelay (2000 );
@@ -293,8 +255,6 @@ void pci_init_board(void)pci_hose_write_config_byte (&hose[0 ], dev,PCI_LATENCY_TIMER ,0x80 );pci_hose_write_config_byte (&hose[0 ], dev,PCI_CACHE_LINE_SIZE ,0x08 ); -printf ("PCI 32bit bus on PMC1 & PMC2 & PMC3\n" ); -/* * Hose scan. */
include/configs/MPC832XEMDS.h +3 -0
@@ -30,6 +30,8 @@#define CONFIG_MPC83XX 1/* MPC83xx family */ #define CONFIG_MPC832X 1/* MPC832x CPU specific */ #define CONFIG_MPC832XEMDS 1/* MPC832XEMDS board specific */ +#undef CONFIG_PQ_MDS_PIB/* POWERQUICC MDS Platform IO Board */ +#undef CONFIG_PQ_MDS_PIB_ATM/* QOC3 ATM card */ /* * System Clock Setup
@@ -87,6 +89,7 @@#define CFG_SICRL 0x00000000#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */ +#define CONFIG_BOARD_EARLY_INIT_R /* * IMMR new address
include/configs/MPC8360EMDS.h +5 -2
@@ -32,6 +32,8 @@#define CONFIG_MPC83XX 1/* MPC83XX family */ #define CONFIG_MPC8360 1/* MPC8360 CPU specific */ #define CONFIG_MPC8360EMDS 1/* MPC8360EMDS board specific */ +#undef CONFIG_PQ_MDS_PIB/* POWERQUICC MDS Platform IO Board */ +#undef CONFIG_PQ_MDS_PIB_ATM/* QOC3 ATM card */ /* * System Clock Setup
@@ -88,6 +90,7 @@#define CFG_SICRL 0x40000000#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */ +#define CONFIG_BOARD_EARLY_INIT_R /* * IMMR new address
@@ -309,13 +312,13 @@/* * CS4 on Local Bus, to PIB */ -#define CFG_BR4_PRELIM 0xf8008801/* CS4 base address at 0xf8008000 */ +#define CFG_BR4_PRELIM 0xf8010801/* CS4 base address at 0xf8010000 */ #define CFG_OR4_PRELIM 0xffffe9f7/* size 32KB, port size 8bit, GPCM */ /* * CS5 on Local Bus, to PIB */ -#define CFG_BR5_PRELIM 0xf8010801/* CS5 base address at 0xf8010000 */ +#define CFG_BR5_PRELIM 0xf8008801/* CS5 base address at 0xf8008000 */ #define CFG_OR5_PRELIM 0xffffe9f7/* size 32KB, port size 8bit, GPCM */ /*
Signature · 1 line
1.5.1