]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/drivers-frst/nand/include/lib_nand.h
update
[l4.git] / l4 / pkg / drivers-frst / nand / include / lib_nand.h
1 #pragma once
2
3 #include <l4/sys/types.h>
4 #include "transfer.h"
5
6 class Nand_ctrl;
7 class Nand
8 {
9 public:
10   Nand(Nand_ctrl *nand_ctrl);
11
12   int read_page(l4_addr_t page, Transfer &transfer);
13   int write_page(l4_addr_t page, Transfer &transfer);
14   int erase(l4_addr_t block);
15   int handle_irq();
16
17   long unsigned page_size;
18   long unsigned spare_size;
19   long unsigned block_size;
20   long unsigned num_blocks;
21
22 private:
23   Nand_ctrl *_nand_ctrl;
24 };
25
26 class Nand_drv
27 {
28 public:
29   virtual int probe(const char *configstr) = 0;
30   virtual Nand_ctrl *create(l4_umword_t base) = 0;
31 };
32
33 struct Nand *arm_nand_probe(const char *configstr, l4_addr_t base);
34
35 void arm_nand_register_driver(Nand_drv *nand_drv);
36