Skip to content
Snippets Groups Projects
nand.h 2.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • Wolfgang Denk's avatar
    Wolfgang Denk committed
    /*
     *  u-boot/include/linux/mtd/nand.h
     *
     *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com>
     *                     Steven J. Hill <sjhill@cotw.com>
     *
     * $Id: nand.h,v 1.8 2000/10/30 17:16:17 sjhill Exp $
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     *
     *  Info:
     *   Contains standard defines and IDs for NAND flash devices
     *
     *  Changelog:
     *   01-31-2000 DMW     Created
     *   09-18-2000 SJH     Moved structure out of the Disk-On-Chip drivers
     *			so it can be used by other NAND flash device
     *			drivers. I also changed the copyright since none
     *			of the original contents of this file are specific
     *			to DoC devices. David can whack me with a baseball
     *			bat later if I did something naughty.
     *   10-11-2000 SJH     Added private NAND flash structure for driver
     *   10-24-2000 SJH     Added prototype for 'nand_scan' function
     */
    #ifndef __LINUX_MTD_NAND_H
    #define __LINUX_MTD_NAND_H
    
    /*
     * Standard NAND flash commands
     */
    #define NAND_CMD_READ0		0
    #define NAND_CMD_READ1		1
    #define NAND_CMD_PAGEPROG	0x10
    #define NAND_CMD_READOOB	0x50
    #define NAND_CMD_ERASE1		0x60
    #define NAND_CMD_STATUS		0x70
    #define NAND_CMD_SEQIN		0x80
    #define NAND_CMD_READID		0x90
    #define NAND_CMD_ERASE2		0xd0
    #define NAND_CMD_RESET		0xff
    
    /*
     * NAND Flash Manufacturer ID Codes
     */
    #define NAND_MFR_TOSHIBA	0x98
    #define NAND_MFR_SAMSUNG	0xec
    
    /*
     * NAND Flash Device ID Structure
     *
     * Structure overview:
     *
     *  name - Complete name of device
     *
     *  manufacture_id - manufacturer ID code of device.
     *
     *  model_id - model ID code of device.
     *
     *  chipshift - total number of address bits for the device which
     *              is used to calculate address offsets and the total
     *              number of bytes the device is capable of.
     *
     *  page256 - denotes if flash device has 256 byte pages or not.
     *
     *  pageadrlen - number of bytes minus one needed to hold the
     *               complete address into the flash array. Keep in
     *               mind that when a read or write is done to a
     *               specific address, the address is input serially
     *               8 bits at a time. This structure member is used
     *               by the read/write routines as a loop index for
     *               shifting the address out 8 bits at a time.
     *
     *  erasesize - size of an erase block in the flash device.
     */
    struct nand_flash_dev {
    	char * name;
    	int manufacture_id;
    	int model_id;
    	int chipshift;
    	char page256;
    	char pageadrlen;
    	unsigned long erasesize;
    };
    
    #endif /* __LINUX_MTD_NAND_H */