mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	The comment /* deassert reset */ is wrong. It asserts the reset. It no longer needs to stay in SPL. The NAND controller reset is handled in the driver. So, this assert can be moved to the board_init() of U-Boot proper. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0 or later
 | 
						|
/*
 | 
						|
 * Copyright (C) 2020 Socionext Inc.
 | 
						|
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <linux/errno.h>
 | 
						|
#include <dm.h>
 | 
						|
#include <dm/uclass-internal.h>
 | 
						|
#include <reset.h>
 | 
						|
 | 
						|
#include "init.h"
 | 
						|
 | 
						|
/*
 | 
						|
 * Assert the Denali NAND controller reset if found.
 | 
						|
 *
 | 
						|
 * On LD4, the bootstrap process starts running after power-on reset regardless
 | 
						|
 * of the boot mode, here the pin-mux is not necessarily set up for NAND, then
 | 
						|
 * the controller is stuck. Assert the controller reset here, and should be
 | 
						|
 * deasserted in the driver after the pin-mux is correctly handled. For other
 | 
						|
 * SoCs, the bootstrap runs only when the boot mode selects ONFi, but it is yet
 | 
						|
 * effective when the boot swap is on. So, the reset should be asserted anyway.
 | 
						|
 */
 | 
						|
void uniphier_nand_reset_assert(void)
 | 
						|
{
 | 
						|
	struct udevice *dev;
 | 
						|
	struct reset_ctl_bulk resets;
 | 
						|
	int ret;
 | 
						|
 | 
						|
	ret = uclass_find_first_device(UCLASS_MTD, &dev);
 | 
						|
	if (ret || !dev)
 | 
						|
		return;
 | 
						|
 | 
						|
	/* make sure this is the Denali NAND controller */
 | 
						|
	if (strcmp(dev->driver->name, "denali-nand-dt"))
 | 
						|
		return;
 | 
						|
 | 
						|
	ret = reset_get_bulk(dev, &resets);
 | 
						|
	if (ret)
 | 
						|
		return;
 | 
						|
 | 
						|
	reset_assert_bulk(&resets);
 | 
						|
}
 |