mtd-nand.h 2 KB
/**    
    @file     mtd-nand.h
    @date     2010/05/27
    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
    @brief    mtd를 통해 nand 플래시를 제어한ㄷ.ㅏ
              
    @todo     테스트 함수를 아직 만들지 않았다.
    @bug     
    @remark  
    @warning 
*/
//
//  저작권    에프에이리눅스(주)
//            외부공개 금지
//
//----------------------------------------------------------------------------


#ifndef _MTD_NAND_HEADER_
#define _MTD_NAND_HEADER_

#define MAX_BADBLOCK_COUNT		100
#define RDERR_MANY_BADBLOCK		-10000

typedef enum { 	
		EZP_NONE = 0,
		EZP_V1   = 1,
		EZP_V2   = 2,
		
		EZP_S5PV210_HEADER = 210
} ezboot_ver_t;

/// mtd 를 위한 개별 관리 구조체
typedef struct {

	char  node_name[128];
	int   fd;
	int   pos;
	
	struct mtd_info_user info;

} mtdnand_t;

#ifdef __cplusplus 
extern "C" { 
#endif 	

/// @{
/// @brief  mtd-nand.c 에서 제공하는 함수 리스트 
extern  mtdnand_t *mtdnand_create( char *fname );  /// mtd-nand 생성함수
extern  void  mtdnand_free( mtdnand_t *mtd );      /// mtd-nand 해제함수

extern  int   mtdnand_is_bad( mtdnand_t *mtd );                               /// 배드블럭확인 
extern  int   mtdnand_read ( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 에서 데이타를 읽는다.
extern  int   mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 에 데이타를 쓴다.
extern  int   mtdnand_read_oob( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 의 oob 영역을 읽는다.
extern  int   mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count ); // mtd-nand 에서 배드블럭을 스킵하여 데이타를 읽는다.

extern  int   mtdnand_seek ( mtdnand_t *mtd, int offset, int origin );        /// mtd-nand 의 엑세스 위치를 이동한다
extern  int   mtdnand_erase( mtdnand_t *mtd );                                /// mtd-nand 의 한블럭을 지운다.

/// @}

#ifdef __cplusplus 
}
#endif 


#endif //