uboot/board/AndesTech/ax25-ae350/ax25-ae350.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2017 Andes Technology Corporation
   4 * Rick Chen, Andes Technology Corporation <rick@andestech.com>
   5 */
   6
   7#include <common.h>
   8#include <flash.h>
   9#include <image.h>
  10#include <init.h>
  11#include <net.h>
  12#if defined(CONFIG_FTMAC100) && !defined(CONFIG_DM_ETH)
  13#include <netdev.h>
  14#endif
  15#include <asm/global_data.h>
  16#include <linux/io.h>
  17#include <faraday/ftsmc020.h>
  18#include <fdtdec.h>
  19#include <dm.h>
  20#include <spl.h>
  21
  22DECLARE_GLOBAL_DATA_PTR;
  23
  24extern phys_addr_t prior_stage_fdt_address;
  25/*
  26 * Miscellaneous platform dependent initializations
  27 */
  28
  29int board_init(void)
  30{
  31        gd->bd->bi_boot_params = PHYS_SDRAM_0 + 0x400;
  32
  33        return 0;
  34}
  35
  36int dram_init(void)
  37{
  38        return fdtdec_setup_mem_size_base();
  39}
  40
  41int dram_init_banksize(void)
  42{
  43        return fdtdec_setup_memory_banksize();
  44}
  45
  46#if defined(CONFIG_FTMAC100) && !defined(CONFIG_DM_ETH)
  47int board_eth_init(struct bd_info *bd)
  48{
  49        return ftmac100_initialize(bd);
  50}
  51#endif
  52
  53ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
  54{
  55        return 0;
  56}
  57
  58void *board_fdt_blob_setup(void)
  59{
  60        return (void *)CONFIG_SYS_FDT_BASE;
  61}
  62
  63int smc_init(void)
  64{
  65        int node = -1;
  66        const char *compat = "andestech,atfsmc020";
  67        void *blob = (void *)gd->fdt_blob;
  68        fdt_addr_t addr;
  69        struct ftsmc020_bank *regs;
  70
  71        node = fdt_node_offset_by_compatible(blob, -1, compat);
  72        if (node < 0)
  73                return -FDT_ERR_NOTFOUND;
  74
  75        addr = fdtdec_get_addr_size_auto_noparent(blob, node,
  76                "reg", 0, NULL, false);
  77
  78        if (addr == FDT_ADDR_T_NONE)
  79                return -EINVAL;
  80
  81        regs = (struct ftsmc020_bank *)(uintptr_t)addr;
  82        regs->cr &= ~FTSMC020_BANK_WPROT;
  83
  84        return 0;
  85}
  86
  87static void v5l2_init(void)
  88{
  89        struct udevice *dev;
  90
  91        uclass_get_device(UCLASS_CACHE, 0, &dev);
  92}
  93
  94#ifdef CONFIG_BOARD_EARLY_INIT_F
  95int board_early_init_f(void)
  96{
  97        smc_init();
  98        v5l2_init();
  99
 100        return 0;
 101}
 102#endif
 103
 104#ifdef CONFIG_SPL
 105void board_boot_order(u32 *spl_boot_list)
 106{
 107        u8 i;
 108        u32 boot_devices[] = {
 109#ifdef CONFIG_SPL_RAM_SUPPORT
 110                BOOT_DEVICE_RAM,
 111#endif
 112#ifdef CONFIG_SPL_MMC_SUPPORT
 113                BOOT_DEVICE_MMC1,
 114#endif
 115        };
 116
 117        for (i = 0; i < ARRAY_SIZE(boot_devices); i++)
 118                spl_boot_list[i] = boot_devices[i];
 119}
 120#endif
 121
 122#ifdef CONFIG_SPL_LOAD_FIT
 123int board_fit_config_name_match(const char *name)
 124{
 125        /* boot using first FIT config */
 126        return 0;
 127}
 128#endif
 129