111c45ebdSJoe Hamman /* 2bd42bbb8SPaul Gortmaker * Copyright 2007,2009 Wind River Systems, Inc. <www.windriver.com> 3bd42bbb8SPaul Gortmaker * 411c45ebdSJoe Hamman * Copyright 2007 Embedded Specialties, Inc. 511c45ebdSJoe Hamman * 611c45ebdSJoe Hamman * Copyright 2004, 2007 Freescale Semiconductor. 711c45ebdSJoe Hamman * 811c45ebdSJoe Hamman * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com> 911c45ebdSJoe Hamman * 1011c45ebdSJoe Hamman * See file CREDITS for list of people who contributed to this 1111c45ebdSJoe Hamman * project. 1211c45ebdSJoe Hamman * 1311c45ebdSJoe Hamman * This program is free software; you can redistribute it and/or 1411c45ebdSJoe Hamman * modify it under the terms of the GNU General Public License as 1511c45ebdSJoe Hamman * published by the Free Software Foundation; either version 2 of 1611c45ebdSJoe Hamman * the License, or (at your option) any later version. 1711c45ebdSJoe Hamman * 1811c45ebdSJoe Hamman * This program is distributed in the hope that it will be useful, 1911c45ebdSJoe Hamman * but WITHOUT ANY WARRANTY; without even the implied warranty of 2011c45ebdSJoe Hamman * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2111c45ebdSJoe Hamman * GNU General Public License for more details. 2211c45ebdSJoe Hamman * 2311c45ebdSJoe Hamman * You should have received a copy of the GNU General Public License 2411c45ebdSJoe Hamman * along with this program; if not, write to the Free Software 2511c45ebdSJoe Hamman * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 2611c45ebdSJoe Hamman * MA 02111-1307 USA 2711c45ebdSJoe Hamman */ 2811c45ebdSJoe Hamman 2911c45ebdSJoe Hamman #include <common.h> 3011c45ebdSJoe Hamman #include <pci.h> 3111c45ebdSJoe Hamman #include <asm/processor.h> 3211c45ebdSJoe Hamman #include <asm/immap_85xx.h> 33c8514622SKumar Gala #include <asm/fsl_pci.h> 3433b9079bSKumar Gala #include <asm/fsl_ddr_sdram.h> 355d27e02cSKumar Gala #include <asm/fsl_serdes.h> 36a30a549aSJon Loeliger #include <spd_sdram.h> 3794ca0914SPaul Gortmaker #include <netdev.h> 3894ca0914SPaul Gortmaker #include <tsec.h> 3911c45ebdSJoe Hamman #include <miiphy.h> 4011c45ebdSJoe Hamman #include <libfdt.h> 4111c45ebdSJoe Hamman #include <fdt_support.h> 4211c45ebdSJoe Hamman 4311c45ebdSJoe Hamman DECLARE_GLOBAL_DATA_PTR; 4411c45ebdSJoe Hamman 4511c45ebdSJoe Hamman void local_bus_init(void); 4611c45ebdSJoe Hamman 4711c45ebdSJoe Hamman int board_early_init_f (void) 4811c45ebdSJoe Hamman { 4911c45ebdSJoe Hamman return 0; 5011c45ebdSJoe Hamman } 5111c45ebdSJoe Hamman 5211c45ebdSJoe Hamman int checkboard (void) 5311c45ebdSJoe Hamman { 546d0f6bcfSJean-Christophe PLAGNIOL-VILLARD volatile ccsr_local_ecm_t *ecm = (void *)(CONFIG_SYS_MPC85xx_ECM_ADDR); 556d0f6bcfSJean-Christophe PLAGNIOL-VILLARD volatile u_char *rev= (void *)CONFIG_SYS_BD_REV; 5611c45ebdSJoe Hamman 5711c45ebdSJoe Hamman printf ("Board: Wind River SBC8548 Rev. 0x%01x\n", 580c7e4d45SPaul Gortmaker in_8(rev) >> 4); 5911c45ebdSJoe Hamman 6011c45ebdSJoe Hamman /* 6111c45ebdSJoe Hamman * Initialize local bus. 6211c45ebdSJoe Hamman */ 6311c45ebdSJoe Hamman local_bus_init (); 6411c45ebdSJoe Hamman 650c7e4d45SPaul Gortmaker out_be32(&ecm->eedr, 0xffffffff); /* clear ecm errors */ 660c7e4d45SPaul Gortmaker out_be32(&ecm->eeer, 0xffffffff); /* enable ecm errors */ 6711c45ebdSJoe Hamman return 0; 6811c45ebdSJoe Hamman } 6911c45ebdSJoe Hamman 7011c45ebdSJoe Hamman /* 7111c45ebdSJoe Hamman * Initialize Local Bus 7211c45ebdSJoe Hamman */ 7311c45ebdSJoe Hamman void 7411c45ebdSJoe Hamman local_bus_init(void) 7511c45ebdSJoe Hamman { 766d0f6bcfSJean-Christophe PLAGNIOL-VILLARD volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); 77f51cdaf1SBecky Bruce volatile fsl_lbc_t *lbc = LBC_BASE_ADDR; 7811c45ebdSJoe Hamman 7911c45ebdSJoe Hamman uint clkdiv; 8011c45ebdSJoe Hamman uint lbc_hz; 8111c45ebdSJoe Hamman sys_info_t sysinfo; 8211c45ebdSJoe Hamman 8311c45ebdSJoe Hamman get_sys_info(&sysinfo); 840c7e4d45SPaul Gortmaker clkdiv = (in_be32(&lbc->lcrr) & LCRR_CLKDIV) * 2; 8511c45ebdSJoe Hamman lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv; 8611c45ebdSJoe Hamman 870c7e4d45SPaul Gortmaker out_be32(&gur->lbiuiplldcr1, 0x00078080); 8811c45ebdSJoe Hamman if (clkdiv == 16) { 890c7e4d45SPaul Gortmaker out_be32(&gur->lbiuiplldcr0, 0x7c0f1bf0); 9011c45ebdSJoe Hamman } else if (clkdiv == 8) { 910c7e4d45SPaul Gortmaker out_be32(&gur->lbiuiplldcr0, 0x6c0f1bf0); 9211c45ebdSJoe Hamman } else if (clkdiv == 4) { 930c7e4d45SPaul Gortmaker out_be32(&gur->lbiuiplldcr0, 0x5c0f1bf0); 9411c45ebdSJoe Hamman } 9511c45ebdSJoe Hamman 960c7e4d45SPaul Gortmaker setbits_be32(&lbc->lcrr, 0x00030000); 9711c45ebdSJoe Hamman 9811c45ebdSJoe Hamman asm("sync;isync;msync"); 9911c45ebdSJoe Hamman 1000c7e4d45SPaul Gortmaker out_be32(&lbc->ltesr, 0xffffffff); /* Clear LBC error IRQs */ 1010c7e4d45SPaul Gortmaker out_be32(&lbc->lteir, 0xffffffff); /* Enable LBC error IRQs */ 10211c45ebdSJoe Hamman } 10311c45ebdSJoe Hamman 10411c45ebdSJoe Hamman /* 10511c45ebdSJoe Hamman * Initialize SDRAM memory on the Local Bus. 10611c45ebdSJoe Hamman */ 10770961ba4SBecky Bruce void lbc_sdram_init(void) 10811c45ebdSJoe Hamman { 10911d5a629SPaul Gortmaker #if defined(CONFIG_SYS_LBC_SDRAM_SIZE) 11011c45ebdSJoe Hamman 11111c45ebdSJoe Hamman uint idx; 112f51cdaf1SBecky Bruce volatile fsl_lbc_t *lbc = LBC_BASE_ADDR; 1136d0f6bcfSJean-Christophe PLAGNIOL-VILLARD uint *sdram_addr = (uint *)CONFIG_SYS_LBC_SDRAM_BASE; 11411c45ebdSJoe Hamman uint lsdmr_common; 11511c45ebdSJoe Hamman 11611c45ebdSJoe Hamman puts(" SDRAM: "); 11711c45ebdSJoe Hamman 1186d0f6bcfSJean-Christophe PLAGNIOL-VILLARD print_size (CONFIG_SYS_LBC_SDRAM_SIZE * 1024 * 1024, "\n"); 11911c45ebdSJoe Hamman 12011c45ebdSJoe Hamman /* 12111c45ebdSJoe Hamman * Setup SDRAM Base and Option Registers 12211c45ebdSJoe Hamman */ 123f51cdaf1SBecky Bruce set_lbc_or(3, CONFIG_SYS_OR3_PRELIM); 124f51cdaf1SBecky Bruce set_lbc_br(3, CONFIG_SYS_BR3_PRELIM); 125f51cdaf1SBecky Bruce set_lbc_or(4, CONFIG_SYS_OR4_PRELIM); 126f51cdaf1SBecky Bruce set_lbc_br(4, CONFIG_SYS_BR4_PRELIM); 12711d5a629SPaul Gortmaker 1280c7e4d45SPaul Gortmaker out_be32(&lbc->lbcr, CONFIG_SYS_LBC_LBCR); 12911c45ebdSJoe Hamman asm("msync"); 13011c45ebdSJoe Hamman 1310c7e4d45SPaul Gortmaker out_be32(&lbc->lsrt, CONFIG_SYS_LBC_LSRT); 1320c7e4d45SPaul Gortmaker out_be32(&lbc->mrtpr, CONFIG_SYS_LBC_MRTPR); 13311c45ebdSJoe Hamman asm("msync"); 13411c45ebdSJoe Hamman 13511c45ebdSJoe Hamman /* 13611c45ebdSJoe Hamman * MPC8548 uses "new" 15-16 style addressing. 13711c45ebdSJoe Hamman */ 1386d0f6bcfSJean-Christophe PLAGNIOL-VILLARD lsdmr_common = CONFIG_SYS_LBC_LSDMR_COMMON; 139b0fe93edSKumar Gala lsdmr_common |= LSDMR_BSMA1516; 14011c45ebdSJoe Hamman 14111c45ebdSJoe Hamman /* 14211c45ebdSJoe Hamman * Issue PRECHARGE ALL command. 14311c45ebdSJoe Hamman */ 1440c7e4d45SPaul Gortmaker out_be32(&lbc->lsdmr, lsdmr_common | LSDMR_OP_PCHALL); 14511c45ebdSJoe Hamman asm("sync;msync"); 14611c45ebdSJoe Hamman *sdram_addr = 0xff; 14711c45ebdSJoe Hamman ppcDcbf((unsigned long) sdram_addr); 14811c45ebdSJoe Hamman udelay(100); 14911c45ebdSJoe Hamman 15011c45ebdSJoe Hamman /* 15111c45ebdSJoe Hamman * Issue 8 AUTO REFRESH commands. 15211c45ebdSJoe Hamman */ 15311c45ebdSJoe Hamman for (idx = 0; idx < 8; idx++) { 1540c7e4d45SPaul Gortmaker out_be32(&lbc->lsdmr, lsdmr_common | LSDMR_OP_ARFRSH); 15511c45ebdSJoe Hamman asm("sync;msync"); 15611c45ebdSJoe Hamman *sdram_addr = 0xff; 15711c45ebdSJoe Hamman ppcDcbf((unsigned long) sdram_addr); 15811c45ebdSJoe Hamman udelay(100); 15911c45ebdSJoe Hamman } 16011c45ebdSJoe Hamman 16111c45ebdSJoe Hamman /* 16211c45ebdSJoe Hamman * Issue 8 MODE-set command. 16311c45ebdSJoe Hamman */ 1640c7e4d45SPaul Gortmaker out_be32(&lbc->lsdmr, lsdmr_common | LSDMR_OP_MRW); 16511c45ebdSJoe Hamman asm("sync;msync"); 16611c45ebdSJoe Hamman *sdram_addr = 0xff; 16711c45ebdSJoe Hamman ppcDcbf((unsigned long) sdram_addr); 16811c45ebdSJoe Hamman udelay(100); 16911c45ebdSJoe Hamman 17011c45ebdSJoe Hamman /* 17111c45ebdSJoe Hamman * Issue NORMAL OP command. 17211c45ebdSJoe Hamman */ 1730c7e4d45SPaul Gortmaker out_be32(&lbc->lsdmr, lsdmr_common | LSDMR_OP_NORMAL); 17411c45ebdSJoe Hamman asm("sync;msync"); 17511c45ebdSJoe Hamman *sdram_addr = 0xff; 17611c45ebdSJoe Hamman ppcDcbf((unsigned long) sdram_addr); 17711c45ebdSJoe Hamman udelay(200); /* Overkill. Must wait > 200 bus cycles */ 17811c45ebdSJoe Hamman 17911c45ebdSJoe Hamman #endif /* enable SDRAM init */ 18011c45ebdSJoe Hamman } 18111c45ebdSJoe Hamman 1826d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_SYS_DRAM_TEST) 18311c45ebdSJoe Hamman int 18411c45ebdSJoe Hamman testdram(void) 18511c45ebdSJoe Hamman { 1866d0f6bcfSJean-Christophe PLAGNIOL-VILLARD uint *pstart = (uint *) CONFIG_SYS_MEMTEST_START; 1876d0f6bcfSJean-Christophe PLAGNIOL-VILLARD uint *pend = (uint *) CONFIG_SYS_MEMTEST_END; 18811c45ebdSJoe Hamman uint *p; 18911c45ebdSJoe Hamman 19011c45ebdSJoe Hamman printf("Testing DRAM from 0x%08x to 0x%08x\n", 1916d0f6bcfSJean-Christophe PLAGNIOL-VILLARD CONFIG_SYS_MEMTEST_START, 1926d0f6bcfSJean-Christophe PLAGNIOL-VILLARD CONFIG_SYS_MEMTEST_END); 19311c45ebdSJoe Hamman 19411c45ebdSJoe Hamman printf("DRAM test phase 1:\n"); 19511c45ebdSJoe Hamman for (p = pstart; p < pend; p++) 19611c45ebdSJoe Hamman *p = 0xaaaaaaaa; 19711c45ebdSJoe Hamman 19811c45ebdSJoe Hamman for (p = pstart; p < pend; p++) { 19911c45ebdSJoe Hamman if (*p != 0xaaaaaaaa) { 20011c45ebdSJoe Hamman printf ("DRAM test fails at: %08x\n", (uint) p); 20111c45ebdSJoe Hamman return 1; 20211c45ebdSJoe Hamman } 20311c45ebdSJoe Hamman } 20411c45ebdSJoe Hamman 20511c45ebdSJoe Hamman printf("DRAM test phase 2:\n"); 20611c45ebdSJoe Hamman for (p = pstart; p < pend; p++) 20711c45ebdSJoe Hamman *p = 0x55555555; 20811c45ebdSJoe Hamman 20911c45ebdSJoe Hamman for (p = pstart; p < pend; p++) { 21011c45ebdSJoe Hamman if (*p != 0x55555555) { 21111c45ebdSJoe Hamman printf ("DRAM test fails at: %08x\n", (uint) p); 21211c45ebdSJoe Hamman return 1; 21311c45ebdSJoe Hamman } 21411c45ebdSJoe Hamman } 21511c45ebdSJoe Hamman 21611c45ebdSJoe Hamman printf("DRAM test passed.\n"); 21711c45ebdSJoe Hamman return 0; 21811c45ebdSJoe Hamman } 21911c45ebdSJoe Hamman #endif 22011c45ebdSJoe Hamman 22111c45ebdSJoe Hamman #if !defined(CONFIG_SPD_EEPROM) 2220c7e4d45SPaul Gortmaker #define CONFIG_SYS_DDR_CONTROL 0xc300c000 22311c45ebdSJoe Hamman /************************************************************************* 22411c45ebdSJoe Hamman * fixed_sdram init -- doesn't use serial presence detect. 22511c45ebdSJoe Hamman * assumes 256MB DDR2 SDRAM SODIMM, without ECC, running at DDR400 speed. 22611c45ebdSJoe Hamman ************************************************************************/ 22738dba0c2SBecky Bruce phys_size_t fixed_sdram(void) 22811c45ebdSJoe Hamman { 2296d0f6bcfSJean-Christophe PLAGNIOL-VILLARD volatile ccsr_ddr_t *ddr = (void *)(CONFIG_SYS_MPC85xx_DDR_ADDR); 23011c45ebdSJoe Hamman 2310c7e4d45SPaul Gortmaker out_be32(&ddr->cs0_bnds, 0x0000007f); 2320c7e4d45SPaul Gortmaker out_be32(&ddr->cs1_bnds, 0x008000ff); 2330c7e4d45SPaul Gortmaker out_be32(&ddr->cs2_bnds, 0x00000000); 2340c7e4d45SPaul Gortmaker out_be32(&ddr->cs3_bnds, 0x00000000); 2350c7e4d45SPaul Gortmaker out_be32(&ddr->cs0_config, 0x80010101); 2360c7e4d45SPaul Gortmaker out_be32(&ddr->cs1_config, 0x80010101); 2370c7e4d45SPaul Gortmaker out_be32(&ddr->cs2_config, 0x00000000); 2380c7e4d45SPaul Gortmaker out_be32(&ddr->cs3_config, 0x00000000); 2390c7e4d45SPaul Gortmaker out_be32(&ddr->timing_cfg_3, 0x00000000); 2400c7e4d45SPaul Gortmaker out_be32(&ddr->timing_cfg_0, 0x00220802); 2410c7e4d45SPaul Gortmaker out_be32(&ddr->timing_cfg_1, 0x38377322); 2420c7e4d45SPaul Gortmaker out_be32(&ddr->timing_cfg_2, 0x0fa044C7); 2430c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_cfg, 0x4300C000); 2440c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_cfg_2, 0x24401000); 2450c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_mode, 0x23C00542); 2460c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_mode_2, 0x00000000); 2470c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_interval, 0x05080100); 2480c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_md_cntl, 0x00000000); 2490c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_data_init, 0x00000000); 2500c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_clk_cntl, 0x03800000); 25111c45ebdSJoe Hamman asm("sync;isync;msync"); 25211c45ebdSJoe Hamman udelay(500); 25311c45ebdSJoe Hamman 25411c45ebdSJoe Hamman #if defined (CONFIG_DDR_ECC) 25511c45ebdSJoe Hamman /* Enable ECC checking */ 2560c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_cfg, CONFIG_SYS_DDR_CONTROL | 0x20000000); 25711c45ebdSJoe Hamman #else 2580c7e4d45SPaul Gortmaker out_be32(&ddr->sdram_cfg, CONFIG_SYS_DDR_CONTROL); 25911c45ebdSJoe Hamman #endif 26011c45ebdSJoe Hamman 2616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD return CONFIG_SYS_SDRAM_SIZE * 1024 * 1024; 26211c45ebdSJoe Hamman } 26311c45ebdSJoe Hamman #endif 26411c45ebdSJoe Hamman 2657b1f1399SPaul Gortmaker #ifdef CONFIG_PCI1 2667b1f1399SPaul Gortmaker static struct pci_controller pci1_hose; 2677b1f1399SPaul Gortmaker #endif /* CONFIG_PCI1 */ 26811c45ebdSJoe Hamman 269fdc7eb90SPaul Gortmaker #ifdef CONFIG_PCI 27011c45ebdSJoe Hamman void 27111c45ebdSJoe Hamman pci_init_board(void) 27211c45ebdSJoe Hamman { 2736d0f6bcfSJean-Christophe PLAGNIOL-VILLARD volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); 274fdc7eb90SPaul Gortmaker int first_free_busno = 0; 27511c45ebdSJoe Hamman 27611c45ebdSJoe Hamman #ifdef CONFIG_PCI1 277*2d0a054dSKumar Gala struct fsl_pci_info pci_info; 278*2d0a054dSKumar Gala u32 devdisr = in_be32(&gur->devdisr); 279*2d0a054dSKumar Gala u32 pordevsr = in_be32(&gur->pordevsr); 280*2d0a054dSKumar Gala u32 porpllsr = in_be32(&gur->porpllsr); 281*2d0a054dSKumar Gala 282fdc7eb90SPaul Gortmaker if (!(devdisr & MPC85xx_DEVDISR_PCI1)) { 283fdc7eb90SPaul Gortmaker uint pci_32 = pordevsr & MPC85xx_PORDEVSR_PCI1_PCI32; 284fdc7eb90SPaul Gortmaker uint pci_arb = pordevsr & MPC85xx_PORDEVSR_PCI1_ARB; 285fdc7eb90SPaul Gortmaker uint pci_clk_sel = porpllsr & MPC85xx_PORDEVSR_PCI1_SPD; 2862c40acd3SPaul Gortmaker uint pci_speed = CONFIG_SYS_CLK_FREQ; /* get_clock_freq() */ 28711c45ebdSJoe Hamman 2888ca78f2cSPeter Tyser printf("PCI: Host, %d bit, %s MHz, %s, %s\n", 28911c45ebdSJoe Hamman (pci_32) ? 32 : 64, 2902c40acd3SPaul Gortmaker (pci_speed == 33000000) ? "33" : 2912c40acd3SPaul Gortmaker (pci_speed == 66000000) ? "66" : "unknown", 29211c45ebdSJoe Hamman pci_clk_sel ? "sync" : "async", 293fdc7eb90SPaul Gortmaker pci_arb ? "arbiter" : "external-arbiter"); 29411c45ebdSJoe Hamman 295*2d0a054dSKumar Gala SET_STD_PCI_INFO(pci_info, 1); 296*2d0a054dSKumar Gala set_next_law(pci_info.mem_phys, 297*2d0a054dSKumar Gala law_size_bits(pci_info.mem_size), pci_info.law); 298*2d0a054dSKumar Gala set_next_law(pci_info.io_phys, 299*2d0a054dSKumar Gala law_size_bits(pci_info.io_size), pci_info.law); 300*2d0a054dSKumar Gala 301*2d0a054dSKumar Gala first_free_busno = fsl_pci_init_port(&pci_info, 30201471d53SKumar Gala &pci1_hose, first_free_busno); 30311c45ebdSJoe Hamman } else { 30411c45ebdSJoe Hamman printf("PCI: disabled\n"); 30511c45ebdSJoe Hamman } 306fdc7eb90SPaul Gortmaker 307fdc7eb90SPaul Gortmaker puts("\n"); 30811c45ebdSJoe Hamman #else 309fdc7eb90SPaul Gortmaker setbits_be32(&gur->devdisr, MPC85xx_DEVDISR_PCI1); /* disable */ 31011c45ebdSJoe Hamman #endif 31111c45ebdSJoe Hamman 312fdc7eb90SPaul Gortmaker setbits_be32(&gur->devdisr, MPC85xx_DEVDISR_PCI2); /* disable PCI2 */ 31311c45ebdSJoe Hamman 314*2d0a054dSKumar Gala fsl_pcie_init_board(first_free_busno); 31511c45ebdSJoe Hamman } 316fdc7eb90SPaul Gortmaker #endif 31711c45ebdSJoe Hamman 31894ca0914SPaul Gortmaker int board_eth_init(bd_t *bis) 31994ca0914SPaul Gortmaker { 32094ca0914SPaul Gortmaker tsec_standard_init(bis); 32194ca0914SPaul Gortmaker pci_eth_init(bis); 32294ca0914SPaul Gortmaker return 0; /* otherwise cpu_eth_init gets run */ 32394ca0914SPaul Gortmaker } 32494ca0914SPaul Gortmaker 32511c45ebdSJoe Hamman int last_stage_init(void) 32611c45ebdSJoe Hamman { 32711c45ebdSJoe Hamman return 0; 32811c45ebdSJoe Hamman } 32911c45ebdSJoe Hamman 33011c45ebdSJoe Hamman #if defined(CONFIG_OF_BOARD_SETUP) 3312dba0deaSKumar Gala void ft_board_setup(void *blob, bd_t *bd) 33211c45ebdSJoe Hamman { 33311c45ebdSJoe Hamman ft_cpu_setup(blob, bd); 3346525d51fSKumar Gala 3356525d51fSKumar Gala #ifdef CONFIG_FSL_PCI_INIT 3366525d51fSKumar Gala FT_FSL_PCI_SETUP; 33711c45ebdSJoe Hamman #endif 33811c45ebdSJoe Hamman } 33911c45ebdSJoe Hamman #endif 340