1*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* 2*576afd4fSJean-Christophe PLAGNIOL-VILLARD * (C) Copyright 2002 3*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 4*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Marius Groeger <mgroeger@sysgo.de> 5*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 6*576afd4fSJean-Christophe PLAGNIOL-VILLARD * (C) Copyright 2002 7*576afd4fSJean-Christophe PLAGNIOL-VILLARD * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch> 8*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 9*576afd4fSJean-Christophe PLAGNIOL-VILLARD * (C) Copyright 2003 10*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Texas Instruments, <www.ti.com> 11*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Kshitij Gupta <Kshitij@ti.com> 12*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 13*576afd4fSJean-Christophe PLAGNIOL-VILLARD * (C) Copyright 2004 14*576afd4fSJean-Christophe PLAGNIOL-VILLARD * ARM Ltd. 15*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Philippe Robin, <philippe.robin@arm.com> 16*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 17*576afd4fSJean-Christophe PLAGNIOL-VILLARD * See file CREDITS for list of people who contributed to this 18*576afd4fSJean-Christophe PLAGNIOL-VILLARD * project. 19*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 20*576afd4fSJean-Christophe PLAGNIOL-VILLARD * This program is free software; you can redistribute it and/or 21*576afd4fSJean-Christophe PLAGNIOL-VILLARD * modify it under the terms of the GNU General Public License as 22*576afd4fSJean-Christophe PLAGNIOL-VILLARD * published by the Free Software Foundation; either version 2 of 23*576afd4fSJean-Christophe PLAGNIOL-VILLARD * the License, or (at your option) any later version. 24*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 25*576afd4fSJean-Christophe PLAGNIOL-VILLARD * This program is distributed in the hope that it will be useful, 26*576afd4fSJean-Christophe PLAGNIOL-VILLARD * but WITHOUT ANY WARRANTY; without even the implied warranty of 27*576afd4fSJean-Christophe PLAGNIOL-VILLARD * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 28*576afd4fSJean-Christophe PLAGNIOL-VILLARD * GNU General Public License for more details. 29*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 30*576afd4fSJean-Christophe PLAGNIOL-VILLARD * You should have received a copy of the GNU General Public License 31*576afd4fSJean-Christophe PLAGNIOL-VILLARD * along with this program; if not, write to the Free Software 32*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 33*576afd4fSJean-Christophe PLAGNIOL-VILLARD * MA 02111-1307 USA 34*576afd4fSJean-Christophe PLAGNIOL-VILLARD */ 35*576afd4fSJean-Christophe PLAGNIOL-VILLARD 36*576afd4fSJean-Christophe PLAGNIOL-VILLARD #include <common.h> 37*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_PCI 38*576afd4fSJean-Christophe PLAGNIOL-VILLARD #include <netdev.h> 39*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 40*576afd4fSJean-Christophe PLAGNIOL-VILLARD 41*576afd4fSJean-Christophe PLAGNIOL-VILLARD DECLARE_GLOBAL_DATA_PTR; 42*576afd4fSJean-Christophe PLAGNIOL-VILLARD 43*576afd4fSJean-Christophe PLAGNIOL-VILLARD void peripheral_power_enable (void); 44*576afd4fSJean-Christophe PLAGNIOL-VILLARD 45*576afd4fSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_SHOW_BOOT_PROGRESS) 46*576afd4fSJean-Christophe PLAGNIOL-VILLARD void show_boot_progress(int progress) 47*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 48*576afd4fSJean-Christophe PLAGNIOL-VILLARD printf("Boot reached stage %d\n", progress); 49*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 50*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 51*576afd4fSJean-Christophe PLAGNIOL-VILLARD 52*576afd4fSJean-Christophe PLAGNIOL-VILLARD #define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF) 53*576afd4fSJean-Christophe PLAGNIOL-VILLARD 54*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* 55*576afd4fSJean-Christophe PLAGNIOL-VILLARD * Miscellaneous platform dependent initialisations 56*576afd4fSJean-Christophe PLAGNIOL-VILLARD */ 57*576afd4fSJean-Christophe PLAGNIOL-VILLARD 58*576afd4fSJean-Christophe PLAGNIOL-VILLARD int board_init (void) 59*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 60*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* arch number of Integrator Board */ 61*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_ARCH_CINTEGRATOR 62*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_arch_number = MACH_TYPE_CINTEGRATOR; 63*576afd4fSJean-Christophe PLAGNIOL-VILLARD #else 64*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_arch_number = MACH_TYPE_INTEGRATOR; 65*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 66*576afd4fSJean-Christophe PLAGNIOL-VILLARD 67*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* adress of boot parameters */ 68*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_boot_params = 0x00000100; 69*576afd4fSJean-Christophe PLAGNIOL-VILLARD 70*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->flags = 0; 71*576afd4fSJean-Christophe PLAGNIOL-VILLARD 72*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_CM_REMAP 73*576afd4fSJean-Christophe PLAGNIOL-VILLARD extern void cm_remap(void); 74*576afd4fSJean-Christophe PLAGNIOL-VILLARD cm_remap(); /* remaps writeable memory to 0x00000000 */ 75*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 76*576afd4fSJean-Christophe PLAGNIOL-VILLARD 77*576afd4fSJean-Christophe PLAGNIOL-VILLARD icache_enable (); 78*576afd4fSJean-Christophe PLAGNIOL-VILLARD 79*576afd4fSJean-Christophe PLAGNIOL-VILLARD return 0; 80*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 81*576afd4fSJean-Christophe PLAGNIOL-VILLARD 82*576afd4fSJean-Christophe PLAGNIOL-VILLARD int misc_init_r (void) 83*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 84*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_PCI 85*576afd4fSJean-Christophe PLAGNIOL-VILLARD pci_init(); 86*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 87*576afd4fSJean-Christophe PLAGNIOL-VILLARD setenv("verify", "n"); 88*576afd4fSJean-Christophe PLAGNIOL-VILLARD return (0); 89*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 90*576afd4fSJean-Christophe PLAGNIOL-VILLARD 91*576afd4fSJean-Christophe PLAGNIOL-VILLARD /****************************** 92*576afd4fSJean-Christophe PLAGNIOL-VILLARD Routine: 93*576afd4fSJean-Christophe PLAGNIOL-VILLARD Description: 94*576afd4fSJean-Christophe PLAGNIOL-VILLARD ******************************/ 95*576afd4fSJean-Christophe PLAGNIOL-VILLARD int dram_init (void) 96*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 97*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_dram[0].start = PHYS_SDRAM_1; 98*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; 99*576afd4fSJean-Christophe PLAGNIOL-VILLARD 100*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_CM_SPD_DETECT 101*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 102*576afd4fSJean-Christophe PLAGNIOL-VILLARD extern void dram_query(void); 103*576afd4fSJean-Christophe PLAGNIOL-VILLARD unsigned long cm_reg_sdram; 104*576afd4fSJean-Christophe PLAGNIOL-VILLARD unsigned long sdram_shift; 105*576afd4fSJean-Christophe PLAGNIOL-VILLARD 106*576afd4fSJean-Christophe PLAGNIOL-VILLARD dram_query(); /* Assembler accesses to CM registers */ 107*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* Queries the SPD values */ 108*576afd4fSJean-Christophe PLAGNIOL-VILLARD 109*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* Obtain the SDRAM size from the CM SDRAM register */ 110*576afd4fSJean-Christophe PLAGNIOL-VILLARD 111*576afd4fSJean-Christophe PLAGNIOL-VILLARD cm_reg_sdram = *(volatile ulong *)(CM_BASE + OS_SDRAM); 112*576afd4fSJean-Christophe PLAGNIOL-VILLARD /* Register SDRAM size 113*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 114*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 0xXXXXXXbbb000bb 16 MB 115*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 0xXXXXXXbbb001bb 32 MB 116*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 0xXXXXXXbbb010bb 64 MB 117*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 0xXXXXXXbbb011bb 128 MB 118*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 0xXXXXXXbbb100bb 256 MB 119*576afd4fSJean-Christophe PLAGNIOL-VILLARD * 120*576afd4fSJean-Christophe PLAGNIOL-VILLARD */ 121*576afd4fSJean-Christophe PLAGNIOL-VILLARD sdram_shift = ((cm_reg_sdram & 0x0000001C)/4)%4; 122*576afd4fSJean-Christophe PLAGNIOL-VILLARD gd->bd->bi_dram[0].size = 0x01000000 << sdram_shift; 123*576afd4fSJean-Christophe PLAGNIOL-VILLARD 124*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 125*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif /* CM_SPD_DETECT */ 126*576afd4fSJean-Christophe PLAGNIOL-VILLARD 127*576afd4fSJean-Christophe PLAGNIOL-VILLARD return 0; 128*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 129*576afd4fSJean-Christophe PLAGNIOL-VILLARD 130*576afd4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_PCI 131*576afd4fSJean-Christophe PLAGNIOL-VILLARD int board_eth_init(bd_t *bis) 132*576afd4fSJean-Christophe PLAGNIOL-VILLARD { 133*576afd4fSJean-Christophe PLAGNIOL-VILLARD return pci_eth_init(bis); 134*576afd4fSJean-Christophe PLAGNIOL-VILLARD } 135*576afd4fSJean-Christophe PLAGNIOL-VILLARD #endif 136