rockchip: rk3576: Disable force_jtag by default
Rockchip SoCs can automatically switch between jtag and sdmmc based on
the following rules:
- all the SDMMC pins including SDMMC_DET set as SDMMC function in GRF,
- force_jtag bit in GRF is 1,
- SDMMC_DET is low (no card detected),
Note that the BootROM may mux all SDMMC pins in their SDMMC function or
not, depending on the boot medium that were tried.
Because SDMMC_DET pin is not guaranteed to be used as an SD card card
detect pin, it could be low at boot or even switch at runtime, which
would enable the jtag function and render the SD card unusable.
Or boards using cd-gpios may switch the SDMMC_DET pin to GPIO function,
which would enable the jtag function and render the SD card unusable.
With commit d0a838bdc6 ("Subtree merge tag 'v7.1-dts' of dts repo [1]
into dts/upstream") there are now RK3576 boards that have changed to use
cd-gpios for the SDMMC_DET pin, e.g. NanoPi R76S, that may have issues
detecting SD card unless force_jtag is disabled.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Link: https://patch.msgid.link/20260803184314.2240153-3-jonas@kwiboo.se
Signed-off-by: Quentin Schulz <u-boot@0leil.net>
This commit is contained in:
committed by
Quentin Schulz
parent
0c68b88ce5
commit
c8cac405f2
@@ -9,7 +9,8 @@
|
||||
#include <misc.h>
|
||||
#include <asm/armv8/mmu.h>
|
||||
#include <asm/arch-rockchip/bootrom.h>
|
||||
#include <asm/arch-rockchip/hardware.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/hw_bitfield.h>
|
||||
|
||||
#define SYS_GRF_BASE 0x2600A000
|
||||
#define SYS_GRF_SOC_CON2 0x0008
|
||||
@@ -21,6 +22,10 @@
|
||||
#define GPIO0B_PULL_L 0x0024
|
||||
#define GPIO0B_IE_L 0x002C
|
||||
|
||||
#define TOP_IOC_BASE 0x26044000
|
||||
#define IOC_MISC_CON 0x00F0
|
||||
#define TOP_IOC_FORCE_JTAG BIT(1)
|
||||
|
||||
#define SYS_SGRF_BASE 0x26004000
|
||||
#define SYS_SGRF_SOC_CON14 0x0058
|
||||
#define SYS_SGRF_SOC_CON15 0x005C
|
||||
@@ -190,6 +195,11 @@ int arch_cpu_init(void)
|
||||
*/
|
||||
writel(0xffffff00, SYS_SGRF_BASE + SYS_SGRF_SOC_CON20);
|
||||
|
||||
/* Disable JTAG exposed on SDMMC pins (GPIO2A2 and GPIO2A3) */
|
||||
if (IS_ENABLED(CONFIG_ROCKCHIP_DISABLE_FORCE_JTAG))
|
||||
writel(FIELD_PREP_WM16(TOP_IOC_FORCE_JTAG, 0),
|
||||
TOP_IOC_BASE + IOC_MISC_CON);
|
||||
|
||||
/* Disable USB3OTG0 U3 port, later enabled by USBDP PHY driver */
|
||||
writel(0xffff0188, USB_GRF_BASE + USB3OTG0_CON1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user