#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/export.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/bitops.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/bch.h>
#include <linux/bitrev.h>
Go to the source code of this file.
#define DOC_ASICMODE 0x100c |
#define DOC_ASICMODE_BDETCT_RESET 0x08 |
#define DOC_ASICMODE_MDWREN 0x04 |
#define DOC_ASICMODE_NORMAL 0x01 |
#define DOC_ASICMODE_POWERDOWN 0x02 |
#define DOC_ASICMODE_RAM_WE 0x20 |
#define DOC_ASICMODE_RESET 0x00 |
#define DOC_ASICMODE_RSTIN_RESET 0x10 |
#define DOC_ASICMODECONFIRM 0x1072 |
#define DOC_BCH_SYNDROM |
( |
|
idx | ) |
(0x1048 + idx) |
#define DOC_CHIPID 0x1000 |
#define DOC_CHIPID_INV 0x1074 |
#define DOC_CMD_ERASECYCLE2 0xd0 |
#define DOC_CMD_PROG_BLOCK_ADDR 0x60 |
#define DOC_CMD_PROG_CYCLE2 0x10 |
#define DOC_CMD_RESET 0xff |
#define DOC_CTRL_FLASHREADY 0x01 |
#define DOC_CTRL_UNKNOWN 0x40 |
#define DOC_DATAEND 0x101e |
#define DOC_DEVICESELECT 0x100a |
#define DOC_ECCCONF0 0x1040 |
#define DOC_ECCCONF0_DATA_BYTES_MASK 0x07ff |
#define DOC_ECCCONF0_ECC_ENABLE 0x1000 |
#define DOC_ECCCONF0_READ_MODE 0x8000 |
#define DOC_ECCCONF0_UNKNOWN 0x2000 |
#define DOC_ECCCONF1 0x1042 |
#define DOC_ECCCONF1_BCH_SYNDROM_ERR 0x80 |
#define DOC_ECCCONF1_ECC_ENABLE 0x07 |
#define DOC_ECCCONF1_PAGE_IS_WRITTEN 0x20 |
#define DOC_FLASHADDRESS 0x1036 |
#define DOC_FLASHCOMMAND 0x1034 |
#define DOC_FLASHCONTROL 0x1038 |
#define DOC_FLASHSEQUENCE 0x1032 |
#define DOC_HAMMINGPARITY 0x1046 |
#define DOC_IOSPACE_DATA 0x0800 |
#define DOC_POWERDOWN_READY 0x80 |
#define DOC_POWERMODE 0x107c |
#define DOC_SEQ_RESET 0x00 |
#define DOCG4_CHIP_SIZE 0x8000000 |
#define DOCG4_CMD_FLUSH 0x70 |
#define DOCG4_CMD_PAGE_READ 0x00 |
#define DOCG4_CMD_PAGEWRITE 0x80 |
#define DOCG4_CMD_READ2 0x30 |
#define DOCG4_FACTORY_BBT_PAGE 16 /* page where read-only factory bbt lives */ |
#define DOCG4_IDREG1_VALUE 0x0400 |
#define DOCG4_IDREG2_VALUE 0xfbff |
#define DOCG4_MYSTERY_REG 0x1050 |
#define DOCG4_OOB_6_7 0x1052 |
#define DOCG4_OOB_SIZE 0x10 |
#define DOCG4_PAGE_SIZE 0x200 |
#define DOCG4_PAGES_PER_BLOCK 0x200 |
#define DOCG4_PRIMITIVE_POLY 0x4443 |
#define DOCG4_PROGSTATUS_GOOD 0x51 |
#define DOCG4_PROGSTATUS_GOOD_2 0xe0 |
#define DOCG4_READ_ERROR 0x02 /* bit 1 indicates read error */ |
#define DOCG4_SEQ_BLOCKERASE 0x24 |
#define DOCG4_SEQ_FLUSH 0x29 |
#define DOCG4_SEQ_PAGE_READ 0x03 |
#define DOCG4_SEQ_PAGEPROG 0x1e |
#define DOCG4_SEQ_PAGEWRITE 0x16 |
#define DOCG4_T 4 /* BCH alg corrects up to 4 bit errors */ |
MODULE_AUTHOR |
( |
"Mike Dunn" |
| ) |
|
module_exit |
( |
docg4_exit |
| ) |
|
module_init |
( |
docg4_init |
| ) |
|
module_param |
( |
ignore_badblocks |
, |
|
|
bool |
, |
|
|
0 |
|
|
) |
| |
MODULE_PARM_DESC |
( |
ignore_badblocks |
, |
|
|
"no badblock checking performed" |
|
|
) |
| |