uboot/board/vpac270/onenand.c
<<
>>
Prefs
   1/*
   2 * Voipac PXA270 OneNAND SPL
   3 *
   4 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
   5 *
   6 * SPDX-License-Identifier:     GPL-2.0+
   7 */
   8
   9#include <common.h>
  10#include <config.h>
  11#include <asm/io.h>
  12#include <onenand_uboot.h>
  13#include <asm/arch/pxa.h>
  14
  15void board_init_f(unsigned long unused)
  16{
  17        extern uint32_t _end;
  18        uint32_t tmp;
  19
  20        asm volatile("mov %0, pc" : "=r"(tmp));
  21        tmp >>= 24;
  22
  23        /* The code runs from OneNAND RAM, copy SPL to SRAM and execute it. */
  24        if (tmp == 0) {
  25                tmp = (uint32_t)&_end - CONFIG_SPL_TEXT_BASE;
  26                onenand_spl_load_image(0, tmp, (void *)CONFIG_SPL_TEXT_BASE);
  27                asm volatile("mov pc, %0" : : "r"(CONFIG_SPL_TEXT_BASE));
  28        }
  29
  30        /* Hereby, the code runs from (S)RAM, copy U-Boot and execute it. */
  31        arch_cpu_init();
  32        pxa2xx_dram_init();
  33        onenand_spl_load_image(CONFIG_SPL_ONENAND_LOAD_ADDR,
  34                                CONFIG_SPL_ONENAND_LOAD_SIZE,
  35                                (void *)CONFIG_SYS_TEXT_BASE);
  36        asm volatile("mov pc, %0" : : "r"(CONFIG_SYS_TEXT_BASE));
  37
  38        for (;;)
  39                ;
  40}
  41
  42void __attribute__((noreturn)) hang(void)
  43{
  44        for (;;)
  45                ;
  46}
  47