ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
lime2-spi
Masahiro Yamada 6 years ago
parent e968715302
commit 65fce76301
  1. 1
      arch/arm/Kconfig
  2. 1
      arch/arm/mach-uniphier/Kconfig
  3. 1
      arch/arm/mach-uniphier/Makefile
  4. 35
      arch/arm/mach-uniphier/dram_init.c
  5. 56
      arch/arm/mach-uniphier/fdt-fixup.c

@ -1223,6 +1223,7 @@ config ARCH_UNIPHIER
select DM_RESET
select DM_SERIAL
select DM_USB
select OF_BOARD_SETUP
select OF_CONTROL
select OF_LIBFDT
select PINCTRL

@ -68,7 +68,6 @@ config ARCH_UNIPHIER_LD11
config ARCH_UNIPHIER_LD20
bool "Enable UniPhier LD20 SoC support"
depends on ARCH_UNIPHIER_V8_MULTI
select OF_BOARD_SETUP
default y
config ARCH_UNIPHIER_PXS3

@ -21,6 +21,7 @@ endif
obj-$(CONFIG_MICRO_SUPPORT_CARD) += sbc/ micro-support-card.o
obj-y += pinctrl-glue.o
obj-$(CONFIG_MMC) += mmc-first-dev.o
obj-y += fdt-fixup.o
endif

@ -6,8 +6,6 @@
*/
#include <common.h>
#include <fdt_support.h>
#include <fdtdec.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/printk.h>
@ -264,36 +262,3 @@ int dram_init_banksize(void)
return 0;
}
#ifdef CONFIG_OF_BOARD_SETUP
/*
* The DRAM PHY requires 64 byte scratch area in each DRAM channel
* for its dynamic PHY training feature.
*/
int ft_board_setup(void *fdt, bd_t *bd)
{
unsigned long rsv_addr;
const unsigned long rsv_size = 64;
int i, ret;
if (uniphier_get_soc_id() != UNIPHIER_LD20_ID)
return 0;
for (i = 0; i < ARRAY_SIZE(bd->bi_dram); i++) {
if (!bd->bi_dram[i].size)
continue;
rsv_addr = bd->bi_dram[i].start + bd->bi_dram[i].size;
rsv_addr -= rsv_size;
ret = fdt_add_mem_rsv(fdt, rsv_addr, rsv_size);
if (ret)
return -ENOSPC;
pr_notice(" Reserved memory region for DRAM PHY training: addr=%lx size=%lx\n",
rsv_addr, rsv_size);
}
return 0;
}
#endif

@ -0,0 +1,56 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2016-2018 Socionext Inc.
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
*/
#include <common.h>
#include <fdt_support.h>
#include <fdtdec.h>
#include <linux/kernel.h>
#include <linux/printk.h>
#include "soc-info.h"
/*
* The DRAM PHY requires 64 byte scratch area in each DRAM channel
* for its dynamic PHY training feature.
*/
static int uniphier_ld20_fdt_mem_rsv(void *fdt, bd_t *bd)
{
unsigned long rsv_addr;
const unsigned long rsv_size = 64;
int i, ret;
if (!IS_ENABLED(CONFIG_ARCH_UNIPHIER_LD20) ||
uniphier_get_soc_id() != UNIPHIER_LD20_ID)
return 0;
for (i = 0; i < ARRAY_SIZE(bd->bi_dram); i++) {
if (!bd->bi_dram[i].size)
continue;
rsv_addr = bd->bi_dram[i].start + bd->bi_dram[i].size;
rsv_addr -= rsv_size;
ret = fdt_add_mem_rsv(fdt, rsv_addr, rsv_size);
if (ret)
return -ENOSPC;
pr_notice(" Reserved memory region for DRAM PHY training: addr=%lx size=%lx\n",
rsv_addr, rsv_size);
}
return 0;
}
int ft_board_setup(void *fdt, bd_t *bd)
{
int ret;
ret = uniphier_ld20_fdt_mem_rsv(fdt, bd);
if (ret)
return ret;
return 0;
}
Loading…
Cancel
Save