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

📄 bamboo.c

📁 gumstiz u-boot loader in linux
💻 C
📖 第 1 页 / 共 5 页
字号:
{	/* Update GPIO Configuration Table */	gpio_tab[GPIO0][12].in_out = GPIO_IN;	    /* ZII_p0Rxd(0) */	gpio_tab[GPIO0][12].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][13].in_out = GPIO_IN;	    /* ZII_p0Rxd(1) */	gpio_tab[GPIO0][13].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][14].in_out = GPIO_IN;	    /* ZII_p0Rxd(2) */	gpio_tab[GPIO0][14].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][15].in_out = GPIO_IN;	    /* ZII_p0Rxd(3) */	gpio_tab[GPIO0][15].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][16].in_out = GPIO_OUT;	    /* ZII_p0Txd(0) */	gpio_tab[GPIO0][16].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][17].in_out = GPIO_OUT;	    /* ZII_p0Txd(1) */	gpio_tab[GPIO0][17].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][18].in_out = GPIO_OUT;	    /* ZII_p0Txd(2) */	gpio_tab[GPIO0][18].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][19].in_out = GPIO_OUT;	    /* ZII_p0Txd(3) */	gpio_tab[GPIO0][19].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][20].in_out = GPIO_IN;	    /* ZII_p0Rx_er */	gpio_tab[GPIO0][20].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][21].in_out = GPIO_IN;	    /* ZII_p0Rx_dv */	gpio_tab[GPIO0][21].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][22].in_out = GPIO_IN;	    /* ZII_p0Crs */	gpio_tab[GPIO0][22].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][23].in_out = GPIO_OUT;	    /* ZII_p0Tx_er */	gpio_tab[GPIO0][23].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][24].in_out = GPIO_OUT;	    /* ZII_p0Tx_en */	gpio_tab[GPIO0][24].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][25].in_out = GPIO_IN;	    /* ZII_p0Col */	gpio_tab[GPIO0][25].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  | update_uic_0_3_irq_ios().  +----------------------------------------------------------------------------*/void update_uic_0_3_irq_ios(void){	gpio_tab[GPIO1][8].in_out = GPIO_IN;	    /* UIC_IRQ(0) */	gpio_tab[GPIO1][8].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][9].in_out = GPIO_IN;	    /* UIC_IRQ(1) */	gpio_tab[GPIO1][9].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][10].in_out = GPIO_IN;	    /* UIC_IRQ(2) */	gpio_tab[GPIO1][10].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][11].in_out = GPIO_IN;	    /* UIC_IRQ(3) */	gpio_tab[GPIO1][11].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  | update_uic_4_9_irq_ios().  +----------------------------------------------------------------------------*/void update_uic_4_9_irq_ios(void){	gpio_tab[GPIO1][12].in_out = GPIO_IN;	    /* UIC_IRQ(4) */	gpio_tab[GPIO1][12].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][13].in_out = GPIO_IN;	    /* UIC_IRQ(6) */	gpio_tab[GPIO1][13].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][14].in_out = GPIO_IN;	    /* UIC_IRQ(7) */	gpio_tab[GPIO1][14].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][15].in_out = GPIO_IN;	    /* UIC_IRQ(8) */	gpio_tab[GPIO1][15].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][16].in_out = GPIO_IN;	    /* UIC_IRQ(9) */	gpio_tab[GPIO1][16].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  | update_dma_a_b_ios().  +----------------------------------------------------------------------------*/void update_dma_a_b_ios(void){	gpio_tab[GPIO1][12].in_out = GPIO_OUT;	    /* DMA_ACK(1) */	gpio_tab[GPIO1][12].alt_nb = GPIO_ALT2;	gpio_tab[GPIO1][13].in_out = GPIO_BI;	    /* DMA_EOT/TC(1) */	gpio_tab[GPIO1][13].alt_nb = GPIO_ALT2;	gpio_tab[GPIO1][14].in_out = GPIO_IN;	    /* DMA_REQ(0) */	gpio_tab[GPIO1][14].alt_nb = GPIO_ALT2;	gpio_tab[GPIO1][15].in_out = GPIO_OUT;	    /* DMA_ACK(0) */	gpio_tab[GPIO1][15].alt_nb = GPIO_ALT2;	gpio_tab[GPIO1][16].in_out = GPIO_BI;	    /* DMA_EOT/TC(0) */	gpio_tab[GPIO1][16].alt_nb = GPIO_ALT2;}/*----------------------------------------------------------------------------+  | update_dma_c_d_ios().  +----------------------------------------------------------------------------*/void update_dma_c_d_ios(void){	gpio_tab[GPIO0][0].in_out = GPIO_IN;	    /* DMA_REQ(2) */	gpio_tab[GPIO0][0].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][1].in_out = GPIO_OUT;	    /* DMA_ACK(2) */	gpio_tab[GPIO0][1].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][2].in_out = GPIO_BI;	    /* DMA_EOT/TC(2) */	gpio_tab[GPIO0][2].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][3].in_out = GPIO_IN;	    /* DMA_REQ(3) */	gpio_tab[GPIO0][3].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][4].in_out = GPIO_OUT;	    /* DMA_ACK(3) */	gpio_tab[GPIO0][4].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][5].in_out = GPIO_BI;	    /* DMA_EOT/TC(3) */	gpio_tab[GPIO0][5].alt_nb = GPIO_ALT2;}/*----------------------------------------------------------------------------+  | update_ebc_master_ios().  +----------------------------------------------------------------------------*/void update_ebc_master_ios(void){	gpio_tab[GPIO0][27].in_out = GPIO_IN;	    /* EXT_EBC_REQ */	gpio_tab[GPIO0][27].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][29].in_out = GPIO_OUT;	    /* EBC_EXT_HDLA */	gpio_tab[GPIO0][29].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][30].in_out = GPIO_OUT;	    /* EBC_EXT_ACK */	gpio_tab[GPIO0][30].alt_nb = GPIO_ALT1;	gpio_tab[GPIO0][31].in_out = GPIO_OUT;	    /* EBC_EXR_BUSREQ */	gpio_tab[GPIO0][31].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  | update_usb2_device_ios().  +----------------------------------------------------------------------------*/void update_usb2_device_ios(void){	gpio_tab[GPIO0][26].in_out = GPIO_IN;	    /* USB2D_RXVALID */	gpio_tab[GPIO0][26].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][27].in_out = GPIO_IN;	    /* USB2D_RXERROR */	gpio_tab[GPIO0][27].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][28].in_out = GPIO_OUT;	    /* USB2D_TXVALID */	gpio_tab[GPIO0][28].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][29].in_out = GPIO_OUT;	    /* USB2D_PAD_SUSPNDM */	gpio_tab[GPIO0][29].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][30].in_out = GPIO_OUT;	    /* USB2D_XCVRSELECT */	gpio_tab[GPIO0][30].alt_nb = GPIO_ALT2;	gpio_tab[GPIO0][31].in_out = GPIO_OUT;	    /* USB2D_TERMSELECT */	gpio_tab[GPIO0][31].alt_nb = GPIO_ALT2;	gpio_tab[GPIO1][0].in_out = GPIO_OUT;	    /* USB2D_OPMODE0 */	gpio_tab[GPIO1][0].alt_nb = GPIO_ALT1;	gpio_tab[GPIO1][1].in_out = GPIO_OUT;	    /* USB2D_OPMODE1 */	gpio_tab[GPIO1][1].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  | update_pci_patch_ios().  +----------------------------------------------------------------------------*/void update_pci_patch_ios(void){	gpio_tab[GPIO0][29].in_out = GPIO_OUT;	    /* EBC_EXT_HDLA */	gpio_tab[GPIO0][29].alt_nb = GPIO_ALT1;}/*----------------------------------------------------------------------------+  |   set_chip_gpio_configuration(unsigned char gpio_core)  |   Put the core impacted by clock modification and sharing in reset.  |   Config the select registers to resolve the sharing depending of the config.  |   Configure the GPIO registers.  |  +----------------------------------------------------------------------------*/void set_chip_gpio_configuration(unsigned char gpio_core){	unsigned char i=0, j=0, reg_offset = 0;	unsigned long gpio_reg, gpio_core_add;	/* GPIO config of the GPIOs 0 to 31 */	for (i=0; i<GPIO_MAX; i++, j++)	{		if (i == GPIO_MAX/2)		{			reg_offset = 4;			j = i-16;		}		gpio_core_add = gpio_tab[gpio_core][i].add;		if ( (gpio_tab[gpio_core][i].in_out == GPIO_IN) ||		     (gpio_tab[gpio_core][i].in_out == GPIO_BI ))		{			switch (gpio_tab[gpio_core][i].alt_nb)			{			case GPIO_SEL:				break;			case GPIO_ALT1:				gpio_reg = in32(GPIO_IS1(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));				out32(GPIO_IS1(gpio_core_add+reg_offset), gpio_reg);				break;			case GPIO_ALT2:				gpio_reg = in32(GPIO_IS2(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));				out32(GPIO_IS2(gpio_core_add+reg_offset), gpio_reg);				break;			case GPIO_ALT3:				gpio_reg = in32(GPIO_IS3(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));				out32(GPIO_IS3(gpio_core_add+reg_offset), gpio_reg);				break;			}		}		if ( (gpio_tab[gpio_core][i].in_out == GPIO_OUT) ||		     (gpio_tab[gpio_core][i].in_out == GPIO_BI ))		{			switch (gpio_tab[gpio_core][i].alt_nb)			{			case GPIO_SEL:				break;			case GPIO_ALT1:				gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));				out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);				gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));				out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);				break;			case GPIO_ALT2:				gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));				out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);				gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));				out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);				break;			case GPIO_ALT3:				gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));				out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);				gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));				gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));				out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);				break;			}		}	}}/*----------------------------------------------------------------------------+  | force_bup_core_selection.  +----------------------------------------------------------------------------*/void force_bup_core_selection(core_selection_t *core_select_P, config_validity_t *config_val_P){	/* Pointer invalid */	if (core_select_P == NULL)	{		printf("Configuration invalid pointer 1\n");		for (;;)			;	}	/* L4 Selection */	*(core_select_P+UART_CORE0)	       = CORE_SELECTED;	*(core_select_P+UART_CORE1)	       = CORE_SELECTED;	*(core_select_P+UART_CORE2)	       = CORE_SELECTED;	*(core_select_P+UART_CORE3)	       = CORE_SELECTED;	/* RMII Selection */	*(core_select_P+RMII_SEL)		= CORE_SELECTED;	/* External Interrupt 0-9 selection */	*(core_select_P+UIC_0_3)		= CORE_SELECTED;	*(core_select_P+UIC_4_9)		= CORE_SELECTED;	*(core_select_P+SCP_CORE)	        = CORE_SELECTED;	*(core_select_P+DMA_CHANNEL_CD)		= CORE_SELECTED;	*(core_select_P+PACKET_REJ_FUNC_AVAIL)	= CORE_SELECTED;	*(core_select_P+USB1_DEVICE)		= CORE_SELECTED;	if (is_nand_selected()) {		*(core_select_P+NAND_FLASH)	= CORE_SELECTED;	}	*config_val_P = CONFIG_IS_VALID;}/*----------------------------------------------------------------------------+  | configure_ppc440ep_pins.  +----------------------------------------------------------------------------*/void configure_ppc440ep_pins(void){	uart_config_nb_t uart_configuration;	config_validity_t config_val = CONFIG_IS_INVALID;	/* Create Core Selection Table */	core_selection_t ppc440ep_core_selection[MAX_CORE_SELECT_NB] =		{			CORE_NOT_SELECTED,	/* IIC_CORE, */			CORE_NOT_SELECTED,	/* SPC_CORE, */			CORE_NOT_SELECTED,	/* DMA_CHANNEL_AB, */			CORE_NOT_SELECTED,	/* UIC_4_9, */			CORE_NOT_SELECTED,	/* USB2_HOST, */			CORE_NOT_SELECTED,	/* DMA_CHANNEL_CD, */			CORE_NOT_SELECTED,	/* USB2_DEVICE, */			CORE_NOT_SELECTED,	/* PACKET_REJ_FUNC_AVAIL, */			CORE_NOT_SELECTED,	/* USB1_DEVICE, */			CORE_NOT_SELECTED,	/* EBC_MASTER, */			CORE_NOT_SELECTED,	/* NAND_FLASH, */			CORE_NOT_SELECTED,	/* UART_CORE0, */			CORE_NOT_SELECTED,	/* UART_CORE1, */			CORE_NOT_SELECTED,	/* UART_CORE2, */			CORE_NOT_SELECTED,	/* UART_CORE3, */			CORE_NOT_SELECTED,	/* MII_SEL, */			CORE_NOT_SELECTED,	/* RMII_SEL, */			CORE_NOT_SELECTED,	/* SMII_SEL, */			CORE_NOT_SELECTED,	/* PACKET_REJ_FUNC_EN */			CORE_NOT_SELECTED,	/* UIC_0_3 */			CORE_NOT_SELECTED,	/* USB1_HOST */			CORE_NOT_SELECTED	/* PCI_PATCH */		};	/* Table Default Initialisation + FPGA Access */	init_default_gpio();	set_chip_gpio_configuration(GPIO0);	set_chip_gpio_configuration(GPIO1);	/* Update Table */	force_bup_core_selection(ppc440ep_core_selection, &config_val);#if 0 /* test-only */	/* If we are running PIBS 1, force known configuration */	update_core_selection_table(ppc440ep_core_selection, &config_val);#endif	/*----------------------------------------------------------------------------+	  | SDR + ios table update + fpga initialization	  +----------------------------------------------------------------------------*/	unsigned long sdr0_pfc1	    = 0;	unsigned long sdr0_usb0	    = 0;	unsigned long sdr0_mfr	    = 0;	/* PCI Always selected */	/* I2C Selection */	if (ppc440ep_core_selection[IIC_CORE] == CORE_SELECTED)	{		sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SIS_MASK) | 

⌨️ 快捷键说明

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