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