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

📄 bamboo.c

📁 gumstiz u-boot loader in linux
💻 C
📖 第 1 页 / 共 5 页
字号:
		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS3:			/* Default Strap Settings 3 : CPU 333 - PLB 133 - Boot EBC 8 bit 66MHz */			/* Boot from Small Flash */			computed_boot_device = BOOT_FROM_SMALL_FLASH;			break;		case SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN:		case SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN:			/* Boot Settings in IIC EEprom address 0xA8 or 0xA4 */			/* Read Serial Device Strap Register1 in PPC440EP */			mfsdr(sdr_sdstp1, sdr0_sdstp1);			boot_selection	= sdr0_sdstp1 & SDR0_SDSTP1_BOOT_SEL_MASK;			ebc_boot_size	= sdr0_sdstp1 & SDR0_SDSTP1_EBC_ROM_BS_MASK;			switch(boot_selection) {			case SDR0_SDSTP1_BOOT_SEL_EBC:				switch(ebc_boot_size) {				case SDR0_SDSTP1_EBC_ROM_BS_16BIT:					computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;					break;				case SDR0_SDSTP1_EBC_ROM_BS_8BIT:					computed_boot_device = BOOT_FROM_SMALL_FLASH;					break;				}				break;			case SDR0_SDSTP1_BOOT_SEL_PCI:				computed_boot_device = BOOT_FROM_PCI;				break;			case SDR0_SDSTP1_BOOT_SEL_NDFC:				computed_boot_device = BOOT_FROM_NAND_FLASH0;				break;			}			break;		}	}	/*-------------------------------------------------------------------------+	  |  PPC440EP Pass2	  +-------------------------------------------------------------------------*/	else {		switch(bootstrap_settings) {		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS0:			/* Default Strap Settings 0 : CPU 400 - PLB 133 - Boot EBC 8 bit 33MHz */			/* Boot from Small Flash */			computed_boot_device = BOOT_FROM_SMALL_FLASH;			break;		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS1:			/* Default Strap Settings 1 : CPU 333 - PLB 133 - Boot PCI 66MHz */			/* Boot from PCI */			computed_boot_device = BOOT_FROM_PCI;			break;		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS2:			/* Default Strap Settings 2 : CPU 400 - PLB 100 - Boot NDFC16 33MHz */			/* Boot from Nand Flash */			computed_boot_device = BOOT_FROM_NAND_FLASH0;			break;		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS3:			/* Default Strap Settings 3 : CPU 400 - PLB 100 - Boot EBC 16 bit 33MHz */			/* Boot from Large Flash or SRAM */			computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;			break;		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS4:			/* Default Strap Settings 4 : CPU 333 - PLB 133 - Boot EBC 16 bit 66MHz */			/* Boot from Large Flash or SRAM */			computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;			break;		case SDR0_PSTRP0_BOOTSTRAP_SETTINGS6:			/* Default Strap Settings 6 : CPU 400 - PLB 100 - Boot PCI 33MHz */			/* Boot from PCI */			computed_boot_device = BOOT_FROM_PCI;			break;		case SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN:		case SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN:			/* Default Strap Settings 5-7 */			/* Boot Settings in IIC EEprom address 0xA8 or 0xA4 */			/* Read Serial Device Strap Register1 in PPC440EP */			mfsdr(sdr_sdstp1, sdr0_sdstp1);			boot_selection	= sdr0_sdstp1 & SDR0_SDSTP1_BOOT_SEL_MASK;			ebc_boot_size	= sdr0_sdstp1 & SDR0_SDSTP1_EBC_ROM_BS_MASK;			switch(boot_selection) {			case SDR0_SDSTP1_BOOT_SEL_EBC:				switch(ebc_boot_size) {				case SDR0_SDSTP1_EBC_ROM_BS_16BIT:					computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;					break;				case SDR0_SDSTP1_EBC_ROM_BS_8BIT:					computed_boot_device = BOOT_FROM_SMALL_FLASH;					break;				}				break;			case SDR0_SDSTP1_BOOT_SEL_PCI:				computed_boot_device = BOOT_FROM_PCI;				break;			case SDR0_SDSTP1_BOOT_SEL_NDFC:				computed_boot_device = BOOT_FROM_NAND_FLASH0;				break;			}			break;		}	}	/*-------------------------------------------------------------------------+	  |	  |  PART 3 : Compute EBC settings depending on selected boot device	  |  ======   ======================================================	  |	  | Resulting EBC init will be among following configurations :	  |	  |  - Boot from EBC 8bits => boot from SMALL FLASH selected	  |	       EBC-CS0	   = Small Flash	  |	       EBC-CS1,2,3 = NAND Flash or	  |			    Exp.Slot depending on Soft Config	  |	       EBC-CS4	   = SRAM/Large Flash or	  |			    Large Flash/SRAM depending on jumpers	  |	       EBC-CS5	   = NVRAM / EPLD	  |	  |  - Boot from EBC 16bits => boot from Large Flash or SRAM selected	  |	       EBC-CS0	   = SRAM/Large Flash or	  |			     Large Flash/SRAM depending on jumpers	  |	       EBC-CS1,2,3 = NAND Flash or	  |			     Exp.Slot depending on Software Configuration	  |	       EBC-CS4	   = Small Flash	  |	       EBC-CS5	   = NVRAM / EPLD	  |	  |  - Boot from NAND Flash	  |	       EBC-CS0	   = NAND Flash0	  |	       EBC-CS1,2,3 = NAND Flash1	  |	       EBC-CS4	   = SRAM/Large Flash or	  |			     Large Flash/SRAM depending on jumpers	  |	       EBC-CS5	   = NVRAM / EPLD	  |	  |    - Boot from PCI	  |	       EBC-CS0	   = ...	  |	       EBC-CS1,2,3 = NAND Flash or	  |			     Exp.Slot depending on Software Configuration	  |	       EBC-CS4	   = SRAM/Large Flash or	  |			     Large Flash/SRAM or	  |			     Small Flash depending on jumpers	  |	       EBC-CS5	   = NVRAM / EPLD	  |	  +-------------------------------------------------------------------------*/	switch(computed_boot_device) {		/*------------------------------------------------------------------------- */	case BOOT_FROM_SMALL_FLASH:		/*------------------------------------------------------------------------- */		ebc0_cs0_bnap_value = EBC0_BNAP_SMALL_FLASH;		ebc0_cs0_bncr_value = EBC0_BNCR_SMALL_FLASH_CS0;		if ((is_nand_selected()) == TRUE) {			/* NAND Flash */			ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;			ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;			ebc0_cs2_bnap_value = EBC0_BNAP_NAND_FLASH;			ebc0_cs2_bncr_value = EBC0_BNCR_NAND_FLASH_CS2;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		} else {			/* Expansion Slot */			ebc0_cs1_bnap_value = 0;			ebc0_cs1_bncr_value = 0;			ebc0_cs2_bnap_value = 0;			ebc0_cs2_bncr_value = 0;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		}		ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;		ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;		break;		/*------------------------------------------------------------------------- */	case BOOT_FROM_LARGE_FLASH_OR_SRAM:		/*------------------------------------------------------------------------- */		ebc0_cs0_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;		ebc0_cs0_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS0;		if ((is_nand_selected()) == TRUE) {			/* NAND Flash */			ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;			ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;			ebc0_cs2_bnap_value = 0;			ebc0_cs2_bncr_value = 0;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		} else {			/* Expansion Slot */			ebc0_cs1_bnap_value = 0;			ebc0_cs1_bncr_value = 0;			ebc0_cs2_bnap_value = 0;			ebc0_cs2_bncr_value = 0;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		}		ebc0_cs4_bnap_value = EBC0_BNAP_SMALL_FLASH;		ebc0_cs4_bncr_value = EBC0_BNCR_SMALL_FLASH_CS4;		break;		/*------------------------------------------------------------------------- */	case BOOT_FROM_NAND_FLASH0:		/*------------------------------------------------------------------------- */		ebc0_cs0_bnap_value = 0;		ebc0_cs0_bncr_value = 0;		ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;		ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;		ebc0_cs2_bnap_value = 0;		ebc0_cs2_bncr_value = 0;		ebc0_cs3_bnap_value = 0;		ebc0_cs3_bncr_value = 0;		/* Large Flash or SRAM */		ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;		ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;		break;		/*------------------------------------------------------------------------- */	case BOOT_FROM_PCI:		/*------------------------------------------------------------------------- */		ebc0_cs0_bnap_value = 0;		ebc0_cs0_bncr_value = 0;		if ((is_nand_selected()) == TRUE) {			/* NAND Flash */			ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;			ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;			ebc0_cs2_bnap_value = 0;			ebc0_cs2_bncr_value = 0;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		} else {			/* Expansion Slot */			ebc0_cs1_bnap_value = 0;			ebc0_cs1_bncr_value = 0;			ebc0_cs2_bnap_value = 0;			ebc0_cs2_bncr_value = 0;			ebc0_cs3_bnap_value = 0;			ebc0_cs3_bncr_value = 0;		}		if ((config_on_ebc_cs4_is_small_flash()) == TRUE) {			/* Small Flash */			ebc0_cs4_bnap_value = EBC0_BNAP_SMALL_FLASH;			ebc0_cs4_bncr_value = EBC0_BNCR_SMALL_FLASH_CS4;		} else {			/* Large Flash or SRAM */			ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;			ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;		}		break;		/*------------------------------------------------------------------------- */	case BOOT_DEVICE_UNKNOWN:		/*------------------------------------------------------------------------- */		/* Error */		break;	}	/*-------------------------------------------------------------------------+	  | Initialize EBC CONFIG	  +-------------------------------------------------------------------------*/	mtdcr(ebccfga, xbcfg);	mtdcr(ebccfgd, EBC0_CFG_EBTC_DRIVEN	   |	      EBC0_CFG_PTD_ENABLED	  |	      EBC0_CFG_RTC_2048PERCLK	  |	      EBC0_CFG_EMPL_LOW		  |	      EBC0_CFG_EMPH_LOW		  |	      EBC0_CFG_CSTC_DRIVEN	  |	      EBC0_CFG_BPF_ONEDW	  |	      EBC0_CFG_EMS_8BIT		  |	      EBC0_CFG_PME_DISABLED	  |	      EBC0_CFG_PMT_ENCODE(0)	  );	/*-------------------------------------------------------------------------+	  | Initialize EBC Bank 0-4	  +-------------------------------------------------------------------------*/	/* EBC Bank0 */	mtebc(pb0ap, ebc0_cs0_bnap_value);	mtebc(pb0cr, ebc0_cs0_bncr_value);	/* EBC Bank1 */	mtebc(pb1ap, ebc0_cs1_bnap_value);	mtebc(pb1cr, ebc0_cs1_bncr_value);	/* EBC Bank2 */	mtebc(pb2ap, ebc0_cs2_bnap_value);	mtebc(pb2cr, ebc0_cs2_bncr_value);	/* EBC Bank3 */	mtebc(pb3ap, ebc0_cs3_bnap_value);	mtebc(pb3cr, ebc0_cs3_bncr_value);	/* EBC Bank4 */	mtebc(pb4ap, ebc0_cs4_bnap_value);	mtebc(pb4cr, ebc0_cs4_bncr_value);	return;}/*----------------------------------------------------------------------------+  | get_uart_configuration.  +----------------------------------------------------------------------------*/uart_config_nb_t get_uart_configuration(void){	return (L4);}/*----------------------------------------------------------------------------+  | set_phy_configuration_through_fpga => to EPLD  +----------------------------------------------------------------------------*/void set_phy_configuration_through_fpga(zmii_config_t config){	unsigned long fpga_selection_reg;	fpga_selection_reg = in8(FPGA_SELECTION_1_REG) & ~FPGA_SEL_1_REG_PHY_MASK;	switch(config)	{	case ZMII_CONFIGURATION_IS_MII:		fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_MII;		break;	case ZMII_CONFIGURATION_IS_RMII:		fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_RMII;		break;	case ZMII_CONFIGURATION_IS_SMII:		fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_SMII;		break;	case ZMII_CONFIGURATION_UNKNOWN:	default:		break;	}	out8(FPGA_SELECTION_1_REG,fpga_selection_reg);}/*----------------------------------------------------------------------------+  | scp_selection_in_fpga.  +----------------------------------------------------------------------------*/void scp_selection_in_fpga(void){	unsigned long fpga_selection_2_reg;	fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_IIC1_SCP_SEL_MASK;	fpga_selection_2_reg |= FPGA_SEL2_REG_SEL_SCP;	out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);}/*----------------------------------------------------------------------------+  | iic1_selection_in_fpga.  +----------------------------------------------------------------------------*/void iic1_selection_in_fpga(void){	unsigned long fpga_selection_2_reg;	fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_IIC1_SCP_SEL_MASK;	fpga_selection_2_reg |= FPGA_SEL2_REG_SEL_IIC1;	out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);}/*----------------------------------------------------------------------------+  | dma_a_b_selection_in_fpga.  +----------------------------------------------------------------------------*/void dma_a_b_selection_in_fpga(void){

⌨️ 快捷键说明

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