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