// SPDX-License-Identifier: GPL-2.0 or later /* * Copyright (C) 2020 Socionext Inc. * Author: Masahiro Yamada */ #include #include #include #include #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); }