diff options
author | Marek Vasut <marek.vasut+renesas@gmail.com> | 2018-10-11 16:15:41 +0200 |
---|---|---|
committer | Marek Vasut <marek.vasut+renesas@gmail.com> | 2018-12-06 10:23:54 +0100 |
commit | ac49c5fbe994fdc6a450600b4b965cad63dcfa96 (patch) | |
tree | e3cfdfe95518a6c3720c8fb8b96ebcffbbb18b5b /plat/renesas/rcar/bl2_plat_setup.c | |
parent | 1d85c4bd5b6291b99feb2409525c96f0c1744328 (diff) | |
download | trusted-firmware-a-ac49c5fbe994fdc6a450600b4b965cad63dcfa96.tar.gz |
plat: rcar: Generate platform compatible string
Generate /compatible string for the platform, so that the subsequent
stages know which platform they are running on. This could be useful
when ie. building U-Boot that contains DTs for multiple platforms and
can thus decide on which platform it is running. This would ultimately
allow single bootloader binary for all Gen3 platforms.
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Diffstat (limited to 'plat/renesas/rcar/bl2_plat_setup.c')
-rw-r--r-- | plat/renesas/rcar/bl2_plat_setup.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/plat/renesas/rcar/bl2_plat_setup.c b/plat/renesas/rcar/bl2_plat_setup.c index dce8c5a5ab..754bbdffcf 100644 --- a/plat/renesas/rcar/bl2_plat_setup.c +++ b/plat/renesas/rcar/bl2_plat_setup.c @@ -328,6 +328,76 @@ meminfo_t *bl2_plat_sec_mem_layout(void) return &bl2_tzram_layout; } +static void bl2_populate_compatible_string(void *fdt) +{ + uint32_t board_type; + uint32_t board_rev; + uint32_t reg; + int ret; + + /* Populate compatible string */ + rcar_get_board_type(&board_type, &board_rev); + switch (board_type) { + case BOARD_SALVATOR_X: + ret = fdt_setprop_string(fdt, 0, "compatible", + "renesas,salvator-x"); + break; + case BOARD_SALVATOR_XS: + ret = fdt_setprop_string(fdt, 0, "compatible", + "renesas,salvator-xs"); + break; + case BOARD_STARTER_KIT: + ret = fdt_setprop_string(fdt, 0, "compatible", + "renesas,m3ulcb"); + break; + case BOARD_STARTER_KIT_PRE: + ret = fdt_setprop_string(fdt, 0, "compatible", + "renesas,h3ulcb"); + break; + case BOARD_EBISU: + case BOARD_EBISU_4D: + ret = fdt_setprop_string(fdt, 0, "compatible", + "renesas,ebisu"); + break; + default: + NOTICE("BL2: Cannot set compatible string, board unsupported\n"); + panic(); + } + + if (ret < 0) { + NOTICE("BL2: Cannot set compatible string (ret=%i)\n", ret); + panic(); + } + + reg = mmio_read_32(RCAR_PRR); + switch (reg & RCAR_PRODUCT_MASK) { + case RCAR_PRODUCT_H3: + ret = fdt_appendprop_string(fdt, 0, "compatible", + "renesas,r8a7795"); + break; + case RCAR_PRODUCT_M3: + ret = fdt_appendprop_string(fdt, 0, "compatible", + "renesas,r8a7796"); + break; + case RCAR_PRODUCT_M3N: + ret = fdt_appendprop_string(fdt, 0, "compatible", + "renesas,r8a77965"); + break; + case RCAR_PRODUCT_E3: + ret = fdt_appendprop_string(fdt, 0, "compatible", + "renesas,r8a77990"); + break; + default: + NOTICE("BL2: Cannot set compatible string, SoC unsupported\n"); + panic(); + } + + if (ret < 0) { + NOTICE("BL2: Cannot set compatible string (ret=%i)\n", ret); + panic(); + } +} + static void bl2_advertise_dram_entries(uint64_t dram_config[8]) { char nodename[32] = { 0 }; @@ -676,6 +746,9 @@ lcm_state: panic(); } + /* Add platform compatible string */ + bl2_populate_compatible_string(fdt); + /* Print DRAM layout */ bl2_advertise_dram_size(product); |