xref: /rk3399_rockchip-uboot/arch/arm/mach-socfpga/board.c (revision 34059d8f502dec034af2387c7d00a56ccab99a9e)
1*8e535af2SMarek Vasut /*
2*8e535af2SMarek Vasut  * Altera SoCFPGA common board code
3*8e535af2SMarek Vasut  *
4*8e535af2SMarek Vasut  * Copyright (C) 2015 Marek Vasut <marex@denx.de>
5*8e535af2SMarek Vasut  *
6*8e535af2SMarek Vasut  * SPDX-License-Identifier:	GPL-2.0+
7*8e535af2SMarek Vasut  */
8*8e535af2SMarek Vasut 
9*8e535af2SMarek Vasut #include <common.h>
10*8e535af2SMarek Vasut #include <errno.h>
11*8e535af2SMarek Vasut #include <asm/arch/reset_manager.h>
12*8e535af2SMarek Vasut #include <asm/io.h>
13*8e535af2SMarek Vasut 
14*8e535af2SMarek Vasut #include <usb.h>
15*8e535af2SMarek Vasut #include <usb/dwc2_udc.h>
16*8e535af2SMarek Vasut 
17*8e535af2SMarek Vasut DECLARE_GLOBAL_DATA_PTR;
18*8e535af2SMarek Vasut 
s_init(void)19*8e535af2SMarek Vasut void s_init(void) {}
20*8e535af2SMarek Vasut 
21*8e535af2SMarek Vasut /*
22*8e535af2SMarek Vasut  * Miscellaneous platform dependent initialisations
23*8e535af2SMarek Vasut  */
board_init(void)24*8e535af2SMarek Vasut int board_init(void)
25*8e535af2SMarek Vasut {
26*8e535af2SMarek Vasut 	/* Address of boot parameters for ATAG (if ATAG is used) */
27*8e535af2SMarek Vasut 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
28*8e535af2SMarek Vasut 
29*8e535af2SMarek Vasut 	return 0;
30*8e535af2SMarek Vasut }
31*8e535af2SMarek Vasut 
32*8e535af2SMarek Vasut #ifdef CONFIG_USB_GADGET
33*8e535af2SMarek Vasut struct dwc2_plat_otg_data socfpga_otg_data = {
34*8e535af2SMarek Vasut 	.usb_gusbcfg	= 0x1417,
35*8e535af2SMarek Vasut };
36*8e535af2SMarek Vasut 
board_usb_init(int index,enum usb_init_type init)37*8e535af2SMarek Vasut int board_usb_init(int index, enum usb_init_type init)
38*8e535af2SMarek Vasut {
39*8e535af2SMarek Vasut 	int node[2], count;
40*8e535af2SMarek Vasut 	fdt_addr_t addr;
41*8e535af2SMarek Vasut 
42*8e535af2SMarek Vasut 	count = fdtdec_find_aliases_for_id(gd->fdt_blob, "udc",
43*8e535af2SMarek Vasut 					   COMPAT_ALTERA_SOCFPGA_DWC2USB,
44*8e535af2SMarek Vasut 					   node, 2);
45*8e535af2SMarek Vasut 	if (count <= 0)	/* No controller found. */
46*8e535af2SMarek Vasut 		return 0;
47*8e535af2SMarek Vasut 
48*8e535af2SMarek Vasut 	addr = fdtdec_get_addr(gd->fdt_blob, node[0], "reg");
49*8e535af2SMarek Vasut 	if (addr == FDT_ADDR_T_NONE) {
50*8e535af2SMarek Vasut 		printf("UDC Controller has no 'reg' property!\n");
51*8e535af2SMarek Vasut 		return -EINVAL;
52*8e535af2SMarek Vasut 	}
53*8e535af2SMarek Vasut 
54*8e535af2SMarek Vasut 	/* Patch the address from OF into the controller pdata. */
55*8e535af2SMarek Vasut 	socfpga_otg_data.regs_otg = addr;
56*8e535af2SMarek Vasut 
57*8e535af2SMarek Vasut 	return dwc2_udc_probe(&socfpga_otg_data);
58*8e535af2SMarek Vasut }
59*8e535af2SMarek Vasut 
g_dnl_board_usb_cable_connected(void)60*8e535af2SMarek Vasut int g_dnl_board_usb_cable_connected(void)
61*8e535af2SMarek Vasut {
62*8e535af2SMarek Vasut 	return 1;
63*8e535af2SMarek Vasut }
64*8e535af2SMarek Vasut #endif
65