On 6/19/20 3:58 PM, Adam Ford wrote:
[...]
> diff --git a/board/beacon/beacon-rzg2m/beacon-rzg2m.c 
> b/board/beacon/beacon-rzg2m/beacon-rzg2m.c
> new file mode 100644
> index 0000000000..88702958e0
> --- /dev/null
> +++ b/board/beacon/beacon-rzg2m/beacon-rzg2m.c
> @@ -0,0 +1,112 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2020 Compass Electronics Group, LLC
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <asm/arch/rcar-mstp.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +void s_init(void)
> +{
> +}
> +
> +#define DVFS_MSTP926         BIT(26)
> +#define GPIO2_MSTP910                BIT(10)
> +#define GPIO3_MSTP909                BIT(9)
> +#define GPIO5_MSTP907                BIT(7)
> +#define HSUSB_MSTP704                BIT(4)  /* HSUSB */
> +
> +int board_early_init_f(void)
> +{
> +#if defined(CONFIG_SYS_I2C) && defined(CONFIG_SYS_I2C_SH)
> +     /* DVFS for reset */
> +     mstp_clrbits_le32(SMSTPCR9, SMSTPCR9, DVFS_MSTP926);
> +#endif
> +     return 0;
> +}
> +
> +/* HSUSB block registers */
> +#define HSUSB_REG_LPSTS                      0xE6590102
> +#define HSUSB_REG_LPSTS_SUSPM_NORMAL BIT(14)
> +#define HSUSB_REG_UGCTRL2            0xE6590184
> +#define HSUSB_REG_UGCTRL2_USB0SEL    0x30
> +#define HSUSB_REG_UGCTRL2_USB0SEL_EHCI       0x10
> +
> +int board_init(void)
> +{
> +     /* address of boot parameters */
> +     gd->bd->bi_boot_params = CONFIG_SYS_TEXT_BASE + 0x50000;
> +
> +     /* USB1 pull-up */
> +     setbits_le32(PFC_PUEN6, PUEN_USB1_OVC | PUEN_USB1_PWEN);
> +
> +     /* Configure the HSUSB block */
> +     mstp_clrbits_le32(SMSTPCR7, SMSTPCR7, HSUSB_MSTP704);
> +     /* Choice USB0SEL */
> +     clrsetbits_le32(HSUSB_REG_UGCTRL2, HSUSB_REG_UGCTRL2_USB0SEL,
> +                     HSUSB_REG_UGCTRL2_USB0SEL_EHCI);
> +     /* low power status */
> +     setbits_le16(HSUSB_REG_LPSTS, HSUSB_REG_LPSTS_SUSPM_NORMAL);
> +
> +     return 0;
> +}

Is any of this really needed on your board ?

[...]

> +void board_add_ram_info(int use_default)
> +{
> +     int i;
> +
> +     printf("\n");
> +     for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> +             if (!gd->bd->bi_dram[i].size)
> +                     break;
> +             printf("Bank #%d: 0x%09llx - 0x%09llx, ", i,
> +                    (unsigned long long)(gd->bd->bi_dram[i].start),
> +                    (unsigned long long)(gd->bd->bi_dram[i].start
> +                    + gd->bd->bi_dram[i].size - 1));
> +             print_size(gd->bd->bi_dram[i].size, "\n");
> +     };
> +}

Is this needed ?

> +void board_cleanup_before_linux(void)
> +{
> +     /*
> +      * Turn off the clock that was turned on outside
> +      * the control of the driver
> +      */
> +     /* Configure the HSUSB block */
> +     mstp_setbits_le32(SMSTPCR7, SMSTPCR7, HSUSB_MSTP704);
> +
> +     /*
> +      * Because of the control order dependency,
> +      * turn off a specific clock at this timing
> +      */
> +     mstp_setbits_le32(SMSTPCR9, SMSTPCR9,
> +                       GPIO2_MSTP910 | GPIO3_MSTP909 | GPIO5_MSTP907);
> +}

The clock driver should do this clock turning off, should it not ?

> diff --git a/configs/r8a774a1_beacon-rzg2m_defconfig 
> b/configs/r8a774a1_beacon-rzg2m_defconfig
> new file mode 100644
> index 0000000000..b2a699f21a
> --- /dev/null
> +++ b/configs/r8a774a1_beacon-rzg2m_defconfig

[...]

> +CONFIG_BOOTARGS="root=/dev/nfs rw nfsroot=192.168.0.1:/export/rfs 
> ip=192.168.0.20"

Please don't hard-code user-specific configuration.

[...]

> diff --git a/include/configs/beacon-rzg2m.h b/include/configs/beacon-rzg2m.h
> new file mode 100644
> index 0000000000..d451bfc5ee
> --- /dev/null
> +++ b/include/configs/beacon-rzg2m.h

[...]

> +/* Generic Timer Definitions (use in assembler source) */
> +#define COUNTER_FREQUENCY    0xFE502A        /* 16.66MHz from CPclk */

Is this needed ?

> +/* Environment in eMMC, at the end of 2nd "boot sector" */
> +/* #define CONFIG_ENV_OFFSET         (-CONFIG_ENV_SIZE) */
> +#define CONFIG_SYS_MMC_ENV_DEV               1
> +#define CONFIG_SYS_MMC_ENV_PART              2
> +
> +#undef CONFIG_EXTRA_ENV_SETTINGS
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS            \
> +     "usb_pgood_delay=2000\0"        \
> +     "fdt_high=0xffffffffffffffff\0" \
> +     "initrd_high=0xffffffffffffffff\0" \
> +     "script=boot.scr\0" \
> +     "image=Image\0" \
> +     "console=ttySC0,115200\0" \
> +     "fdt_addr=0x48000000\0" \
> +     "loadaddr=0x48080000\0" \
> +     "fdt_high=0xffffffffffffffff\0"         \

Do not use fdt_high and initrd_high, it breaks booting if the DT is at
4-byte aligned offset instead of 8-byte aligned offset. The gen3 uses
bootm_size to automatically relocate the DT to the correct location.

Also, some of the env entries are defined multiple times.

[...]

> diff --git a/include/dt-bindings/clk/versaclock.h 
> b/include/dt-bindings/clk/versaclock.h

I think this should not be part of this patch.

Reply via email to