Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug

NAME

       struct nand_chip - NAND Private Flash Chip Data

SYNOPSIS

       struct nand_chip {
         void __iomem * IO_ADDR_R;
         void __iomem * IO_ADDR_W;
         u_char (* read_byte) (struct mtd_info *mtd);
         void (* write_byte) (struct mtd_info *mtd, u_char byte);
         u16 (* read_word) (struct mtd_info *mtd);
         void (* write_word) (struct mtd_info *mtd, u16 word);
         void (* write_buf) (struct mtd_info *mtd, const u_char *buf, int len);
         void (* read_buf) (struct mtd_info *mtd, u_char *buf, int len);
         int (* verify_buf) (struct mtd_info *mtd, const u_char *buf, int len);
         void (* select_chip) (struct mtd_info *mtd, int chip);
         int (* block_bad) (struct mtd_info *mtd, loff_t ofs, int getchip);
         int (* block_markbad) (struct mtd_info *mtd, loff_t ofs);
         void (* hwcontrol) (struct mtd_info *mtd, int cmd);
         int (* dev_ready) (struct mtd_info *mtd);
         void (* cmdfunc) (struct mtd_info *mtd, unsigned command, int column, int page_addr);
         int (* waitfunc) (struct mtd_info *mtd, struct nand_chip *this, int state);
         int (* calculate_ecc) (struct mtd_info *mtd, const u_char *dat, u_char *ecc_code);
         int (* correct_data) (struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc);
         void (* enable_hwecc) (struct mtd_info *mtd, int mode);
         void (* erase_cmd) (struct mtd_info *mtd, int page);
         int (* scan_bbt) (struct mtd_info *mtd);
         int eccmode;
         int eccsize;
         int eccbytes;
         int eccsteps;
         int chip_delay;
         spinlock_t chip_lock;
         wait_queue_head_t wq;
         nand_state_t state;
         int page_shift;
         int phys_erase_shift;
         int bbt_erase_shift;
         int chip_shift;
         u_char * data_buf;
         u_char * oob_buf;
         int oobdirty;
         u_char * data_poi;
         unsigned int options;
         int badblockpos;
         int numchips;
         unsigned long chipsize;
         int pagemask;
         int pagebuf;
         struct nand_oobinfo * autooob;
         uint8_t * bbt;
         struct nand_bbt_descr * bbt_td;
         struct nand_bbt_descr * bbt_md;
         struct nand_bbt_descr * badblock_pattern;
         struct nand_hw_control * controller;
         void * priv;
         int (* errstat) (struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page);
       };

MEMBERS

       IO_ADDR_R
              [BOARDSPECIFIC]  address  to  read  the 8 I/O lines of the flash
              device

       IO_ADDR_W
              [BOARDSPECIFIC] address to write the 8 I/O lines  of  the  flash
              device

       read_byte
              [REPLACEABLE] read one byte from the chip

       write_byte
              [REPLACEABLE] write one byte to the chip

       read_word
              [REPLACEABLE] read one word from the chip

       write_word
              [REPLACEABLE] write one word to the chip

       write_buf
              [REPLACEABLE] write data from the buffer to the chip

       read_buf
              [REPLACEABLE] read data from the chip into the buffer

       verify_buf
              [REPLACEABLE] verify buffer contents against the chip data

       select_chip
              [REPLACEABLE] select chip nr

       block_bad
              [REPLACEABLE] check, if the block is bad

       block_markbad
              [REPLACEABLE] mark the block bad

       hwcontrol
              [BOARDSPECIFIC]    hardwarespecific    function   for   accesing
              control-lines

       dev_ready
              [BOARDSPECIFIC] hardwarespecific function  for  accesing  device
              ready/busy  line  If  set  to  NULL  no  access to ready/busy is
              available and the ready/busy information is read from  the  chip
              status register

       cmdfunc
              [REPLACEABLE]  hardwarespecific function for writing commands to
              the chip

       waitfunc
              [REPLACEABLE] hardwarespecific function for wait on ready

       calculate_ecc
              [REPLACEABLE] function for ecc calculation or readback from  ecc
              hardware

       correct_data
              [REPLACEABLE]  function  for  ecc  correction,  matching  to ecc
              generator (sw/hw)

       enable_hwecc
              [BOARDSPECIFIC]  function  to  enable   (reset)   hardware   ecc
              generator. Must only be provided if a hardware ECC is available

       erase_cmd
              [INTERN]  erase  command  write  function, selectable due to AND
              support

       scan_bbt
              [REPLACEABLE] function to scan bad block table

       eccmode
              [BOARDSPECIFIC] mode of ecc, see defines

       eccsize
              [INTERN] databytes used per ecc-calculation

       eccbytes
              [INTERN] number of ecc bytes per ecc-calculation step

       eccsteps
              [INTERN] number of ecc calculation steps per page

       chip_delay
              [BOARDSPECIFIC] chip dependent delay for transfering  data  from
              array to read regs (tR)

       chip_lock
              [INTERN]  spinlock  used to protect access to this structure and
              the chip

       wq     [INTERN] wait queue to sleep  on  if  a  NAND  operation  is  in
              progress

       state  [INTERN] the current state of the NAND device

       page_shift
              [INTERN] number of address bits in a page (column address bits)

       phys_erase_shift
              [INTERN] number of address bits in a physical eraseblock

       bbt_erase_shift
              [INTERN] number of address bits in a bbt entry

       chip_shift
              [INTERN] number of address bits in one chip

       data_buf
              [INTERN] internal buffer for one page + oob

       oob_buf
              [INTERN] oob buffer for one eraseblock

       oobdirty
              [INTERN] indicates that oob_buf must be reinitialized

       data_poi
              [INTERN] pointer to a data buffer

       options
              [BOARDSPECIFIC]  various chip options. They can partly be set to
              inform nand_scan about special functionality.  See  the  defines
              for further explanation

       badblockpos
              [INTERN] position of the bad block marker in the oob area

       numchips
              [INTERN] number of physical chips

       chipsize
              [INTERN] the size of one chip for multichip arrays

       pagemask
              [INTERN] page number mask = number of (pages / chip) - 1

       pagebuf
              [INTERN] holds the pagenumber which is currently in data_buf

       autooob
              [REPLACEABLE] the default (auto)placement scheme

       bbt    [INTERN] bad block table pointer

       bbt_td [REPLACEABLE] bad block table descriptor for flash lookup

       bbt_md [REPLACEABLE] bad block table mirror descriptor

       badblock_pattern
              [REPLACEABLE]  bad block scan pattern used for initial bad block
              scan

       controller
              [OPTIONAL] a pointer to a hardware controller structure which is
              shared among multiple independend devices

       priv   [OPTIONAL] pointer to private chip date

       errstat
              [OPTIONAL]  hardware  specific  function  to  perform additional
              error status checks (determine if errors are correctable)

AUTHOR

       Thomas Gleixner <tglx@linutronix.de>.