blob: 35bf497156da0ffcdad8683843639c63f035ae9a [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Patrice Chotard5cc16d82017-02-21 13:37:12 +01002/*
Patrice Chotardfb48bc42017-10-23 09:53:57 +02003 * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
4 * Author(s): Patrice Chotard, <patrice.chotard@st.com> for STMicroelectronics.
Patrice Chotard5cc16d82017-02-21 13:37:12 +01005 */
6
7#include <common.h>
Simon Glass9edefc22019-11-14 12:57:37 -07008#include <cpu_func.h>
Simon Glass90526e92020-05-10 11:39:56 -06009#include <asm/cache.h>
Patrice Chotard4e6eeea2017-09-05 11:04:27 +020010#include <linux/usb/otg.h>
11#include <dwc3-sti-glue.h>
12#include <dwc3-uboot.h>
13#include <usb.h>
Patrice Chotard5cc16d82017-02-21 13:37:12 +010014
15DECLARE_GLOBAL_DATA_PTR;
16
17int dram_init(void)
18{
19 gd->ram_size = PHYS_SDRAM_1_SIZE;
20 return 0;
21}
22
Simon Glass76b00ac2017-03-31 08:40:32 -060023int dram_init_banksize(void)
Patrice Chotard5cc16d82017-02-21 13:37:12 +010024{
25 gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
26 gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
Simon Glass76b00ac2017-03-31 08:40:32 -060027
28 return 0;
Patrice Chotard5cc16d82017-02-21 13:37:12 +010029}
30
Trevor Woerner10015022019-05-03 09:41:00 -040031#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
Patrice Chotard4c4da9f2017-03-20 15:21:36 +010032void enable_caches(void)
33{
34 /* Enable D-cache. I-cache is already enabled in start.S */
35 dcache_enable();
36}
37#endif
38
Patrice Chotard5cc16d82017-02-21 13:37:12 +010039int board_init(void)
40{
41 return 0;
42}
Patrice Chotard4e6eeea2017-09-05 11:04:27 +020043
44#ifdef CONFIG_USB_DWC3
45static struct dwc3_device dwc3_device_data = {
46 .maximum_speed = USB_SPEED_HIGH,
47 .dr_mode = USB_DR_MODE_PERIPHERAL,
48 .index = 0,
49};
50
51int usb_gadget_handle_interrupts(int index)
52{
53 dwc3_uboot_handle_interrupt(index);
54 return 0;
55}
56
57int board_usb_init(int index, enum usb_init_type init)
58{
59 int node;
60 const void *blob = gd->fdt_blob;
61
62 /* find the snps,dwc3 node */
63 node = fdt_node_offset_by_compatible(blob, -1, "snps,dwc3");
64
65 dwc3_device_data.base = fdtdec_get_addr(blob, node, "reg");
66
67 return dwc3_uboot_init(&dwc3_device_data);
68}
69
70int board_usb_cleanup(int index, enum usb_init_type init)
71{
72 dwc3_uboot_exit(index);
73 return 0;
74}
75
76int g_dnl_board_usb_cable_connected(void)
77{
78 return 1;
79}
80#endif