mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-10 23:03:29 +09:00
![Masahiro Yamada](/assets/img/avatar_default.png)
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);
|
|
}
|