uboot/arch/mips/mach-jz47xx/jz4780/jz4780.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * JZ4780 common routines
   4 *
   5 * Copyright (c) 2013 Imagination Technologies
   6 * Author: Paul Burton <paul.burton@imgtec.com>
   7 */
   8
   9#include <config.h>
  10#include <common.h>
  11#include <asm/io.h>
  12#include <asm/sections.h>
  13#include <mach/jz4780.h>
  14#include <mach/jz4780_dram.h>
  15#include <mmc.h>
  16#include <spl.h>
  17
  18#ifdef CONFIG_SPL_BUILD
  19/* Pointer to the global data structure for SPL */
  20DECLARE_GLOBAL_DATA_PTR;
  21gd_t gdata __attribute__ ((section(".bss")));
  22
  23void board_init_f(ulong dummy)
  24{
  25        typedef void __noreturn (*image_entry_noargs_t)(void);
  26        struct mmc *mmc;
  27        unsigned long count;
  28        struct image_header *header;
  29        int ret;
  30
  31        /* Set global data pointer */
  32        gd = &gdata;
  33
  34        timer_init();
  35        pll_init();
  36        sdram_init();
  37        enable_caches();
  38
  39        /* Clear the BSS */
  40        memset(__bss_start, 0, (char *)&__bss_end - __bss_start);
  41
  42        gd->flags |= GD_FLG_SPL_INIT;
  43
  44        ret = mmc_initialize(NULL);
  45        if (ret)
  46                hang();
  47
  48        mmc = find_mmc_device(BOOT_DEVICE_MMC1);
  49        if (ret)
  50                hang();
  51
  52        ret = mmc_init(mmc);
  53        if (ret)
  54                hang();
  55
  56        header = (struct image_header *)(CONFIG_SYS_TEXT_BASE -
  57                                         sizeof(struct image_header));
  58
  59        count = blk_dread(mmc_get_blk_desc(mmc),
  60                          CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR,
  61                0x800, header);
  62        if (count == 0)
  63                hang();
  64
  65        image_entry_noargs_t image_entry =
  66                (image_entry_noargs_t)CONFIG_SYS_TEXT_BASE;
  67
  68        image_entry();
  69
  70        hang();
  71}
  72#endif /* CONFIG_SPL_BUILD */
  73
  74ulong board_get_usable_ram_top(ulong total_size)
  75{
  76        return CONFIG_SYS_SDRAM_BASE + (256 * 1024 * 1024);
  77}
  78
  79int print_cpuinfo(void)
  80{
  81        printf("CPU:   Ingenic JZ4780\n");
  82        return 0;
  83}
  84