[U-Boot] [PATCH v3 3/4] rockchip: Add basic support for phyCORE-RK3288 SoM based carrier board

Wadim Egorov w.egorov at phytec.de
Tue Jun 13 09:10:44 UTC 2017



Am 13.06.2017 um 01:51 schrieb Simon Glass:
> On 12 June 2017 at 03:59, Wadim Egorov <w.egorov at phytec.de> wrote:
>> The phyCORE-RK3288 is a SoM (System on Module) containing a RK3288 SoC.
>> The module can be connected to different carrier boards.
>> It can be also equipped with different RAM, SPI flash and eMMC variants.
>> The Rapid Development Kit option is using the following setup:
>>
>>   - 1 GB DDR3 RAM (2 Banks)
>>   - 1x 4 KB EEPROM
>>   - DP83867 Gigabit Ethernet PHY
>>   - 16 MB SPI Flash
>>   - 4 GB eMMC Flash
>>
>> Add basic support for the PCM-947 carrier board, a RK3288 based development
>> board made by PHYTEC. This board works in a combination with
>> the phyCORE-RK3288 System on Module.
>>
>> Signed-off-by: Wadim Egorov <w.egorov at phytec.de>
>> ---
>> Changes in v3:
>> - Added u-boot,dm-pre-reloc to regulators subnode
>>   (PMIC failed to bind because of the missing regulators node)
>> - Removed the hacky PMIC setup from phycore_init
>> - Use CONFIG_TARGET_PHYCORE_RK3288 to cover board-specific stuff
>>
>>   Things get ugly when I use of_machine_is_compatible().
>>   Boards whith CONFIG_SPL_OF_PLATDATA disabled would compile in
>>   of_machine_is_compatible() which checks for my board.
>>   phycore_init() calls rk818_spl_configure_*() which depends on
>>   CONFIG_SPL_POWER_SUPPORT. So this will cause undefined reference linker
>>   warnings for every other rockchip board.
>>   That's the reason why I moved back to CONFIG_TARGET_PHYCORE_RK3288.
>>
>> ---
>>  arch/arm/dts/Makefile                        |   1 +
>>  arch/arm/dts/rk3288-phycore-rdk.dts          | 294 ++++++++++++++++
>>  arch/arm/dts/rk3288-phycore-som.dtsi         | 506 +++++++++++++++++++++++++++
>>  arch/arm/mach-rockchip/rk3288-board-spl.c    |  35 ++
>>  arch/arm/mach-rockchip/rk3288/Kconfig        |  10 +
>>  board/phytec/phycore_rk3288/Kconfig          |  15 +
>>  board/phytec/phycore_rk3288/MAINTAINERS      |   6 +
>>  board/phytec/phycore_rk3288/Makefile         |   8 +
>>  board/phytec/phycore_rk3288/phycore-rk3288.c |   8 +
>>  configs/phycore-rk3288_defconfig             |  70 ++++
>>  include/configs/phycore_rk3288.h             |  23 ++
>>  11 files changed, 976 insertions(+)
>>  create mode 100644 arch/arm/dts/rk3288-phycore-rdk.dts
>>  create mode 100644 arch/arm/dts/rk3288-phycore-som.dtsi
>>  create mode 100644 board/phytec/phycore_rk3288/Kconfig
>>  create mode 100644 board/phytec/phycore_rk3288/MAINTAINERS
>>  create mode 100644 board/phytec/phycore_rk3288/Makefile
>>  create mode 100644 board/phytec/phycore_rk3288/phycore-rk3288.c
>>  create mode 100644 configs/phycore-rk3288_defconfig
>>  create mode 100644 include/configs/phycore_rk3288.h
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> (assuming we need to set up the battery / charger in SPL)
>
> But can you please check the compatible string to decide whether you
> need to do the phytec stuff, instead of an #ifdef on the target? I
> suppose if it increase code size it is OK to have both, but the #ifdef
> should be a size optimisation, not the main method of selecting the
> code Is there a way to describe what is needed in the DT?

I can do something like that if it is okay for you:

static int phycore_init(void)
{
        ...
#if defined (CONFIG_SPL_POWER_SUPPORT)
        ret = rk818_spl_configure_usb_input_current(pmic, 2000);
#endif
        ...
}

/* in board init */
#if !defined(CONFIG_SPL_OF_PLATDATA)
        if (of_machine_is_compatible("phytec,rk3288-phycore-som"))
                ret = phycore_init();
#endif


Otherwise, I will just add of_machine_is_compatible() covered by
CONFIG_TARGET_PHYCORE_RK3288.

Sorry, what do you mean with your last question?

Regards,
Wadim




More information about the U-Boot mailing list