xref: /openbmc/u-boot/arch/arm/mach-socfpga/board.c (revision 53faef1e)
183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
28e535af2SMarek Vasut /*
38e535af2SMarek Vasut  * Altera SoCFPGA common board code
48e535af2SMarek Vasut  *
58e535af2SMarek Vasut  * Copyright (C) 2015 Marek Vasut <marex@denx.de>
68e535af2SMarek Vasut  */
78e535af2SMarek Vasut 
88e535af2SMarek Vasut #include <common.h>
98e535af2SMarek Vasut #include <errno.h>
108e535af2SMarek Vasut #include <asm/arch/reset_manager.h>
118e535af2SMarek Vasut #include <asm/io.h>
128e535af2SMarek Vasut 
138e535af2SMarek Vasut #include <usb.h>
148e535af2SMarek Vasut #include <usb/dwc2_udc.h>
158e535af2SMarek Vasut 
168e535af2SMarek Vasut DECLARE_GLOBAL_DATA_PTR;
178e535af2SMarek Vasut 
188e535af2SMarek Vasut void s_init(void) {}
198e535af2SMarek Vasut 
208e535af2SMarek Vasut /*
218e535af2SMarek Vasut  * Miscellaneous platform dependent initialisations
228e535af2SMarek Vasut  */
238e535af2SMarek Vasut int board_init(void)
248e535af2SMarek Vasut {
258e535af2SMarek Vasut 	/* Address of boot parameters for ATAG (if ATAG is used) */
268e535af2SMarek Vasut 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
278e535af2SMarek Vasut 
288e535af2SMarek Vasut 	return 0;
298e535af2SMarek Vasut }
308e535af2SMarek Vasut 
31*53faef1eSTien Fong Chee int dram_init_banksize(void)
32*53faef1eSTien Fong Chee {
33*53faef1eSTien Fong Chee 	fdtdec_setup_memory_banksize();
34*53faef1eSTien Fong Chee 
35*53faef1eSTien Fong Chee 	return 0;
36*53faef1eSTien Fong Chee }
37*53faef1eSTien Fong Chee 
388e535af2SMarek Vasut #ifdef CONFIG_USB_GADGET
398e535af2SMarek Vasut struct dwc2_plat_otg_data socfpga_otg_data = {
408e535af2SMarek Vasut 	.usb_gusbcfg	= 0x1417,
418e535af2SMarek Vasut };
428e535af2SMarek Vasut 
438e535af2SMarek Vasut int board_usb_init(int index, enum usb_init_type init)
448e535af2SMarek Vasut {
458e535af2SMarek Vasut 	int node[2], count;
468e535af2SMarek Vasut 	fdt_addr_t addr;
478e535af2SMarek Vasut 
488e535af2SMarek Vasut 	count = fdtdec_find_aliases_for_id(gd->fdt_blob, "udc",
498e535af2SMarek Vasut 					   COMPAT_ALTERA_SOCFPGA_DWC2USB,
508e535af2SMarek Vasut 					   node, 2);
518e535af2SMarek Vasut 	if (count <= 0)	/* No controller found. */
528e535af2SMarek Vasut 		return 0;
538e535af2SMarek Vasut 
548e535af2SMarek Vasut 	addr = fdtdec_get_addr(gd->fdt_blob, node[0], "reg");
558e535af2SMarek Vasut 	if (addr == FDT_ADDR_T_NONE) {
568e535af2SMarek Vasut 		printf("UDC Controller has no 'reg' property!\n");
578e535af2SMarek Vasut 		return -EINVAL;
588e535af2SMarek Vasut 	}
598e535af2SMarek Vasut 
608e535af2SMarek Vasut 	/* Patch the address from OF into the controller pdata. */
618e535af2SMarek Vasut 	socfpga_otg_data.regs_otg = addr;
628e535af2SMarek Vasut 
638e535af2SMarek Vasut 	return dwc2_udc_probe(&socfpga_otg_data);
648e535af2SMarek Vasut }
658e535af2SMarek Vasut 
668e535af2SMarek Vasut int g_dnl_board_usb_cable_connected(void)
678e535af2SMarek Vasut {
688e535af2SMarek Vasut 	return 1;
698e535af2SMarek Vasut }
708e535af2SMarek Vasut #endif
71