1 /* 2 * 3 * (C) Copyright 2000-2003 4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 5 * 6 * Copyright (C) 2004-2007, 2012 Freescale Semiconductor, Inc. 7 * TsiChung Liew (Tsi-Chung.Liew@freescale.com) 8 * 9 * SPDX-License-Identifier: GPL-2.0+ 10 */ 11 12 #include <common.h> 13 #include <watchdog.h> 14 #include <command.h> 15 #include <netdev.h> 16 17 #include <asm/immap.h> 18 #include <asm/io.h> 19 20 DECLARE_GLOBAL_DATA_PTR; 21 22 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 23 { 24 rcm_t *rcm = (rcm_t *) (MMAP_RCM); 25 udelay(1000); 26 out_8(&rcm->rcr, RCM_RCR_FRCRSTOUT); 27 udelay(10000); 28 setbits_8(&rcm->rcr, RCM_RCR_SOFTRST); 29 30 /* we don't return! */ 31 return 0; 32 }; 33 34 #if defined(CONFIG_DISPLAY_CPUINFO) 35 int print_cpuinfo(void) 36 { 37 ccm_t *ccm = (ccm_t *) MMAP_CCM; 38 u16 msk; 39 u16 id = 0; 40 u8 ver; 41 42 puts("CPU: "); 43 msk = (in_be16(&ccm->cir) >> 6); 44 ver = (in_be16(&ccm->cir) & 0x003f); 45 switch (msk) { 46 case 0x48: 47 id = 54455; 48 break; 49 case 0x49: 50 id = 54454; 51 break; 52 case 0x4a: 53 id = 54453; 54 break; 55 case 0x4b: 56 id = 54452; 57 break; 58 case 0x4d: 59 id = 54451; 60 break; 61 case 0x4f: 62 id = 54450; 63 break; 64 case 0x9F: 65 id = 54410; 66 break; 67 case 0xA0: 68 id = 54415; 69 break; 70 case 0xA1: 71 id = 54416; 72 break; 73 case 0xA2: 74 id = 54417; 75 break; 76 case 0xA3: 77 id = 54418; 78 break; 79 } 80 81 if (id) { 82 char buf1[32], buf2[32], buf3[32]; 83 84 printf("Freescale MCF%d (Mask:%01x Version:%x)\n", id, msk, 85 ver); 86 printf(" CPU CLK %s MHz BUS CLK %s MHz FLB CLK %s MHz\n", 87 strmhz(buf1, gd->cpu_clk), 88 strmhz(buf2, gd->bus_clk), 89 strmhz(buf3, gd->arch.flb_clk)); 90 #ifdef CONFIG_PCI 91 printf(" PCI CLK %s MHz INP CLK %s MHz VCO CLK %s MHz\n", 92 strmhz(buf1, gd->pci_clk), 93 strmhz(buf2, gd->arch.inp_clk), 94 strmhz(buf3, gd->arch.vco_clk)); 95 #else 96 printf(" INP CLK %s MHz VCO CLK %s MHz\n", 97 strmhz(buf1, gd->arch.inp_clk), 98 strmhz(buf2, gd->arch.vco_clk)); 99 #endif 100 } 101 102 return 0; 103 } 104 #endif /* CONFIG_DISPLAY_CPUINFO */ 105 106 #if defined(CONFIG_MCFFEC) 107 /* Default initializations for MCFFEC controllers. To override, 108 * create a board-specific function called: 109 * int board_eth_init(bd_t *bis) 110 */ 111 112 int cpu_eth_init(bd_t *bis) 113 { 114 return mcffec_initialize(bis); 115 } 116 #endif 117