[PATCH v3 11/20] rockchip: rk3588: fix non-working SD controller if booting from other media
Quentin Schulz
quentin.schulz at theobroma-systems.com
Fri Mar 8 18:55:13 CET 2024
Hi Kever,
On 3/8/24 11:05, Kever Yang wrote:
> Hi Quentin,
>
> On 2024/2/21 18:37, Quentin Schulz wrote:
>> From: Quentin Schulz<quentin.schulz at theobroma-systems.com>
>>
>> Rockchip SoCs have some jtag/sdmmc autoswitching that simply doesn't
>> work really well.[00] The Linux kernel disables it for all SoCs[01], so
>> U-Boot needs to do the same in order to fix issues related to SD card on
>> RK3588. This autoswitching is enabled (by default) via the force_jtag
>> bitfield in SYS_GRF_SOC_CON6 in the TRM part1.
>>
>> The conditions to enter forced JTAG mode are the following:
>> - force_jtag is 1
>> - GPIO4_D2 is muxed for SDMMC function
>> - GPIO3_D3 is muxed for SDMMC function
>> - SDMMC_DET is inactive
>
> I have explain the reason and send fix for other boards in kernel for
> why the force jtag
>
> function not working correctly, see patch [1] and I copy the commit
> message here:
>
> RK3588 has force_jtage feature which is enable JTAG function via sdmmc
> pins automatically when there is no SD card insert, this feature will
> need the GPIO0A4 works in sdmmc_det function like other mmc signal instead
> of GPIO function, or else the force_jtag can not auto be disabled when
> SD card insert.
>
> For the rk3588 boards available on mainline kernel, 10 boards enable SD
> card function
> and 9 of then use GPIO0A4 as sdmmc_det, they should all able to use the
> force_jtag after
> my patch apply.
> The jaguar-rk3588 still have the issue because there is no sdmmc_det used.
> The condition of force JTAG mode work correctly is :
> - force_jtag in grf is 1;
> - all the SDMMC signal including SDMMC_DET set as SDMMC function in GRF
> IOC/IOMUX reg;
>
> So please update the commit message and it would be better to move this
> setting in jaguar-rk3588 board
Thanks, it's a tiny bit clearer to me now. We never exit this JTAG mode
on Jaguar because we have GPIO0A4 floating (with internal pull-down). On
Tiger (patches coming this month I hope), it's hardwired to ground but
we use a different GPIO as card detect, so we'll have a similar issue.
In any case, thanks for the explanation.
Though, I do not understand why you absolutely want this force_jtag to
be always enabled. It is a debug feature.
Even more so, this is a security issue. I don't think anyone wants to
have the JTAG enabled if the user plays with the card detect pin or boot
without an SD card connected. I really insist this should be enabled on
the SoC level, the same way that the Linux kernel does it.
We could compromise on a Kconfig symbol to enable force_jtag for people
who want it but still default to disabled on the SoC level, but I'm not
really seeing a reason for it.
> so that other board can enable force_jtag with only modify kernel but
> not both kernel and U-Boot.
>
If you want JTAG support in U-Boot, you would patch U-Boot. If you want
JTAG support in the kernel, you would patch the kernel. If you want it
in both, you'd patch both. I'm not sure to understand what disabling
force_jtag in U-Boot has to do with force_jtag enabled from the Linux
kernel, what am I missing here?
Cheers,
Quentin
More information about the U-Boot
mailing list