diff options
Diffstat (limited to 'firmware/target/mips/ingenic_x1000/spl-nand-x1000.c')
-rw-r--r-- | firmware/target/mips/ingenic_x1000/spl-nand-x1000.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/firmware/target/mips/ingenic_x1000/spl-nand-x1000.c b/firmware/target/mips/ingenic_x1000/spl-nand-x1000.c new file mode 100644 index 0000000000..82a05abf75 --- /dev/null +++ b/firmware/target/mips/ingenic_x1000/spl-nand-x1000.c | |||
@@ -0,0 +1,50 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2021 Aidan MacDonald | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include "spl-x1000.h" | ||
23 | #include "gpio-x1000.h" | ||
24 | #include "nand-x1000.h" | ||
25 | |||
26 | static nand_drv* ndrv = NULL; | ||
27 | |||
28 | int spl_storage_open(void) | ||
29 | { | ||
30 | /* We need to assign the GPIOs manually */ | ||
31 | gpioz_configure(GPIO_A, 0x3f << 26, GPIOF_DEVICE(1)); | ||
32 | |||
33 | /* Allocate NAND driver manually in DRAM */ | ||
34 | ndrv = spl_alloc(sizeof(nand_drv)); | ||
35 | ndrv->page_buf = spl_alloc(NAND_DRV_MAXPAGESIZE); | ||
36 | ndrv->scratch_buf = spl_alloc(NAND_DRV_SCRATCHSIZE); | ||
37 | ndrv->refcount = 0; | ||
38 | |||
39 | return nand_open(ndrv); | ||
40 | } | ||
41 | |||
42 | void spl_storage_close(void) | ||
43 | { | ||
44 | nand_close(ndrv); | ||
45 | } | ||
46 | |||
47 | int spl_storage_read(uint32_t addr, uint32_t length, void* buffer) | ||
48 | { | ||
49 | return nand_read_bytes(ndrv, addr, length, buffer); | ||
50 | } | ||