mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-29 05:18:51 +09:00
![Masahiro Yamada](/assets/img/avatar_default.png)
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2016-2018 Socionext Inc.
|
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
*/
|
|
|
|
#include <fdt_support.h>
|
|
#include <fdtdec.h>
|
|
#include <jffs2/load_kernel.h>
|
|
#include <mtd_node.h>
|
|
#include <linux/errno.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, struct bd_info *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, struct bd_info *bd)
|
|
{
|
|
static const struct node_info nodes[] = {
|
|
{ "socionext,uniphier-denali-nand-v5a", MTD_DEV_TYPE_NAND },
|
|
{ "socionext,uniphier-denali-nand-v5b", MTD_DEV_TYPE_NAND },
|
|
};
|
|
int ret;
|
|
|
|
fdt_fixup_mtdparts(fdt, nodes, ARRAY_SIZE(nodes));
|
|
|
|
ret = uniphier_ld20_fdt_mem_rsv(fdt, bd);
|
|
if (ret)
|
|
return ret;
|
|
|
|
return 0;
|
|
}
|