[PATCH] board: starfive: support Pine64 Star64 board
E Shattow
lucent at gmail.com
Thu May 9 01:11:20 CEST 2024
On Pine64 Star64 8GB (May 2023 order date: "Star64 v1.1" silkscreen)
by contributor Tenkawa (contact info withheld so posting on their
behalf and listing myself in the tag). Other than the inconclusive
networking result (for discussion via code review) it seems to have
basic functionality.
# mac
Vendor : PINE64
Product full SN: STAR64V1-2310-D008E000-00000005
data version: 0x2
PCB revision: 0xc1
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:00:75:61
Ethernet MAC1 address: 6c:cf:39:00:75:62
# mmc info
Device: mmc at 16010000
Manufacturer ID: 15
OEM: 0
Name: BJTD4R
Bus Speed: 52000000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 29.1 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 29.1 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected
# mmc dev 1 ; mmc info
switch to partitions #0, OK
mmc1 is current device
Device: mmc at 16020000
Manufacturer ID: 1b
OEM: 534d
Name: GD2S5
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 119.4 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
# # Silkscreen: Upper=A Port
# env erase;env load;env set bootcmd 'dhcp;net list'; env save; reset
ethernet at 16030000 Waiting for PHY auto negotiation to
complete......... TIMEOUT !
phy_startup() failed: -110
FAILED: -110
ethernet at 16040000 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address...
...
eth0 : ethernet at 16030000 6c:cf:39:00:75:61 active
eth1 : ethernet at 16040000 6c:cf:39:00:75:62
# # Silkscreen: Lower=B Port
# env erase;env load;env set bootcmd 'dhcp;net list'; env save; reset
ethernet at 16030000 Waiting for PHY auto negotiation to
complete......... TIMEOUT !
phy_startup() failed: -110
FAILED: -110
ethernet at 16040000 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address...
...
eth0 : ethernet at 16030000 6c:cf:39:00:75:61
eth1 : ethernet at 16040000 6c:cf:39:00:75:62 active
Some dropped network packets were observed with the test setup:
Approx 6% packet loss on Upper=A Port
Approx 71% packet loss on Lower=B Port.
The test network was not known to be reliable and might have
introduced other sources of error. No comparison was available to any
other firmware releases.
Tested-by: E Shattow <lucent at gmail.com>
On Mon, May 6, 2024 at 8:30 AM H Bell <dmoo_dv at protonmail.com> wrote:
>
> Similar to the Milk-V Mars, The Star64 board contains few differences to the
> VisionFive 2 boards, so can be part of the same U-boot build.
>
> Signed-off-by: Henry Bell <dmoo_dv at protonmail.com>
> Cc: ycliang at andestech.com
> Cc: heinrich.schuchardt at canonical.com
> ---
> board/starfive/visionfive2/spl.c | 52 +++++++++++++++++++
> .../visionfive2/starfive_visionfive2.c | 4 ++
> 2 files changed, 56 insertions(+)
>
> diff --git a/board/starfive/visionfive2/spl.c b/board/starfive/visionfive2/spl.c
> index ca61b5be22..b8d29a02af 100644
> --- a/board/starfive/visionfive2/spl.c
> +++ b/board/starfive/visionfive2/spl.c
> @@ -226,6 +226,56 @@ void spl_fdt_fixup_version_b(void *fdt)
> }
> }
>
> +void spl_fdt_fixup_star64(void *fdt)
> +{
> + static const char compat[] = "starfive,star64\0starfive,jh7110";
> + u32 phandle;
> + u8 i;
> + int offset;
> + int ret;
> +
> + fdt_setprop(fdt, fdt_path_offset(fdt, "/"), "compatible", compat, sizeof(compat));
> + fdt_setprop_string(fdt, fdt_path_offset(fdt, "/"), "model",
> + "Pine64 Star64");
> +
> + /* gmac0 */
> + offset = fdt_path_offset(fdt, "/soc/clock-controller at 17000000");
> + phandle = fdt_get_phandle(fdt, offset);
> + offset = fdt_path_offset(fdt, "/soc/ethernet at 16030000");
> +
> + fdt_setprop_u32(fdt, offset, "assigned-clocks", phandle);
> + fdt_appendprop_u32(fdt, offset, "assigned-clocks", JH7110_AONCLK_GMAC0_TX);
> + fdt_setprop_u32(fdt, offset, "assigned-clock-parents", phandle);
> + fdt_appendprop_u32(fdt, offset, "assigned-clock-parents",
> + JH7110_AONCLK_GMAC0_RMII_RTX);
> +
> + /* gmac1 */
> + offset = fdt_path_offset(fdt, "/soc/clock-controller at 13020000");
> + phandle = fdt_get_phandle(fdt, offset);
> + offset = fdt_path_offset(fdt, "/soc/ethernet at 16040000");
> +
> + fdt_setprop_u32(fdt, offset, "assigned-clocks", phandle);
> + fdt_appendprop_u32(fdt, offset, "assigned-clocks", JH7110_SYSCLK_GMAC1_TX);
> + fdt_setprop_u32(fdt, offset, "assigned-clock-parents", phandle);
> + fdt_appendprop_u32(fdt, offset, "assigned-clock-parents",
> + JH7110_SYSCLK_GMAC1_RMII_RTX);
> +
> + for (i = 0; i < ARRAY_SIZE(starfive_verb); i++) {
> + offset = fdt_path_offset(fdt, starfive_verb[i].path);
> +
> + if (starfive_verb[i].value)
> + ret = fdt_setprop_u32(fdt, offset, starfive_verb[i].name,
> + dectoul(starfive_verb[i].value, NULL));
> + else
> + ret = fdt_setprop_empty(fdt, offset, starfive_verb[i].name);
> +
> + if (ret) {
> + pr_err("%s set prop %s fail.\n", __func__, starfive_verb[i].name);
> + break;
> + }
> + }
> +}
> +
> void spl_perform_fixups(struct spl_image_info *spl_image)
> {
> u8 version;
> @@ -252,6 +302,8 @@ void spl_perform_fixups(struct spl_image_info *spl_image)
> spl_fdt_fixup_version_b(spl_image->fdt_addr);
> break;
> };
> + } else if (!strncmp(product_id, "STAR64", 6)) {
> + spl_fdt_fixup_star64(spl_image->fdt_addr);
> } else {
> pr_err("Unknown product %s\n", product_id);
> };
> diff --git a/board/starfive/visionfive2/starfive_visionfive2.c b/board/starfive/visionfive2/starfive_visionfive2.c
> index a86bca533b..93bc8b5c55 100644
> --- a/board/starfive/visionfive2/starfive_visionfive2.c
> +++ b/board/starfive/visionfive2/starfive_visionfive2.c
> @@ -23,6 +23,8 @@ DECLARE_GLOBAL_DATA_PTR;
> "starfive/jh7110-starfive-visionfive-2-v1.2a.dtb"
> #define FDTFILE_VISIONFIVE2_1_3B \
> "starfive/jh7110-starfive-visionfive-2-v1.3b.dtb"
> +#define FDTFILE_PINE64_STAR64 \
> + "starfive/pine64-star64.dtb"
>
> /* enable U74-mc hart1~hart4 prefetcher */
> static void enable_prefetcher(void)
> @@ -78,6 +80,8 @@ static void set_fdtfile(void)
> fdtfile = FDTFILE_VISIONFIVE2_1_3B;
> break;
> }
> + } else if (!strncmp(product_id, "STAR64", 6)) {
> + fdtfile = FDTFILE_PINE64_STAR64;
> } else {
> log_err("Unknown product\n");
> return;
> --
> 2.44.0
>
More information about the U-Boot
mailing list