11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * inftl.h -- defines to support the Inverse NAND Flash Translation Layer 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com) 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __MTD_INFTL_H__ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __MTD_INFTL_H__ 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __KERNEL__ 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#error This is a kernel header. Perhaps include nftl-user.h instead? 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mtd/blktrans.h> 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mtd/mtd.h> 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mtd/nftl.h> 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <mtd/inftl-user.h> 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef INFTL_MAJOR 21bfabb98688e7089381baa0974f7ff6786ce2a2d0Sean Young#define INFTL_MAJOR 96 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INFTL_PARTN_BITS 4 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__ 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct INFTLrecord { 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mtd_blktrans_dev mbd; 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 MediaUnit; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 EraseSize; 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct INFTLMediaHeader MediaHdr; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int usecount; 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char heads; 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char sectors; 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short cylinders; 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 numvunits; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 firstEUN; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 lastEUN; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 numfreeEUNs; 40f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris __u16 LastFreeEUN; /* To speed up finding a free EUN */ 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int head,sect,cyl; 42f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris __u16 *PUtable; /* Physical Unit Table */ 43f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris __u16 *VUtable; /* Virtual Unit Table */ 44f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris unsigned int nb_blocks; /* number of physical blocks */ 45f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris unsigned int nb_boot_blocks; /* number of blocks used by the bios */ 46f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris struct erase_info instr; 47f4a2da0cd522a3b805ff2386c14912945bf990c7Brian Norris struct nand_ecclayout oobinfo; 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint INFTL_mount(struct INFTLrecord *s); 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint INFTL_formatblock(struct INFTLrecord *s, int block); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 530500abf52109d09bf60d740dec2e41d6cf265688Adrian Bunkvoid INFTL_dumptables(struct INFTLrecord *s); 540500abf52109d09bf60d740dec2e41d6cf265688Adrian Bunkvoid INFTL_dumpVUchains(struct INFTLrecord *s); 550500abf52109d09bf60d740dec2e41d6cf265688Adrian Bunk 56a8e8aa25694f1781fafee4ee8e8f393e4b979b36Adrian Bunkint inftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len, 57a8e8aa25694f1781fafee4ee8e8f393e4b979b36Adrian Bunk size_t *retlen, uint8_t *buf); 58a8e8aa25694f1781fafee4ee8e8f393e4b979b36Adrian Bunkint inftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len, 59a8e8aa25694f1781fafee4ee8e8f393e4b979b36Adrian Bunk size_t *retlen, uint8_t *buf); 60a8e8aa25694f1781fafee4ee8e8f393e4b979b36Adrian Bunk 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */ 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __MTD_INFTL_H__ */ 64