Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM623: Issues with SanDisk eMMC entering HS200 mode

Part Number: AM623
Other Parts Discussed in Thread: CSD

Hello!

We are in the process of bringing up our first design of an AM623-based board with eMMC as boot media.  Our issue is that the eMMC fails to enter HS200 mode in Linux.

For hardware, we have copied the same pinout and DTS as the AM62-SK dev kit, i.e. using MMC0 at 1.8V on the AM62.  The only difference is that we have changed the eMMC from Micron to SanDisk SDINBDG4-8G.

For software, we are using the 8.6 TI SDK.

In U-boot, the eMMC seems to enter HS200 mode successfully:

... and we can measure 200MHz on the CLK pin.

Once entering Linux however, the system attempts to configure the eMMC again in HS200 and fails.  By editing the code in mmc.c to fall through the HS200 change, the 

Specifically, it seems it is hanging on the command (error -110 timeout) to write the Bus Width (EXT_CSD register 183).  Both 8 -bit (mode 2) and 4-bit (mode 1) fail before giving up.  Also interesting, the same command after setting the mode to HS in a write to EXT_CSD register 185, the command succeeds without issue.

 

With this patch:

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 8f2465394..7e18ca6ce 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -405,11 +405,13 @@ void mmc_wait_for_req_done(struct mmc_host *host, struct mmc_request *mrq)

if (!cmd->error || !cmd->retries ||
mmc_card_removed(host->card))
+ {
+ printk(". . . mmc_wait_for_req_done() - finished: err=%d retries=%d removed=%d", cmd->error, cmd->retries, mmc_card_removed(host->card));
break;
-
+ }
mmc_retune_recheck(host);

- pr_debug("%s: req failed (CMD%u): %d, retrying...\n",
+ printk("%s: req failed (CMD%u): %d, retrying...\n",
mmc_hostname(host), cmd->opcode, cmd->error);
cmd->retries--;
cmd->error = 0;
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 09a2a887c..7880c7aca 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1012,6 +1012,8 @@ static int mmc_select_bus_width(struct mmc_card *card)

idx = (host->caps & MMC_CAP_8_BIT_DATA) ? 0 : 1;

+ printk(". mmc_select_bus_width(): mmc_can_ext_csd() returned True. host->caps = %x, idx=%d", host->caps, idx);
+
/*
* Unlike SD, MMC cards dont have a configuration register to notify
* supported bus width. So bus test command should be run to identify
@@ -1030,6 +1032,9 @@ static int mmc_select_bus_width(struct mmc_card *card)
EXT_CSD_BUS_WIDTH,
ext_csd_bits[idx],
card->ext_csd.generic_cmd6_time);
+
+ printk(". mmc_switch() returned error: %d, continuing. idx=%d", err, idx);
+
if (err)
continue;

@@ -1450,6 +1455,8 @@ static int mmc_select_hs200(struct mmc_card *card)
int err = -EINVAL;
u8 val;

+ printk("mmc_select_hs200()");
+
old_signal_voltage = host->ios.signal_voltage;
if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_2V)
err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
@@ -1468,7 +1475,9 @@ static int mmc_select_hs200(struct mmc_card *card)
* switch to HS200 mode if bus width is set successfully.
*/
err = mmc_select_bus_width(card);
+
if (err > 0) {
+ printk("Error from mmc_select_bus_width() = %d", err);
val = EXT_CSD_TIMING_HS200 |
card->drive_strength << EXT_CSD_DRV_STR_SHIFT;
err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index ebad70e44..914d9ae3d 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -566,6 +566,9 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
bool use_r1b_resp = true;
unsigned char old_timing = host->ios.timing;

+ printk(". . __mmc_switch() %s: set=%d, index=%d, value=%d, timeout_ms=%d, timing=%d, send_status=%d, retry_crc_err=%d)",
+ mmc_hostname(host), set, index, value, timeout_ms, timing, send_status, retry_crc_err);
+
mmc_retune_hold(host);

if (!timeout_ms) {
@@ -599,6 +602,8 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
}

err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
+ printk(". . __mmc_switch(): mmc_wait_for_cmd() returned error %d. Used r1b response? %d", err, use_r1b_resp);
+
if (err)
goto out;

@@ -610,6 +615,7 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
/* Let's try to poll to find out when the command is completed. */
err = __mmc_poll_for_busy(card, timeout_ms, send_status, retry_crc_err,
MMC_BUSY_CMD6);
+ if (err) printk("__mmc_switch()): __mmc_poll_for_busy() returned error %d", err);
if (err)
goto out;

@@ -623,6 +629,9 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
if (err && timing)
mmc_set_timing(host, old_timing);
}
+
+ if (err) printk("__mmc_switch()): mmc_switch_status() returned error %d", err);
+
out:
mmc_retune_release(host);

I get this printout on boot:

[    1.238502] mmc_select_hs200()

[    1.238516] . mmc_select_bus_width(): mmc_can_ext_csd() returned True. host->caps = 4000114b, idx=0

[    1.238521] . . __mmc_switch() mmc0: set=1, index=183, value=2, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)

[    1.238891] mmc0: req failed (CMD6): -110, retrying...

[    1.239255] mmc0: req failed (CMD6): -110, retrying...

[    1.239617] mmc0: req failed (CMD6): -110, retrying...

[    1.239980] . . . mmc_wait_for_req_done() - finished: err=-110 retries=1 removed=0

[    1.239984] . . __mmc_switch(): mmc_wait_for_cmd() returned error -110.  Used r1b response? 1

[    1.239987] . mmc_switch() returned error: -110, continuing.  idx=0

[    1.239990] . . __mmc_switch() mmc0: set=1, index=183, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)

[    1.240357] mmc0: req failed (CMD6): -110, retrying...

[    1.240719] mmc0: req failed (CMD6): -110, retrying...

[    1.241082] mmc0: req failed (CMD6): -110, retrying...

[    1.241446] . . . mmc_wait_for_req_done() - finished: err=-110 retries=1 removed=0

[    1.241450] . . __mmc_switch(): mmc_wait_for_cmd() returned error -110.  Used r1b response? 1

[    1.241453] . mmc_switch() returned error: -110, continuing.  idx=1

[    1.246972] mmc0: mmc_select_hs200 failed, error -110

[    1.246977] mmc_select_timing() -> Falling back to HS mode.

[    1.246980] . . __mmc_switch() mmc0: set=1, index=185, value=1, timeout_ms=250, timing=1, send_status=1, retry_crc_err=1)

[    1.247702] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0

[    1.247706] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1

[    1.248072] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0

[    1.248129] . mmc_select_bus_width(): mmc_can_ext_csd() returned True. host->caps = 4000114b, idx=0

[    1.248133] . . __mmc_switch() mmc0: set=1, index=183, value=2, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)

[    1.248180] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0

[    1.248184] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1

[    1.248208] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0

[    1.248212] . mmc_switch() returned error: 0, continuing.  idx=0

 After this, the system boots and runs normally, but at the low eMMC speed.

Looking for any help on any additional testing or software patches we can try to solve this issue... thanks!

  • Once entering Linux however, the system attempts to configure the eMMC again in HS200 and fails.  By editing the code in mmc.c to fall through the HS200 change, the 

    Sorry realized this sentence got cut off... should read:

    Once entering Linux however, the system attempts to configure the eMMC again in HS200 and fails.  By editing the code in mmc.c to fall through the HS200 change, the system will boot normally in the low speed mode.

  • Also, as requested, here is the complete boot log to rc.sysint:

    6644.boot log.txt
    U-Boot SPL 2021.01-g731e98bc (Feb 20 2024 - 15:37:07 -0800)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    SPL initial stack usage: 13424 bytes
    Trying to boot from MMC1
    Authentication passed
    Authentication passed
    Authentication passed
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    Loading Environment from MMC... OK
    init_env from device 9 not supported!
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE:  BL31: Built : 05:33:19, Feb 24 2023
    
    U-Boot SPL 2021.01-g9f752f37-dirty (Mar 21 2024 - 09:52:10 -0700)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    Trying to boot from MMC1
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    
    
    U-Boot 2021.01-g9f752f37-dirty (Mar 21 2024 - 09:52:10 -0700)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed 1
    DRAM:  2 GiB
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1, mmc@fa20000: 2
    Loading Environment from MMC... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed 1
    Net:   get_phy_id(): Low bytes = 0x600d, High bytes = 0x8585
    Got PHY ID: 0x600d8585
    get_phy_driver(): Phy ID = 0x600d8585
    Configuring BCM54220S.
    BCM54220S non-copper mode 4 detected.  Manually reconfiguring to copper.
    eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    ** Unrecognized filesystem type **
    19862020 bytes read in 169 ms (112.1 MiB/s)
    36269 bytes read in 3 ms (11.5 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008fef4000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-rt83-qsc-t008 (qsc@qsc-Virtual-Machine) (aarch64-linux-gnu-gcc (GCC) 9.4.0, GNU ld (GNU Binutils) 2.36.1) #21 SMP PREEMPT_RT Tue Apr 2 11:42:01 PDT 2024
    [    0.000000] Machine model: NGCXQ Amplifier
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 3 MiB
    [    0.000000] OF: reserved mem: initialized node ipc-memories@9c800000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009cb00000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009cc00000, size 14 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009da00000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9da00000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@9db00000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009c7fffff]
    [    0.000000]   node   0: [mem 0x000000009c800000-0x000000009e6fffff]
    [    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
    [    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
    [    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] On node 0 totalpages: 524288
    [    0.000000]   DMA zone: 8192 pages used for memmap
    [    0.000000]   DMA zone: 0 pages reserved
    [    0.000000]   DMA zone: 524288 pages, LIFO batch:63
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.2
    [    0.000000] percpu: Embedded 18 pages/cpu s35392 r8192 d30144 u73728
    [    0.000000] pcpu-alloc: s35392 r8192 d30144 u73728 alloc=18*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=6746d81c-d315-4160-9201-db9e94ded876 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1455424K/2097152K available (11264K kernel code, 1220K rwdata, 4328K rodata, 2496K init, 438K bss, 117440K reserved, 524288K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000] rcu:     RCU priority boosting: priority 1 delay 500 ms.
    [    0.000000] rcu:     RCU_SOFTIRQ processing moved to rcuc kthreads.
    [    0.000000]  No expedited grace period (rcu_normal_after_boot).
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008479] Console: colour dummy device 80x25
    [    0.013075] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023756] pid_max: default: 32768 minimum: 301
    [    0.028572] LSM: Security Framework initializing
    [    0.033368] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.040950] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.050866] rcu: Hierarchical SRCU implementation.
    [    0.056302] Platform MSI: msi-controller@1820000 domain created
    [    0.062616] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.071869] EFI services will not be available.
    [    0.076709] smp: Bringing up secondary CPUs ...
    [    0.082137] Detected VIPT I-cache on CPU1
    [    0.086269] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [    0.093306] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.100743] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.107543] smp: Brought up 1 node, 2 CPUs
    [    0.111765] SMP: Total of 2 processors activated.
    [    0.116585] CPU features: detected: 32-bit EL0 Support
    [    0.121849] CPU features: detected: CRC32 instructions
    [    0.134388] CPU: All CPU(s) started at EL2
    [    0.138593] alternatives: patching kernel code
    [    0.144259] devtmpfs: initialized
    [    0.153784] KASLR disabled due to lack of seed
    [    0.158536] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.168516] futex hash table entries: 512 (order: 4, 65536 bytes, linear)
    [    0.189980] pinctrl core: initialized pinctrl subsystem
    [    0.195972] DMI not present or invalid.
    [    0.200608] NET: Registered protocol family 16
    [    0.207080] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.214460] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.222558] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.231324] thermal_sys: Registered thermal governor 'step_wise'
    [    0.231904] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.245067] ASID allocator initialised with 65536 entries
    [    0.273959] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.280893] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.287764] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.294628] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.302590] cryptd: max_cpu_qlen set to 1000
    [    0.310105] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
    [    0.319217] vcc_5v0: supplied by vmain_pd
    [    0.323738] vcc_3v3_sys: supplied by vmain_pd
    [    0.328976] vcc_1v8: supplied by vcc_3v3_sys
    [    0.334311] iommu: Default domain type: Translated
    [    0.339751] SCSI subsystem initialized
    [    0.344092] mc: Linux media interface: v0.10
    [    0.348495] videodev: Linux video capture interface: v2.00
    [    0.354201] pps_core: LinuxPPS API ver. 1 registered
    [    0.359277] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.368629] PTP clock support registered
    [    0.372668] EDAC MC: Ver: 3.0.0
    [    0.376619] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
    [    0.383839] FPGA manager framework
    [    0.387457] Advanced Linux Sound Architecture Driver Initialized.
    [    0.394625] clocksource: Switched to clocksource arch_sys_counter
    [    0.401113] VFS: Disk quotas dquot_6.6.0
    [    0.405181] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.418292] NET: Registered protocol family 2
    [    0.423070] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.431974] tcp_listen_portaddr_hash hash table entries: 1024 (order: 4, 65536 bytes, linear)
    [    0.440793] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.449045] TCP bind hash table entries: 16384 (order: 7, 917504 bytes, linear)
    [    0.457446] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.464540] UDP hash table entries: 1024 (order: 5, 131072 bytes, linear)
    [    0.471666] UDP-Lite hash table entries: 1024 (order: 5, 131072 bytes, linear)
    [    0.479439] NET: Registered protocol family 1
    [    0.484545] RPC: Registered named UNIX socket transport module.
    [    0.490653] RPC: Registered udp transport module.
    [    0.495463] RPC: Registered tcp transport module.
    [    0.500271] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.506863] NET: Registered protocol family 44
    [    0.511423] PCI: CLS 0 bytes, default 64
    [    0.518275] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.530900] Initialise system trusted keyrings
    [    0.535730] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.547506] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.554178] NFS: Registering the id_resolver key type
    [    0.559421] Key type id_resolver registered
    [    0.563710] Key type id_legacy registered
    [    0.567905] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.574781] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.582638] fuse: init (API version 7.32)
    [    0.586957] 9p: Installing v9fs 9p2000 file system support
    [    0.627051] Key type asymmetric registered
    [    0.631273] Asymmetric key parser 'x509' registered
    [    0.636316] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 242)
    [    0.643906] io scheduler mq-deadline registered
    [    0.648539] io scheduler kyber registered
    [    0.654922] pinctrl-single 4084000.pinctrl: 34 pins, size 136
    [    0.661297] pinctrl-single f4000.pinctrl: 171 pins, size 684
    [    0.675561] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.696036] brd: module loaded
    [    0.707207] loop: module loaded
    [    0.711461] megasas: 07.714.04.00-rc1
    [    0.719626] tun: Universal TUN/TAP device driver, 1.6
    [    0.725422] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.731870] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.737992] sky2: driver version 1.30
    [    0.742799] VFIO - User Level meta-driver version: 0.3
    [    0.749210] i2c /dev entries driver
    [    0.753937] sdhci: Secure Digital Host Controller Interface driver
    [    0.760286] sdhci: Copyright(c) Pierre Ossman
    [    0.765066] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.772066] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.780319] optee: probing for conduit method.
    [    0.784970] optee: revision 3.20 (8e74d476)
    [    0.785270] optee: dynamic shared memory is enabled
    [    0.794830] optee: initialized driver
    [    0.800696] NET: Registered protocol family 17
    [    0.805494] 9pnet: Installing 9P2000 support
    [    0.809955] Key type dns_resolver registered
    [    0.814739] printk: bootconsole [ns16550a0]: printing thread started
    [    0.814823] Loading compiled-in X.509 certificates
    [    0.825138] ti-sci 44043000.system-controller: lpm region is required for suspend but not provided.
    [    0.825225] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [    0.885799] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    0.885822] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    0.891503] omap_i2c 20000000.i2c: bus 3 rev0.12 at 400 kHz
    [    0.892552] omap_i2c 20010000.i2c: bus 4 rev0.12 at 400 kHz
    [ H0.893790] omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
    [    0.894229] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
    [    0.917204] printk: console [ttyS2]: printing thread started
    [    0.894382] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    0.917225] printk: console [ttyS2] enabled
    [    0.917229] printk: bootconsole [ns16550a0] disabled
    [    0.940168] printk: bootconsole [ns16550a0]: printing thread stopped
    [    0.963962] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.002635] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.004399] davinci_mdio 8000f00.mdio: phy[26]: device 8000f00.mdio:1a, driver Broadcom BCM54220S
    [    1.004415] davinci_mdio 8000f00.mdio: phy[27]: device 8000f00.mdio:1b, driver Broadcom BCM54220S
    [    1.004526] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
    [    1.004782] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
    [    1.004792] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
    [    1.004799] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.005643] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.014438] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [    1.018929] rtc-ti-k3 2b1f0000.rtc: registered as rtc0
    [    1.018977] rtc-ti-k3 2b1f0000.rtc: setting system clock to 1970-01-01T00:00:02 UTC (2)
    [    1.121713] mmc0: CQHCI version 5.10
    [    1.131319] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
    [    1.131376] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
    [    1.131418] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
    [    1.131861] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
    [    1.142237] input: gpio-keys as /devices/platform/gpio-keys/input/input0
    [    1.152919] ALSA device list:
    [    1.152929]   No soundcards found.
    [    1.152998] Warning: unable to open an initial console.
    [    1.172592] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.194198] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.207029] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.208525] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.211382] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.224199] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.224723] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.225049] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.225625] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.225947] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.237055] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.237074] . . __mmc_switch() mmc0: set=1, index=175, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.237886] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.237890] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.238192] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.238198] . . __mmc_switch() mmc0: set=1, index=34, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.238805] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.238809] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.239109] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.239114] mmc_select_hs200()
    [    1.239119] . mmc_select_bus_width(): mmc_can_ext_csd() returned True. host->caps = 4000104b, idx=0
    [    1.239125] . . __mmc_switch() mmc0: set=1, index=183, value=2, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.239495] mmc0: req failed (CMD6): -110, retrying...
    [    1.239860] mmc0: req failed (CMD6): -110, retrying...
    [    1.240223] mmc0: req failed (CMD6): -110, retrying...
    [    1.240586] . . . mmc_wait_for_req_done() - finished: err=-110 retries=0 removed=0
    [    1.240590] . . __mmc_switch(): mmc_wait_for_cmd() returned error -110.  Used r1b response? 1
    [    1.240594] . mmc_switch() returned error: -110, continuing.  idx=0
    [    1.240596] . . __mmc_switch() mmc0: set=1, index=183, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.240963] mmc0: req failed (CMD6): -110, retrying...
    [    1.241325] mmc0: req failed (CMD6): -110, retrying...
    [    1.241688] mmc0: req failed (CMD6): -110, retrying...
    [    1.242051] . . . mmc_wait_for_req_done() - finished: err=-110 retries=0 removed=0
    [    1.242055] . . __mmc_switch(): mmc_wait_for_cmd() returned error -110.  Used r1b response? 1
    [    1.242058] . mmc_switch() returned error: -110, continuing.  idx=1
    [    1.247577] mmc0: mmc_select_hs200 failed, error -110
    [    1.247582] mmc_select_timing() -> Falling back to HS mode.
    [    1.247585] . . __mmc_switch() mmc0: set=1, index=185, value=1, timeout_ms=250, timing=1, send_status=1, retry_crc_err=1)
    [    1.248301] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.248305] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.248669] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.248726] . mmc_select_bus_width(): mmc_can_ext_csd() returned True. host->caps = 4000104b, idx=0
    [    1.248729] . . __mmc_switch() mmc0: set=1, index=183, value=2, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.248778] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.248783] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.248809] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.248813] . mmc_switch() returned error: 0, continuing.  idx=0
    [    1.249421] . . . mmc_wait_for_req_done() - finished: err=0 retries=0 removed=0
    [    1.249427] . . __mmc_switch() mmc0: set=1, index=183, value=6, timeout_ms=250, timing=8, send_status=1, retry_crc_err=1)
    [    1.249815] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.249819] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.249870] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.249876] . . __mmc_switch() mmc0: set=1, index=161, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.250045] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.250049] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.250072] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.250076] . . __mmc_switch() mmc0: set=1, index=33, value=1, timeout_ms=1600, timing=0, send_status=1, retry_crc_err=0)
    [    1.250118] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.250122] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.250144] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.250149] . . __mmc_switch() mmc0: set=1, index=15, value=1, timeout_ms=250, timing=0, send_status=1, retry_crc_err=0)
    [    1.251019] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    1.251023] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    1.251046] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    5.291839] . . __mmc_switch() mmc0: set=1, index=32, value=1, timeout_ms=30000, timing=0, send_status=1, retry_crc_err=0)
    [    5.292657] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    [    5.292662] . . __mmc_switch(): mmc_wait_for_cmd() returned error 0.  Used r1b response? 1
    [    5.292690] . . . mmc_wait_for_req_done() - finished: err=0 retries=3 removed=0
    starting pid 174, tty '': '/etc/rc.sysinit'
    Running rc.sysinit

  • Peter,
    I was recently helping another customer with what looked like similar issues (timeout during HS200 enablement, while normal/slow operation worked without issues, and also U-Boot worked).

    Can you please perform a test using our latest ti-linux-6.1.y Kernel tree (https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?h=ti-linux-6.1.y) PLUS the below patch applied to it:

    $ git show
    commit ba956978f1101988a81e0dfa3964756a0aa6b550 (HEAD -> ti-linux-6.1.y-pana-hs400-dev)
    Author: Andreas Dannenberg <dannenberg@ti.com>
    Date:   Fri Mar 29 01:25:59 2024 -0500
    
        mmc: sdhci_am654: Enable ITAPDLY for HS200 and HS400 modes
        
        The driver dutifully sets up the ITAPDLY for HS200 and HS400 modes but
        seems to forget to enable that feature, leading to the ITAPDLY feature
        not getting enabled for HS200 and HS400 modes.
        
        Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
    
    diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
    index 38392b6f4100..9f6968703de2 100644
    --- a/drivers/mmc/host/sdhci_am654.c
    +++ b/drivers/mmc/host/sdhci_am654.c
    @@ -241,9 +241,11 @@ static void sdhci_am654_setup_dll(struct sdhci_host *host, unsigned int clock)
                    return;
            }
     
    -       /* HS400 ITAPDLY should be the same as HS200 ITAPDLY*/
    -       if (timing == MMC_TIMING_MMC_HS400)
    +       /* HS400 ITAPDLY should be the same as HS200 ITAPDLY */
    +       if (timing == MMC_TIMING_MMC_HS400) {
                    sdhci_am654->itap_del_sel[timing] = sdhci_am654->itap_del_sel[timing - 1];
    +               sdhci_am654->itap_del_ena[timing] = sdhci_am654->itap_del_ena[timing - 1];
    +       }
     }
     
     static void sdhci_am654_write_itapdly(struct sdhci_am654_data *sdhci_am654,
    @@ -560,9 +562,11 @@ static int sdhci_am654_platform_execute_tuning(struct sdhci_host *host,
     
            sdhci_am654_write_itapdly(sdhci_am654, itap, 1);
     
    -       /* Save ITAPDLY for HS200 */
    -       if (sdhci_am654->hs200_tunning)
    +       /* Save and enable ITAPDLY for HS200 */
    +       if (sdhci_am654->hs200_tunning) {
                    sdhci_am654->itap_del_sel[MMC_TIMING_MMC_HS200] = itap;
    +               sdhci_am654->itap_del_ena[MMC_TIMING_MMC_HS200] = 0x1;
    +       }
     
            return 0;
     }

    Using the latest TI Kernel 6.1.y will bring in many eMMC related improvements in the driver itself (drivers/mmc/host/sdhci_am654.c) as well as updated PHY calibration values (via sdhci0 node definition in arch/arm64/boot/dts/ti/k3-am62-main.dtsi). However my above patch is also needed for a complete/fully working solution.

    I understand often it may be a lot of work to enable/port a new kernel but perhaps it can be done just with minimal platform support for testing purposes. Our goal is to establish whether we can get to a working system using our "newest" SW stack. Once we have a working system of course we can consider backporting changes etc. and other steps.

    Regards, Andreas

  • Hi Andreas!  Thanks for your help with this issue.

    I tested by the following:

    * Download the 09.02.01.09 SDK from https://www.ti.com/tool/PROCESSOR-SDK-AM62X

    * Apply the above patch to sdhci_am654.c

    * Build with make linux and make linux_stage

    * Copy over our current kernel Image file with the new one from board-support/built-images

    * Package with our rootfs as .ext4 and load to rootfs.ext4 partition on the eMMC by DFU.

    Unfortunately, the issue still occurs, see below the complete boot output:

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.80-rt26-dirty (qsc@qsc-Virtual-Machine) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #2 SMP PREEMPT_RT Fri Apr 5 11:22:02 PDT 2024
    [ 0.000000] Machine model: NGCXQ Amplifier
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@9db00000, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009dafffff]
    [ 0.000000] node 0: [mem 0x000000009db00000-0x000000009e6fffff]
    [ 0.000000] node 0: [mem 0x000000009e700000-0x000000009e77ffff]
    [ 0.000000] node 0: [mem 0x000000009e780000-0x000000009fffffff]
    [ 0.000000] node 0: [mem 0x00000000a0000000-0x00000000ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] cma: Reserved 32 MiB at 0x00000000fbe00000
    [ 0.000000] psci: probing for conduit method from DT.
    [ 0.000000] psci: PSCIv1.1 detected in firmware.
    [ 0.000000] psci: Using standard PSCI v0.2 function IDs
    [ 0.000000] psci: Trusted OS migration not required
    [ 0.000000] psci: SMC Calling Convention v1.2
    [ 0.000000] percpu: Embedded 20 pages/cpu s44928 r8192 d28800 u81920
    [ 0.000000] Detected VIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration
    [ 0.000000] CPU features: detected: ARM erratum 845719
    [ 0.000000] alternatives: applying boot alternatives
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516096
    [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=6746d81c-d315-4160-9201-db9e94ded876 rw rootfstype=ext4 rootwait
    [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 1974164K/2097152K available (9792K kernel code, 1192K rwdata, 2244K rodata, 1728K init, 422K bss, 90220K reserved, 32768K cma-reserved)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [ 0.000000] rcu: RCU_SOFTIRQ processing moved to rcuc kthreads.
    [ 0.000000] No expedited grace period (rcu_normal_after_boot).
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 256 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] Root IRQ handler: 0xffff800008411560
    [ 0.000000] GICv3: GICv3 features: 16 PPIs
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [ 0.000000] ITS [mem 0x01820000-0x0182ffff]
    [ 0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [ 0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [ 0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x0000000080030000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [ 0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [ 0.000176] Console: colour dummy device 80x25
    [ 0.383248] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000)
    [ 0.383258] pid_max: default: 32768 minimum: 301
    [ 0.383337] LSM: Security Framework initializing
    [ 0.383468] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.383491] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.385066] rcu: Hierarchical SRCU implementation.
    [ 0.385074] rcu: Max phase no-delay instances is 400.
    [ 0.385113] printk: bootconsole [ns16550a0] printing thread started
    [ 0.437560] Platform MSI: msi-controller@1820000 domain created
    [ 0.437700] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [ 0.437748] EFI services will not be available.
    [ 0.437904] smp: Bringing up secondary CPUs ...
    [ 0.438615] Detected VIPT I-cache on CPU1
    [ 0.438720] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [ 0.438735] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [ 0.438786] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 0.488237] smp: Brought up 1 node, 2 CPUs
    [ 0.488244] SMP: Total of 2 processors activated.
    [ 0.488249] CPU features: detected: 32-bit EL0 Support
    [ 0.488253] CPU features: detected: CRC32 instructions
    [ 0.488293] CPU: All CPU(s) started at EL2
    [ 0.488295] alternatives: applying system-wide alternatives
    [ 0.489751] devtmpfs: initialized
    [ 0.496968] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    [ 0.496992] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.498306] pinctrl core: initialized pinctrl subsystem
    [ 0.498880] DMI not present or invalid.
    [ 0.499397] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [ 0.536233] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [ 0.536395] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.536553] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.536651] audit: initializing netlink subsys (disabled)
    [ 0.537359] thermal_sys: Registered thermal governor 'step_wise'
    [ 0.537543] ASID allocator initialised with 65536 entries
    [ 0.547170] audit: type=2000 audit(0.535:1): state=initialized audit_enabled=0 res=1
    [ 0.554563] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.554572] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [ 0.554577] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.554580] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [ 0.554584] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [ 0.554586] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [ 0.554590] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.554593] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [ 0.562093] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
    [ 0.562686] iommu: Default domain type: Translated
    [ 0.562692] iommu: DMA domain TLB invalidation policy: strict mode
    [ 0.563008] SCSI subsystem initialized
    [ 0.563355] usbcore: registered new interface driver usbfs
    [ 0.563394] usbcore: registered new interface driver hub
    [ 0.563420] usbcore: registered new device driver usb
    [ 0.563771] pps_core: LinuxPPS API ver. 1 registered
    [ 0.563774] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.563790] PTP clock support registered
    [ 0.563908] EDAC MC: Ver: 3.0.0
    [ 0.564694] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.565029] FPGA manager framework
    [ 0.565132] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.566118] clocksource: Switched to clocksource arch_sys_counter
    [ 0.566394] VFS: Disk quotas dquot_6.6.0
    [ 0.566434] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.572668] NET: Registered PF_INET protocol family
    [ 0.572926] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.574668] tcp_listen_portaddr_hash hash table entries: 1024 (order: 3, 40960 bytes, linear)
    [ 0.574717] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.574732] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [[ 0.574943] TCP bind hash table entries: 16384 (order: 8, 1310720 bytes, linear)
    [ 0.[ 797633] printk: console [ttyS2] enabled
    0.576381] TCP: Hash tables configured (established 16384 bind 16384)
    [ 0.797634] printk: console [ttyS2] printing thread started
    [ 0.797638] printk: bootconsole [ns16550a0] disabled
    [ 0.808491] printk: bootconsole [ns16550a0] printing thread stopped
    [ 0.810236] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [ 0.844132] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 0.846761] davinci_mdio 8000f00.mdio: phy[26]: device 8000f00.mdio:1a, driver unknown
    [ 0.846773] davinci_mdio 8000f00.mdio: phy[27]: device 8000f00.mdio:1b, driver unknown
    [ 0.846827] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
    [ 0.847095] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
    [ 0.847130] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
    [ 0.847135] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [ 0.847849] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [ 0.868670] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [ 0.873970] mmc0: CQHCI version 5.10
    [ 0.881831] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
    [ 0.881848] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
    [ 0.881854] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
    [ 0.894179] ALSA device list:
    [ 0.894191] No soundcards found.
    [ 0.926403] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [ 0.934173] Waiting for root device PARTUUID=6746d81c-d315-4160-9201-db9e94ded876...
    [ 0.995606] mmc0: mmc_select_hs200 failed, error -110
    [ 0.995618] mmc0: error -110 whilst initialising MMC card
    [ 1.113135] mmc0: mmc_select_hs200 failed, error -110
    [ 1.113142] mmc0: error -110 whilst initialising MMC card
    [ 1.244087] mmc0: mmc_select_hs200 failed, error -110
    [ 1.244093] mmc0: error -110 whilst initialising MMC card
    [ 1.417049] mmc0: mmc_select_hs200 failed, error -110
    [ 1.417055] mmc0: error -110 whilst initialising MMC card

  • Hi Peter,

    * Download the 09.02.01.09 SDK from https://www.ti.com/tool/PROCESSOR-SDK-AM62X

    * Apply the above patch to sdhci_am654.c

    * Build with make linux and make linux_stage

    * Copy over our current kernel Image file with the new one from board-support/built-images

    * Package with our rootfs as .ext4 and load to rootfs.ext4 partition on the eMMC by DFU.

    Unfortunately, the issue still occurs, see below the complete boot output:

    thanks for running this experiment and diligently documenting the steps. Did you also re-build your device tree file, to absorb the changes to the sdhci0 node definition in arch/arm64/boot/dts/ti/k3-am62-main.dtsi?

    Regards, Andreas

  • Hi Andreas, yes sorry forgot to mention it... in the above commit you sent, the SDHCI definition seems is:

    sdhci0: mmc@fa10000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
    		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		assigned-clocks = <&k3_clks 57 6>;
    		assigned-clock-parents = <&k3_clks 57 8>;
    		bus-width = <8>;
    		mmc-ddr-1_8v;
    		mmc-hs200-1_8v;
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		ti,otap-del-sel-mmc-hs = <0x0>;
    		ti,otap-del-sel-ddr52 = <0x5>;
    		ti,otap-del-sel-hs200 = <0x5>;
    		ti,itap-del-sel-legacy = <0xa>;
    		ti,itap-del-sel-mmc-hs = <0x1>;
    		status = "disabled";
    	};


    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62-main.dtsi?h=ti-linux-6.1.y

    From the 8.6 SDK, the definition is:

    sdhci0: mmc@fa10000 {
    compatible = "ti,am62-sdhci";
    reg = <0x00 0xfa10000 0x00 0x260>, <0x00 0xfa18000 0x00 0x134>;
    interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
    power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
    clock-names = "clk_ahb", "clk_xin";
    assigned-clocks = <&k3_clks 57 6>;
    assigned-clock-parents = <&k3_clks 57 8>;
    mmc-ddr-1_8v;
    mmc-hs200-1_8v;
    ti,trm-icp = <0x2>; /*** <------------- **/
    bus-width = <8>;
    ti,clkbuf-sel = <0x7>;
    ti,otap-del-sel-legacy = <0x0>;
    ti,otap-del-sel-mmc-hs = <0x0>;
    ti,otap-del-sel-ddr52 = <0x5>;
    ti,otap-del-sel-hs200 = <0x5>;
    ti,itap-del-sel-legacy = <0xa>;
    ti,itap-del-sel-mmc-hs = <0x1>;
    };

    The only difference I see is ti,trm-icp is not defined in the 9.2 SDK, so I did try both with this property removed and not,
    but didn't see any difference in the behavior. Let me know if there are any further updates to the DTS I can help to test!

    By the way, does TI maintain a supported eMMC part list?
    Other CPU vendors I've worked with will have an official list of supported eMMC parts and whether they have been tested in hardware.

    Thanks!


  • Hi Peter,

    It seems the issue which Andreas mentioned is not related to the problem on your board.

    Have you tried to limit eMMC to legacy mode in U-Boot to see if then Linux can detect eMMC to HS200? If so, the issue seems to be eMMC reset related.

  • I haven't tried this, however I have paused the boot and entered U-Boot command line, and then physically reset the eMMC by applying GND to the reset pin.  The result is the same -- Linux can only enter HS mode.

    Anyway, I don't see any hardware reset in the TI linux driver, I think it may be software reset only.

    Do you know of any known good designs using SanDisk eMMC?  Checking other dev boards I only see Kingston and Micron used so far...

  • Anyway, I don't see any hardware reset in the TI linux driver, I think it may be software reset only.

    Yes, I meant the software reset:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/mmc/host/sdhci.c?h=ti-linux-6.1.y#n202

    Do you know of any known good designs using SanDisk eMMC?  Checking other dev boards I only see Kingston and Micron used so far...

    Well, I don't typically pay attention on the devices customers used.

    Have you tried to limit eMMC to legacy mode in U-Boot to see if then Linux can detect eMMC to HS200?

    Can you please apply the following U-Boot patch and rebuild U-Boot to see if Linux can detect eMMC to HS200? This patch removes all otap-del-sel values except for legacy mode from sdhci0 node in U-boot. This forces U-Boot to only use eMMC in legacy mode.

    index db6574740c07..c332e2457c8b 100644
    --- a/arch/arm/dts/k3-am62-main.dtsi
    +++ b/arch/arm/dts/k3-am62-main.dtsi
    @@ -506,9 +506,6 @@
                    mmc-hs200-1_8v;
                    ti,clkbuf-sel = <0x7>;
                    ti,otap-del-sel-legacy = <0x0>;
    -               ti,otap-del-sel-mmc-hs = <0x0>;
    -               ti,otap-del-sel-ddr52 = <0x5>;
    -               ti,otap-del-sel-hs200 = <0x5>;
                    ti,itap-del-sel-legacy = <0xa>;
                    ti,itap-del-sel-mmc-hs = <0x1>;
                    status = "disabled";

  • Hi Bin, thanks for the suggestion.

    I have tested with the above patch and confirmed the behavior is as expected, U-boot is using HS Legacy mode.

    Unfortunately seems HS200 mode still cannot be entered by Linux.  I did try both 9.2 and 8.6 SDKs to confirm it.

    => mmcinfo
    Device: mmc@fa10000
    Manufacturer ID: 45
    OEM: 100
    Name: DG400
    Bus Speed: 25000000
    Mode: MMC legacy
    Rd Block Len: 512
    MMC version 5.1
    High Capacity: Yes
    Capacity: 7.3 GiB
    Bus Width: 8-bit
    Erase Group Size: 512 KiB
    HC WP Group Size: 8 MiB
    User Capacity: 7.3 GiB WRREL
    Boot Capacity: 4 MiB ENH
    RPMB Capacity: 4 MiB ENH
    Boot area 0 is not write protected
    Boot area 1 is not write protected
    => boot

    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    ** Unrecognized filesystem type **
    15442436 bytes read in 638 ms (23.1 MiB/s)
    32740 bytes read in 4 ms (7.8 MiB/s)
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 000000008fef4000, end 000000008fffffff ... OK

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.80-rt26-dirty (qsc@qsc-Virtual-Machine) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #3 SMP PREEMPT_RT Fri Apr 5 11:43:05 PDT 2024
    [ 0.000000] Machine model: NGCXQ Amplifier
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@9db00000, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009dafffff]
    [ 0.000000] node 0: [mem 0x000000009db00000-0x000000009e6fffff]
    [ 0.000000] node 0: [mem 0x000000009e700000-0x000000009e77ffff]
    [ 0.000000] node 0: [mem 0x000000009e780000-0x000000009fffffff]
    [ 0.000000] node 0: [mem 0x00000000a0000000-0x00000000ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] cma: Reserved 32 MiB at 0x00000000fbe00000
    [ 0.000000] psci: probing for conduit method from DT.
    [ 0.000000] psci: PSCIv1.1 detected in firmware.
    [ 0.000000] psci: Using standard PSCI v0.2 function IDs
    [ 0.000000] psci: Trusted OS migration not required
    [ 0.000000] psci: SMC Calling Convention v1.2
    [ 0.000000] percpu: Embedded 20 pages/cpu s44928 r8192 d28800 u81920
    [ 0.000000] Detected VIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration
    [ 0.000000] CPU features: detected: ARM erratum 845719
    [ 0.000000] alternatives: applying boot alternatives
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516096
    [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=6746d81c-d315-4160-9201-db9e94ded876 rw rootfstype=ext4 rootwait
    [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 1974164K/2097152K available (9792K kernel code, 1192K rwdata, 2244K rodata, 1728K init, 422K bss, 90220K reserved, 32768K cma-reserved)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [ 0.000000] rcu: RCU_SOFTIRQ processing moved to rcuc kthreads.
    [ 0.000000] No expedited grace period (rcu_normal_after_boot).
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 256 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] Root IRQ handler: 0xffff800008411560
    [ 0.000000] GICv3: GICv3 features: 16 PPIs
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [ 0.000000] ITS [mem 0x01820000-0x0182ffff]
    [ 0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [ 0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [ 0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x0000000080030000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [ 0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [ 0.000173] Console: colour dummy device 80x25
    [ 0.383246] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000)
    [ 0.383257] pid_max: default: 32768 minimum: 301
    [ 0.383336] LSM: Security Framework initializing
    [ 0.383465] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.383488] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.385061] rcu: Hierarchical SRCU implementation.
    [ 0.385068] rcu: Max phase no-delay instances is 400.
    [ 0.385108] printk: bootconsole [ns16550a0] printing thread started
    [ 0.437552] Platform MSI: msi-controller@1820000 domain created
    [ 0.437693] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [ 0.437738] EFI services will not be available.
    [ 0.437895] smp: Bringing up secondary CPUs ...
    [ 0.438607] Detected VIPT I-cache on CPU1
    [ 0.438707] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [ 0.438723] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [ 0.438774] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 0.488230] smp: Brought up 1 node, 2 CPUs
    [ 0.488237] SMP: Total of 2 processors activated.
    [ 0.488241] CPU features: detected: 32-bit EL0 Support
    [ 0.488245] CPU features: detected: CRC32 instructions
    [ 0.488286] CPU: All CPU(s) started at EL2
    [ 0.488288] alternatives: applying system-wide alternatives
    [ 0.489747] devtmpfs: initialized
    [ 0.496971] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    [ 0.496994] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.498351] pinctrl core: initialized pinctrl subsystem
    [ 0.498959] DMI not present or invalid.
    [ 0.499451] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [ 0.536230] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [ 0.536393] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.536549] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.536645] audit: initializing netlink subsys (disabled)
    [ 0.537343] thermal_sys: Registered thermal governor 'step_wise'
    [ 0.537527] ASID allocator initialised with 65536 entries
    [ 0.547161] audit: type=2000 audit(0.535:1): state=initialized audit_enabled=0 res=1
    [ 0.554519] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.554528] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [ 0.554532] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.554535] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [ 0.554539] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [ 0.554541] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [ 0.554545] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.554548] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [ 0.562083] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
    [ 0.562681] iommu: Default domain type: Translated
    [ 0.562687] iommu: DMA domain TLB invalidation policy: strict mode
    [ 0.563006] SCSI subsystem initialized
    [ 0.563349] usbcore: registered new interface driver usbfs
    [ 0.563388] usbcore: registered new interface driver hub
    [ 0.563413] usbcore: registered new device driver usb
    [ 0.563766] pps_core: LinuxPPS API ver. 1 registered
    [ 0.563770] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.563786] PTP clock support registered
    [ 0.563903] EDAC MC: Ver: 3.0.0
    [ 0.564686] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.565008] FPGA manager framework
    [ 0.565106] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.566096] clocksource: Switched to clocksource arch_sys_counter
    [ 0.566368] VFS: Disk quotas dquot_6.6.0
    [ 0.566405] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.572610] NET: Registered PF_INET protocol family
    [ 0.572871] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.574614] tcp_listen_portaddr_hash hash table entries: 1024 (order: 3, 40960 bytes, linear)
    [ 0.574663] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.574678] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [ 0.790212] printk: console [ttyS2] enabled
    [ 0.790217] printk: bootconsole [ns16550a0] disabled
    [ 0.790232] printk: console [ttyS2] printing thread started
    [ 0.790583] printk: bootconsole [ns16550a0] printing thread stopped
    [ 0.796001] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [ 0.830110] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 0.832765] davinci_mdio 8000f00.mdio: phy[26]: device 8000f00.mdio:1a, driver unknown
    [ 0.832778] davinci_mdio 8000f00.mdio: phy[27]: device 8000f00.mdio:1b, driver unknown
    [ 0.832834] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
    [ 0.833132] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
    [ 0.833144] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
    [ 0.833150] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [ 0.833863] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [ 0.854653] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [ 0.858457] mmc0: CQHCI version 5.10
    [ 0.866894] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
    [ 0.866913] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
    [ 0.866919] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
    [ 0.879514] ALSA device list:
    [ 0.879526] No soundcards found.
    [ 0.911710] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [ 0.941377] Waiting for root device PARTUUID=6746d81c-d315-4160-9201-db9e94ded876...
    [ 0.980904] mmc0: mmc_select_hs200 failed, error -110
    [ 0.980912] Could not switch to HS200 mode, falling back to HS mode.

    Let me know any further ideas or testing I can help with!

  • Hi Peter,

    The log shows even if U-Boot does not use eMMC in HS200, kernel still cannot enumerate it to HS200. This doesn't seem to be soft_reset related.

    Can you board boot from other method, such as SD card? We might next need to dump the MMC registers to compare between U-Boot and kernel to see if there is any configuration difference.

  • Unfortunately our board does not have any SD card connection... not sure if we have any other option for booting linux, maybe some kind of network boot is available?

    Let me know your idea for reading registers, is it something like 
    $ mmc csd read /sys/block/mmcblk0/device
    type: 'MMC'
    version: MMC v4.0-v4.3
    card classes: 11, 7, 6, 5, 4, 2, 0,
    capacity: 1.00Gbyte (1073741824 bytes, 2097152 sectors, 512 bytes each)

    And thanks again for your help!

  • Peter,

    maybe some kind of network boot is available?

    Does your board have the CPSW network interface? If so, we can use network boot. You need to install a tftp server on your PC, connect the PC to the same network with your board. U-Boot can load kernel Image and dtb from the PC and boot it. Let me know if you need more detailed instructions.

    Meanwhile I will review the kernel code to see if we can extend the timeout threshold to see if it helps the mmc_select_hs200() timeout problem.

  • Does your board have the CPSW network interface? If so, we can use network boot.

    We don't even need to use network boot. We can add initramfs into kernel Image and still use eMMC boot.

  • If that is the case, I believe our current linux execution mode is by ram filesystem.  Let me know the commands / registers you would like to try and read and I'll see if it works!

  • Hi Peter,

    Can you please apply the following kernel patch to see if it makes eMMC work in HS200 in kernel? This extends the bus width switch command timeout from 100ms to 1 sec. The second code change is just to get more info of the code flow.

    diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
    index c731b45b5f2e..96715e0b3521 100644
    --- a/drivers/mmc/core/mmc.c
    +++ b/drivers/mmc/core/mmc.c
    @@ -1029,7 +1029,7 @@ static int mmc_select_bus_width(struct mmc_card *card)
                    err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
                                     EXT_CSD_BUS_WIDTH,
                                     ext_csd_bits[idx],
    -                                card->ext_csd.generic_cmd6_time);
    +                                card->ext_csd.generic_cmd6_time * 10);
                    if (err)
                            continue;
     
    diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
    index 923a3843f321..ace24d22b83c 100644
    --- a/drivers/mmc/core/mmc_ops.c
    +++ b/drivers/mmc/core/mmc_ops.c
    @@ -581,6 +581,10 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
             * instead of a R1B. Note, some hosts requires R1B, which also means
             * they are on their own when it comes to deal with the busy timeout.
             */
    +       pr_info("%s: __ host cap RSP 0x%x, max_busy_timeout %d, timeout %d\n",
    +                       mmc_hostname(host),
    +                       host->caps & MMC_CAP_NEED_RSP_BUSY,
    +                       host->max_busy_timeout, timeout_ms);
            if (!(host->caps & MMC_CAP_NEED_RSP_BUSY) && host->max_busy_timeout &&
                (timeout_ms > host->max_busy_timeout))
                    use_r1b_resp = false;

  • Hi Bin, thanks it is a good idea to try to increase the timeout.

    Unfortunately the issue still seems to be happening... here is the boot log:

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.80-rt26-dirty (qsc@qsc-Virtual-Machine) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #5 SMP PREEMPT_RT Thu Apr 11 16:41:40 PDT 2024
    [ 0.000000] Machine model: NGCXQ Amplifier
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@9db00000, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009dafffff]
    [ 0.000000] node 0: [mem 0x000000009db00000-0x000000009e6fffff]
    [ 0.000000] node 0: [mem 0x000000009e700000-0x000000009e77ffff]
    [ 0.000000] node 0: [mem 0x000000009e780000-0x000000009fffffff]
    [ 0.000000] node 0: [mem 0x00000000a0000000-0x00000000ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] cma: Reserved 32 MiB at 0x00000000fbe00000
    [ 0.000000] psci: probing for conduit method from DT.
    [ 0.000000] psci: PSCIv1.1 detected in firmware.
    [ 0.000000] psci: Using standard PSCI v0.2 function IDs
    [ 0.000000] psci: Trusted OS migration not required
    [ 0.000000] psci: SMC Calling Convention v1.2
    [ 0.000000] percpu: Embedded 20 pages/cpu s44928 r8192 d28800 u81920
    [ 0.000000] Detected VIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration
    [ 0.000000] CPU features: detected: ARM erratum 845719
    [ 0.000000] alternatives: applying boot alternatives
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516096
    [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=6746d81c-d315-4160-9201-db9e94ded876 rw rootfstype=ext4 rootwait
    [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 1974100K/2097152K available (9856K kernel code, 1194K rwdata, 2256K rodata, 1728K init, 420K bss, 90284K reserved, 32768K cma-reserved)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [ 0.000000] rcu: RCU_SOFTIRQ processing moved to rcuc kthreads.
    [ 0.000000] No expedited grace period (rcu_normal_after_boot).
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 256 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] Root IRQ handler: 0xffff800008422f20
    [ 0.000000] GICv3: GICv3 features: 16 PPIs
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [ 0.000000] ITS [mem 0x01820000-0x0182ffff]
    [ 0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [ 0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [ 0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x0000000080030000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [ 0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [ 0.000175] Console: colour dummy device 80x25
    [ 0.383238] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000)
    [ 0.383248] pid_max: default: 32768 minimum: 301
    [ 0.383327] LSM: Security Framework initializing
    [ 0.383457] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.383480] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.385051] rcu: Hierarchical SRCU implementation.
    [ 0.385059] rcu: Max phase no-delay instances is 400.
    [ 0.385098] printk: bootconsole [ns16550a0] printing thread started
    [ 0.437539] Platform MSI: msi-controller@1820000 domain created
    [ 0.437674] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [ 0.437720] EFI services will not be available.
    [ 0.437877] smp: Bringing up secondary CPUs ...
    [ 0.438587] Detected VIPT I-cache on CPU1
    [ 0.438691] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [ 0.438708] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [ 0.438758] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 0.488213] smp: Brought up 1 node, 2 CPUs
    [ 0.488219] SMP: Total of 2 processors activated.
    [ 0.488224] CPU features: detected: 32-bit EL0 Support
    [ 0.488228] CPU features: detected: CRC32 instructions
    [ 0.488268] CPU: All CPU(s) started at EL2
    [ 0.488270] alternatives: applying system-wide alternatives
    [ 0.489720] devtmpfs: initialized
    [ 0.496980] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    [ 0.497002] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.498319] pinctrl core: initialized pinctrl subsystem
    [ 0.498900] DMI not present or invalid.
    [ 0.499412] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [ 0.536258] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [ 0.536418] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.536579] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.536673] audit: initializing netlink subsys (disabled)
    [ 0.537385] thermal_sys: Registered thermal governor 'step_wise'
    [ 0.537573] ASID allocator initialised with 65536 entries
    [ 0.547159] audit: type=2000 audit(0.535:1): state=initialized audit_enabled=0 res=1
    [ 0.554874] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.554884] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [ 0.554888] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.554891] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [ 0.554895] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [ 0.554898] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [ 0.554901] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.554905] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [ 0.562064] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
    [ 0.562634] iommu: Default domain type: Translated
    [ 0.562640] iommu: DMA domain TLB invalidation policy: strict mode
    [ 0.562949] SCSI subsystem initialized
    [ 0.563349] usbcore: registered new interface driver usbfs
    [ 0.563387] usbcore: registered new interface driver hub
    [ 0.563417] usbcore: registered new device driver usb
    [ 0.563775] pps_core: LinuxPPS API ver. 1 registered
    [ 0.563778] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.563795] PTP clock support registered
    [ 0.563912] EDAC MC: Ver: 3.0.0
    [ 0.564628] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
    [ 0.565002] FPGA manager framework
    [ 0.565107] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.566064] clocksource: Switched to clocksource arch_sys_counter
    [ 0.566333] VFS: Disk quotas dquot_6.6.0
    [ 0.566370] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.572610] NET: Registered PF_INET protocol family
    [ 0.572988] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.574696] tcp_listen_portaddr_hash hash table entries: 1024 (order: 3, 40960 bytes, linear)
    [ 0.574748] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.574762] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [ 0.574975] TCP bind hash table entries: 16384 (order: 8, 1310720 bytes, linear)
    [ 0.576420] TCP: Hash tables configured (established 16384 bind 16384)
    [ 0.576641] UDP hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [ 0.576794] UDP-Lite hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [ 0.577174] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [ 0.577775] RPC: Registered named UNIX socket transport module.
    [ H0.577781] RPC: Registered udp transport module.
    [ 0.835171] printk: console [ttyS2] enabled
    [ 0.835177] printk: bootconsole [ns16550a0] disabled
    [ 0.835190] printk: console [ttyS2] printing thread started
    [ 0.835443] printk: bootconsole [ns16550a0] printing thread stopped
    [ 0.840954] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [ 0.875078] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 0.877720] davinci_mdio 8000f00.mdio: phy[26]: device 8000f00.mdio:1a, driver unknown
    [ 0.877734] davinci_mdio 8000f00.mdio: phy[27]: device 8000f00.mdio:1b, driver unknown
    [ 0.877791] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
    [ 0.878103] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
    [ 0.878115] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
    [ 0.878120] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [ 0.878834] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [ 0.899602] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [ 0.903199] mmc0: CQHCI version 5.10
    [ 0.911823] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
    [ 0.911843] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
    [ 0.911849] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
    [ 0.924528] ALSA device list:
    [ 0.924541] No soundcards found.
    [ 0.956881] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [ 0.957126] Waiting for root device PARTUUID=6746d81c-d315-4160-9201-db9e94ded876...
    [ 1.015397] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.016528] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.017436] Attempt the jump to HS200 speed...
    [ 1.017442] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 2500
    [ 1.018876] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 2500
    [ 1.025816] mmc0: mmc_select_hs200 failed, error -110
    [ 1.025820] Connecting to HS mode.
    [ 1.025823] mmc0: __ host cap RSP 0x0, max_busy_timeout 13421
    7728, timeout 250
    [ 1.025823] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.026950] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 2500
    [ 1.027633] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.028073] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.028255] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 1600
    [ 1.028308] mmc0: __ host cap RSP 0x0, max_busy_timeout 134217728, timeout 250
    [ 1.030638] mmc0: Command Queue Engine enabled
    [ 1.030651] mmc0: new DDR MMC card at address 0001
    [ 1.031323] mmcblk0: mmc0:0001 DG4008 7.28 GiB
    [ 1.035177] mmcblk0: p1
    [ 1.035773] mmcblk0boot0: mmc0:0001 DG4008 4.00 MiB
    [ 1.036999] mmcblk0boot1: mmc0:0001 DG4008 4.00 MiB
    [ 1.038035] mmcblk0rpmb: mmc0:0001 DG4008 4.00 MiB, chardev (240:0)
    [ 1.045069] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Quota mode: none.

    Let me know the next test I should try... thanks!

  • Hi Peter,

    At this stage, what is the output of command 'cat /sys/kernel/debug/mmc0/ios' in Linux on the board?

  • folder cat /sys/kernel/debug/mmc0 doesn't seem to exist on my filesystem... is there something I need to enable to make it work?

  • Does '/sys/kernel/debug/' folder has any sub folders at all?

  • No it is completely empty at the moment...

  • The kernel config likely doesn't have CONFIG_DEBUG_FS enabled?

    If it is indeed enabled, please run command 'mount -t debugfs none /sys/kernel/debug', then /sys/kernel/debug/' folder should have many sub-folders.

  • Hi Peter,

    Once you get the /sys/kernel/debug/mmc0/ios information. Please run the following commands to dump the MMC0 registers in both U-Boot and kernel (ensure eMMC is in HS200 mode in U-Boot).

    On U-Boot:

    => md.l 0x0fa10000 0x400
    => md.l 0x0fa18000 0x100

    On Linux:

    # rwmem 0x0fa10000+0x1000
    # rwmem 0x0fa18000+0x0400

  • Hello Bin!  Thank you I was able to get the debugfs up with your detailed instructions.

    Linux

    $ cat mmc0/ios
    clock: 25000000 Hz
    actual clock: 25000000 Hz
    vdd: 21 (3.3 ~ 3.4 V)
    bus mode: 2 (push-pull)
    chip select: 0 (don't care)
    power mode: 2 (on)
    bus width: 3 (8 bits)
    timing spec: 0 (legacy)
    signal voltage: 0 (3.30 V)
    driver type: 0 (driver type B)

    Unfortunately, seems I don't have the rwmem app on my system, I assume it is from https://github.com/tomba/rwmem ?  
    I'll try building and adding it.

    U-Boot

    => mmcinfo
    Device: mmc@fa10000
    Manufacturer ID: 45
    OEM: 100
    Name: DG400
    Bus Speed: 200000000
    Mode: HS200 (200MHz)
    Rd Block Len: 512
    MMC version 5.1
    High Capacity: Yes
    Capacity: 7.3 GiB
    Bus Width: 8-bit
    Erase Group Size: 512 KiB
    HC WP Group Size: 8 MiB
    User Capacity: 7.3 GiB WRREL
    Boot Capacity: 4 MiB ENH
    RPMB Capacity: 4 MiB ENH
    Boot area 0 is not write protected
    Boot area 1 is not write protected

    => md.l 0x0fa10000 0x400
    0fa10000: 00000000 00007200 00010000 0d1a0033 .....r......3...
    0fa10010: 00000900 ffffffff 328f5903 00d00f00 .........Y.2....
    0fa10020: 00000000 01ff00f0 00800f3c 000e0007 ........<.......
    0fa10030: 00000000 027f003b 00000000 00030000 ....;...........
    0fa10040: 3decc801 18000407 00000000 00000000 ...=............
    0fa10050: 00000000 00000000 f7f0cb8c 00000000 ................
    0fa10060: 00040100 00040002 00010002 00020000 ................
    0fa10070: 00000000 00000000 00000000 00000000 ................
    0fa10080: 00000000 00000000 00000000 00000000 ................
    0fa10090: 00000000 00000000 00000000 00000000 ................
    0fa100a0: 00000000 00000000 00000000 00000000 ................
    0fa100b0: 00000000 00000000 00000000 00000000 ................
    0fa100c0: 00000000 00000000 00000000 00000000 ................
    0fa100d0: 00000000 00000000 00000000 00000000 ................
    0fa100e0: 01100100 01300120 00000140 00000000 .... .0.@.......
    0fa100f0: 00000000 00000000 00004e20 10040000 ........ N......
    0fa10100: 00000000 00000000 00000000 00000000 ................
    0fa10110: 00044f11 00110000 20000100 00000081 .O......... ....
    0fa10120: 00000000 00000000 00000000 00000000 ................
    0fa10130: 00000000 00000000 00000000 00000000 ................
    0fa10140: 00000000 00000000 00000000 00000000 ................
    0fa10150: 00000000 00000000 00000000 00000000 ................
    0fa10160: 00000000 00000000 00000000 00000000 ................
    0fa10170: 00000000 00000000 00000000 00000000 ................
    0fa10180: 00000000 00000000 00000000 00000000 ................
    0fa10190: 00000000 00000000 00000000 00000000 ................
    0fa101a0: 00000000 00000000 00000000 00000000 ................
    0fa101b0: 00000000 00000000 00000000 00000000 ................
    0fa101c0: 00000000 00000000 00000000 00000000 ................
    0fa101d0: 00000000 00000000 00000000 00000000 ................
    0fa101e0: 00000000 00000000 00000000 00000000 ................
    0fa101f0: 00000000 00000000 00000000 00000000 ................
    0fa10200: 00000510 000030c8 00000000 00000000 .....0..........
    0fa10210: 00000000 00000000 00000000 00000000 ................
    0fa10220: 00000000 00000000 00000000 00000000 ................
    0fa10230: 00000000 00000000 00000000 00000000 ................
    0fa10240: 00011000 00000000 00000000 00000000 ................
    0fa10250: fdf9a080 00000000 00000000 00000000 ................
    0fa10260: 00000000 00000000 00000000 00000000 ................
    0fa10270: 00000000 00000000 00000000 00000000 ................
    0fa10280: 00000000 00000000 00000000 00000000 ................
    0fa10290: 00000000 00000000 00000000 00000000 ................
    0fa102a0: 00000000 00000000 00000000 00000000 ................
    0fa102b0: 00000000 00000000 00000000 00000000 ................
    0fa102c0: 00000000 00000000 00000000 00000000 ................
    0fa102d0: 00000000 00000000 00000000 00000000 ................
    0fa102e0: 00000000 00000000 00000000 00000000 ................
    0fa102f0: 00000000 00000000 00000000 00000000 ................
    0fa10300: 00000000 00000000 00000000 00000000 ................
    0fa10310: 00000000 00000000 00000000 00000000 ................
    0fa10320: 00000000 00000000 00000000 00000000 ................
    0fa10330: 00000000 00000000 00000000 00000000 ................
    0fa10340: 00000000 00000000 00000000 00000000 ................
    0fa10350: 00000000 00000000 00000000 00000000 ................
    0fa10360: 00000000 00000000 00000000 00000000 ................
    0fa10370: 00000000 00000000 00000000 00000000 ................
    0fa10380: 00000000 00000000 00000000 00000000 ................
    0fa10390: 00000000 00000000 00000000 00000000 ................
    0fa103a0: 00000000 00000000 00000000 00000000 ................
    0fa103b0: 00000000 00000000 00000000 00000000 ................
    0fa103c0: 00000000 00000000 00000000 00000000 ................
    0fa103d0: 00000000 00000000 00000000 00000000 ................
    0fa103e0: 00000000 00000000 00000000 00000000 ................
    0fa103f0: 00000000 00000000 00000000 00000000 ................
    0fa10400: 00000000 00000000 00000000 00000000 ................
    0fa10410: 00000000 00000000 00000000 00000000 ................
    0fa10420: 00000000 00000000 00000000 00000000 ................
    0fa10430: 00000000 00000000 00000000 00000000 ................
    0fa10440: 00000000 00000000 00000000 00000000 ................
    0fa10450: 00000000 00000000 00000000 00000000 ................
    0fa10460: 00000000 00000000 00000000 00000000 ................
    0fa10470: 00000000 00000000 00000000 00000000 ................
    0fa10480: 00000000 00000000 00000000 00000000 ................
    0fa10490: 00000000 00000000 00000000 00000000 ................
    0fa104a0: 00000000 00000000 00000000 00000000 ................
    0fa104b0: 00000000 00000000 00000000 00000000 ................
    0fa104c0: 00000000 00000000 00000000 00000000 ................
    0fa104d0: 00000000 00000000 00000000 00000000 ................
    0fa104e0: 00000000 00000000 00000000 00000000 ................
    0fa104f0: 00000000 00000000 00000000 00000000 ................
    0fa10500: 00000000 00000000 00000000 00000000 ................
    0fa10510: 00000000 00000000 00000000 00000000 ................
    0fa10520: 00000000 00000000 00000000 00000000 ................
    0fa10530: 00000000 00000000 00000000 00000000 ................
    0fa10540: 00000000 00000000 00000000 00000000 ................
    0fa10550: 00000000 00000000 00000000 00000000 ................
    0fa10560: 00000000 00000000 00000000 00000000 ................
    0fa10570: 00000000 00000000 00000000 00000000 ................
    0fa10580: 00000000 00000000 00000000 00000000 ................
    0fa10590: 00000000 00000000 00000000 00000000 ................
    0fa105a0: 00000000 00000000 00000000 00000000 ................
    0fa105b0: 00000000 00000000 00000000 00000000 ................
    0fa105c0: 00000000 00000000 00000000 00000000 ................
    0fa105d0: 00000000 00000000 00000000 00000000 ................
    0fa105e0: 00000000 00000000 00000000 00000000 ................
    0fa105f0: 00000000 00000000 00000000 00000000 ................
    0fa10600: 00000000 00000000 00000000 00000000 ................
    0fa10610: 00000000 00000000 00000000 00000000 ................
    0fa10620: 00000000 00000000 00000000 00000000 ................
    0fa10630: 00000000 00000000 00000000 00000000 ................
    0fa10640: 00000000 00000000 00000000 00000000 ................
    0fa10650: 00000000 00000000 00000000 00000000 ................
    0fa10660: 00000000 00000000 00000000 00000000 ................
    0fa10670: 00000000 00000000 00000000 00000000 ................
    0fa10680: 00000000 00000000 00000000 00000000 ................
    0fa10690: 00000000 00000000 00000000 00000000 ................
    0fa106a0: 00000000 00000000 00000000 00000000 ................
    0fa106b0: 00000000 00000000 00000000 00000000 ................
    0fa106c0: 00000000 00000000 00000000 00000000 ................
    0fa106d0: 00000000 00000000 00000000 00000000 ................
    0fa106e0: 00000000 00000000 00000000 00000000 ................
    0fa106f0: 00000000 00000000 00000000 00000000 ................
    0fa10700: 00000000 00000000 00000000 00000000 ................
    0fa10710: 00000000 00000000 00000000 00000000 ................
    0fa10720: 00000000 00000000 00000000 00000000 ................
    0fa10730: 00000000 00000000 00000000 00000000 ................
    0fa10740: 00000000 00000000 00000000 00000000 ................
    0fa10750: 00000000 00000000 00000000 00000000 ................
    0fa10760: 00000000 00000000 00000000 00000000 ................
    0fa10770: 00000000 00000000 00000000 00000000 ................
    0fa10780: 00000000 00000000 00000000 00000000 ................
    0fa10790: 00000000 00000000 00000000 00000000 ................
    0fa107a0: 00000000 00000000 00000000 00000000 ................
    0fa107b0: 00000000 00000000 00000000 00000000 ................
    0fa107c0: 00000000 00000000 00000000 00000000 ................
    0fa107d0: 00000000 00000000 00000000 00000000 ................
    0fa107e0: 00000000 00000000 00000000 00000000 ................
    0fa107f0: 00000000 00000000 00000000 00000000 ................
    0fa10800: 00000000 00000000 00000000 00000000 ................
    0fa10810: 00000000 00000000 00000000 00000000 ................
    0fa10820: 00000000 00000000 00000000 00000000 ................
    0fa10830: 00000000 00000000 00000000 00000000 ................
    0fa10840: 00000000 00000000 00000000 00000000 ................
    0fa10850: 00000000 00000000 00000000 00000000 ................
    0fa10860: 00000000 00000000 00000000 00000000 ................
    0fa10870: 00000000 00000000 00000000 00000000 ................
    0fa10880: 00000000 00000000 00000000 00000000 ................
    0fa10890: 00000000 00000000 00000000 00000000 ................
    0fa108a0: 00000000 00000000 00000000 00000000 ................
    0fa108b0: 00000000 00000000 00000000 00000000 ................
    0fa108c0: 00000000 00000000 00000000 00000000 ................
    0fa108d0: 00000000 00000000 00000000 00000000 ................
    0fa108e0: 00000000 00000000 00000000 00000000 ................
    0fa108f0: 00000000 00000000 00000000 00000000 ................
    0fa10900: 00000000 00000000 00000000 00000000 ................
    0fa10910: 00000000 00000000 00000000 00000000 ................
    0fa10920: 00000000 00000000 00000000 00000000 ................
    0fa10930: 00000000 00000000 00000000 00000000 ................
    0fa10940: 00000000 00000000 00000000 00000000 ................
    0fa10950: 00000000 00000000 00000000 00000000 ................
    0fa10960: 00000000 00000000 00000000 00000000 ................
    0fa10970: 00000000 00000000 00000000 00000000 ................
    0fa10980: 00000000 00000000 00000000 00000000 ................
    0fa10990: 00000000 00000000 00000000 00000000 ................
    0fa109a0: 00000000 00000000 00000000 00000000 ................
    0fa109b0: 00000000 00000000 00000000 00000000 ................
    0fa109c0: 00000000 00000000 00000000 00000000 ................
    0fa109d0: 00000000 00000000 00000000 00000000 ................
    0fa109e0: 00000000 00000000 00000000 00000000 ................
    0fa109f0: 00000000 00000000 00000000 00000000 ................
    0fa10a00: 00000000 00000000 00000000 00000000 ................
    0fa10a10: 00000000 00000000 00000000 00000000 ................
    0fa10a20: 00000000 00000000 00000000 00000000 ................
    0fa10a30: 00000000 00000000 00000000 00000000 ................
    0fa10a40: 00000000 00000000 00000000 00000000 ................
    0fa10a50: 00000000 00000000 00000000 00000000 ................
    0fa10a60: 00000000 00000000 00000000 00000000 ................
    0fa10a70: 00000000 00000000 00000000 00000000 ................
    0fa10a80: 00000000 00000000 00000000 00000000 ................
    0fa10a90: 00000000 00000000 00000000 00000000 ................
    0fa10aa0: 00000000 00000000 00000000 00000000 ................
    0fa10ab0: 00000000 00000000 00000000 00000000 ................
    0fa10ac0: 00000000 00000000 00000000 00000000 ................
    0fa10ad0: 00000000 00000000 00000000 00000000 ................
    0fa10ae0: 00000000 00000000 00000000 00000000 ................
    0fa10af0: 00000000 00000000 00000000 00000000 ................
    0fa10b00: 00000000 00000000 00000000 00000000 ................
    0fa10b10: 00000000 00000000 00000000 00000000 ................
    0fa10b20: 00000000 00000000 00000000 00000000 ................
    0fa10b30: 00000000 00000000 00000000 00000000 ................
    0fa10b40: 00000000 00000000 00000000 00000000 ................
    0fa10b50: 00000000 00000000 00000000 00000000 ................
    0fa10b60: 00000000 00000000 00000000 00000000 ................
    0fa10b70: 00000000 00000000 00000000 00000000 ................
    0fa10b80: 00000000 00000000 00000000 00000000 ................
    0fa10b90: 00000000 00000000 00000000 00000000 ................
    0fa10ba0: 00000000 00000000 00000000 00000000 ................
    0fa10bb0: 00000000 00000000 00000000 00000000 ................
    0fa10bc0: 00000000 00000000 00000000 00000000 ................
    0fa10bd0: 00000000 00000000 00000000 00000000 ................
    0fa10be0: 00000000 00000000 00000000 00000000 ................
    0fa10bf0: 00000000 00000000 00000000 00000000 ................
    0fa10c00: 00000000 00000000 00000000 00000000 ................
    0fa10c10: 00000000 00000000 00000000 00000000 ................
    0fa10c20: 00000000 00000000 00000000 00000000 ................
    0fa10c30: 00000000 00000000 00000000 00000000 ................
    0fa10c40: 00000000 00000000 00000000 00000000 ................
    0fa10c50: 00000000 00000000 00000000 00000000 ................
    0fa10c60: 00000000 00000000 00000000 00000000 ................
    0fa10c70: 00000000 00000000 00000000 00000000 ................
    0fa10c80: 00000000 00000000 00000000 00000000 ................
    0fa10c90: 00000000 00000000 00000000 00000000 ................
    0fa10ca0: 00000000 00000000 00000000 00000000 ................
    0fa10cb0: 00000000 00000000 00000000 00000000 ................
    0fa10cc0: 00000000 00000000 00000000 00000000 ................
    0fa10cd0: 00000000 00000000 00000000 00000000 ................
    0fa10ce0: 00000000 00000000 00000000 00000000 ................
    0fa10cf0: 00000000 00000000 00000000 00000000 ................
    0fa10d00: 00000000 00000000 00000000 00000000 ................
    0fa10d10: 00000000 00000000 00000000 00000000 ................
    0fa10d20: 00000000 00000000 00000000 00000000 ................
    0fa10d30: 00000000 00000000 00000000 00000000 ................
    0fa10d40: 00000000 00000000 00000000 00000000 ................
    0fa10d50: 00000000 00000000 00000000 00000000 ................
    0fa10d60: 00000000 00000000 00000000 00000000 ................
    0fa10d70: 00000000 00000000 00000000 00000000 ................
    0fa10d80: 00000000 00000000 00000000 00000000 ................
    0fa10d90: 00000000 00000000 00000000 00000000 ................
    0fa10da0: 00000000 00000000 00000000 00000000 ................
    0fa10db0: 00000000 00000000 00000000 00000000 ................
    0fa10dc0: 00000000 00000000 00000000 00000000 ................
    0fa10dd0: 00000000 00000000 00000000 00000000 ................
    0fa10de0: 00000000 00000000 00000000 00000000 ................
    0fa10df0: 00000000 00000000 00000000 00000000 ................
    0fa10e00: 00000000 00000000 00000000 00000000 ................
    0fa10e10: 00000000 00000000 00000000 00000000 ................
    0fa10e20: 00000000 00000000 00000000 00000000 ................
    0fa10e30: 00000000 00000000 00000000 00000000 ................
    0fa10e40: 00000000 00000000 00000000 00000000 ................
    0fa10e50: 00000000 00000000 00000000 00000000 ................
    0fa10e60: 00000000 00000000 00000000 00000000 ................
    0fa10e70: 00000000 00000000 00000000 00000000 ................
    0fa10e80: 00000000 00000000 00000000 00000000 ................
    0fa10e90: 00000000 00000000 00000000 00000000 ................
    0fa10ea0: 00000000 00000000 00000000 00000000 ................
    0fa10eb0: 00000000 00000000 00000000 00000000 ................
    0fa10ec0: 00000000 00000000 00000000 00000000 ................
    0fa10ed0: 00000000 00000000 00000000 00000000 ................
    0fa10ee0: 00000000 00000000 00000000 00000000 ................
    0fa10ef0: 00000000 00000000 00000000 00000000 ................
    0fa10f00: 00000000 00000000 00000000 00000000 ................
    0fa10f10: 00000000 00000000 00000000 00000000 ................
    0fa10f20: 00000000 00000000 00000000 00000000 ................
    0fa10f30: 00000000 00000000 00000000 00000000 ................
    0fa10f40: 00000000 00000000 00000000 00000000 ................
    0fa10f50: 00000000 00000000 00000000 00000000 ................
    0fa10f60: 00000000 00000000 00000000 00000000 ................
    0fa10f70: 00000000 00000000 00000000 00000000 ................
    0fa10f80: 00000000 00000000 00000000 00000000 ................
    0fa10f90: 00000000 00000000 00000000 00000000 ................
    0fa10fa0: 00000000 00000000 00000000 00000000 ................
    0fa10fb0: 00000000 00000000 00000000 00000000 ................
    0fa10fc0: 00000000 00000000 00000000 00000000 ................
    0fa10fd0: 00000000 00000000 00000000 00000000 ................
    0fa10fe0: 00000000 00000000 00000000 00000000 ................
    0fa10ff0: 00000000 00000000 00000000 00000000 ................
    => md.l 0x0fa18000 0x100
    0fa18000: 68420a00 00000000 00000000 00000000 ..Bh............
    0fa18010: 201030c8 25ecc801 18000407 00000000 .0. ...%........
    0fa18020: 00000000 00000100 00000004 00000002 ................
    0fa18030: 00000004 00000002 00000001 00000000 ................
    0fa18040: 00000002 00000000 00000000 00000000 ................
    0fa18050: 00000000 00000000 00000000 00000000 ................
    0fa18060: 80000000 00000010 00000000 00000000 ................
    0fa18070: 00000008 00000000 00000000 00000000 ................
    0fa18080: 00000000 00000000 00000000 00000000 ................
    0fa18090: 00000000 00000000 00000000 00000000 ................
    0fa180a0: 00000000 00000000 00000000 00000000 ................
    0fa180b0: 00000000 00000000 00000000 00000000 ................
    0fa180c0: 00000000 00000000 00000000 00000000 ................
    0fa180d0: 00000000 00000000 00000000 00000000 ................
    0fa180e0: 00000000 00000000 00000000 00000000 ................
    0fa180f0: 00000000 00000000 00000000 00000000 ................
    0fa18100: 00000000 00000000 00000000 00105101 .............Q..
    0fa18110: 00000007 00000000 00000000 00000000 ................
    0fa18120: 00000000 00000000 00000000 00000000 ................
    0fa18130: 00000000 00000000 00000000 00000000 ................
    0fa18140: 00000000 00000000 00000000 00000000 ................
    0fa18150: 00000000 00000000 00000000 00000000 ................
    0fa18160: 00000000 00000000 00000000 00000000 ................
    0fa18170: 00000000 00000000 00000000 00000000 ................
    0fa18180: 00000000 00000000 00000000 00000000 ................
    0fa18190: 00000000 00000000 00000000 00000000 ................
    0fa181a0: 00000000 00000000 00000000 00000000 ................
    0fa181b0: 00000000 00000000 00000000 00000000 ................
    0fa181c0: 00000000 00000000 00000000 00000000 ................
    0fa181d0: 00000000 00000000 00000000 00000000 ................
    0fa181e0: 00000000 00000000 00000000 00000000 ................
    0fa181f0: 00000000 00000000 00000000 00000000 ................
    0fa18200: 00000000 00000000 00000000 00000000 ................
    0fa18210: 00000000 00000000 00000000 00000000 ................
    0fa18220: 00000000 00000000 00000000 00000000 ................
    0fa18230: 00000000 00000000 00000000 00000000 ................
    0fa18240: 00000000 00000000 00000000 00000000 ................
    0fa18250: 00000000 00000000 00000000 00000000 ................
    0fa18260: 00000000 00000000 00000000 00000000 ................
    0fa18270: 00000000 00000000 00000000 00000000 ................
    0fa18280: 00000000 00000000 00000000 00000000 ................
    0fa18290: 00000000 00000000 00000000 00000000 ................
    0fa182a0: 00000000 00000000 00000000 00000000 ................
    0fa182b0: 00000000 00000000 00000000 00000000 ................
    0fa182c0: 00000000 00000000 00000000 00000000 ................
    0fa182d0: 00000000 00000000 00000000 00000000 ................
    0fa182e0: 00000000 00000000 00000000 00000000 ................
    0fa182f0: 00000000 00000000 00000000 00000000 ................
    0fa18300: 00000000 00000000 00000000 00000000 ................
    0fa18310: 00000000 00000000 00000000 00000000 ................
    0fa18320: 00000000 00000000 00000000 00000000 ................
    0fa18330: 00000000 00000000 00000000 00000000 ................
    0fa18340: 00000000 00000000 00000000 00000000 ................
    0fa18350: 00000000 00000000 00000000 00000000 ................
    0fa18360: 00000000 00000000 00000000 00000000 ................
    0fa18370: 00000000 00000000 00000000 00000000 ................
    0fa18380: 00000000 00000000 00000000 00000000 ................
    0fa18390: 00000000 00000000 00000000 00000000 ................
    0fa183a0: 00000000 00000000 00000000 00000000 ................
    0fa183b0: 00000000 00000000 00000000 00000000 ................
    0fa183c0: 00000000 00000000 00000000 00000000 ................
    0fa183d0: 00000000 00000000 00000000 00000000 ................
    0fa183e0: 00000000 00000000 00000000 00000000 ................
    0fa183f0: 00000000 00000000 00000000 00000000 ................

    I'll get back to you soon on the results from rwmem!

  • I attach rwmem here if it is helpful.

    2705.rwmem

  • VERY helpful Blush

    Here are the results... thank you!!!

    $ ./rwmem 0x0fa10000+0x1000
    0xfa10000 (+0x000) = 0x00000008
    0xfa10004 (+0x004) = 0x00000200
    0xfa10008 (+0x008) = 0x000e0000
    0xfa1000c (+0x00c) = 0x2f3a0023
    0xfa10010 (+0x010) = 0x00000900
    0xfa10014 (+0x014) = 0xffffffff
    0xfa10018 (+0x018) = 0x328f5903
    0xfa1001c (+0x01c) = 0x00d00f00
    0xfa10020 (+0x020) = 0x00000000
    0xfa10024 (+0x024) = 0x01ff00f0
    0xfa10028 (+0x028) = 0x00800f38
    0xfa1002c (+0x02c) = 0x000e0407
    0xfa10030 (+0x030) = 0x00000000
    0xfa10034 (+0x034) = 0x02ff4000
    0xfa10038 (+0x038) = 0x02ff4000
    0xfa1003c (+0x03c) = 0x00000000
    0xfa10040 (+0x040) = 0x3decc801
    0xfa10044 (+0x044) = 0x18002407
    0xfa10048 (+0x048) = 0x00000000
    0xfa1004c (+0x04c) = 0x00000000
    0xfa10050 (+0x050) = 0x00000000
    0xfa10054 (+0x054) = 0x00000000
    0xfa10058 (+0x058) = 0xdd10540c
    0xfa1005c (+0x05c) = 0x00000000
    0xfa10060 (+0x060) = 0x00040100
    0xfa10064 (+0x064) = 0x00040002
    0xfa10068 (+0x068) = 0x00010002
    0xfa1006c (+0x06c) = 0x00020000
    0xfa10070 (+0x070) = 0x00000000
    0xfa10074 (+0x074) = 0x00000000
    0xfa10078 (+0x078) = 0x00000000
    0xfa1007c (+0x07c) = 0x00000000
    0xfa10080 (+0x080) = 0x00000000
    0xfa10084 (+0x084) = 0x00000000
    0xfa10088 (+0x088) = 0x00000000
    0xfa1008c (+0x08c) = 0x00000000
    0xfa10090 (+0x090) = 0x00000000
    0xfa10094 (+0x094) = 0x00000000
    0xfa10098 (+0x098) = 0x00000000
    0xfa1009c (+0x09c) = 0x00000000
    0xfa100a0 (+0x0a0) = 0x00000000
    0xfa100a4 (+0x0a4) = 0x00000000
    0xfa100a8 (+0x0a8) = 0x00000000
    0xfa100ac (+0x0ac) = 0x00000000
    0xfa100b0 (+0x0b0) = 0x00000000
    0xfa100b4 (+0x0b4) = 0x00000000
    0xfa100b8 (+0x0b8) = 0x00000000
    0xfa100bc (+0x0bc) = 0x00000000
    0xfa100c0 (+0x0c0) = 0x00000000
    0xfa100c4 (+0x0c4) = 0x00000000
    0xfa100c8 (+0x0c8) = 0x00000000
    0xfa100cc (+0x0cc) = 0x00000000
    0xfa100d0 (+0x0d0) = 0x00000000
    0xfa100d4 (+0x0d4) = 0x00000000
    0xfa100d8 (+0x0d8) = 0x00000000
    0xfa100dc (+0x0dc) = 0x00000000
    0xfa100e0 (+0x0e0) = 0x01100100
    0xfa100e4 (+0x0e4) = 0x01300120
    0xfa100e8 (+0x0e8) = 0x00000140
    0xfa100ec (+0x0ec) = 0x00000000
    0xfa100f0 (+0x0f0) = 0x00000000
    0xfa100f4 (+0x0f4) = 0x00000000
    0xfa100f8 (+0x0f8) = 0x00004e20
    0xfa100fc (+0x0fc) = 0x10040000
    0xfa10100 (+0x100) = 0x00000000
    0xfa10104 (+0x104) = 0x00000000
    0xfa10108 (+0x108) = 0x00000000
    0xfa1010c (+0x10c) = 0x00000000
    0xfa10110 (+0x110) = 0x00044f11
    0xfa10114 (+0x114) = 0x00110000
    0xfa10118 (+0x118) = 0x20000100
    0xfa1011c (+0x11c) = 0x00000081
    0xfa10120 (+0x120) = 0x00000000
    0xfa10124 (+0x124) = 0x00000000
    0xfa10128 (+0x128) = 0x00000000
    0xfa1012c (+0x12c) = 0x00000000
    0xfa10130 (+0x130) = 0x00000000
    0xfa10134 (+0x134) = 0x00000000
    0xfa10138 (+0x138) = 0x00000000
    0xfa1013c (+0x13c) = 0x00000000
    0xfa10140 (+0x140) = 0x00000000
    0xfa10144 (+0x144) = 0x00000000
    0xfa10148 (+0x148) = 0x00000000
    0xfa1014c (+0x14c) = 0x00000000
    0xfa10150 (+0x150) = 0x00000000
    0xfa10154 (+0x154) = 0x00000000
    0xfa10158 (+0x158) = 0x00000000
    0xfa1015c (+0x15c) = 0x00000000
    0xfa10160 (+0x160) = 0x00000000
    0xfa10164 (+0x164) = 0x00000000
    0xfa10168 (+0x168) = 0x00000000
    0xfa1016c (+0x16c) = 0x00000000
    0xfa10170 (+0x170) = 0x00000000
    0xfa10174 (+0x174) = 0x00000000
    0xfa10178 (+0x178) = 0x00000000
    0xfa1017c (+0x17c) = 0x00000000
    0xfa10180 (+0x180) = 0x00000000
    0xfa10184 (+0x184) = 0x00000000
    0xfa10188 (+0x188) = 0x00000000
    0xfa1018c (+0x18c) = 0x00000000
    0xfa10190 (+0x190) = 0x00000000
    0xfa10194 (+0x194) = 0x00000000
    0xfa10198 (+0x198) = 0x00000000
    0xfa1019c (+0x19c) = 0x00000000
    0xfa101a0 (+0x1a0) = 0x00000000
    0xfa101a4 (+0x1a4) = 0x00000000
    0xfa101a8 (+0x1a8) = 0x00000000
    0xfa101ac (+0x1ac) = 0x00000000
    0xfa101b0 (+0x1b0) = 0x00000000
    0xfa101b4 (+0x1b4) = 0x00000000
    0xfa101b8 (+0x1b8) = 0x00000000
    0xfa101bc (+0x1bc) = 0x00000000
    0xfa101c0 (+0x1c0) = 0x00000000
    0xfa101c4 (+0x1c4) = 0x00000000
    0xfa101c8 (+0x1c8) = 0x00000000
    0xfa101cc (+0x1cc) = 0x00000000
    0xfa101d0 (+0x1d0) = 0x00000000
    0xfa101d4 (+0x1d4) = 0x00000000
    0xfa101d8 (+0x1d8) = 0x00000000
    0xfa101dc (+0x1dc) = 0x00000000
    0xfa101e0 (+0x1e0) = 0x00000000
    0xfa101e4 (+0x1e4) = 0x00000000
    0xfa101e8 (+0x1e8) = 0x00000000
    0xfa101ec (+0x1ec) = 0x00000000
    0xfa101f0 (+0x1f0) = 0x00000000
    0xfa101f4 (+0x1f4) = 0x00000000
    0xfa101f8 (+0x1f8) = 0x00000000
    0xfa101fc (+0x1fc) = 0x00000000
    0xfa10200 (+0x200) = 0x00000510
    0xfa10204 (+0x204) = 0x000030c8
    0xfa10208 (+0x208) = 0x00000101
    0xfa1020c (+0x20c) = 0x00000000
    0xfa10210 (+0x210) = 0x00000000
    0xfa10214 (+0x214) = 0x00000006
    0xfa10218 (+0x218) = 0x00000006
    0xfa1021c (+0x21c) = 0x00000000
    0xfa10220 (+0x220) = 0x818da000
    0xfa10224 (+0x224) = 0x00000000
    0xfa10228 (+0x228) = 0x00000000
    0xfa1022c (+0x22c) = 0x00000000
    0xfa10230 (+0x230) = 0x00000000
    0xfa10234 (+0x234) = 0x00000000
    0xfa10238 (+0x238) = 0x00000000
    0xfa1023c (+0x23c) = 0x00000000
    0xfa10240 (+0x240) = 0x00011000
    0xfa10244 (+0x244) = 0x00000001
    0xfa10248 (+0x248) = 0x00000000
    0xfa1024c (+0x24c) = 0x00000000
    0xfa10250 (+0x250) = 0xfdf9a080
    0xfa10254 (+0x254) = 0x00000000
    0xfa10258 (+0x258) = 0x0000002f
    0xfa1025c (+0x25c) = 0x00000900
    0xfa10260 (+0x260) = 0x00000000
    0xfa10264 (+0x264) = 0x00000000
    0xfa10268 (+0x268) = 0x00000000
    0xfa1026c (+0x26c) = 0x00000000
    0xfa10270 (+0x270) = 0x00000000
    0xfa10274 (+0x274) = 0x00000000
    0xfa10278 (+0x278) = 0x00000000
    0xfa1027c (+0x27c) = 0x00000000
    0xfa10280 (+0x280) = 0x00000000
    0xfa10284 (+0x284) = 0x00000000
    0xfa10288 (+0x288) = 0x00000000
    0xfa1028c (+0x28c) = 0x00000000
    0xfa10290 (+0x290) = 0x00000000
    0xfa10294 (+0x294) = 0x00000000
    0xfa10298 (+0x298) = 0x00000000
    0xfa1029c (+0x29c) = 0x00000000
    0xfa102a0 (+0x2a0) = 0x00000000
    0xfa102a4 (+0x2a4) = 0x00000000
    0xfa102a8 (+0x2a8) = 0x00000000
    0xfa102ac (+0x2ac) = 0x00000000
    0xfa102b0 (+0x2b0) = 0x00000000
    0xfa102b4 (+0x2b4) = 0x00000000
    0xfa102b8 (+0x2b8) = 0x00000000
    0xfa102bc (+0x2bc) = 0x00000000
    0xfa102c0 (+0x2c0) = 0x00000000
    0xfa102c4 (+0x2c4) = 0x00000000
    0xfa102c8 (+0x2c8) = 0x00000000
    0xfa102cc (+0x2cc) = 0x00000000
    0xfa102d0 (+0x2d0) = 0x00000000
    0xfa102d4 (+0x2d4) = 0x00000000
    0xfa102d8 (+0x2d8) = 0x00000000
    0xfa102dc (+0x2dc) = 0x00000000
    0xfa102e0 (+0x2e0) = 0x00000000
    0xfa102e4 (+0x2e4) = 0x00000000
    0xfa102e8 (+0x2e8) = 0x00000000
    0xfa102ec (+0x2ec) = 0x00000000
    0xfa102f0 (+0x2f0) = 0x00000000
    0xfa102f4 (+0x2f4) = 0x00000000
    0xfa102f8 (+0x2f8) = 0x00000000
    0xfa102fc (+0x2fc) = 0x00000000
    0xfa10300 (+0x300) = 0x00000000
    0xfa10304 (+0x304) = 0x00000000
    0xfa10308 (+0x308) = 0x00000000
    0xfa1030c (+0x30c) = 0x00000000
    0xfa10310 (+0x310) = 0x00000000
    0xfa10314 (+0x314) = 0x00000000
    0xfa10318 (+0x318) = 0x00000000
    0xfa1031c (+0x31c) = 0x00000000
    0xfa10320 (+0x320) = 0x00000000
    0xfa10324 (+0x324) = 0x00000000
    0xfa10328 (+0x328) = 0x00000000
    0xfa1032c (+0x32c) = 0x00000000
    0xfa10330 (+0x330) = 0x00000000
    0xfa10334 (+0x334) = 0x00000000
    0xfa10338 (+0x338) = 0x00000000
    0xfa1033c (+0x33c) = 0x00000000
    0xfa10340 (+0x340) = 0x00000000
    0xfa10344 (+0x344) = 0x00000000
    0xfa10348 (+0x348) = 0x00000000
    0xfa1034c (+0x34c) = 0x00000000
    0xfa10350 (+0x350) = 0x00000000
    0xfa10354 (+0x354) = 0x00000000
    0xfa10358 (+0x358) = 0x00000000
    0xfa1035c (+0x35c) = 0x00000000
    0xfa10360 (+0x360) = 0x00000000
    0xfa10364 (+0x364) = 0x00000000
    0xfa10368 (+0x368) = 0x00000000
    0xfa1036c (+0x36c) = 0x00000000
    0xfa10370 (+0x370) = 0x00000000
    0xfa10374 (+0x374) = 0x00000000
    0xfa10378 (+0x378) = 0x00000000
    0xfa1037c (+0x37c) = 0x00000000
    0xfa10380 (+0x380) = 0x00000000
    0xfa10384 (+0x384) = 0x00000000
    0xfa10388 (+0x388) = 0x00000000
    0xfa1038c (+0x38c) = 0x00000000
    0xfa10390 (+0x390) = 0x00000000
    0xfa10394 (+0x394) = 0x00000000
    0xfa10398 (+0x398) = 0x00000000
    0xfa1039c (+0x39c) = 0x00000000
    0xfa103a0 (+0x3a0) = 0x00000000
    0xfa103a4 (+0x3a4) = 0x00000000
    0xfa103a8 (+0x3a8) = 0x00000000
    0xfa103ac (+0x3ac) = 0x00000000
    0xfa103b0 (+0x3b0) = 0x00000000
    0xfa103b4 (+0x3b4) = 0x00000000
    0xfa103b8 (+0x3b8) = 0x00000000
    0xfa103bc (+0x3bc) = 0x00000000
    0xfa103c0 (+0x3c0) = 0x00000000
    0xfa103c4 (+0x3c4) = 0x00000000
    0xfa103c8 (+0x3c8) = 0x00000000
    0xfa103cc (+0x3cc) = 0x00000000
    0xfa103d0 (+0x3d0) = 0x00000000
    0xfa103d4 (+0x3d4) = 0x00000000
    0xfa103d8 (+0x3d8) = 0x00000000
    0xfa103dc (+0x3dc) = 0x00000000
    0xfa103e0 (+0x3e0) = 0x00000000
    0xfa103e4 (+0x3e4) = 0x00000000
    0xfa103e8 (+0x3e8) = 0x00000000
    0xfa103ec (+0x3ec) = 0x00000000
    0xfa103f0 (+0x3f0) = 0x00000000
    0xfa103f4 (+0x3f4) = 0x00000000
    0xfa103f8 (+0x3f8) = 0x00000000
    0xfa103fc (+0x3fc) = 0x00000000
    0xfa10400 (+0x400) = 0x00000000
    0xfa10404 (+0x404) = 0x00000000
    0xfa10408 (+0x408) = 0x00000000
    0xfa1040c (+0x40c) = 0x00000000
    0xfa10410 (+0x410) = 0x00000000
    0xfa10414 (+0x414) = 0x00000000
    0xfa10418 (+0x418) = 0x00000000
    0xfa1041c (+0x41c) = 0x00000000
    0xfa10420 (+0x420) = 0x00000000
    0xfa10424 (+0x424) = 0x00000000
    0xfa10428 (+0x428) = 0x00000000
    0xfa1042c (+0x42c) = 0x00000000
    0xfa10430 (+0x430) = 0x00000000
    0xfa10434 (+0x434) = 0x00000000
    0xfa10438 (+0x438) = 0x00000000
    0xfa1043c (+0x43c) = 0x00000000
    0xfa10440 (+0x440) = 0x00000000
    0xfa10444 (+0x444) = 0x00000000
    0xfa10448 (+0x448) = 0x00000000
    0xfa1044c (+0x44c) = 0x00000000
    0xfa10450 (+0x450) = 0x00000000
    0xfa10454 (+0x454) = 0x00000000
    0xfa10458 (+0x458) = 0x00000000
    0xfa1045c (+0x45c) = 0x00000000
    0xfa10460 (+0x460) = 0x00000000
    0xfa10464 (+0x464) = 0x00000000
    0xfa10468 (+0x468) = 0x00000000
    0xfa1046c (+0x46c) = 0x00000000
    0xfa10470 (+0x470) = 0x00000000
    0xfa10474 (+0x474) = 0x00000000
    0xfa10478 (+0x478) = 0x00000000
    0xfa1047c (+0x47c) = 0x00000000
    0xfa10480 (+0x480) = 0x00000000
    0xfa10484 (+0x484) = 0x00000000
    0xfa10488 (+0x488) = 0x00000000
    0xfa1048c (+0x48c) = 0x00000000
    0xfa10490 (+0x490) = 0x00000000
    0xfa10494 (+0x494) = 0x00000000
    0xfa10498 (+0x498) = 0x00000000
    0xfa1049c (+0x49c) = 0x00000000
    0xfa104a0 (+0x4a0) = 0x00000000
    0xfa104a4 (+0x4a4) = 0x00000000
    0xfa104a8 (+0x4a8) = 0x00000000
    0xfa104ac (+0x4ac) = 0x00000000
    0xfa104b0 (+0x4b0) = 0x00000000
    0xfa104b4 (+0x4b4) = 0x00000000
    0xfa104b8 (+0x4b8) = 0x00000000
    0xfa104bc (+0x4bc) = 0x00000000
    0xfa104c0 (+0x4c0) = 0x00000000
    0xfa104c4 (+0x4c4) = 0x00000000
    0xfa104c8 (+0x4c8) = 0x00000000
    0xfa104cc (+0x4cc) = 0x00000000
    0xfa104d0 (+0x4d0) = 0x00000000
    0xfa104d4 (+0x4d4) = 0x00000000
    0xfa104d8 (+0x4d8) = 0x00000000
    0xfa104dc (+0x4dc) = 0x00000000
    0xfa104e0 (+0x4e0) = 0x00000000
    0xfa104e4 (+0x4e4) = 0x00000000
    0xfa104e8 (+0x4e8) = 0x00000000
    0xfa104ec (+0x4ec) = 0x00000000
    0xfa104f0 (+0x4f0) = 0x00000000
    0xfa104f4 (+0x4f4) = 0x00000000
    0xfa104f8 (+0x4f8) = 0x00000000
    0xfa104fc (+0x4fc) = 0x00000000
    0xfa10500 (+0x500) = 0x00000000
    0xfa10504 (+0x504) = 0x00000000
    0xfa10508 (+0x508) = 0x00000000
    0xfa1050c (+0x50c) = 0x00000000
    0xfa10510 (+0x510) = 0x00000000
    0xfa10514 (+0x514) = 0x00000000
    0xfa10518 (+0x518) = 0x00000000
    0xfa1051c (+0x51c) = 0x00000000
    0xfa10520 (+0x520) = 0x00000000
    0xfa10524 (+0x524) = 0x00000000
    0xfa10528 (+0x528) = 0x00000000
    0xfa1052c (+0x52c) = 0x00000000
    0xfa10530 (+0x530) = 0x00000000
    0xfa10534 (+0x534) = 0x00000000
    0xfa10538 (+0x538) = 0x00000000
    0xfa1053c (+0x53c) = 0x00000000
    0xfa10540 (+0x540) = 0x00000000
    0xfa10544 (+0x544) = 0x00000000
    0xfa10548 (+0x548) = 0x00000000
    0xfa1054c (+0x54c) = 0x00000000
    0xfa10550 (+0x550) = 0x00000000
    0xfa10554 (+0x554) = 0x00000000
    0xfa10558 (+0x558) = 0x00000000
    0xfa1055c (+0x55c) = 0x00000000
    0xfa10560 (+0x560) = 0x00000000
    0xfa10564 (+0x564) = 0x00000000
    0xfa10568 (+0x568) = 0x00000000
    0xfa1056c (+0x56c) = 0x00000000
    0xfa10570 (+0x570) = 0x00000000
    0xfa10574 (+0x574) = 0x00000000
    0xfa10578 (+0x578) = 0x00000000
    0xfa1057c (+0x57c) = 0x00000000
    0xfa10580 (+0x580) = 0x00000000
    0xfa10584 (+0x584) = 0x00000000
    0xfa10588 (+0x588) = 0x00000000
    0xfa1058c (+0x58c) = 0x00000000
    0xfa10590 (+0x590) = 0x00000000
    0xfa10594 (+0x594) = 0x00000000
    0xfa10598 (+0x598) = 0x00000000
    0xfa1059c (+0x59c) = 0x00000000
    0xfa105a0 (+0x5a0) = 0x00000000
    0xfa105a4 (+0x5a4) = 0x00000000
    0xfa105a8 (+0x5a8) = 0x00000000
    0xfa105ac (+0x5ac) = 0x00000000
    0xfa105b0 (+0x5b0) = 0x00000000
    0xfa105b4 (+0x5b4) = 0x00000000
    0xfa105b8 (+0x5b8) = 0x00000000
    0xfa105bc (+0x5bc) = 0x00000000
    0xfa105c0 (+0x5c0) = 0x00000000
    0xfa105c4 (+0x5c4) = 0x00000000
    0xfa105c8 (+0x5c8) = 0x00000000
    0xfa105cc (+0x5cc) = 0x00000000
    0xfa105d0 (+0x5d0) = 0x00000000
    0xfa105d4 (+0x5d4) = 0x00000000
    0xfa105d8 (+0x5d8) = 0x00000000
    0xfa105dc (+0x5dc) = 0x00000000
    0xfa105e0 (+0x5e0) = 0x00000000
    0xfa105e4 (+0x5e4) = 0x00000000
    0xfa105e8 (+0x5e8) = 0x00000000
    0xfa105ec (+0x5ec) = 0x00000000
    0xfa105f0 (+0x5f0) = 0x00000000
    0xfa105f4 (+0x5f4) = 0x00000000
    0xfa105f8 (+0x5f8) = 0x00000000
    0xfa105fc (+0x5fc) = 0x00000000
    0xfa10600 (+0x600) = 0x00000000
    0xfa10604 (+0x604) = 0x00000000
    0xfa10608 (+0x608) = 0x00000000
    0xfa1060c (+0x60c) = 0x00000000
    0xfa10610 (+0x610) = 0x00000000
    0xfa10614 (+0x614) = 0x00000000
    0xfa10618 (+0x618) = 0x00000000
    0xfa1061c (+0x61c) = 0x00000000
    0xfa10620 (+0x620) = 0x00000000
    0xfa10624 (+0x624) = 0x00000000
    0xfa10628 (+0x628) = 0x00000000
    0xfa1062c (+0x62c) = 0x00000000
    0xfa10630 (+0x630) = 0x00000000
    0xfa10634 (+0x634) = 0x00000000
    0xfa10638 (+0x638) = 0x00000000
    0xfa1063c (+0x63c) = 0x00000000
    0xfa10640 (+0x640) = 0x00000000
    0xfa10644 (+0x644) = 0x00000000
    0xfa10648 (+0x648) = 0x00000000
    0xfa1064c (+0x64c) = 0x00000000
    0xfa10650 (+0x650) = 0x00000000
    0xfa10654 (+0x654) = 0x00000000
    0xfa10658 (+0x658) = 0x00000000
    0xfa1065c (+0x65c) = 0x00000000
    0xfa10660 (+0x660) = 0x00000000
    0xfa10664 (+0x664) = 0x00000000
    0xfa10668 (+0x668) = 0x00000000
    0xfa1066c (+0x66c) = 0x00000000
    0xfa10670 (+0x670) = 0x00000000
    0xfa10674 (+0x674) = 0x00000000
    0xfa10678 (+0x678) = 0x00000000
    0xfa1067c (+0x67c) = 0x00000000
    0xfa10680 (+0x680) = 0x00000000
    0xfa10684 (+0x684) = 0x00000000
    0xfa10688 (+0x688) = 0x00000000
    0xfa1068c (+0x68c) = 0x00000000
    0xfa10690 (+0x690) = 0x00000000
    0xfa10694 (+0x694) = 0x00000000
    0xfa10698 (+0x698) = 0x00000000
    0xfa1069c (+0x69c) = 0x00000000
    0xfa106a0 (+0x6a0) = 0x00000000
    0xfa106a4 (+0x6a4) = 0x00000000
    0xfa106a8 (+0x6a8) = 0x00000000
    0xfa106ac (+0x6ac) = 0x00000000
    0xfa106b0 (+0x6b0) = 0x00000000
    0xfa106b4 (+0x6b4) = 0x00000000
    0xfa106b8 (+0x6b8) = 0x00000000
    0xfa106bc (+0x6bc) = 0x00000000
    0xfa106c0 (+0x6c0) = 0x00000000
    0xfa106c4 (+0x6c4) = 0x00000000
    0xfa106c8 (+0x6c8) = 0x00000000
    0xfa106cc (+0x6cc) = 0x00000000
    0xfa106d0 (+0x6d0) = 0x00000000
    0xfa106d4 (+0x6d4) = 0x00000000
    0xfa106d8 (+0x6d8) = 0x00000000
    0xfa106dc (+0x6dc) = 0x00000000
    0xfa106e0 (+0x6e0) = 0x00000000
    0xfa106e4 (+0x6e4) = 0x00000000
    0xfa106e8 (+0x6e8) = 0x00000000
    0xfa106ec (+0x6ec) = 0x00000000
    0xfa106f0 (+0x6f0) = 0x00000000
    0xfa106f4 (+0x6f4) = 0x00000000
    0xfa106f8 (+0x6f8) = 0x00000000
    0xfa106fc (+0x6fc) = 0x00000000
    0xfa10700 (+0x700) = 0x00000000
    0xfa10704 (+0x704) = 0x00000000
    0xfa10708 (+0x708) = 0x00000000
    0xfa1070c (+0x70c) = 0x00000000
    0xfa10710 (+0x710) = 0x00000000
    0xfa10714 (+0x714) = 0x00000000
    0xfa10718 (+0x718) = 0x00000000
    0xfa1071c (+0x71c) = 0x00000000
    0xfa10720 (+0x720) = 0x00000000
    0xfa10724 (+0x724) = 0x00000000
    0xfa10728 (+0x728) = 0x00000000
    0xfa1072c (+0x72c) = 0x00000000
    0xfa10730 (+0x730) = 0x00000000
    0xfa10734 (+0x734) = 0x00000000
    0xfa10738 (+0x738) = 0x00000000
    0xfa1073c (+0x73c) = 0x00000000
    0xfa10740 (+0x740) = 0x00000000
    0xfa10744 (+0x744) = 0x00000000
    0xfa10748 (+0x748) = 0x00000000
    0xfa1074c (+0x74c) = 0x00000000
    0xfa10750 (+0x750) = 0x00000000
    0xfa10754 (+0x754) = 0x00000000
    0xfa10758 (+0x758) = 0x00000000
    0xfa1075c (+0x75c) = 0x00000000
    0xfa10760 (+0x760) = 0x00000000
    0xfa10764 (+0x764) = 0x00000000
    0xfa10768 (+0x768) = 0x00000000
    0xfa1076c (+0x76c) = 0x00000000
    0xfa10770 (+0x770) = 0x00000000
    0xfa10774 (+0x774) = 0x00000000
    0xfa10778 (+0x778) = 0x00000000
    0xfa1077c (+0x77c) = 0x00000000
    0xfa10780 (+0x780) = 0x00000000
    0xfa10784 (+0x784) = 0x00000000
    0xfa10788 (+0x788) = 0x00000000
    0xfa1078c (+0x78c) = 0x00000000
    0xfa10790 (+0x790) = 0x00000000
    0xfa10794 (+0x794) = 0x00000000
    0xfa10798 (+0x798) = 0x00000000
    0xfa1079c (+0x79c) = 0x00000000
    0xfa107a0 (+0x7a0) = 0x00000000
    0xfa107a4 (+0x7a4) = 0x00000000
    0xfa107a8 (+0x7a8) = 0x00000000
    0xfa107ac (+0x7ac) = 0x00000000
    0xfa107b0 (+0x7b0) = 0x00000000
    0xfa107b4 (+0x7b4) = 0x00000000
    0xfa107b8 (+0x7b8) = 0x00000000
    0xfa107bc (+0x7bc) = 0x00000000
    0xfa107c0 (+0x7c0) = 0x00000000
    0xfa107c4 (+0x7c4) = 0x00000000
    0xfa107c8 (+0x7c8) = 0x00000000
    0xfa107cc (+0x7cc) = 0x00000000
    0xfa107d0 (+0x7d0) = 0x00000000
    0xfa107d4 (+0x7d4) = 0x00000000
    0xfa107d8 (+0x7d8) = 0x00000000
    0xfa107dc (+0x7dc) = 0x00000000
    0xfa107e0 (+0x7e0) = 0x00000000
    0xfa107e4 (+0x7e4) = 0x00000000
    0xfa107e8 (+0x7e8) = 0x00000000
    0xfa107ec (+0x7ec) = 0x00000000
    0xfa107f0 (+0x7f0) = 0x00000000
    0xfa107f4 (+0x7f4) = 0x00000000
    0xfa107f8 (+0x7f8) = 0x00000000
    0xfa107fc (+0x7fc) = 0x00000000
    0xfa10800 (+0x800) = 0x00000000
    0xfa10804 (+0x804) = 0x00000000
    0xfa10808 (+0x808) = 0x00000000
    0xfa1080c (+0x80c) = 0x00000000
    0xfa10810 (+0x810) = 0x00000000
    0xfa10814 (+0x814) = 0x00000000
    0xfa10818 (+0x818) = 0x00000000
    0xfa1081c (+0x81c) = 0x00000000
    0xfa10820 (+0x820) = 0x00000000
    0xfa10824 (+0x824) = 0x00000000
    0xfa10828 (+0x828) = 0x00000000
    0xfa1082c (+0x82c) = 0x00000000
    0xfa10830 (+0x830) = 0x00000000
    0xfa10834 (+0x834) = 0x00000000
    0xfa10838 (+0x838) = 0x00000000
    0xfa1083c (+0x83c) = 0x00000000
    0xfa10840 (+0x840) = 0x00000000
    0xfa10844 (+0x844) = 0x00000000
    0xfa10848 (+0x848) = 0x00000000
    0xfa1084c (+0x84c) = 0x00000000
    0xfa10850 (+0x850) = 0x00000000
    0xfa10854 (+0x854) = 0x00000000
    0xfa10858 (+0x858) = 0x00000000
    0xfa1085c (+0x85c) = 0x00000000
    0xfa10860 (+0x860) = 0x00000000
    0xfa10864 (+0x864) = 0x00000000
    0xfa10868 (+0x868) = 0x00000000
    0xfa1086c (+0x86c) = 0x00000000
    0xfa10870 (+0x870) = 0x00000000
    0xfa10874 (+0x874) = 0x00000000
    0xfa10878 (+0x878) = 0x00000000
    0xfa1087c (+0x87c) = 0x00000000
    0xfa10880 (+0x880) = 0x00000000
    0xfa10884 (+0x884) = 0x00000000
    0xfa10888 (+0x888) = 0x00000000
    0xfa1088c (+0x88c) = 0x00000000
    0xfa10890 (+0x890) = 0x00000000
    0xfa10894 (+0x894) = 0x00000000
    0xfa10898 (+0x898) = 0x00000000
    0xfa1089c (+0x89c) = 0x00000000
    0xfa108a0 (+0x8a0) = 0x00000000
    0xfa108a4 (+0x8a4) = 0x00000000
    0xfa108a8 (+0x8a8) = 0x00000000
    0xfa108ac (+0x8ac) = 0x00000000
    0xfa108b0 (+0x8b0) = 0x00000000
    0xfa108b4 (+0x8b4) = 0x00000000
    0xfa108b8 (+0x8b8) = 0x00000000
    0xfa108bc (+0x8bc) = 0x00000000
    0xfa108c0 (+0x8c0) = 0x00000000
    0xfa108c4 (+0x8c4) = 0x00000000
    0xfa108c8 (+0x8c8) = 0x00000000
    0xfa108cc (+0x8cc) = 0x00000000
    0xfa108d0 (+0x8d0) = 0x00000000
    0xfa108d4 (+0x8d4) = 0x00000000
    0xfa108d8 (+0x8d8) = 0x00000000
    0xfa108dc (+0x8dc) = 0x00000000
    0xfa108e0 (+0x8e0) = 0x00000000
    0xfa108e4 (+0x8e4) = 0x00000000
    0xfa108e8 (+0x8e8) = 0x00000000
    0xfa108ec (+0x8ec) = 0x00000000
    0xfa108f0 (+0x8f0) = 0x00000000
    0xfa108f4 (+0x8f4) = 0x00000000
    0xfa108f8 (+0x8f8) = 0x00000000
    0xfa108fc (+0x8fc) = 0x00000000
    0xfa10900 (+0x900) = 0x00000000
    0xfa10904 (+0x904) = 0x00000000
    0xfa10908 (+0x908) = 0x00000000
    0xfa1090c (+0x90c) = 0x00000000
    0xfa10910 (+0x910) = 0x00000000
    0xfa10914 (+0x914) = 0x00000000
    0xfa10918 (+0x918) = 0x00000000
    0xfa1091c (+0x91c) = 0x00000000
    0xfa10920 (+0x920) = 0x00000000
    0xfa10924 (+0x924) = 0x00000000
    0xfa10928 (+0x928) = 0x00000000
    0xfa1092c (+0x92c) = 0x00000000
    0xfa10930 (+0x930) = 0x00000000
    0xfa10934 (+0x934) = 0x00000000
    0xfa10938 (+0x938) = 0x00000000
    0xfa1093c (+0x93c) = 0x00000000
    0xfa10940 (+0x940) = 0x00000000
    0xfa10944 (+0x944) = 0x00000000
    0xfa10948 (+0x948) = 0x00000000
    0xfa1094c (+0x94c) = 0x00000000
    0xfa10950 (+0x950) = 0x00000000
    0xfa10954 (+0x954) = 0x00000000
    0xfa10958 (+0x958) = 0x00000000
    0xfa1095c (+0x95c) = 0x00000000
    0xfa10960 (+0x960) = 0x00000000
    0xfa10964 (+0x964) = 0x00000000
    0xfa10968 (+0x968) = 0x00000000
    0xfa1096c (+0x96c) = 0x00000000
    0xfa10970 (+0x970) = 0x00000000
    0xfa10974 (+0x974) = 0x00000000
    0xfa10978 (+0x978) = 0x00000000
    0xfa1097c (+0x97c) = 0x00000000
    0xfa10980 (+0x980) = 0x00000000
    0xfa10984 (+0x984) = 0x00000000
    0xfa10988 (+0x988) = 0x00000000
    0xfa1098c (+0x98c) = 0x00000000
    0xfa10990 (+0x990) = 0x00000000
    0xfa10994 (+0x994) = 0x00000000
    0xfa10998 (+0x998) = 0x00000000
    0xfa1099c (+0x99c) = 0x00000000
    0xfa109a0 (+0x9a0) = 0x00000000
    0xfa109a4 (+0x9a4) = 0x00000000
    0xfa109a8 (+0x9a8) = 0x00000000
    0xfa109ac (+0x9ac) = 0x00000000
    0xfa109b0 (+0x9b0) = 0x00000000
    0xfa109b4 (+0x9b4) = 0x00000000
    0xfa109b8 (+0x9b8) = 0x00000000
    0xfa109bc (+0x9bc) = 0x00000000
    0xfa109c0 (+0x9c0) = 0x00000000
    0xfa109c4 (+0x9c4) = 0x00000000
    0xfa109c8 (+0x9c8) = 0x00000000
    0xfa109cc (+0x9cc) = 0x00000000
    0xfa109d0 (+0x9d0) = 0x00000000
    0xfa109d4 (+0x9d4) = 0x00000000
    0xfa109d8 (+0x9d8) = 0x00000000
    0xfa109dc (+0x9dc) = 0x00000000
    0xfa109e0 (+0x9e0) = 0x00000000
    0xfa109e4 (+0x9e4) = 0x00000000
    0xfa109e8 (+0x9e8) = 0x00000000
    0xfa109ec (+0x9ec) = 0x00000000
    0xfa109f0 (+0x9f0) = 0x00000000
    0xfa109f4 (+0x9f4) = 0x00000000
    0xfa109f8 (+0x9f8) = 0x00000000
    0xfa109fc (+0x9fc) = 0x00000000
    0xfa10a00 (+0xa00) = 0x00000000
    0xfa10a04 (+0xa04) = 0x00000000
    0xfa10a08 (+0xa08) = 0x00000000
    0xfa10a0c (+0xa0c) = 0x00000000
    0xfa10a10 (+0xa10) = 0x00000000
    0xfa10a14 (+0xa14) = 0x00000000
    0xfa10a18 (+0xa18) = 0x00000000
    0xfa10a1c (+0xa1c) = 0x00000000
    0xfa10a20 (+0xa20) = 0x00000000
    0xfa10a24 (+0xa24) = 0x00000000
    0xfa10a28 (+0xa28) = 0x00000000
    0xfa10a2c (+0xa2c) = 0x00000000
    0xfa10a30 (+0xa30) = 0x00000000
    0xfa10a34 (+0xa34) = 0x00000000
    0xfa10a38 (+0xa38) = 0x00000000
    0xfa10a3c (+0xa3c) = 0x00000000
    0xfa10a40 (+0xa40) = 0x00000000
    0xfa10a44 (+0xa44) = 0x00000000
    0xfa10a48 (+0xa48) = 0x00000000
    0xfa10a4c (+0xa4c) = 0x00000000
    0xfa10a50 (+0xa50) = 0x00000000
    0xfa10a54 (+0xa54) = 0x00000000
    0xfa10a58 (+0xa58) = 0x00000000
    0xfa10a5c (+0xa5c) = 0x00000000
    0xfa10a60 (+0xa60) = 0x00000000
    0xfa10a64 (+0xa64) = 0x00000000
    0xfa10a68 (+0xa68) = 0x00000000
    0xfa10a6c (+0xa6c) = 0x00000000
    0xfa10a70 (+0xa70) = 0x00000000
    0xfa10a74 (+0xa74) = 0x00000000
    0xfa10a78 (+0xa78) = 0x00000000
    0xfa10a7c (+0xa7c) = 0x00000000
    0xfa10a80 (+0xa80) = 0x00000000
    0xfa10a84 (+0xa84) = 0x00000000
    0xfa10a88 (+0xa88) = 0x00000000
    0xfa10a8c (+0xa8c) = 0x00000000
    0xfa10a90 (+0xa90) = 0x00000000
    0xfa10a94 (+0xa94) = 0x00000000
    0xfa10a98 (+0xa98) = 0x00000000
    0xfa10a9c (+0xa9c) = 0x00000000
    0xfa10aa0 (+0xaa0) = 0x00000000
    0xfa10aa4 (+0xaa4) = 0x00000000
    0xfa10aa8 (+0xaa8) = 0x00000000
    0xfa10aac (+0xaac) = 0x00000000
    0xfa10ab0 (+0xab0) = 0x00000000
    0xfa10ab4 (+0xab4) = 0x00000000
    0xfa10ab8 (+0xab8) = 0x00000000
    0xfa10abc (+0xabc) = 0x00000000
    0xfa10ac0 (+0xac0) = 0x00000000
    0xfa10ac4 (+0xac4) = 0x00000000
    0xfa10ac8 (+0xac8) = 0x00000000
    0xfa10acc (+0xacc) = 0x00000000
    0xfa10ad0 (+0xad0) = 0x00000000
    0xfa10ad4 (+0xad4) = 0x00000000
    0xfa10ad8 (+0xad8) = 0x00000000
    0xfa10adc (+0xadc) = 0x00000000
    0xfa10ae0 (+0xae0) = 0x00000000
    0xfa10ae4 (+0xae4) = 0x00000000
    0xfa10ae8 (+0xae8) = 0x00000000
    0xfa10aec (+0xaec) = 0x00000000
    0xfa10af0 (+0xaf0) = 0x00000000
    0xfa10af4 (+0xaf4) = 0x00000000
    0xfa10af8 (+0xaf8) = 0x00000000
    0xfa10afc (+0xafc) = 0x00000000
    0xfa10b00 (+0xb00) = 0x00000000
    0xfa10b04 (+0xb04) = 0x00000000
    0xfa10b08 (+0xb08) = 0x00000000
    0xfa10b0c (+0xb0c) = 0x00000000
    0xfa10b10 (+0xb10) = 0x00000000
    0xfa10b14 (+0xb14) = 0x00000000
    0xfa10b18 (+0xb18) = 0x00000000
    0xfa10b1c (+0xb1c) = 0x00000000
    0xfa10b20 (+0xb20) = 0x00000000
    0xfa10b24 (+0xb24) = 0x00000000
    0xfa10b28 (+0xb28) = 0x00000000
    0xfa10b2c (+0xb2c) = 0x00000000
    0xfa10b30 (+0xb30) = 0x00000000
    0xfa10b34 (+0xb34) = 0x00000000
    0xfa10b38 (+0xb38) = 0x00000000
    0xfa10b3c (+0xb3c) = 0x00000000
    0xfa10b40 (+0xb40) = 0x00000000
    0xfa10b44 (+0xb44) = 0x00000000
    0xfa10b48 (+0xb48) = 0x00000000
    0xfa10b4c (+0xb4c) = 0x00000000
    0xfa10b50 (+0xb50) = 0x00000000
    0xfa10b54 (+0xb54) = 0x00000000
    0xfa10b58 (+0xb58) = 0x00000000
    0xfa10b5c (+0xb5c) = 0x00000000
    0xfa10b60 (+0xb60) = 0x00000000
    0xfa10b64 (+0xb64) = 0x00000000
    0xfa10b68 (+0xb68) = 0x00000000
    0xfa10b6c (+0xb6c) = 0x00000000
    0xfa10b70 (+0xb70) = 0x00000000
    0xfa10b74 (+0xb74) = 0x00000000
    0xfa10b78 (+0xb78) = 0x00000000
    0xfa10b7c (+0xb7c) = 0x00000000
    0xfa10b80 (+0xb80) = 0x00000000
    0xfa10b84 (+0xb84) = 0x00000000
    0xfa10b88 (+0xb88) = 0x00000000
    0xfa10b8c (+0xb8c) = 0x00000000
    0xfa10b90 (+0xb90) = 0x00000000
    0xfa10b94 (+0xb94) = 0x00000000
    0xfa10b98 (+0xb98) = 0x00000000
    0xfa10b9c (+0xb9c) = 0x00000000
    0xfa10ba0 (+0xba0) = 0x00000000
    0xfa10ba4 (+0xba4) = 0x00000000
    0xfa10ba8 (+0xba8) = 0x00000000
    0xfa10bac (+0xbac) = 0x00000000
    0xfa10bb0 (+0xbb0) = 0x00000000
    0xfa10bb4 (+0xbb4) = 0x00000000
    0xfa10bb8 (+0xbb8) = 0x00000000
    0xfa10bbc (+0xbbc) = 0x00000000
    0xfa10bc0 (+0xbc0) = 0x00000000
    0xfa10bc4 (+0xbc4) = 0x00000000
    0xfa10bc8 (+0xbc8) = 0x00000000
    0xfa10bcc (+0xbcc) = 0x00000000
    0xfa10bd0 (+0xbd0) = 0x00000000
    0xfa10bd4 (+0xbd4) = 0x00000000
    0xfa10bd8 (+0xbd8) = 0x00000000
    0xfa10bdc (+0xbdc) = 0x00000000
    0xfa10be0 (+0xbe0) = 0x00000000
    0xfa10be4 (+0xbe4) = 0x00000000
    0xfa10be8 (+0xbe8) = 0x00000000
    0xfa10bec (+0xbec) = 0x00000000
    0xfa10bf0 (+0xbf0) = 0x00000000
    0xfa10bf4 (+0xbf4) = 0x00000000
    0xfa10bf8 (+0xbf8) = 0x00000000
    0xfa10bfc (+0xbfc) = 0x00000000
    0xfa10c00 (+0xc00) = 0x00000000
    0xfa10c04 (+0xc04) = 0x00000000
    0xfa10c08 (+0xc08) = 0x00000000
    0xfa10c0c (+0xc0c) = 0x00000000
    0xfa10c10 (+0xc10) = 0x00000000
    0xfa10c14 (+0xc14) = 0x00000000
    0xfa10c18 (+0xc18) = 0x00000000
    0xfa10c1c (+0xc1c) = 0x00000000
    0xfa10c20 (+0xc20) = 0x00000000
    0xfa10c24 (+0xc24) = 0x00000000
    0xfa10c28 (+0xc28) = 0x00000000
    0xfa10c2c (+0xc2c) = 0x00000000
    0xfa10c30 (+0xc30) = 0x00000000
    0xfa10c34 (+0xc34) = 0x00000000
    0xfa10c38 (+0xc38) = 0x00000000
    0xfa10c3c (+0xc3c) = 0x00000000
    0xfa10c40 (+0xc40) = 0x00000000
    0xfa10c44 (+0xc44) = 0x00000000
    0xfa10c48 (+0xc48) = 0x00000000
    0xfa10c4c (+0xc4c) = 0x00000000
    0xfa10c50 (+0xc50) = 0x00000000
    0xfa10c54 (+0xc54) = 0x00000000
    0xfa10c58 (+0xc58) = 0x00000000
    0xfa10c5c (+0xc5c) = 0x00000000
    0xfa10c60 (+0xc60) = 0x00000000
    0xfa10c64 (+0xc64) = 0x00000000
    0xfa10c68 (+0xc68) = 0x00000000
    0xfa10c6c (+0xc6c) = 0x00000000
    0xfa10c70 (+0xc70) = 0x00000000
    0xfa10c74 (+0xc74) = 0x00000000
    0xfa10c78 (+0xc78) = 0x00000000
    0xfa10c7c (+0xc7c) = 0x00000000
    0xfa10c80 (+0xc80) = 0x00000000
    0xfa10c84 (+0xc84) = 0x00000000
    0xfa10c88 (+0xc88) = 0x00000000
    0xfa10c8c (+0xc8c) = 0x00000000
    0xfa10c90 (+0xc90) = 0x00000000
    0xfa10c94 (+0xc94) = 0x00000000
    0xfa10c98 (+0xc98) = 0x00000000
    0xfa10c9c (+0xc9c) = 0x00000000
    0xfa10ca0 (+0xca0) = 0x00000000
    0xfa10ca4 (+0xca4) = 0x00000000
    0xfa10ca8 (+0xca8) = 0x00000000
    0xfa10cac (+0xcac) = 0x00000000
    0xfa10cb0 (+0xcb0) = 0x00000000
    0xfa10cb4 (+0xcb4) = 0x00000000
    0xfa10cb8 (+0xcb8) = 0x00000000
    0xfa10cbc (+0xcbc) = 0x00000000
    0xfa10cc0 (+0xcc0) = 0x00000000
    0xfa10cc4 (+0xcc4) = 0x00000000
    0xfa10cc8 (+0xcc8) = 0x00000000
    0xfa10ccc (+0xccc) = 0x00000000
    0xfa10cd0 (+0xcd0) = 0x00000000
    0xfa10cd4 (+0xcd4) = 0x00000000
    0xfa10cd8 (+0xcd8) = 0x00000000
    0xfa10cdc (+0xcdc) = 0x00000000
    0xfa10ce0 (+0xce0) = 0x00000000
    0xfa10ce4 (+0xce4) = 0x00000000
    0xfa10ce8 (+0xce8) = 0x00000000
    0xfa10cec (+0xcec) = 0x00000000
    0xfa10cf0 (+0xcf0) = 0x00000000
    0xfa10cf4 (+0xcf4) = 0x00000000
    0xfa10cf8 (+0xcf8) = 0x00000000
    0xfa10cfc (+0xcfc) = 0x00000000
    0xfa10d00 (+0xd00) = 0x00000000
    0xfa10d04 (+0xd04) = 0x00000000
    0xfa10d08 (+0xd08) = 0x00000000
    0xfa10d0c (+0xd0c) = 0x00000000
    0xfa10d10 (+0xd10) = 0x00000000
    0xfa10d14 (+0xd14) = 0x00000000
    0xfa10d18 (+0xd18) = 0x00000000
    0xfa10d1c (+0xd1c) = 0x00000000
    0xfa10d20 (+0xd20) = 0x00000000
    0xfa10d24 (+0xd24) = 0x00000000
    0xfa10d28 (+0xd28) = 0x00000000
    0xfa10d2c (+0xd2c) = 0x00000000
    0xfa10d30 (+0xd30) = 0x00000000
    0xfa10d34 (+0xd34) = 0x00000000
    0xfa10d38 (+0xd38) = 0x00000000
    0xfa10d3c (+0xd3c) = 0x00000000
    0xfa10d40 (+0xd40) = 0x00000000
    0xfa10d44 (+0xd44) = 0x00000000
    0xfa10d48 (+0xd48) = 0x00000000
    0xfa10d4c (+0xd4c) = 0x00000000
    0xfa10d50 (+0xd50) = 0x00000000
    0xfa10d54 (+0xd54) = 0x00000000
    0xfa10d58 (+0xd58) = 0x00000000
    0xfa10d5c (+0xd5c) = 0x00000000
    0xfa10d60 (+0xd60) = 0x00000000
    0xfa10d64 (+0xd64) = 0x00000000
    0xfa10d68 (+0xd68) = 0x00000000
    0xfa10d6c (+0xd6c) = 0x00000000
    0xfa10d70 (+0xd70) = 0x00000000
    0xfa10d74 (+0xd74) = 0x00000000
    0xfa10d78 (+0xd78) = 0x00000000
    0xfa10d7c (+0xd7c) = 0x00000000
    0xfa10d80 (+0xd80) = 0x00000000
    0xfa10d84 (+0xd84) = 0x00000000
    0xfa10d88 (+0xd88) = 0x00000000
    0xfa10d8c (+0xd8c) = 0x00000000
    0xfa10d90 (+0xd90) = 0x00000000
    0xfa10d94 (+0xd94) = 0x00000000
    0xfa10d98 (+0xd98) = 0x00000000
    0xfa10d9c (+0xd9c) = 0x00000000
    0xfa10da0 (+0xda0) = 0x00000000
    0xfa10da4 (+0xda4) = 0x00000000
    0xfa10da8 (+0xda8) = 0x00000000
    0xfa10dac (+0xdac) = 0x00000000
    0xfa10db0 (+0xdb0) = 0x00000000
    0xfa10db4 (+0xdb4) = 0x00000000
    0xfa10db8 (+0xdb8) = 0x00000000
    0xfa10dbc (+0xdbc) = 0x00000000
    0xfa10dc0 (+0xdc0) = 0x00000000
    0xfa10dc4 (+0xdc4) = 0x00000000
    0xfa10dc8 (+0xdc8) = 0x00000000
    0xfa10dcc (+0xdcc) = 0x00000000
    0xfa10dd0 (+0xdd0) = 0x00000000
    0xfa10dd4 (+0xdd4) = 0x00000000
    0xfa10dd8 (+0xdd8) = 0x00000000
    0xfa10ddc (+0xddc) = 0x00000000
    0xfa10de0 (+0xde0) = 0x00000000
    0xfa10de4 (+0xde4) = 0x00000000
    0xfa10de8 (+0xde8) = 0x00000000
    0xfa10dec (+0xdec) = 0x00000000
    0xfa10df0 (+0xdf0) = 0x00000000
    0xfa10df4 (+0xdf4) = 0x00000000
    0xfa10df8 (+0xdf8) = 0x00000000
    0xfa10dfc (+0xdfc) = 0x00000000
    0xfa10e00 (+0xe00) = 0x00000000
    0xfa10e04 (+0xe04) = 0x00000000
    0xfa10e08 (+0xe08) = 0x00000000
    0xfa10e0c (+0xe0c) = 0x00000000
    0xfa10e10 (+0xe10) = 0x00000000
    0xfa10e14 (+0xe14) = 0x00000000
    0xfa10e18 (+0xe18) = 0x00000000
    0xfa10e1c (+0xe1c) = 0x00000000
    0xfa10e20 (+0xe20) = 0x00000000
    0xfa10e24 (+0xe24) = 0x00000000
    0xfa10e28 (+0xe28) = 0x00000000
    0xfa10e2c (+0xe2c) = 0x00000000
    0xfa10e30 (+0xe30) = 0x00000000
    0xfa10e34 (+0xe34) = 0x00000000
    0xfa10e38 (+0xe38) = 0x00000000
    0xfa10e3c (+0xe3c) = 0x00000000
    0xfa10e40 (+0xe40) = 0x00000000
    0xfa10e44 (+0xe44) = 0x00000000
    0xfa10e48 (+0xe48) = 0x00000000
    0xfa10e4c (+0xe4c) = 0x00000000
    0xfa10e50 (+0xe50) = 0x00000000
    0xfa10e54 (+0xe54) = 0x00000000
    0xfa10e58 (+0xe58) = 0x00000000
    0xfa10e5c (+0xe5c) = 0x00000000
    0xfa10e60 (+0xe60) = 0x00000000
    0xfa10e64 (+0xe64) = 0x00000000
    0xfa10e68 (+0xe68) = 0x00000000
    0xfa10e6c (+0xe6c) = 0x00000000
    0xfa10e70 (+0xe70) = 0x00000000
    0xfa10e74 (+0xe74) = 0x00000000
    0xfa10e78 (+0xe78) = 0x00000000
    0xfa10e7c (+0xe7c) = 0x00000000
    0xfa10e80 (+0xe80) = 0x00000000
    0xfa10e84 (+0xe84) = 0x00000000
    0xfa10e88 (+0xe88) = 0x00000000
    0xfa10e8c (+0xe8c) = 0x00000000
    0xfa10e90 (+0xe90) = 0x00000000
    0xfa10e94 (+0xe94) = 0x00000000
    0xfa10e98 (+0xe98) = 0x00000000
    0xfa10e9c (+0xe9c) = 0x00000000
    0xfa10ea0 (+0xea0) = 0x00000000
    0xfa10ea4 (+0xea4) = 0x00000000
    0xfa10ea8 (+0xea8) = 0x00000000
    0xfa10eac (+0xeac) = 0x00000000
    0xfa10eb0 (+0xeb0) = 0x00000000
    0xfa10eb4 (+0xeb4) = 0x00000000
    0xfa10eb8 (+0xeb8) = 0x00000000
    0xfa10ebc (+0xebc) = 0x00000000
    0xfa10ec0 (+0xec0) = 0x00000000
    0xfa10ec4 (+0xec4) = 0x00000000
    0xfa10ec8 (+0xec8) = 0x00000000
    0xfa10ecc (+0xecc) = 0x00000000
    0xfa10ed0 (+0xed0) = 0x00000000
    0xfa10ed4 (+0xed4) = 0x00000000
    0xfa10ed8 (+0xed8) = 0x00000000
    0xfa10edc (+0xedc) = 0x00000000
    0xfa10ee0 (+0xee0) = 0x00000000
    0xfa10ee4 (+0xee4) = 0x00000000
    0xfa10ee8 (+0xee8) = 0x00000000
    0xfa10eec (+0xeec) = 0x00000000
    0xfa10ef0 (+0xef0) = 0x00000000
    0xfa10ef4 (+0xef4) = 0x00000000
    0xfa10ef8 (+0xef8) = 0x00000000
    0xfa10efc (+0xefc) = 0x00000000
    0xfa10f00 (+0xf00) = 0x00000000
    0xfa10f04 (+0xf04) = 0x00000000
    0xfa10f08 (+0xf08) = 0x00000000
    0xfa10f0c (+0xf0c) = 0x00000000
    0xfa10f10 (+0xf10) = 0x00000000
    0xfa10f14 (+0xf14) = 0x00000000
    0xfa10f18 (+0xf18) = 0x00000000
    0xfa10f1c (+0xf1c) = 0x00000000
    0xfa10f20 (+0xf20) = 0x00000000
    0xfa10f24 (+0xf24) = 0x00000000
    0xfa10f28 (+0xf28) = 0x00000000
    0xfa10f2c (+0xf2c) = 0x00000000
    0xfa10f30 (+0xf30) = 0x00000000
    0xfa10f34 (+0xf34) = 0x00000000
    0xfa10f38 (+0xf38) = 0x00000000
    0xfa10f3c (+0xf3c) = 0x00000000
    0xfa10f40 (+0xf40) = 0x00000000
    0xfa10f44 (+0xf44) = 0x00000000
    0xfa10f48 (+0xf48) = 0x00000000
    0xfa10f4c (+0xf4c) = 0x00000000
    0xfa10f50 (+0xf50) = 0x00000000
    0xfa10f54 (+0xf54) = 0x00000000
    0xfa10f58 (+0xf58) = 0x00000000
    0xfa10f5c (+0xf5c) = 0x00000000
    0xfa10f60 (+0xf60) = 0x00000000
    0xfa10f64 (+0xf64) = 0x00000000
    0xfa10f68 (+0xf68) = 0x00000000
    0xfa10f6c (+0xf6c) = 0x00000000
    0xfa10f70 (+0xf70) = 0x00000000
    0xfa10f74 (+0xf74) = 0x00000000
    0xfa10f78 (+0xf78) = 0x00000000
    0xfa10f7c (+0xf7c) = 0x00000000
    0xfa10f80 (+0xf80) = 0x00000000
    0xfa10f84 (+0xf84) = 0x00000000
    0xfa10f88 (+0xf88) = 0x00000000
    0xfa10f8c (+0xf8c) = 0x00000000
    0xfa10f90 (+0xf90) = 0x00000000
    0xfa10f94 (+0xf94) = 0x00000000
    0xfa10f98 (+0xf98) = 0x00000000
    0xfa10f9c (+0xf9c) = 0x00000000
    0xfa10fa0 (+0xfa0) = 0x00000000
    0xfa10fa4 (+0xfa4) = 0x00000000
    0xfa10fa8 (+0xfa8) = 0x00000000
    0xfa10fac (+0xfac) = 0x00000000
    0xfa10fb0 (+0xfb0) = 0x00000000
    0xfa10fb4 (+0xfb4) = 0x00000000
    0xfa10fb8 (+0xfb8) = 0x00000000
    0xfa10fbc (+0xfbc) = 0x00000000
    0xfa10fc0 (+0xfc0) = 0x00000000
    0xfa10fc4 (+0xfc4) = 0x00000000
    0xfa10fc8 (+0xfc8) = 0x00000000
    0xfa10fcc (+0xfcc) = 0x00000000
    0xfa10fd0 (+0xfd0) = 0x00000000
    0xfa10fd4 (+0xfd4) = 0x00000000
    0xfa10fd8 (+0xfd8) = 0x00000000
    0xfa10fdc (+0xfdc) = 0x00000000
    0xfa10fe0 (+0xfe0) = 0x00000000
    0xfa10fe4 (+0xfe4) = 0x00000000
    0xfa10fe8 (+0xfe8) = 0x00000000
    0xfa10fec (+0xfec) = 0x00000000
    0xfa10ff0 (+0xff0) = 0x00000000
    0xfa10ff4 (+0xff4) = 0x00000000
    0xfa10ff8 (+0xff8) = 0x00000000
    0xfa10ffc (+0xffc) = 0x00000000
    
    $ ./rwmem 0x0fa18000+0x0400
    0xfa18000 (+0x000) = 0x68420a00
    0xfa18004 (+0x004) = 0x00000000
    0xfa18008 (+0x008) = 0x00000000
    0xfa1800c (+0x00c) = 0x00000000
    0xfa18010 (+0x010) = 0x201030c8
    0xfa18014 (+0x014) = 0x25ecc801
    0xfa18018 (+0x018) = 0x18002407
    0xfa1801c (+0x01c) = 0x00000000
    0xfa18020 (+0x020) = 0x00000000
    0xfa18024 (+0x024) = 0x00000100
    0xfa18028 (+0x028) = 0x00000004
    0xfa1802c (+0x02c) = 0x00000002
    0xfa18030 (+0x030) = 0x00000004
    0xfa18034 (+0x034) = 0x00000002
    0xfa18038 (+0x038) = 0x00000001
    0xfa1803c (+0x03c) = 0x00000000
    0xfa18040 (+0x040) = 0x00000002
    0xfa18044 (+0x044) = 0x00000000
    0xfa18048 (+0x048) = 0x00000000
    0xfa1804c (+0x04c) = 0x00000000
    0xfa18050 (+0x050) = 0x00000000
    0xfa18054 (+0x054) = 0x00000000
    0xfa18058 (+0x058) = 0x00000000
    0xfa1805c (+0x05c) = 0x00000000
    0xfa18060 (+0x060) = 0x80000000
    0xfa18064 (+0x064) = 0x00000010
    0xfa18068 (+0x068) = 0x00000000
    0xfa1806c (+0x06c) = 0x00000000
    0xfa18070 (+0x070) = 0x00000008
    0xfa18074 (+0x074) = 0x00000000
    0xfa18078 (+0x078) = 0x00000000
    0xfa1807c (+0x07c) = 0x00000000
    0xfa18080 (+0x080) = 0x00000000
    0xfa18084 (+0x084) = 0x00000000
    0xfa18088 (+0x088) = 0x00000000
    0xfa1808c (+0x08c) = 0x00000000
    0xfa18090 (+0x090) = 0x00000000
    0xfa18094 (+0x094) = 0x00000000
    0xfa18098 (+0x098) = 0x00000000
    0xfa1809c (+0x09c) = 0x00000000
    0xfa180a0 (+0x0a0) = 0x00000000
    0xfa180a4 (+0x0a4) = 0x00000000
    0xfa180a8 (+0x0a8) = 0x00000000
    0xfa180ac (+0x0ac) = 0x00000000
    0xfa180b0 (+0x0b0) = 0x00000000
    0xfa180b4 (+0x0b4) = 0x00000000
    0xfa180b8 (+0x0b8) = 0x00000000
    0xfa180bc (+0x0bc) = 0x00000000
    0xfa180c0 (+0x0c0) = 0x00000000
    0xfa180c4 (+0x0c4) = 0x00000000
    0xfa180c8 (+0x0c8) = 0x00000000
    0xfa180cc (+0x0cc) = 0x00000000
    0xfa180d0 (+0x0d0) = 0x00000000
    0xfa180d4 (+0x0d4) = 0x00000000
    0xfa180d8 (+0x0d8) = 0x00000000
    0xfa180dc (+0x0dc) = 0x00000000
    0xfa180e0 (+0x0e0) = 0x00000000
    0xfa180e4 (+0x0e4) = 0x00000000
    0xfa180e8 (+0x0e8) = 0x00000000
    0xfa180ec (+0x0ec) = 0x00000000
    0xfa180f0 (+0x0f0) = 0x00000000
    0xfa180f4 (+0x0f4) = 0x00000000
    0xfa180f8 (+0x0f8) = 0x00000000
    0xfa180fc (+0x0fc) = 0x00000000
    0xfa18100 (+0x100) = 0x00000000
    0xfa18104 (+0x104) = 0x00000000
    0xfa18108 (+0x108) = 0x00000000
    0xfa1810c (+0x10c) = 0x0010010a
    0xfa18110 (+0x110) = 0x00000007
    0xfa18114 (+0x114) = 0x00000000
    0xfa18118 (+0x118) = 0x00000000
    0xfa1811c (+0x11c) = 0x00000000
    0xfa18120 (+0x120) = 0x00000000
    0xfa18124 (+0x124) = 0x00000000
    0xfa18128 (+0x128) = 0x00000000
    0xfa1812c (+0x12c) = 0x00000000
    0xfa18130 (+0x130) = 0x00000000
    0xfa18134 (+0x134) = 0x00000000
    0xfa18138 (+0x138) = 0x00000000
    0xfa1813c (+0x13c) = 0x00000000
    0xfa18140 (+0x140) = 0x00000000
    0xfa18144 (+0x144) = 0x00000000
    0xfa18148 (+0x148) = 0x00000000
    0xfa1814c (+0x14c) = 0x00000000
    0xfa18150 (+0x150) = 0x00000000
    0xfa18154 (+0x154) = 0x00000000
    0xfa18158 (+0x158) = 0x00000000
    0xfa1815c (+0x15c) = 0x00000000
    0xfa18160 (+0x160) = 0x00000000
    0xfa18164 (+0x164) = 0x00000000
    0xfa18168 (+0x168) = 0x00000000
    0xfa1816c (+0x16c) = 0x00000000
    0xfa18170 (+0x170) = 0x00000000
    0xfa18174 (+0x174) = 0x00000000
    0xfa18178 (+0x178) = 0x00000000
    0xfa1817c (+0x17c) = 0x00000000
    0xfa18180 (+0x180) = 0x00000000
    0xfa18184 (+0x184) = 0x00000000
    0xfa18188 (+0x188) = 0x00000000
    0xfa1818c (+0x18c) = 0x00000000
    0xfa18190 (+0x190) = 0x00000000
    0xfa18194 (+0x194) = 0x00000000
    0xfa18198 (+0x198) = 0x00000000
    0xfa1819c (+0x19c) = 0x00000000
    0xfa181a0 (+0x1a0) = 0x00000000
    0xfa181a4 (+0x1a4) = 0x00000000
    0xfa181a8 (+0x1a8) = 0x00000000
    0xfa181ac (+0x1ac) = 0x00000000
    0xfa181b0 (+0x1b0) = 0x00000000
    0xfa181b4 (+0x1b4) = 0x00000000
    0xfa181b8 (+0x1b8) = 0x00000000
    0xfa181bc (+0x1bc) = 0x00000000
    0xfa181c0 (+0x1c0) = 0x00000000
    0xfa181c4 (+0x1c4) = 0x00000000
    0xfa181c8 (+0x1c8) = 0x00000000
    0xfa181cc (+0x1cc) = 0x00000000
    0xfa181d0 (+0x1d0) = 0x00000000
    0xfa181d4 (+0x1d4) = 0x00000000
    0xfa181d8 (+0x1d8) = 0x00000000
    0xfa181dc (+0x1dc) = 0x00000000
    0xfa181e0 (+0x1e0) = 0x00000000
    0xfa181e4 (+0x1e4) = 0x00000000
    0xfa181e8 (+0x1e8) = 0x00000000
    0xfa181ec (+0x1ec) = 0x00000000
    0xfa181f0 (+0x1f0) = 0x00000000
    0xfa181f4 (+0x1f4) = 0x00000000
    0xfa181f8 (+0x1f8) = 0x00000000
    0xfa181fc (+0x1fc) = 0x00000000
    0xfa18200 (+0x200) = 0x00000000
    0xfa18204 (+0x204) = 0x00000000
    0xfa18208 (+0x208) = 0x00000000
    0xfa1820c (+0x20c) = 0x00000000
    0xfa18210 (+0x210) = 0x00000000
    0xfa18214 (+0x214) = 0x00000000
    0xfa18218 (+0x218) = 0x00000000
    0xfa1821c (+0x21c) = 0x00000000
    0xfa18220 (+0x220) = 0x00000000
    0xfa18224 (+0x224) = 0x00000000
    0xfa18228 (+0x228) = 0x00000000
    0xfa1822c (+0x22c) = 0x00000000
    0xfa18230 (+0x230) = 0x00000000
    0xfa18234 (+0x234) = 0x00000000
    0xfa18238 (+0x238) = 0x00000000
    0xfa1823c (+0x23c) = 0x00000000
    0xfa18240 (+0x240) = 0x00000000
    0xfa18244 (+0x244) = 0x00000000
    0xfa18248 (+0x248) = 0x00000000
    0xfa1824c (+0x24c) = 0x00000000
    0xfa18250 (+0x250) = 0x00000000
    0xfa18254 (+0x254) = 0x00000000
    0xfa18258 (+0x258) = 0x00000000
    0xfa1825c (+0x25c) = 0x00000000
    0xfa18260 (+0x260) = 0x00000000
    0xfa18264 (+0x264) = 0x00000000
    0xfa18268 (+0x268) = 0x00000000
    0xfa1826c (+0x26c) = 0x00000000
    0xfa18270 (+0x270) = 0x00000000
    0xfa18274 (+0x274) = 0x00000000
    0xfa18278 (+0x278) = 0x00000000
    0xfa1827c (+0x27c) = 0x00000000
    0xfa18280 (+0x280) = 0x00000000
    0xfa18284 (+0x284) = 0x00000000
    0xfa18288 (+0x288) = 0x00000000
    0xfa1828c (+0x28c) = 0x00000000
    0xfa18290 (+0x290) = 0x00000000
    0xfa18294 (+0x294) = 0x00000000
    0xfa18298 (+0x298) = 0x00000000
    0xfa1829c (+0x29c) = 0x00000000
    0xfa182a0 (+0x2a0) = 0x00000000
    0xfa182a4 (+0x2a4) = 0x00000000
    0xfa182a8 (+0x2a8) = 0x00000000
    0xfa182ac (+0x2ac) = 0x00000000
    0xfa182b0 (+0x2b0) = 0x00000000
    0xfa182b4 (+0x2b4) = 0x00000000
    0xfa182b8 (+0x2b8) = 0x00000000
    0xfa182bc (+0x2bc) = 0x00000000
    0xfa182c0 (+0x2c0) = 0x00000000
    0xfa182c4 (+0x2c4) = 0x00000000
    0xfa182c8 (+0x2c8) = 0x00000000
    0xfa182cc (+0x2cc) = 0x00000000
    0xfa182d0 (+0x2d0) = 0x00000000
    0xfa182d4 (+0x2d4) = 0x00000000
    0xfa182d8 (+0x2d8) = 0x00000000
    0xfa182dc (+0x2dc) = 0x00000000
    0xfa182e0 (+0x2e0) = 0x00000000
    0xfa182e4 (+0x2e4) = 0x00000000
    0xfa182e8 (+0x2e8) = 0x00000000
    0xfa182ec (+0x2ec) = 0x00000000
    0xfa182f0 (+0x2f0) = 0x00000000
    0xfa182f4 (+0x2f4) = 0x00000000
    0xfa182f8 (+0x2f8) = 0x00000000
    0xfa182fc (+0x2fc) = 0x00000000
    0xfa18300 (+0x300) = 0x00000000
    0xfa18304 (+0x304) = 0x00000000
    0xfa18308 (+0x308) = 0x00000000
    0xfa1830c (+0x30c) = 0x00000000
    0xfa18310 (+0x310) = 0x00000000
    0xfa18314 (+0x314) = 0x00000000
    0xfa18318 (+0x318) = 0x00000000
    0xfa1831c (+0x31c) = 0x00000000
    0xfa18320 (+0x320) = 0x00000000
    0xfa18324 (+0x324) = 0x00000000
    0xfa18328 (+0x328) = 0x00000000
    0xfa1832c (+0x32c) = 0x00000000
    0xfa18330 (+0x330) = 0x00000000
    0xfa18334 (+0x334) = 0x00000000
    0xfa18338 (+0x338) = 0x00000000
    0xfa1833c (+0x33c) = 0x00000000
    0xfa18340 (+0x340) = 0x00000000
    0xfa18344 (+0x344) = 0x00000000
    0xfa18348 (+0x348) = 0x00000000
    0xfa1834c (+0x34c) = 0x00000000
    0xfa18350 (+0x350) = 0x00000000
    0xfa18354 (+0x354) = 0x00000000
    0xfa18358 (+0x358) = 0x00000000
    0xfa1835c (+0x35c) = 0x00000000
    0xfa18360 (+0x360) = 0x00000000
    0xfa18364 (+0x364) = 0x00000000
    0xfa18368 (+0x368) = 0x00000000
    0xfa1836c (+0x36c) = 0x00000000
    0xfa18370 (+0x370) = 0x00000000
    0xfa18374 (+0x374) = 0x00000000
    0xfa18378 (+0x378) = 0x00000000
    0xfa1837c (+0x37c) = 0x00000000
    0xfa18380 (+0x380) = 0x00000000
    0xfa18384 (+0x384) = 0x00000000
    0xfa18388 (+0x388) = 0x00000000
    0xfa1838c (+0x38c) = 0x00000000
    0xfa18390 (+0x390) = 0x00000000
    0xfa18394 (+0x394) = 0x00000000
    0xfa18398 (+0x398) = 0x00000000
    0xfa1839c (+0x39c) = 0x00000000
    0xfa183a0 (+0x3a0) = 0x00000000
    0xfa183a4 (+0x3a4) = 0x00000000
    0xfa183a8 (+0x3a8) = 0x00000000
    0xfa183ac (+0x3ac) = 0x00000000
    0xfa183b0 (+0x3b0) = 0x00000000
    0xfa183b4 (+0x3b4) = 0x00000000
    0xfa183b8 (+0x3b8) = 0x00000000
    0xfa183bc (+0x3bc) = 0x00000000
    0xfa183c0 (+0x3c0) = 0x00000000
    0xfa183c4 (+0x3c4) = 0x00000000
    0xfa183c8 (+0x3c8) = 0x00000000
    0xfa183cc (+0x3cc) = 0x00000000
    0xfa183d0 (+0x3d0) = 0x00000000
    0xfa183d4 (+0x3d4) = 0x00000000
    0xfa183d8 (+0x3d8) = 0x00000000
    0xfa183dc (+0x3dc) = 0x00000000
    0xfa183e0 (+0x3e0) = 0x00000000
    0xfa183e4 (+0x3e4) = 0x00000000
    0xfa183e8 (+0x3e8) = 0x00000000
    0xfa183ec (+0x3ec) = 0x00000000
    0xfa183f0 (+0x3f0) = 0x00000000
    0xfa183f4 (+0x3f4) = 0x00000000
    0xfa183f8 (+0x3f8) = 0x00000000
    0xfa183fc (+0x3fc) = 0x00000000
    

  • Hi Peter,

    Thanks for the register dumps.

    I compared the difference between u-boot and kernel dumps, but didn't see anything obvious standing out.

    The only thing is that MMC CQE is disabled in U-Boot but enabled in kernel. I am not sure if it could be the issue, but can you please test with the following kernel patch to disable CQE in kernel to see if makes any difference.

    diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
    index 38392b6f4100..84cf23d7ae9f 100644
    --- a/drivers/mmc/host/sdhci_am654.c
    +++ b/drivers/mmc/host/sdhci_am654.c
    @@ -668,6 +668,8 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
     {
            struct cqhci_host *cq_host;
     
    +       return 0;
    +
            cq_host = devm_kzalloc(mmc_dev(host->mmc), sizeof(struct cqhci_host),
                                   GFP_KERNEL);
            if (!cq_host)

    After booted into Linux, if you check register 0x0fa10208 value is 0, it means CQE is disabled.

    root@am62xx-evm:~# devmem2 0x0fa10208 w
    /dev/mem opened.
    Memory mapped at address 0xffff97e75000.
    Read at address  0x0FA10208 (0xffff97e75208): 0x00000000

  • Hello Bin!  Thank you for all the work to review all of those register settings.

    I've applied the patch, it appears to have successfully changed the CQE setting to disabled.

    $ ./rwmem 0x0fa10208
    0xfa10208 (+0x0) = 0x00000000

    However the HS200 Select is still failing unfortunately:

    $ dmesg | grep -i mmc
    [ 1.163288] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [ 1.239674] mmc0: mmc_select_hs200 failed, error -110
    [ 1.239691] eMMC HS200 Select failed, falling back to HS mode
    [ 1.242178] mmc0: new DDR MMC card at address 0001
    [ 1.243077] mmcblk0: mmc0:0001 DG4008 7.28 GiB
    [ 1.243377] mmcblk0boot0: mmc0:0001 DG4008 partition 1 4.00 MiB
    [ 1.243672] mmcblk0boot1: mmc0:0001 DG4008 partition 2 4.00 MiB
    [ 1.248872] mmcblk0rpmb: mmc0:0001 DG4008 partition 3 4.00 MiB, chardev (237:0)
    [ 1.267005] mmcblk0: p1
    [ 5.255939] EXT4-fs (mmcblk0p1): recovery complete
    [ 5.257066] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)

    Let me know if you have any further ideas for testing. 

    I'm also working with our hardware team to try a PCB build with another eMMC vendor part, to see if possibly it is some compatibility issue with SanDisk.

    The TI SK kit of course uses Micron, and I tested the BeaglePlay dev board and it also achieves HS200 speed using Kingston memory, so was thinking to try those.

  • Hi Peter,

    Thanks for the testing. Let me think what else information to collect.

    I have paused the boot and entered U-Boot command line, and then physically reset the eMMC by applying GND to the reset pin.  The result is the same -- Linux can only enter HS mode.

    For the eMMC RST pin to work, it has be enabled in eMMC ECSD register. Can you please run the following command on your board Linux to see if RST is enabled or not?

    # mmc extcsd read /dev/mmcblk0 | grep -i RST

    Assuming /dev/mmcblk0 is eMMC on your board.

  • Yes you are right, it is actually disabled, so the previous test was not a valid one I guess!

    $ mmc extcsd read /dev/mmcblk0 | grep -i RST
    H/W reset function [RST_N_FUNCTION]: 0x00

  • Probably not valid test. Please follow the instruction below to enable the eMMC RST then test the reset before booting Linux again please.

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1168342/faq-am62x-how-to-check-and-configure-emmc-flash-rst_n-signal-to-support-warm_reset-from-emmc-booting-on-am62x-sk-e2

  • Hello Bin!  I did rerun the test as you requested:

    * Boot to Uboot command prompt

    * Enable HW reset by mmc rst-function 0 1

    * Reset the eMMC by hardware grounding of reset pin

    * Use U-boot boot command to boot to Linux

    Unfortunately the HS200 selection still failed.  I did confirm in Linux that the HW Reset was successfully enabled with: 
    $ mmc extcsd read /dev/mmcblk0 | grep -i RST
    H/W reset function [RST_N_FUNCTION]: 0x01

  • Hi Peter,

    Thanks for the update.

    One more thing to test - how difficult for you to run SDK9.2 U-Boot and kernel on your board? At least can you run SDK9.2 U-Boot?

  • Sure I can try the 9.2 SDK one, previously I have tested the 9.2 kernel (with patches above) and the issue was not resolved.

    Also we have recently brought Uboot 2024.04 into the project but this did not fix the issue either.

    I can try both together... do you just want me to see if it works as usual or try some specific tests?

  • My main interest is the SYSFW in SDK9.2. So if you can just build the SDK9.2 u-boot (which would have v9.2 SYSFW) and kernel, then boot them on your board to see if the eMMC can be enumerated in HS200.

  • Hello Peter

    Any update on the SYSFW 9.2 test results ?

  • Hi Mukul, Like I mentioned above have tested each part of the 9.2 firmware separately, but have not tried them together yet.

    Next step for us will be to try some different brands of eMMC.  Hopefully it is just a compatibility problem between the TI driver and SanDisk memory, and this will solve my issue.  If it fixes it, I will post here to let you know.

  • Hi Peter,

    Thanks for the heads-up. Looking forward to the test result.

  • Hi Mike,

    The original issue from Peter on this thread is till open.

    Thanks for explaining the details of the issue you have. Since communicating two issues (interleavely) on the same thread would cause confusion, I recommend you to create a new e2e thread for your issue. You cat click the orange "+ Ask a related question" button at the top-right of this page to create the new thread, so that this thread is linked as a reference.

  • Hi Bin,

    I have created a second post.  I couldn't delete the reply above, so I abbreviated it to just the link to the new post.  Sorry about that.

    Mike

  • HI Michael,

    Thanks for the update. It is actually better to have your thread link here for cross-reference.