summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2022-06-07 19:28:07 +0100
committerAidan MacDonald <amachronic@protonmail.com>2022-07-10 15:22:31 +0100
commitdf29c7991ab70c764165da08807e5610055031b0 (patch)
treeac79e35e026e56f2e35571666172d0bbc0f3c38f /firmware/target
parentad8ace53e5284a9b0c07f20ad10440dbc48dd4f7 (diff)
downloadrockbox-df29c7991ab70c764165da08807e5610055031b0.tar.gz
rockbox-df29c7991ab70c764165da08807e5610055031b0.zip
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
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/mips/ingenic_x1000/nand-x1000.c4
-rw-r--r--firmware/target/mips/ingenic_x1000/nand-x1000.h5
2 files changed, 9 insertions, 0 deletions
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)
156 156
157 /* Clear write protection bits */ 157 /* Clear write protection bits */
158 nand_set_reg(drv, FREG_PROT, FREG_PROT_UNLOCK); 158 nand_set_reg(drv, FREG_PROT, FREG_PROT_UNLOCK);
159
160 /* Call any chip-specific hooks */
161 if(drv->chip->setup_chip)
162 drv->chip->setup_chip(drv);
159} 163}
160 164
161int nand_open(struct nand_drv* drv) 165int 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 @@
95typedef uint32_t nand_block_t; 95typedef uint32_t nand_block_t;
96typedef uint32_t nand_page_t; 96typedef uint32_t nand_page_t;
97 97
98struct nand_drv;
99
98struct nand_chip { 100struct nand_chip {
99 /* Manufacturer and device ID bytes */ 101 /* Manufacturer and device ID bytes */
100 uint8_t mf_id; 102 uint8_t mf_id;
@@ -126,6 +128,9 @@ struct nand_chip {
126 128
127 /* Chip specific flags */ 129 /* Chip specific flags */
128 uint32_t flags; 130 uint32_t flags;
131
132 /* Chip-specific setup routine */
133 void(*setup_chip)(struct nand_drv* drv);
129}; 134};
130 135
131struct nand_drv { 136struct nand_drv {