[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d12350a6-bd8c-416d-8c57-2d96e47bacbd@freeshell.de>
Date: Thu, 24 Jul 2025 02:59:40 -0700
From: E Shattow <e@...eshell.de>
To: Conor Dooley <conor@...nel.org>, Emil Renner Berthing <kernel@...il.dk>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Paul Walmsley <paul.walmsley@...ive.com>, Palmer Dabbelt
<palmer@...belt.com>, Albert Ou <aou@...s.berkeley.edu>,
Alexandre Ghiti <alex@...ti.fr>
Cc: devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-riscv@...ts.infradead.org, E Shattow <e@...eshell.de>
Subject: Re: [PATCH v1 2/4] riscv: dts: starfive: add Milk-V Mars CM
system-on-module
Oops... wrong S-o-by email address on this patch.
On 7/24/25 02:48, E Shattow wrote:
> Milk-V Mars CM is a System-on-Module based on the StarFive VisionFive 2
> board and Radxa CM3 System-on-Module compatible with the Raspberry Pi
> CM4IO Classic IO Board.
>
> Mars CM SoM features:
>
> - StarFive JH7110 System on Chip with RV64GC up to 1.5GHz
> - AXP15060 Power Management Unit
> - LPDDR4 2GB / 4GB / 8GB DRAM memory
> - BL24C04F 4K bits (512 x 8) EEPROM
> - GigaDevice 25LQ128EWIG QSPI NOR Flash 16M or SoC ROM UART loader for
> boot (selectable by GPIO)
> - eMMC5.0 8GB / 16GB / 32GB flash storage onboard
> - AP6256 via SDIO 2.0 onboard wireless connectivity WiFi 5 + Bluetooth
> 5.2 (optional, present in models with WiFi feature)
> - 1x Motorcomm YT8531C Gigabit Ethernet PHY
> - IMG BXE-4-32 Integrated GPU with 3D Acceleration:
> - H.264 & H.265 4K@...ps Decoding
> - H.265 1080p@...ps Encoding
> - JPEG encoder / decoder
>
> Additional features available via 2x 100-pin connectors for CM4IO Board:
> - 1x HDMI 2.0
> - 1x MIPI DSI (4-lanes)
> - 1x 2CH Audio out (via GPIO)
> - 1x MIPI CSI (2x2-lanes or 1x4-lanes)
> - 1x USB 2.0
> - 1x PCIe 1-lane Host, Gen 2 (5Gbps)
> - Up to 28x GPIO, supporting 3.3V
> - UART x6
> - PWM x8
> - I2C x7
> - SPI
> - I2S
>
> Link to Milk-V Mars CM schematics: https://github.com/milkv-mars/mars-files/tree/main/Mars-CM_Hardware_Schematices
> Link to StarFive JH7110 Technical Reference Manual: https://doc-en.rvspace.org/JH7110/TRM/index.html
> Link to Raspberry Pi CM4IO datasheet: https://datasheets.raspberrypi.com/cm4io/cm4io-datasheet.pdf
>
> Add the devicetree file to make use of StarFive JH7110 common supported
> features PMIC, EEPROM, UART, I2C, GPIO, eMMC, PCIe, PWM DAC, QSPI Flash,
> PWM, and Ethernet. Also configure the common SD Card interface mmc1 for
> onboard SDIO BT+WiFi.
>
> Signed-off-by: E Shattow <e@...enode.de>
Should be @freeshell.de
> ---
> arch/riscv/boot/dts/starfive/Makefile | 1 +
> .../dts/starfive/jh7110-milkv-marscm-emmc.dts | 163 ++++++++++++++++++
> 2 files changed, 164 insertions(+)
> create mode 100644 arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-emmc.dts
>
> diff --git a/arch/riscv/boot/dts/starfive/Makefile b/arch/riscv/boot/dts/starfive/Makefile
> index b3bb12f78e7d..79742617ddab 100644
> --- a/arch/riscv/boot/dts/starfive/Makefile
> +++ b/arch/riscv/boot/dts/starfive/Makefile
> @@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-starfive-visionfive-v1.dtb
>
> dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-deepcomputing-fml13v01.dtb
> dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-mars.dtb
> +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-marscm-emmc.dtb
> dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-pine64-star64.dtb
> dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb
> dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb
> diff --git a/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-emmc.dts b/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-emmc.dts
> new file mode 100644
> index 000000000000..59766cdb912b
> --- /dev/null
> +++ b/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-emmc.dts
> @@ -0,0 +1,163 @@
> +// SPDX-License-Identifier: GPL-2.0 OR MIT
> +/*
> + * Copyright (C) 2025 E Shattow <e@...eshell.de>
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/pinctrl/starfive,jh7110-pinctrl.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include "jh7110-common.dtsi"
> +
> +/ {
> + model = "Milk-V Mars CM";
> + compatible = "milkv,marscm-emmc", "starfive,jh7110";
> +
> + aliases {
> + i2c1 = &i2c1;
> + i2c3 = &i2c3;
> + i2c4 = &i2c4;
> + serial3 = &uart3;
> + };
> +
> + sdio_pwrseq: sdio-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&sysgpio 33 GPIO_ACTIVE_LOW>;
> + };
> +};
> +
> +&gmac0 {
> + assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>;
> + assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;
> + starfive,tx-use-rgmii-clk;
> + status = "okay";
> +};
> +
> +&i2c0 {
> + status = "okay";
> +};
> +
> +&i2c2 {
> + status = "disabled";
> +};
> +
> +&i2c6 {
> + status = "disabled";
> +};
> +
> +&mmc1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + mmc-pwrseq = <&sdio_pwrseq>;
> + non-removable;
> + status = "okay";
> +
> + ap6256: wifi@1 {
> + compatible = "brcm,bcm43456-fmac", "brcm,bcm4329-fmac";
> + reg = <1>;
> + interrupt-parent = <&sysgpio>;
> + interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "host-wake";
> + pinctrl-0 = <&wifi_host_wake_irq>;
> + pinctrl-names = "default";
> + };
> +};
> +
> +&pcie0 {
> + status = "okay";
> +};
> +
> +&phy0 {
> + rx-internal-delay-ps = <1500>;
> + tx-internal-delay-ps = <1500>;
> + motorcomm,rx-clk-drv-microamp = <3970>;
> + motorcomm,rx-data-drv-microamp = <2910>;
> + motorcomm,tx-clk-10-inverted;
> + motorcomm,tx-clk-100-inverted;
> + motorcomm,tx-clk-1000-inverted;
> + motorcomm,tx-clk-adj-enabled;
> +};
> +
> +&pwm {
> + status = "okay";
> +};
> +
> +&spi0 {
> + status = "okay";
> +};
> +
> +&sysgpio {
> + uart1_pins: uart1-0 {
> + tx-pins {
> + pinmux = <GPIOMUX(16, GPOUT_SYS_UART1_TX,
> + GPOEN_ENABLE,
> + GPI_NONE)>;
> + bias-disable;
> + drive-strength = <12>;
> + input-disable;
> + input-schmitt-disable;
> + };
> +
> + rx-pins {
> + pinmux = <GPIOMUX(17, GPOUT_LOW,
> + GPOEN_DISABLE,
> + GPI_SYS_UART1_RX)>;
> + bias-pull-up;
> + input-enable;
> + input-schmitt-enable;
> + };
> +
> + cts-pins {
> + pinmux = <GPIOMUX(3, GPOUT_LOW,
> + GPOEN_DISABLE,
> + GPI_SYS_UART1_CTS)>;
> + bias-disable;
> + input-enable;
> + input-schmitt-enable;
> + };
> +
> + rts-pins {
> + pinmux = <GPIOMUX(2, GPOUT_SYS_UART1_RTS,
> + GPOEN_ENABLE,
> + GPI_NONE)>;
> + bias-disable;
> + input-disable;
> + input-schmitt-disable;
> + };
> + };
> +
> + usb0_pins: usb0-0 {
> + vbus-pins {
> + pinmux = <GPIOMUX(25, GPOUT_SYS_USB_DRIVE_VBUS,
> + GPOEN_ENABLE,
> + GPI_NONE)>;
> + bias-disable;
> + input-disable;
> + input-schmitt-disable;
> + slew-rate = <0>;
> + };
> + };
> +
> + wifi_host_wake_irq: wifi-host-wake-irq {
> + wake-pins {
> + pinmux = <GPIOMUX(34, GPOUT_LOW,
> + GPOEN_DISABLE,
> + GPI_NONE)>;
> + input-enable;
> + };
> + };
> +};
> +
> +&uart1 {
> + uart-has-rtscts;
> + pinctrl-0 = <&uart1_pins>;
> + pinctrl-names = "default";
> + status = "okay";
> +};
> +
> +&usb0 {
> + dr_mode = "host";
> + pinctrl-names = "default";
> + pinctrl-0 = <&usb0_pins>;
> + status = "okay";
> +};
-E
Powered by blists - more mailing lists