projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix an error in writepage when a file is extended.
[yaffs2.git]
/
mtdemul
/
nandemul2k.c
diff --git
a/mtdemul/nandemul2k.c
b/mtdemul/nandemul2k.c
index 7ee030836b08d4910ab39067231e4acb98a0b823..6f10746e3e433f0752c7f5e39b240f517924e841 100644
(file)
--- a/
mtdemul/nandemul2k.c
+++ b/
mtdemul/nandemul2k.c
@@
-44,13
+44,14
@@
-#define EM_SIZE_IN_MEG 4
-#define PAGE_DATA_SIZE (2048)
-#define PAGE_SPARE_SIZE (64)
-#define PAGES_PER_BLOCK (64)
#define NAND_SHIFT (11) // Shifter for 2k
#define NAND_SHIFT (11) // Shifter for 2k
+#define PAGE_DATA_SIZE (1 << NAND_SHIFT)
+#define PAGE_SPARE_SIZE (64)
+#define BLK_SHIFT 6
+#define PAGES_PER_BLOCK (1 << BLK_SHIFT) // = 64
+#define EM_SIZE_IN_MEG 4
#define EM_SIZE_IN_BYTES (EM_SIZE_IN_MEG * (1<<20))
#define PAGE_TOTAL_SIZE (PAGE_DATA_SIZE+PAGE_SPARE_SIZE)
#define EM_SIZE_IN_BYTES (EM_SIZE_IN_MEG * (1<<20))
#define PAGE_TOTAL_SIZE (PAGE_DATA_SIZE+PAGE_SPARE_SIZE)
@@
-253,7
+254,7
@@
int nandemul2k_GetNumberOfBlocks(void) {return nandemul2k_CalcNBlocks();}
-int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
+
static
int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
{
*vendorId = 'Y';
*deviceId = '2';
{
*vendorId = 'Y';
*deviceId = '2';
@@
-262,7
+263,7
@@
int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
}
}
-int nandemul2k_ReadStatus(__u8 *status)
+
static
int nandemul2k_ReadStatus(__u8 *status)
{
*status = 0;
return 1;
{
*status = 0;
return 1;
@@
-286,11
+287,16
@@
static int nand_write (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf);
static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf,
size_t *retlen, const u_char *buf);
static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf,
-
const
u_char *oob_buf, struct nand_oobinfo *dummy);
+ u_char *oob_buf, struct nand_oobinfo *dummy);
static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf);
static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,7))
+static int nand_writev (struct mtd_info *mtd, const struct kvec *vecs,
+ unsigned long count, loff_t to, size_t *retlen);
+#else
static int nand_writev (struct mtd_info *mtd, const struct iovec *vecs,
unsigned long count, loff_t to, size_t *retlen);
static int nand_writev (struct mtd_info *mtd, const struct iovec *vecs,
unsigned long count, loff_t to, size_t *retlen);
+#endif
static int nand_erase (struct mtd_info *mtd, struct erase_info *instr);
static void nand_sync (struct mtd_info *mtd);
static int nand_erase (struct mtd_info *mtd, struct erase_info *instr);
static void nand_sync (struct mtd_info *mtd);
@@
-413,7
+419,7
@@
static int nand_write (struct mtd_info *mtd, loff_t to, size_t len,
*/
static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf,
*/
static int nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf,
-
const
u_char *oob_buf, struct nand_oobinfo *dummy)
+ u_char *oob_buf, struct nand_oobinfo *dummy)
{
int start, page;
{
int start, page;
@@
-509,8
+515,13
@@
static int nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len,
/*
* NAND write with iovec
*/
/*
* NAND write with iovec
*/
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,7))
+static int nand_writev (struct mtd_info *mtd, const struct kvec *vecs,
+ unsigned long count, loff_t to, size_t *retlen)
+#else
static int nand_writev (struct mtd_info *mtd, const struct iovec *vecs,
unsigned long count, loff_t to, size_t *retlen)
static int nand_writev (struct mtd_info *mtd, const struct iovec *vecs,
unsigned long count, loff_t to, size_t *retlen)
+#endif
{
return -EINVAL;
}
{
return -EINVAL;
}
@@
-547,8
+558,8
@@
static int nand_erase (struct mtd_info *mtd, struct erase_info *instr)
return -EINVAL;
}
return -EINVAL;
}
- nBlocks = instr->len >> (NAND_SHIFT +
5
);
- block = instr->addr >> (NAND_SHIFT +
5
);
+ nBlocks = instr->len >> (NAND_SHIFT +
BLK_SHIFT
);
+ block = instr->addr >> (NAND_SHIFT +
BLK_SHIFT
);
for(i = 0; i < nBlocks; i++)
{
for(i = 0; i < nBlocks; i++)
{
@@
-564,12
+575,12
@@
static int nand_erase (struct mtd_info *mtd, struct erase_info *instr)
}
}
-
int nand_block_isbad(struct mtd_info *mtd,int blockNo
)
+
static int nand_block_isbad(struct mtd_info *mtd, loff_t ofs
)
{
return 0;
}
{
return 0;
}
-
int nand_block_markbad(struct mtd_info *mtd, int blockNo
)
+
static int nand_block_markbad(struct mtd_info *mtd, loff_t ofs
)
{
return 0;
}
{
return 0;
}
@@
-587,7
+598,7
@@
static void nand_sync (struct mtd_info *mtd)
/*
* Scan for the NAND device
*/
/*
* Scan for the NAND device
*/
-
int nand
_scan (struct mtd_info *mtd,int nchips)
+
static int nandemul2k
_scan (struct mtd_info *mtd,int nchips)
{
mtd->oobblock = PAGE_DATA_SIZE;
mtd->oobsize = PAGE_SPARE_SIZE;
{
mtd->oobblock = PAGE_DATA_SIZE;
mtd->oobsize = PAGE_SPARE_SIZE;
@@
-620,6
+631,8
@@
int nand_scan (struct mtd_info *mtd,int nchips)
mtd->suspend = NULL;
mtd->resume = NULL;
mtd->suspend = NULL;
mtd->resume = NULL;
+ mtd->name = "NANDemul2k";
+
/* Return happy */
return 0;
}
/* Return happy */
return 0;
}
@@
-638,9
+651,9
@@
__setup("sizeInMB=",sizeInMB);
static struct mtd_partition nandemul2k_partition[] =
{
static struct mtd_partition nandemul2k_partition[] =
{
- {
name:
"NANDemul partition 1",
-
offset:
0,
-
size:
0 },
+ {
.name =
"NANDemul partition 1",
+
.offset =
0,
+
.size =
0 },
};
static int nPartitions = sizeof(nandemul2k_partition)/sizeof(nandemul2k_partition[0]);
};
static int nPartitions = sizeof(nandemul2k_partition)/sizeof(nandemul2k_partition[0]);
@@
-655,7
+668,7
@@
int __init nandemul2k_init (void)
CheckInit();
CheckInit();
- nand_scan(&nandemul2k_mtd,1);
+ nand
emul2k
_scan(&nandemul2k_mtd,1);
// Build the partition table
// Build the partition table