Freescale Alaska MPC8220 board ============================== TsiChung Liew(Tsi-Chung.Liew@freescale.com) Created 9/21/04 =========================================== Changed files: ============== - Makefile added MPC8220 and Alaska8220_config - MAKEALL added MPC8220 and Alaska8220 - README added CONFIG_MPC8220, Alaska8220_config - common/cmd_bdinfo.c added board information members for MPC8220 - common/cmd_bootm.c added clocks for MPC8220 in do_bootm_linux() - include/common.h added CONFIG_MPC8220 - include/asm-ppc/u-boot.h added board information members for MPC8220 - include/asm-ppc/global_data.h added global variables - inp_clk, pci_clk, vco_clk, pev_clk, flb_clk, and bExtUart - lib_ppc/board.c added CONFIG_MPC8220 support - net/eth.c added FEC support for MPC8220 Added files: ============ - board/alaska directory for Alaska MPC8220 - board/alaska/alaska.c Alaska dram and BATs setup - board/alaska/extserial.c external serial (debug card serial) support - board/alaska/flash.c Socket (AMD) and Onboard (INTEL) flash support - board/alaska/serial.c to determine which int/ext serial to use - board/alaska/Makefile Makefile - board/alaska/config.mk config make - board/alaska/u-boot.lds Linker description - cpu/mpc8220/dma.h multi-channel dma header file - cpu/mpc8220/dramSetup.h dram setup header file - cpu/mpc8220/fec.h MPC8220 FEC header file - cpu/mpc8220/cpu.c cpu specific code - cpu/mpc8220/cpu_init.c Flexbus ChipSelect and Mux pins setup - cpu/mpc8220/dramSetup.c MPC8220 DDR SDRAM setup - cpu/mpc8220/fec.c MPC8220 FEC driver - cpu/mpc8220/i2c.c MPC8220 I2C driver - cpu/mpc8220/interrupts.c interrupt support (not enable) - cpu/mpc8220/loadtask.c load dma - cpu/mpc8220/speed.c system, pci, flexbus, pev, and cpu clock - cpu/mpc8220/traps.c exception - cpu/mpc8220/uart.c MPC8220 UART driver - cpu/mpc8220/Makefile Makefile - cpu/mpc8220/config.mk config make - cpu/mpc8220/fec_dma_task.S MPC8220 FEC multi-channel dma program - cpu/mpc8220/io.S io functions - cpu/mpc8220/start.S start up - include/mpc8220.h - include/asm-ppc/immap_8220.h - include/configs/Alaska8220.h 1. SWITCH SETTINGS ================== 1.1 SW1: 0 - Boot from Socket Flash (AMD) or 1 - Onboard Flash (INTEL) SW2: 0 - Select MPC8220 UART or 1 - Debug Card UART SW3: unsed SW4: 0 - 1284 or 1 - FEC1 SW5: 0 - PEV or 1 - FEC2 2. MEMORY MAP UNDER U-BOOT AND LINUX KERNEL =========================================== 2.1. For the initial bringup, we adopted a consistent memory scheme between u-boot and linux kernel, you can customize it based on your system requirements: DDR: 0x00000000-0x1fffffff (max 512MB) MBAR: 0xf0000000-0xf0027fff (128KB) CPLD: 0xf1000000-0xf103ffff (256KB) FPGA: 0xf2000000-0xf203ffff (256KB) Flash: 0xfe000000-0xffffffff (max 32MB) 3. DEFINITIONS AND COMPILATION ============================== 3.1 Explanation on NEW definitions in include/configs/alaska8220.h CONFIG_MPC8220 MPC8220 specific CONFIG_ALASKA8220 Alaska board specific CFG_MPC8220_CLKIN Define Alaska Input Clock CONFIG_PSC_CONSOLE Enable MPC8220 UART CONFIG_EXTUART_CONSOLE Enable External 16552 UART CFG_AMD_BOOT To determine the u-boot is booted from AMD or Intel CFG_MBAR MBAR base address CFG_DEFAULT_MBAR Reset MBAR base address 3.2 Compilation export CROSS_COMPILE=cross-compile-prefix cd u-boot-1-1-x make distclean make Alaska8220_config make 4. SCREEN DUMP ============== 4.1 Alaska MPC8220 board Boot from AMD (NOTE: May not show exactly the same) U-Boot 1.1.1 (Sep 22 2004 - 22:14:41) CPU: MPC8220 (JTAG ID 1640301d) at 300 MHz Bus 120 MHz, CPU 300 MHz, PCI 30 MHz, VCO 480 MHz Board: Alaska MPC8220 Evaluation Board I2C: 93 kHz, ready DRAM: 256 MB Reserving 167k for U-Boot at: 0ffd6000 FLASH: 16.5 MB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: FEC ETHERNET => flinfo Bank # 1: INTEL 28F128J3A Size: 8 MB in 64 Sectors Sector Start Addresses: FE000000 FE020000 FE040000 FE060000 FE080000 FE0A0000 FE0C0000 FE0E0000 FE100000 FE120000 FE140000 FE160000 FE180000 FE1A0000 FE1C0000 FE1E0000 FE200000 FE220000 FE240000 FE260000 FE280000 FE2A0000 FE2C0000 FE2E0000 FE300000 FE320000 FE340000 FE360000 FE380000 FE3A0000 FE3C0000 FE3E0000 FE400000 FE420000 FE440000 FE460000 FE480000 FE4A0000 FE4C0000 FE4E0000 FE500000 FE520000 FE540000 FE560000 FE580000 FE5A0000 FE5C0000 FE5E0000 FE600000 FE620000 FE640000 FE660000 FE680000 FE6A0000 FE6C0000 FE6E0000 FE700000 FE720000 FE740000 FE760000 FE780000 FE7A0000 FE7C0000 FE7E0000 Bank # 2: INTEL 28F128J3A Size: 8 MB in 64 Sectors Sector Start Addresses: FE800000 FE820000 FE840000 FE860000 FE880000 FE8A0000 FE8C0000 FE8E0000 FE900000 FE920000 FE940000 FE960000 FE980000 FE9A0000 FE9C0000 FE9E0000 FEA00000 FEA20000 FEA40000 FEA60000 FEA80000 FEAA0000 FEAC0000 FEAE0000 FEB00000 FEB20000 FEB40000 FEB60000 FEB80000 FEBA0000 FEBC0000 FEBE0000 FEC00000 FEC20000 FEC40000 FEC60000 FEC80000 FECA0000 FECC0000 FECE0000 FED00000 FED20000 FED40000 FED60000 FED80000 FEDA0000 FEDC0000 FEDE0000 FEE00000 FEE20000 FEE40000 FEE60000 FEE80000 FEEA0000 FEEC0000 FEEE0000 FEF00000 (RO) FEF20000 (RO) FEF40000 FEF60000 FEF80000 FEFA0000 FEFC0000 FEFE0000 (RO) Bank # 3: AMD AMD29F040B Size: 0 MB in 7 Sectors Sector Start Addresses: FFF00000 (RO) FFF10000 (RO) FFF20000 (RO) FFF30000 FFF40000 FFF50000 FFF60000 Bank # 4: AMD AMD29F040B Size: 0 MB in 1 Sectors Sector Start Addresses: FFF70000 (RO) => bdinfo memstart = 0xF0009800 memsize = 0x10000000 flashstart = 0xFFF00000 flashsize = 0x01080000 flashoffset = 0x00025000 sramstart = 0xF0020000 sramsize = 0x00008000 bootflags = 0x00000001 intfreq = 300 MHz busfreq = 120 MHz inpfreq = 30 MHz flbfreq = 30 MHz pcifreq = 30 MHz vcofreq = 480 MHz pevfreq = 81 MHz ethaddr = 00:E0:0C:BC:E0:60 eth1addr = 00:E0:0C:BC:E0:61 IP addr = 192.162.1.2 baudrate = 115200 bps => printenv bootargs=root=/dev/ram rw bootdelay=5 baudrate=115200 ethaddr=00:e0:0c:bc:e0:60 eth1addr=00:e0:0c:bc:e0:61 ipaddr=192.162.1.2 serverip=192.162.1.1 gatewayip=192.162.1.1 netmask=255.255.255.0 hostname=Alaska stdin=serial stdout=serial stderr=serial ethact=FEC ETHERNET Environment size: 268/65532 bytes => setenv ipaddr 192.160.1.2 => setenv serverip 192.160.1.1 => setenv gatewayip 192.160.1.1 => saveenv Saving Environment to Flash... . Un-Protected 1 sectors Erasing Flash... Erasing sector 0 ... done Erased 1 sectors Writing to Flash... done . Protected 1 sectors => tftp 0x10000 linux.elf Using FEC ETHERNET device TFTP from server 192.160.1.1; our IP address is 192.160.1.2; sending through gateway 192.160.1.1 Filename 'linux.elf'. Load address: 0x10000 Loading: invalid RARP header ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################## done Bytes transferred = 2917494 (2c8476 hex) => bootelf Loading .text @ 0x00a00000 (23820 bytes) Loading .data @ 0x00a06000 (2752512 bytes) Clearing .bss @ 0x00ca6000 (12764 bytes) ## Starting application at 0x00a00000 ... Collect some entropy from RAM........done loaded at: 00A00000 00CA91DC zimage at: 00A06A93 00AD7756 initrd at: 00AD8000 00CA5565 avail ram: 00CAA000 014AA000 Linux/PPC load: ip=off console=ttyS0,115200 Uncompressing Linux...done. Now booting the kernel Total memory in system: 256 MB Memory BAT mapping: BAT2=256Mb, BAT3=0Mb, residual: 0Mb Linux version 2.4.21-rc1 (r61688@bluesocks.sps.mot.com) (gcc version 3.3.1) #17 Wed Sep 8 11:49:16 CDT 2004 Motorola Alaska port (C) 2003 Motorola, Inc. CPLD rev 3 CPLD switches 0x1b Set Pin Mux for FEC1 Set Pin Mux for FEC2 Alaska Pin Multiplexing: Port Configuration Register 0 = 0 Port Configuration Register 1 = 0 Port Configuration Register 2 = 0 Port Configuration Register 3 = 50000000 Port Configuration Register 3 - PCI = 51400180 Setup Alaska FPGA PIC: Interrupt Enable Register *(u32) = 0 Interrupt Status Register = 2f0000 Interrupt Enable Register in_be32 = 0 Interrupt Status Register = 2f0000 Interrupt Enable Register in_le32 = 0 Interrupt Status Register = 2f00 Interrupt Enable Register readl = 0 Interrupt Status Register = 2f00 Interrupt Enable Register = 0 Interrupt Status Register = 2f0000 Setup Alaska PCI Controller: On node 0 totalpages: 65536 zone(0): 65536 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: ip=off console=ttyS0,115200 Using XLB clock (120.00 MHz) to set up decrementer Calibrating delay loop... 199.88 BogoMIPS Memory: 254792k available (1476k kernel code, 708k data, 228k init, 0k highmem) Dentry cache hash table entries: 32768 (order: 6, 262144 bytes) Inode cache hash table entries: 16384 (order: 5, 131072 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 16384 (order: 4, 65536 bytes) Page-cache hash table entries: 65536 (order: 6, 262144 bytes) POSIX conformance testing by UNIFIX PCI: Probing PCI hardware PCI: (pcibios_init) Global-Hose = 0xc029d000 Scanning bus 00 Fixups for bus 00 Bus scan for 00 returning with max=00 PCI: (pcibios_init) finished pci_scan_bus(hose->first_busno = 0, hose->ops = c01a1a74, hose = c029d000) PCI: (pcibios_init) PCI Bus Count = 0 =?= Next Bus# = 1 PCI: (pcibios_init@pci_fixup_irqs) finished machine dependent PCI interrupt routing! PCI: bridge rsrc 81000000..81ffffff (100), parent c01a7f88 PCI: bridge rsrc 84000000..87ffffff (200), parent c01a7fa4 PCI: (pcibios_init) finished allocating and assigning resources! initDma! Using 90 DMA buffer descriptors descUsed f0023600, descriptors f002360c freeSram f0024140 unmask SDMA tasks: 0xf0008018 = 0x6f000000 Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd Journalled Block Device driver loaded JFFS version 1.0, (C) 1999, 2000 Axis Communications AB JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB. pty: 256 Unix98 ptys configured tracek: Copyright (C) Motorola, 2003. Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled ttyS00 at 0xf1001008 (irq = 73) is a ST16650 ttyS01 at 0xf1001010 (irq = 74) is a ST16650 elp-fpanel: Copyright (C) Motorola, 2003. fpanel: fpanelWait timeout elp-engine: Copyright (C) Motorola, 2003. Video disabled due to configuration switch 4 Alpine 1284 driver: Copyright (C) Motorola, 2003. 1284 disabled due to configuration switch 5 Alpine USB driver: Copyright (C) Motorola, 2003. OK USB: Descriptor download completed OK enable_irq(41) unbalanced enable_irq(75) unbalanced elp-dmaram: Copyright (C) Motorola, 2003. Total memory in system: 256 MB elp_dmaram: offset is 0x10000000, size is 0 Xicor NVRAM driver: Copyright (C) Motorola, 2003. elp-video: Copyright (C) Motorola, 2003. Video disabled due to configuration switch 4 elp-pfm: Copyright (C) Motorola, 2003. paddle: Copyright (C) Motorola, 2001, present. RAMDISK driver initialized: 16 RAM disks of 12288K size 1024 blocksize loop: loaded (max 8 devices) PPP generic driver version 2.4.2 PPP Deflate Compression module registered Uniform Multi-Platform E-IDE driver Revision: 7.00beta-2.4 ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx init_alaska_mtd: chip probing count 0 cfi_cmdset_0001: Erase suspend on write enabled Using buffer write method init_alaska_mtd: bank1, name:ALASKA0, size:16777216bytes ALASKA flash0: Using Static image partition definition Creating 3 MTD partitions on "ALASKA0": 0x00000000-0x00280000 : "kernel" 0x00280000-0x00fe0000 : "user" 0x00fe0000-0x01000000 : "signature" mgt_fec_module_init mgt_fec_init() mgt_fec_init mgt_init_fec_dev(0xc05f6000,0) dev c05f6000 fec_priv c05f6160 fec f0009000 mgt_init_fec_dev(0xc05f6800,1) dev c05f6800 fec_priv c05f6960 fec f0009800 NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 2048 buckets, 16Kbytes TCP: Hash tables configured (established 16384 bind 32768) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. RAMDISK: Compressed image found at block 0 Freeing initrd memory: 1845k freed JFFS: Trying to mount a non-mtd device. VFS: Mounted root (romfs filesystem) readonly. Freeing unused kernel memory: 228k init INIT: version 2.78 booting INIT: Entering runlevel: 1 "Space, a great big place of unknown stuff." -Dexter, for our MotD. [01/Jan/1970:00:00:01 +0000] boa: server version Boa/0.94.8.3 [01/Jan/1970:00:00:01 +0000] boa: server built Sep 7 2004 at 17:40:55. [01/Jan/1970:00:00:01 +0000] boa: starting server pid=28, port 80 Mounting flash filesystem, will take a minute... /etc/rc: line 30: /dev/lp0: No such devish-2.05b# sh-2.05b# ifup eth0 client (v0.9.9-pre) started adapter index 2 adapter hardware address 00:e0:0c:bc:e0:60 execle'ing /usr/share/udhcpc/default.script /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:E0:0C:BC:E0:60 BROADCAST MULTICAST MTU:1500 Metric:1 mgt_fec_open Rfec request irq X fec_open: rcv_ring_size 8, xmt_ring_size 8 packmgt_fec_open(): call netif_start_queue() ets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Base address:0x9000 /sbin/ifconfig eth0 up entering raw listen mode Opening raw socket on ifindex 2 adding option 0x35 adding option 0x3d adding option 0x3c Sending discover... Waiting on select... unrelated/bogus packet Waiting on select... oooooh!!! got some! adding option 0x35 adding option 0x3d adding option 0x3c adding option 0x32 adding option 0x36 Sending select for 163.12.48.146... Waiting on select... oooooh!!! got some! Waiting on select... oooooh!!! got some! Lease of 163.12.48.146 obtained, lease time 345600 execle'ing /usr/share/udhcpc/default.script /sbin/ifconfig eth0 163.12.48.146 netmask 255.255.254.0 /sbin/ifconfig eth0 up deleting routers /sbin/route del default /sbin/route add default gw 163.12.49.254 dev eth0 adding dns 163.12.252.230 adding dns 192.55.22.4 adding dns 192.5.249.4 entering none listen mode sh-2.05b# 5. REPROGRAM U-BOOT =================== 5.1 Reprogram u-boot (boot from AMD) 1. Unprotect the boot sector => protect off bank 3 2. Download new u-boot binary file => tftp 0x10000 u-boot.bin 3. Erase bootsector (max 7 sectors) => erase 0xfff00000 0xfff6ffff 4. Program the u-boot to flash => cp.b 0x10000 0xfff00000 5. Reset for the new u-boot to take place => reset 5.2 Reprogram u-boot (boot from AMD program at INTEL) 1. Unprotect the boot sector => protect off bank 2 2. Download new u-boot binary file => tftp 0x10000 u-boot.bin 3. Erase bootsector (max 7 sectors) => erase 0xfef00000 0xfefdffff 4. Program the u-boot to flash => cp.b 0x10000 0xfef00000 5. Reset for the new u-boot to take place => reset 5.3 Reprogram u-boot (boot from INTEL) 1. Unprotect the boot sector => protect off bank 4 2. Download new u-boot binary file => tftp 0x10000 u-boot.bin 3. Erase bootsector (max 7 sectors) => erase 0xfff00000 0xfffdffff 4. Program the u-boot to flash => cp.b 0x10000 0xfff00000 5. Reset for the new u-boot to take place => reset 5.4 Reprogram u-boot (boot from INTEL program at AMD) 1. Unprotect the boot sector => protect off bank 1 2. Download new u-boot binary file => tftp 0x10000 u-boot.bin 3. Erase bootsector (max 7 sectors) => erase 0xfe080000 0xfe0effff 4. Program the u-boot to flash => cp.b 0x10000 0xfe080000 5. Reset for the new u-boot to take place => reset