19ed679aeSDarwin Rambo /* 29ed679aeSDarwin Rambo * Copyright 2013 Broadcom Corporation. 39ed679aeSDarwin Rambo * 49ed679aeSDarwin Rambo * SPDX-License-Identifier: GPL-2.0+ 59ed679aeSDarwin Rambo */ 69ed679aeSDarwin Rambo 79ed679aeSDarwin Rambo #include <common.h> 89ed679aeSDarwin Rambo #include <asm/io.h> 99ed679aeSDarwin Rambo #include <asm/mach-types.h> 109ed679aeSDarwin Rambo #include <mmc.h> 119ed679aeSDarwin Rambo #include <asm/kona-common/kona_sdhci.h> 129ed679aeSDarwin Rambo #include <asm/kona-common/clk.h> 139ed679aeSDarwin Rambo #include <asm/arch/sysmap.h> 149ed679aeSDarwin Rambo 15d00bf781SJiandong Zheng #include <usb.h> 165d5716eeSMarek Vasut #include <usb/dwc2_udc.h> 17d00bf781SJiandong Zheng #include <g_dnl.h> 18d00bf781SJiandong Zheng 199ed679aeSDarwin Rambo #define SECWATCHDOG_SDOGCR_OFFSET 0x00000000 209ed679aeSDarwin Rambo #define SECWATCHDOG_SDOGCR_EN_SHIFT 27 219ed679aeSDarwin Rambo #define SECWATCHDOG_SDOGCR_SRSTEN_SHIFT 26 229ed679aeSDarwin Rambo #define SECWATCHDOG_SDOGCR_CLKS_SHIFT 20 239ed679aeSDarwin Rambo #define SECWATCHDOG_SDOGCR_LD_SHIFT 0 249ed679aeSDarwin Rambo 25d00bf781SJiandong Zheng #ifndef CONFIG_USB_SERIALNO 26d00bf781SJiandong Zheng #define CONFIG_USB_SERIALNO "1234567890" 27d00bf781SJiandong Zheng #endif 28d00bf781SJiandong Zheng 299ed679aeSDarwin Rambo DECLARE_GLOBAL_DATA_PTR; 309ed679aeSDarwin Rambo 319ed679aeSDarwin Rambo /* 329ed679aeSDarwin Rambo * board_init - early hardware init 339ed679aeSDarwin Rambo */ 349ed679aeSDarwin Rambo int board_init(void) 359ed679aeSDarwin Rambo { 369ed679aeSDarwin Rambo printf("Relocation Offset is: %08lx\n", gd->reloc_off); 379ed679aeSDarwin Rambo 389ed679aeSDarwin Rambo /* adress of boot parameters */ 399ed679aeSDarwin Rambo gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; 409ed679aeSDarwin Rambo 419ed679aeSDarwin Rambo clk_init(); 429ed679aeSDarwin Rambo 439ed679aeSDarwin Rambo return 0; 449ed679aeSDarwin Rambo } 459ed679aeSDarwin Rambo 469ed679aeSDarwin Rambo /* 479ed679aeSDarwin Rambo * misc_init_r - miscellaneous platform dependent initializations 489ed679aeSDarwin Rambo */ 499ed679aeSDarwin Rambo int misc_init_r(void) 509ed679aeSDarwin Rambo { 519ed679aeSDarwin Rambo /* Disable watchdog reset - watchdog unused */ 529ed679aeSDarwin Rambo writel((0 << SECWATCHDOG_SDOGCR_EN_SHIFT) | 539ed679aeSDarwin Rambo (0 << SECWATCHDOG_SDOGCR_SRSTEN_SHIFT) | 549ed679aeSDarwin Rambo (4 << SECWATCHDOG_SDOGCR_CLKS_SHIFT) | 559ed679aeSDarwin Rambo (0x5a0 << SECWATCHDOG_SDOGCR_LD_SHIFT), 569ed679aeSDarwin Rambo (SECWD_BASE_ADDR + SECWATCHDOG_SDOGCR_OFFSET)); 579ed679aeSDarwin Rambo 589ed679aeSDarwin Rambo return 0; 599ed679aeSDarwin Rambo } 609ed679aeSDarwin Rambo 619ed679aeSDarwin Rambo /* 629ed679aeSDarwin Rambo * dram_init - sets uboots idea of sdram size 639ed679aeSDarwin Rambo */ 649ed679aeSDarwin Rambo int dram_init(void) 659ed679aeSDarwin Rambo { 669ed679aeSDarwin Rambo gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 679ed679aeSDarwin Rambo CONFIG_SYS_SDRAM_SIZE); 689ed679aeSDarwin Rambo return 0; 699ed679aeSDarwin Rambo } 709ed679aeSDarwin Rambo 719ed679aeSDarwin Rambo /* This is called after dram_init() so use get_ram_size result */ 7276b00acaSSimon Glass int dram_init_banksize(void) 739ed679aeSDarwin Rambo { 749ed679aeSDarwin Rambo gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; 759ed679aeSDarwin Rambo gd->bd->bi_dram[0].size = gd->ram_size; 7676b00acaSSimon Glass 7776b00acaSSimon Glass return 0; 789ed679aeSDarwin Rambo } 799ed679aeSDarwin Rambo 8045a68fe2SMasahiro Yamada #ifdef CONFIG_MMC_SDHCI_KONA 819ed679aeSDarwin Rambo /* 829ed679aeSDarwin Rambo * mmc_init - Initializes mmc 839ed679aeSDarwin Rambo */ 849ed679aeSDarwin Rambo int board_mmc_init(bd_t *bis) 859ed679aeSDarwin Rambo { 869ed679aeSDarwin Rambo int ret = 0; 879ed679aeSDarwin Rambo 889ed679aeSDarwin Rambo /* Register eMMC - SDIO2 */ 899ed679aeSDarwin Rambo ret = kona_sdhci_init(1, 400000, 0); 909ed679aeSDarwin Rambo if (ret) 919ed679aeSDarwin Rambo return ret; 929ed679aeSDarwin Rambo 939ed679aeSDarwin Rambo /* Register SD Card - SDIO4 kona_mmc_init assumes 0 based index */ 949ed679aeSDarwin Rambo ret = kona_sdhci_init(3, 400000, 0); 959ed679aeSDarwin Rambo return ret; 969ed679aeSDarwin Rambo } 979ed679aeSDarwin Rambo #endif 98d00bf781SJiandong Zheng 99d00bf781SJiandong Zheng #ifdef CONFIG_USB_GADGET 100c0982871SMarek Vasut static struct dwc2_plat_otg_data bcm_otg_data = { 101d00bf781SJiandong Zheng .regs_otg = HSOTG_BASE_ADDR 102d00bf781SJiandong Zheng }; 103d00bf781SJiandong Zheng 104d00bf781SJiandong Zheng int board_usb_init(int index, enum usb_init_type init) 105d00bf781SJiandong Zheng { 106a4bb9b36SMarek Vasut debug("%s: performing dwc2_udc_probe\n", __func__); 107a4bb9b36SMarek Vasut return dwc2_udc_probe(&bcm_otg_data); 108d00bf781SJiandong Zheng } 109d00bf781SJiandong Zheng 110d00bf781SJiandong Zheng int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) 111d00bf781SJiandong Zheng { 112d00bf781SJiandong Zheng debug("%s\n", __func__); 113*00caae6dSSimon Glass if (!env_get("serial#")) 114d00bf781SJiandong Zheng g_dnl_set_serialnumber(CONFIG_USB_SERIALNO); 115d00bf781SJiandong Zheng return 0; 116d00bf781SJiandong Zheng } 117d00bf781SJiandong Zheng 118d00bf781SJiandong Zheng int g_dnl_get_board_bcd_device_number(int gcnum) 119d00bf781SJiandong Zheng { 120d00bf781SJiandong Zheng debug("%s\n", __func__); 121d00bf781SJiandong Zheng return 1; 122d00bf781SJiandong Zheng } 123d00bf781SJiandong Zheng 124d00bf781SJiandong Zheng int board_usb_cleanup(int index, enum usb_init_type init) 125d00bf781SJiandong Zheng { 126d00bf781SJiandong Zheng debug("%s\n", __func__); 127d00bf781SJiandong Zheng return 0; 128d00bf781SJiandong Zheng } 129d00bf781SJiandong Zheng #endif 130