[PATCH 1/2] mmc: Imply HS200 cap with mmc-hs400 prop to match linux

Dragan Simic dsimic at manjaro.org
Tue Apr 9 21:30:36 CEST 2024


Hello Jonas,

On 2024-04-09 18:30, Jonas Karlman wrote:
> On 2024-04-09 18:02, Quentin Schulz wrote:
>> On 4/9/24 17:58, Jonas Karlman wrote:
>>> On 2024-04-09 17:27, Quentin Schulz wrote:
>>>> On 4/8/24 23:06, Jonas Karlman wrote:
>>>>> eMMC nodes in linux device tree files typically only contain a 
>>>>> mmc-hs400
>>>>> prop to signal support for both HS400 and HS200. However, U-Boot 
>>>>> require
>>>>> an explicit mmc-hs200 prop to signal support for the HS200 mode.
>>>>>   > Fix this by follow linux and imply HS200 cap when HS400 cap is 
>>>>> signaled
>>>>> using a mmc-hs400 prop.
>>>> 
>>>> Technically speaking, the DT binding should be the one and only 
>>>> source
>>>> of truth and should be implementation-agnostic.
>>>> 
>>>> There it says:
>>>> """
>>>>     mmc-hs400-1_2v:
>>>>       $ref: /schemas/types.yaml#/definitions/flag
>>>>       description:
>>>>         eMMC HS400 mode (1.2V I/O) is supported.
>>>> 
>>>>     mmc-hs400-1_8v:
>>>>       $ref: /schemas/types.yaml#/definitions/flag
>>>>       description:
>>>>         eMMC HS400 mode (1.8V I/O) is supported.
>>>> """
>>>> 
>>>> So I'd say, the DTs should be fixed to add mmc-hs200 as well 
>>>> wherever it
>>>> makes sense.
>>>> 
>>>> The point of the DT/DT binding is to be system-agnostic and
>>>> representative of the **HW** implementation. At least that's what 
>>>> the DT
>>>> people want it to be.
>>>> 
>>>> If the eMMC standard doesn't allow to have HS400 without HS200, then 
>>>> I
>>>> think this change is acceptable as is, because it is the reality of 
>>>> the
>>>> HW standard. Couldn't find this implied in the standard though (but 
>>>> I
>>>> just skimmed through).
>>>> 
>>>> It's also quite surprising, as it's not because the eMMC works with
>>>> HS400 that it necessarily does with HS200 or that it's desired (EMI,
>>>> signal integrity/stability, etc...)?
>>>> 
>>>> Now, it wouldn't be the first time U-Boot follows whatever is done 
>>>> in
>>>> Linux, so... up to you/the maintainers :)
>>> 
>>> Agree that implying HS200 does not fully make sense, however it was 
>>> part
>>> of the original Linux binding when HS400 was added in v3.16-rc1 [1] 
>>> so I
>>> think that this is the expected behavior and changing it may be an 
>>> ABI
>>> breakage.
>> 
>> I'm not advocating undoing the kernel "hack", but rather make it so 
>> that
>> we add hs200 to DTs where it's actually supported instead of doing the
>> same hack the kernel does. In that case, we wouldn't need the hack 
>> anymore.
> 
> I will add a patch that adds the missing mmc-hs200 props to affected
> rk3588 boards, nanopc-t4 and quartzpro64 in v2 of the "rockchip: 
> rk35xx:
> Miscellaneous fixes and updates" series.
> 
> Also turns out the issue with those boards was because of my other 
> "mmc:
> rockchip_sdhci: Revert 4 blocks PIO mode read limit for RK35xx" patch,
> so will need to rework that revert some more before posting a v2 of 
> that
> patch.
> 
> For this patch it is fully up to the maintainers if U-Boot wants to
> mimic Linux kernel or not.

I think that the logic used in the Linux kernel should be followed,
because one of the goals should be to add as few "touches" to the
upstream DT files in U-Boot as possible.

If the kernel binding patch that I mentioned in my earlier email [1]
becomes accepted, that should be another reason to do so.

[1] 
https://lore.kernel.org/u-boot/9b62bbedf2c6d52b76a8ce1ce57dd35d@manjaro.org/


More information about the U-Boot mailing list