mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +01:00 
			
		
		
		
	mmc: rockchip_sdhci: Disable DMA mode using a device tree property
Loading part of TF-A into SRAM from eMMC using DMA fails on RK3399 similar to other Rockchip SoCs. Checksum validation fails with: ## Checking hash(es) for Image atf-2 ... sha256 error! Bad hash value for 'hash' hash node in 'atf-2' image node spl_load_simple_fit: can't load image loadables index 1 (ret = -1) mmc_load_image_raw_sector: mmc block read error SPL: failed to boot from all boot devices ### ERROR ### Please RESET the board ### Add a device tree property, u-boot,spl-fifo-mode, to control when the rockchip_sdhci driver should disable the use of DMA and fallback on PIO mode. Same device tree property is used by the rockchip_dw_mmc driver. In commit2cc6cde647("mmc: rockchip_sdhci: Limit number of blocks read in a single command") the DMA mode was disabled using a CONFIG option on RK3588. Revert that and instead disable DMA using the device tree property for all RK3588 boards, also apply similar workaround for all RK3399 boards. Fixes:2cc6cde647("mmc: rockchip_sdhci: Limit number of blocks read in a single command") Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Tested-by: Quentin Schulz <foss+uboot@0leil.net> # RK3399 Puma, RK3588 Tiger
This commit is contained in:
		
				
					committed by
					
						 Kever Yang
						Kever Yang
					
				
			
			
				
	
			
			
			
						parent
						
							41fc80b8da
						
					
				
				
					commit
					3b804b370d
				
			| @@ -120,6 +120,7 @@ | ||||
| &sdhci { | ||||
| 	max-frequency = <200000000>; | ||||
| 	bootph-all; | ||||
| 	u-boot,spl-fifo-mode; | ||||
| }; | ||||
|  | ||||
| &sdmmc { | ||||
|   | ||||
| @@ -153,6 +153,7 @@ | ||||
|  | ||||
| &sdhci { | ||||
| 	bootph-pre-ram; | ||||
| 	u-boot,spl-fifo-mode; | ||||
| }; | ||||
|  | ||||
| &uart2 { | ||||
|   | ||||
| @@ -60,7 +60,6 @@ CONFIG_MMC_DW=y | ||||
| CONFIG_MMC_DW_ROCKCHIP=y | ||||
| CONFIG_MMC_SDHCI=y | ||||
| CONFIG_MMC_SDHCI_SDMA=y | ||||
| # CONFIG_SPL_MMC_SDHCI_SDMA is not set | ||||
| CONFIG_MMC_SDHCI_ROCKCHIP=y | ||||
| CONFIG_ETH_DESIGNWARE=y | ||||
| CONFIG_GMAC_ROCKCHIP=y | ||||
|   | ||||
| @@ -589,6 +589,14 @@ static int rockchip_sdhci_probe(struct udevice *dev) | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
|  | ||||
| 	/* | ||||
| 	 * Disable use of DMA and force use of PIO mode in SPL to fix an issue | ||||
| 	 * where loading part of TF-A into SRAM using DMA silently fails. | ||||
| 	 */ | ||||
| 	if (IS_ENABLED(CONFIG_SPL_BUILD) && | ||||
| 	    dev_read_bool(dev, "u-boot,spl-fifo-mode")) | ||||
| 		host->flags &= ~USE_DMA; | ||||
|  | ||||
| 	/* | ||||
| 	 * Reading more than 4 blocks with a single CMD18 command in PIO mode | ||||
| 	 * triggers Data End Bit Error on RK3568 and RK3588. Limit to reading | ||||
|   | ||||
		Reference in New Issue
	
	Block a user