[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <3225628d-2546-44c1-bc9d-1607aa3d6c90@freeshell.de>
Date: Thu, 5 Feb 2026 02:41:48 -0800
From: E Shattow <e@...eshell.de>
To: Heinrich Schuchardt <heinrich.schuchardt@...onical.com>,
Emil Renner Berthing <kernel@...il.dk>, Conor Dooley <conor@...nel.org>
Cc: Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Paul Walmsley <pjw@...nel.org>, Palmer Dabbelt <palmer@...belt.com>,
Albert Ou <aou@...s.berkeley.edu>, Alexandre Ghiti <alex@...ti.fr>,
linux-riscv@...ts.infradead.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/1] riscv: dts: starfive: Milk-V Mars CM Lite broken-cd
On 2/4/26 23:50, Heinrich Schuchardt wrote:
> On 2/5/26 00:16, E Shattow wrote:
>> Hi,
>>
>> I think the correct fix will be device tree overlays per-carrier board
>> and not this one-size-fits-all workaround with the System-on-Module.
>> Review below:
>>
>> On 2/4/26 08:38, Heinrich Schuchardt wrote:
>>> On 2/4/26 11:16, Heinrich Schuchardt wrote:
>>>> The card detect GPIO depends on support by the base board.
>>>>
>>>> Detecting an SD-card did not work for me with a Milk-V Mars CM Lite
>>>> mounted on an Waveshare CM4-IO-BASE-A board.
>>>
>>> The schematic of the Waveshare CM4-IO-BASE-A board is available at
>>> https://files.waveshare.com/upload/a/aa/CM4-IO-BASE-A_V4_SchDoc.pdf
>>> showing pin 76 is not connected.
>>>
>>> In https://forums.raspberrypi.com/viewtopic.php?t=291041 the Raspberry
>>> Foundation explicitly wrote that pin 76 should not be connected when
>>> using a compute module socket.
>>>
>>> E. Shattow pointed me to a board
>>> https://github.com/NabuCasa/yellow/releases/download/v1.3c/
>>> Yellow_v1.3c_Schematic_git.8957b440adda.pdf
>>> that actually disregarded this advice and uses pin 76 actually as cd-
>>> gpio. This usage of GPIO 41 is a property of the specific base board and
>>> not of the Milk-V Mars CM and should be described in a device-tree
>>> overlay if needed.
>>>
>>> Best regards
>>>
>>> Heinrich
>>>
>>>>
>>>> According to [1] SD_SDIO0_CD_GPIO41 is connected to pin 76 reserved.
>>>> The Raspberry Pi Compute Module 4 IO Board documentation marks that
>>>> pin as
>>>> reserved. The Raspberry Pi Compute Module 5 IO Board documentation
>>>> marks the pin as VBAT.
>>>>
>>>> Remove the cd-gpios definition and add broken-cd.
>>>>
>>>> [1] https://github.com/milkv-mars/mars-files/blob/main/Mars-
>>>> CM_Hardware_Schematices/Milk-V_Mars-CM_SCH_V1.0-2023-0905_Lite.pdf
>>>>
>>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@...onical.com>
>>>> ---
>>>> arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-lite.dts | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-lite.dts
>>>> b/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-lite.dts
>>>> index 63aa94d65ab55..566b0bdc2800d 100644
>>>> --- a/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-lite.dts
>>>> +++ b/arch/riscv/boot/dts/starfive/jh7110-milkv-marscm-lite.dts
>>>> @@ -13,7 +13,7 @@ / {
>>>> &mmc0 {
>>>> bus-width = <4>;
>>
>> + /* Schematic signal SD_SDIO0_CD_GPIO41 to CM4 connector pin 76*/
>> + /* Raspberry Pi CM4 specification pin 76 reserved do not connect */
>>
>>>> - cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>;
>>>> + broken-cd;
>>
>> All schematic documents for Mars CM Lite list this signal name as
>> `SD_SDIO0_CD_GPIO41`.
>>
>>>> disable-wp;
>>>> };
>>>>
>>
>> The carrier board I have a schematic document for - Home Assistant
>> Yellow PoE rev 1.3 - lists this as SD_DETECT, apparently ignoring the
>> Raspberry Pi Foundation document about CM4 Compute IO specification that
>> explicitly says do not connect this pin to anything.
>>
>> The carrier board I do not have a schematic document for - DFRobot
>> Compute Module 4 IoT Router Board Mini - only has SD Card and is
>> operational as-is.
>>
>> The compatibility issue for carrier boards that more strictly follow the
>> Raspberry Pi CM4 IO specification may be better handled by device tree
>> overlays. Though this is not convenient for users and requires more
>> developer effort, overlays would be best to adopt dtbo per-carrier board
>> to describe hardware accurately.
>>
>> What is needed to introduce overlays?
>>
>> - E
>
> Device-tree overlays would have to be applied by the firmware, typically
> U-Boot.
>
> The firmware has no way to determine if it is running on an IO-board
> with or without a card detect switch. So the selection of an overlay
> will be a manual process. In many cases users will not know about the
> issue of card detect switches and if their board has one or not.
>
> The default value without any overlay should be one that allows to use
> the SD-card on all IO-boards, i.e. 'broken-cd'.
Where should such overlays be developed?
Does the overlay then get committed to Linux upstream for downstream use
by U-Boot via devicetree-rebasing tree? Why is this change necessary, here ?
>
> This is also the value used be the board support package
> https://github.com/milkv-mars/mars-buildroot-sdk/
> blob/1fd6bac9f2efde47fbb8afd28d2903c49f893e3f/linux/arch/riscv/boot/dts/
> starfive/jh7110-milkv-mars-cm-sdcard.dts#L265
>
> Best regards
>
> Heinrich
I would like to see more of the Mars CM and Mars CM Lite devicetree
moved down to overlays if not described by the common JH7110 stanzas or
schematic documentation. In my view, ideally, such extras are not
functional for users without an overlay applied.
I dislike the idea of trying to chase every possible unknown carrier
board for broad compatibility by changing the definition of the
System-on-Module. Compatibility with Raspberry Pi carrier boards sounds
to me like the purpose of device tree overlay(s).
No objection to, for example, a more generic super-compatible overlay
that will be the default loaded by firmware, and trim down the dts here
to remove any carrier board peripheral assumptions.
-E
Powered by blists - more mailing lists