mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
mtd: rawnand: denali: add reset handling
This adds reset handling to the devicetree-enabled Denali NAND driver. For backwards compatibility, only a warning is printed when failing to get reset handles. Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
This commit is contained in:
parent
29873c74f3
commit
ed784ac382
2 changed files with 17 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <linux/bitops.h>
|
||||
#include <linux/mtd/rawnand.h>
|
||||
#include <linux/types.h>
|
||||
#include <reset.h>
|
||||
|
||||
#define DEVICE_RESET 0x0
|
||||
#define DEVICE_RESET__BANK(bank) BIT(bank)
|
||||
|
@ -315,6 +316,7 @@ struct denali_nand_info {
|
|||
void (*host_write)(struct denali_nand_info *denali, u32 addr, u32 data);
|
||||
void (*setup_dma)(struct denali_nand_info *denali, dma_addr_t dma_addr,
|
||||
int page, int write);
|
||||
struct reset_ctl_bulk resets;
|
||||
};
|
||||
|
||||
#define DENALI_CAP_HW_ECC_FIXUP BIT(0)
|
||||
|
|
|
@ -131,15 +131,30 @@ static int denali_dt_probe(struct udevice *dev)
|
|||
denali->clk_x_rate = 200000000;
|
||||
}
|
||||
|
||||
ret = reset_get_bulk(dev, &denali->resets);
|
||||
if (ret)
|
||||
dev_warn(dev, "Can't get reset: %d\n", ret);
|
||||
else
|
||||
reset_deassert_bulk(&denali->resets);
|
||||
|
||||
return denali_init(denali);
|
||||
}
|
||||
|
||||
static int denali_dt_remove(struct udevice *dev)
|
||||
{
|
||||
struct denali_nand_info *denali = dev_get_priv(dev);
|
||||
|
||||
return reset_release_bulk(&denali->resets);
|
||||
}
|
||||
|
||||
U_BOOT_DRIVER(denali_nand_dt) = {
|
||||
.name = "denali-nand-dt",
|
||||
.id = UCLASS_MISC,
|
||||
.of_match = denali_nand_dt_ids,
|
||||
.probe = denali_dt_probe,
|
||||
.priv_auto_alloc_size = sizeof(struct denali_nand_info),
|
||||
.remove = denali_dt_remove,
|
||||
.flags = DM_FLAG_OS_PREPARE,
|
||||
};
|
||||
|
||||
void board_nand_init(void)
|
||||
|
|
Loading…
Reference in a new issue