diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2022-06-07 19:28:07 +0100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2022-07-10 15:22:31 +0100 |
commit | df29c7991ab70c764165da08807e5610055031b0 (patch) | |
tree | ac79e35e026e56f2e35571666172d0bbc0f3c38f /firmware/target | |
parent | ad8ace53e5284a9b0c07f20ad10440dbc48dd4f7 (diff) | |
download | rockbox-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.c | 4 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/nand-x1000.h | 5 |
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 | ||
161 | int nand_open(struct nand_drv* drv) | 165 | 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 @@ | |||
95 | typedef uint32_t nand_block_t; | 95 | typedef uint32_t nand_block_t; |
96 | typedef uint32_t nand_page_t; | 96 | typedef uint32_t nand_page_t; |
97 | 97 | ||
98 | struct nand_drv; | ||
99 | |||
98 | struct nand_chip { | 100 | struct 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 | ||
131 | struct nand_drv { | 136 | struct nand_drv { |