Пример #1
0
int board_init(void)
{
	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_nPWRON);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_nPWRON);

	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_IORST);

	/* led not populated on board*/
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_LED3);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_LED3);

	/* middle LED */
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_LED2);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_LED2);

	/* right LED */
	/* weak pulldown = LED weak on */
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_LED1);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_LED1);

	/* Setup GPIO's for Interrupt inputs */
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_USBINTA);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_USBINTB);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_USBINTC);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_RTCINT);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_PCI_INTA);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_PCI_INTB);

	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_USBINTA);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_USBINTB);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_USBINTC);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_RTCINT);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_PCI_INTA);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_PCI_INTB);

	/* Setup GPIO's for 33MHz clock output */
	writel(0x011001FF, IXP425_GPIO_GPCLKR);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_EXTBUS_CLK);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_PCI_CLK);

	udelay(10000);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_IORST);
	udelay(10000);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_IORST);
	udelay(10000);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_IORST);

	return 0;
}
Пример #2
0
/*
 * Miscelaneous platform dependent initialisations
 */
int board_init(void)
{
	/* arch number of PDNB3 */
	gd->bd->bi_arch_number = MACH_TYPE_PDNB3;

	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_FPGA_RESET);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_FPGA_RESET);

	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_SYS_RUNNING);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_SYS_RUNNING);

	/*
	 * Setup GPIO's for FPGA programming
	 */
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_PRG);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_CLK);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_DATA);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_PRG);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_CLK);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_DATA);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_INIT);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_DONE);

	/*
	 * Setup GPIO's for interrupts
	 */
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_PCI_INTA);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_PCI_INTA);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_PCI_INTB);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_PCI_INTB);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_RESTORE_INT);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_RESTORE_INT);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_RESTART_INT);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_RESTART_INT);

	/*
	 * Setup GPIO's for 33MHz clock output
	 */
	*IXP425_GPIO_GPCLKR = 0x01FF0000;
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_CLK_33M);

	/*
	 * Setup other chip select's
	 */
	*IXP425_EXP_CS1 = CONFIG_SYS_EXP_CS1;

	return 0;
}
Пример #3
0
int board_init(void)
{
	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_IORST);

	/* Setup GPIOs for PCI INTA */
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_PCI1_INTA);
	GPIO_INT_ACT_LOW_SET(CONFIG_SYS_GPIO_PCI1_INTA);

	/* Setup GPIOs for 33MHz clock output */
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_PCI_CLK);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_EXTBUS_CLK);
	writel(0x011001FF, IXP425_GPIO_GPCLKR);

	udelay(533);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_IORST);

	ACTUX1_LED1(2);
	ACTUX1_LED2(2);
	ACTUX1_LED3(0);
	ACTUX1_LED4(0);
	ACTUX1_LED5(0);
	ACTUX1_LED6(0);
	ACTUX1_LED7(0);

	ACTUX1_HS(ACTUX1_HS_DCD);

	return 0;
}
Пример #4
0
int board_init (void)
{
	gd->bd->bi_arch_number = MACH_TYPE_ACTUX2;

	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_ETHRST);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DSR);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DCD);

	GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_ETHRST);

	GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_DSR);
	GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DCD);

	/* Setup GPIO's for Interrupt inputs */
	GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_DBGINT);
	GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_ETHINT);

	/* Setup GPIO's for 33MHz clock output */
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK);
	*IXP425_GPIO_GPCLKR = 0x011001FF;

	/* CS1: IPAC-X */
	*IXP425_EXP_CS1 = 0x94d10013;
	/* CS5: Debug port */
	*IXP425_EXP_CS5 = 0x9d520003;
	/* CS6: HW release register */
	*IXP425_EXP_CS6 = 0x81860001;
	/* CS7: LEDs */
	*IXP425_EXP_CS7 = 0x80900003;

	udelay (533);
	GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_ETHRST);

	ACTUX2_LED1 (1);
	ACTUX2_LED2 (0);
	ACTUX2_LED3 (0);
	ACTUX2_LED4 (0);

	return 0;
}
Пример #5
0
int board_init(void)
{
	gd->bd->bi_arch_number = MACH_TYPE_DVLHOST;

	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	/* Setup GPIOs used as output */
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_WDGTRIGGER);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_DLAN_PAIRING);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_PCIRST);

	/*
	 * LED latch enable and watchdog enable are tied to the same GPIO,
	 * so we need to trigger the watchdog if we want to enable the LEDs.
	*/
#ifdef CONFIG_HW_WATCHDOG
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_WDG_LED_EN);
#else
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_WDG_LED_EN);
#endif

	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_WDGTRIGGER);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_DLAN_PAIRING);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_WDG_LED_EN);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_PCIRST);

	/* Setup GPIOs for Interrupt inputs */
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_BTN_WLAN);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_BTN_PAIRING);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_BTN_RESET);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_IRQA);
	GPIO_OUTPUT_DISABLE(CONFIG_SYS_GPIO_IRQB);

	/* Setup GPIO's for 33MHz clock output */
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_PCI_CLK);
	GPIO_OUTPUT_ENABLE(CONFIG_SYS_GPIO_EXTBUS_CLK);
	writel(0x01FF01FF, IXP425_GPIO_GPCLKR);

	/* turn off all LEDs */
	writew(0x0000, DVLHOST_LED_LATCH);

	udelay(533);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_PCIRST);

	return 0;
}
Пример #6
0
int board_init (void)
{
	gd->bd->bi_arch_number = MACH_TYPE_ACTUX1;

	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0x00000100;

	GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST);

	/* Setup GPIO's for PCI INTA */
	GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA);
	GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA);

	/* Setup GPIO's for 33MHz clock output */
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK);
	GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK);
	*IXP425_GPIO_GPCLKR = 0x011001FF;

	/* CS5: Debug port */
	*IXP425_EXP_CS5 = 0x9d520003;
	/* CS6: HwRel */
	*IXP425_EXP_CS6 = 0x81860001;
	/* CS7: LEDs */
	*IXP425_EXP_CS7 = 0x80900003;

	udelay (533);
	GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST);

	ACTUX1_LED1 (2);
	ACTUX1_LED2 (2);
	ACTUX1_LED3 (0);
	ACTUX1_LED4 (0);
	ACTUX1_LED5 (0);
	ACTUX1_LED6 (0);
	ACTUX1_LED7 (0);

	ACTUX1_HS (ACTUX1_HS_DCD);

	return 0;
}
Пример #7
0
int do_fpga_boot(unsigned char *fpgadata)
{
	unsigned char *dst;
	int status;
	int index;
	int i;
	ulong len = CONFIG_SYS_MALLOC_LEN;

	/*
	 * Setup GPIO's for FPGA programming
	 */
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_PRG);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_CLK);
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_DATA);

	/*
	 * Save value so no readback is required upon programming
	 */
	old_val = *IXP425_GPIO_GPOUTR;

	/*
	 * First try to decompress fpga image (gzip compressed?)
	 */
	dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
	if (gunzip(dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
		printf("Error: Image has to be gzipp'ed!\n");
		return -1;
	}

	status = fpga_boot(dst, len);
	if (status != 0) {
		printf("\nFPGA: Booting failed ");
		switch (status) {
		case ERROR_FPGA_PRG_INIT_LOW:
			printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
			break;
		case ERROR_FPGA_PRG_INIT_HIGH:
			printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
			break;
		case ERROR_FPGA_PRG_DONE:
			printf("(Timeout: DONE not high after programming FPGA)\n ");
			break;
		}

		/* display infos on fpgaimage */
		index = 15;
		for (i=0; i<4; i++) {
			len = dst[index];
			printf("FPGA: %s\n", &(dst[index+1]));
			index += len+3;
		}
		putc ('\n');
		/* delayed reboot */
		for (i=5; i>0; i--) {
			printf("Rebooting in %2d seconds \r",i);
			for (index=0;index<1000;index++)
				udelay(1000);
		}
		putc('\n');
		do_reset(NULL, 0, 0, NULL);
	}

	puts("FPGA:  ");

	/* display infos on fpgaimage */
	index = 15;
	for (i=0; i<4; i++) {
		len = dst[index];
		printf("%s ", &(dst[index+1]));
		index += len+3;
	}
	putc('\n');

	free(dst);

	/*
	 * Reset FPGA
	 */
	GPIO_OUTPUT_CLEAR(CONFIG_SYS_GPIO_FPGA_RESET);
	udelay(10);
	GPIO_OUTPUT_SET(CONFIG_SYS_GPIO_FPGA_RESET);

	return (0);
}