⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 karef.c

📁 gumstiz u-boot loader in linux
💻 C
📖 第 1 页 / 共 2 页
字号:
/* *  Copyright (C) 2005 Sandburst Corporation *  Travis B. Sawyer * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <config.h>#include <common.h>#include <command.h>#include "karef.h"#include "karef_version.h"#include <asm/processor.h>#include <asm/io.h>#include <spd_sdram.h>#include <i2c.h>#include "../common/sb_common.h"#include "../common/ppc440gx_i2c.h"void fpga_init (void);KAREF_BOARD_ID_ST board_id_as[] ={	{"Undefined"},			     /* Not specified */	{"Kamino Reference Design"},	{"Reserved"},			     /* Reserved for future use */	{"Reserved"},			     /* Reserved for future use */};KAREF_BOARD_ID_ST ofem_board_id_as[] ={	{"Undefined"},	{"1x10 + 10x2"},	{"Reserved"},	{"Reserved"},};/************************************************************************* *  board_early_init_f * *  Setup chip selects, initialize the Opto-FPGA, initialize *  interrupt polarity and triggers. ************************************************************************/int board_early_init_f (void){	ppc440_gpio_regs_t *gpio_regs;	/* Enable GPIO interrupts */	mtsdr(sdr_pfc0, 0x00103E00);	/* Setup access for LEDs, and system topology info */	gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE;	gpio_regs->open_drain = SBCOMMON_GPIO_SYS_LEDS;	gpio_regs->tri_state  = SBCOMMON_GPIO_DBGLEDS;	/* Turn on all the leds for now */	gpio_regs->out = SBCOMMON_GPIO_LEDS;	/*--------------------------------------------------------------------+	  | Initialize EBC CONFIG	  +-------------------------------------------------------------------*/	mtebc(xbcfg,	      EBC_CFG_LE_UNLOCK	   | EBC_CFG_PTD_ENABLE |	      EBC_CFG_RTC_64PERCLK | EBC_CFG_ATC_PREVIOUS |	      EBC_CFG_DTC_PREVIOUS | EBC_CFG_CTC_PREVIOUS |	      EBC_CFG_EMC_DEFAULT  | EBC_CFG_PME_DISABLE |	      EBC_CFG_PR_32);	/*--------------------------------------------------------------------+	  | 1/2 MB FLASH. Initialize bank 0 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb0ap,	      EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) |	      EBC_BXAP_BCE_DISABLE  | EBC_BXAP_CSN_ENCODE(1) |	      EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) |	      EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) |	      EBC_BXAP_RE_DISABLED  | EBC_BXAP_BEM_WRITEONLY |	      EBC_BXAP_PEN_DISABLED);	mtebc(pb0cr, EBC_BXCR_BAS_ENCODE(CFG_FLASH_BASE) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT);	/*--------------------------------------------------------------------+	  | 8KB NVRAM/RTC. Initialize bank 1 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb1ap,	      EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(10) |	      EBC_BXAP_BCE_DISABLE  | EBC_BXAP_CSN_ENCODE(1) |	      EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) |	      EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) |	      EBC_BXAP_RE_DISABLED  | EBC_BXAP_BEM_WRITEONLY |	      EBC_BXAP_PEN_DISABLED);	mtebc(pb1cr, EBC_BXCR_BAS_ENCODE(0x48000000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT);	/*--------------------------------------------------------------------+	  | Compact Flash, uses 2 Chip Selects (2 & 6)	  +-------------------------------------------------------------------*/	mtebc(pb2ap,	      EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) |	      EBC_BXAP_BCE_DISABLE  | EBC_BXAP_CSN_ENCODE(1) |	      EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) |	      EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) |	      EBC_BXAP_RE_DISABLED  | EBC_BXAP_BEM_WRITEONLY |	      EBC_BXAP_PEN_DISABLED);	mtebc(pb2cr, EBC_BXCR_BAS_ENCODE(0xF0000000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT);	/*--------------------------------------------------------------------+	  | KaRef Scan FPGA. Initialize bank 3 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb5ap,	      EBC_BXAP_RE_ENABLED    | EBC_BXAP_SOR_NONDELAYED |	      EBC_BXAP_BME_DISABLED  | EBC_BXAP_TWT_ENCODE(3) |	      EBC_BXAP_TH_ENCODE(1)  | EBC_BXAP_WBF_ENCODE(0) |	      EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED |	      EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW);	mtebc(pb5cr, EBC_BXCR_BAS_ENCODE(0x48200000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT);	/*--------------------------------------------------------------------+	  | MAC A & B for Kamino.  OFEM FPGA decodes the addresses	  | Initialize bank 4 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb4ap,	      EBC_BXAP_RE_ENABLED    | EBC_BXAP_SOR_NONDELAYED |	      EBC_BXAP_BME_DISABLED  | EBC_BXAP_TWT_ENCODE(3) |	      EBC_BXAP_TH_ENCODE(1)  | EBC_BXAP_WBF_ENCODE(0) |	      EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED |	      EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW);	mtebc(pb4cr, EBC_BXCR_BAS_ENCODE(0x48600000) |	      EBC_BXCR_BS_2MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT);	/*--------------------------------------------------------------------+	  | OFEM FPGA  Initialize bank 5 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb3ap,	      EBC_BXAP_RE_ENABLED    | EBC_BXAP_SOR_NONDELAYED |	      EBC_BXAP_BME_DISABLED  | EBC_BXAP_TWT_ENCODE(3) |	      EBC_BXAP_TH_ENCODE(1)  | EBC_BXAP_WBF_ENCODE(0) |	      EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED |	      EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW);	mtebc(pb3cr, EBC_BXCR_BAS_ENCODE(0x48400000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT);	/*--------------------------------------------------------------------+	  | Compact Flash, uses 2 Chip Selects (2 & 6)	  +-------------------------------------------------------------------*/	mtebc(pb6ap,	      EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) |	      EBC_BXAP_BCE_DISABLE  | EBC_BXAP_CSN_ENCODE(1) |	      EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) |	      EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) |	      EBC_BXAP_RE_DISABLED  | EBC_BXAP_BEM_WRITEONLY |	      EBC_BXAP_PEN_DISABLED);	mtebc(pb6cr, EBC_BXCR_BAS_ENCODE(0xF0100000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT);	/*--------------------------------------------------------------------+	  | BME-32. Initialize bank 7 with default values.	  +-------------------------------------------------------------------*/	mtebc(pb7ap,	      EBC_BXAP_RE_ENABLED    | EBC_BXAP_SOR_NONDELAYED |	      EBC_BXAP_BME_DISABLED  | EBC_BXAP_TWT_ENCODE(3) |	      EBC_BXAP_TH_ENCODE(1)  | EBC_BXAP_WBF_ENCODE(0) |	      EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED |	      EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW);	mtebc(pb7cr, EBC_BXCR_BAS_ENCODE(0x48500000) |	      EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT);	/*--------------------------------------------------------------------+	 * Setup the interrupt controller polarities, triggers, etc.	 +-------------------------------------------------------------------*/	mtdcr (uic0sr, 0xffffffff);	/* clear all */	mtdcr (uic0er, 0x00000000);	/* disable all */	mtdcr (uic0cr, 0x00000000);	/* all non- critical */	mtdcr (uic0pr, 0xfffffe03);	/* polarity */	mtdcr (uic0tr, 0x01c00000);	/* trigger edge vs level */	mtdcr (uic0vr, 0x00000001);	/* int31 highest, base=0x000 */	mtdcr (uic0sr, 0xffffffff);	/* clear all */	mtdcr (uic1sr, 0xffffffff);	/* clear all */	mtdcr (uic1er, 0x00000000);	/* disable all */	mtdcr (uic1cr, 0x00000000);	/* all non-critical */	mtdcr (uic1pr, 0xffffc8ff);	/* polarity */	mtdcr (uic1tr, 0x00ff0000);	/* trigger edge vs level */	mtdcr (uic1vr, 0x00000001);	/* int31 highest, base=0x000 */	mtdcr (uic1sr, 0xffffffff);	/* clear all */	mtdcr (uic2sr, 0xffffffff);	/* clear all */	mtdcr (uic2er, 0x00000000);	/* disable all */	mtdcr (uic2cr, 0x00000000);	/* all non-critical */	mtdcr (uic2pr, 0xffff83ff);	/* polarity */	mtdcr (uic2tr, 0x00ff8c0f);	/* trigger edge vs level */	mtdcr (uic2vr, 0x00000001);	/* int31 highest, base=0x000 */	mtdcr (uic2sr, 0xffffffff);	/* clear all */	mtdcr (uicb0sr, 0xfc000000);	/* clear all */	mtdcr (uicb0er, 0x00000000);	/* disable all */	mtdcr (uicb0cr, 0x00000000);	/* all non-critical */	mtdcr (uicb0pr, 0xfc000000);	mtdcr (uicb0tr, 0x00000000);	mtdcr (uicb0vr, 0x00000001);	fpga_init();	return 0;}/************************************************************************* *  checkboard * *  Dump pertinent info to the console ************************************************************************/int checkboard (void){	sys_info_t sysinfo;	unsigned char brd_rev, brd_id;	unsigned short sernum;	unsigned char scan_rev, scan_id, ofem_rev=0, ofem_id=0;	unsigned char ofem_brd_rev, ofem_brd_id;	KAREF_FPGA_REGS_ST *karef_ps;	OFEM_FPGA_REGS_ST *ofem_ps;	karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE;	ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE;	scan_id = (unsigned char)((karef_ps->revision_ul &				   SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_MASK)				  >> SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_SHIFT);	scan_rev = (unsigned char)((karef_ps->revision_ul & SAND_HAL_KA_SC_SCAN_REVISION_REVISION_MASK)				   >> SAND_HAL_KA_SC_SCAN_REVISION_REVISION_SHIFT);	brd_rev = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_MASK)				  >> SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_SHIFT);	brd_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_MASK)				 >> SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_SHIFT);	ofem_brd_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MASK)				      >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_SHIFT);	ofem_brd_rev = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_MASK)				       >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_SHIFT);	if (0xF != ofem_brd_id) {		ofem_id = (unsigned char)((ofem_ps->revision_ul &					   SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_MASK)					  >> SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_SHIFT);		ofem_rev = (unsigned char)((ofem_ps->revision_ul &					    SAND_HAL_KA_OF_OFEM_REVISION_REVISION_MASK)					   >> SAND_HAL_KA_OF_OFEM_REVISION_REVISION_SHIFT);	}	get_sys_info (&sysinfo);	sernum = sbcommon_get_serial_number();	printf ("Board: Sandburst Corporation Kamino Reference Design "

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -