From df29c7991ab70c764165da08807e5610055031b0 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Tue, 7 Jun 2022 19:28:07 +0100 Subject: x1000: add setup_chip hook for NAND chips Add a chip setup hook for configuring vendor specific registers after the chip is identified. Change-Id: Ifffa7f01be16fd147a9db3d6e402b7b0debd7e12 --- firmware/target/mips/ingenic_x1000/nand-x1000.c | 4 ++++ firmware/target/mips/ingenic_x1000/nand-x1000.h | 5 +++++ 2 files changed, 9 insertions(+) (limited to 'firmware/target') diff --git a/firmware/target/mips/ingenic_x1000/nand-x1000.c b/firmware/target/mips/ingenic_x1000/nand-x1000.c index c740623d86..2b62e8fb42 100644 --- a/firmware/target/mips/ingenic_x1000/nand-x1000.c +++ b/firmware/target/mips/ingenic_x1000/nand-x1000.c @@ -156,6 +156,10 @@ static void setup_chip_registers(struct nand_drv* drv) /* Clear write protection bits */ nand_set_reg(drv, FREG_PROT, FREG_PROT_UNLOCK); + + /* Call any chip-specific hooks */ + if(drv->chip->setup_chip) + drv->chip->setup_chip(drv); } int nand_open(struct nand_drv* drv) diff --git a/firmware/target/mips/ingenic_x1000/nand-x1000.h b/firmware/target/mips/ingenic_x1000/nand-x1000.h index dda54eb5c6..0a22a4ff3c 100644 --- a/firmware/target/mips/ingenic_x1000/nand-x1000.h +++ b/firmware/target/mips/ingenic_x1000/nand-x1000.h @@ -95,6 +95,8 @@ typedef uint32_t nand_block_t; typedef uint32_t nand_page_t; +struct nand_drv; + struct nand_chip { /* Manufacturer and device ID bytes */ uint8_t mf_id; @@ -126,6 +128,9 @@ struct nand_chip { /* Chip specific flags */ uint32_t flags; + + /* Chip-specific setup routine */ + void(*setup_chip)(struct nand_drv* drv); }; struct nand_drv { -- cgit v1.2.3