projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'next' of git://git.denx.de/u-boot-video
[oweals/u-boot.git]
/
drivers
/
mtd
/
nand
/
arasan_nfc.c
diff --git
a/drivers/mtd/nand/arasan_nfc.c
b/drivers/mtd/nand/arasan_nfc.c
index caa7982d7e081c7a23823b53929fa7ab01cd159d..a8f795d957ffa03f2ab6e29defb5c1915afb684f 100644
(file)
--- a/
drivers/mtd/nand/arasan_nfc.c
+++ b/
drivers/mtd/nand/arasan_nfc.c
@@
-9,7
+9,7
@@
#include <common.h>
#include <malloc.h>
#include <asm/io.h>
#include <common.h>
#include <malloc.h>
#include <asm/io.h>
-#include <
asm
/errno.h>
+#include <
linux
/errno.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
@@
-230,7
+230,7
@@
static void arasan_nand_enable_ecc(void)
static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd)
{
u8 addrcycles;
static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd)
{
u8 addrcycles;
- struct nand_chip *chip = mtd
->priv
;
+ struct nand_chip *chip = mtd
_to_nand(mtd)
;
switch (curr_cmd->addr_cycles) {
case NAND_ADDR_CYCL_NONE:
switch (curr_cmd->addr_cycles) {
case NAND_ADDR_CYCL_NONE:
@@
-264,7
+264,7
@@
static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd)
static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size)
{
static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size)
{
- struct nand_chip *chip = mtd
->priv
;
+ struct nand_chip *chip = mtd
_to_nand(mtd)
;
u32 reg_val, i, pktsize, pktnum;
u32 *bufptr = (u32 *)buf;
u32 timeout;
u32 reg_val, i, pktsize, pktnum;
u32 *bufptr = (u32 *)buf;
u32 timeout;
@@
-433,7
+433,8
@@
static void arasan_nand_fill_tx(const u8 *buf, int len)
}
static int arasan_nand_write_page_hwecc(struct mtd_info *mtd,
}
static int arasan_nand_write_page_hwecc(struct mtd_info *mtd,
- struct nand_chip *chip, const u8 *buf, int oob_required)
+ struct nand_chip *chip, const u8 *buf, int oob_required,
+ int page)
{
u32 reg_val, i, pktsize, pktnum;
const u32 *bufptr = (const u32 *)buf;
{
u32 reg_val, i, pktsize, pktnum;
const u32 *bufptr = (const u32 *)buf;
@@
-441,7
+442,7
@@
static int arasan_nand_write_page_hwecc(struct mtd_info *mtd,
u32 size = mtd->writesize;
u32 rdcount = 0;
u8 column_addr_cycles;
u32 size = mtd->writesize;
u32 rdcount = 0;
u8 column_addr_cycles;
- struct arasan_nand_info *nand =
chip->priv
;
+ struct arasan_nand_info *nand =
nand_get_controller_data(chip)
;
if (chip->ecc_step_ds >= ARASAN_NAND_PKTSIZE_1K)
pktsize = ARASAN_NAND_PKTSIZE_1K;
if (chip->ecc_step_ds >= ARASAN_NAND_PKTSIZE_1K)
pktsize = ARASAN_NAND_PKTSIZE_1K;
@@
-852,6
+853,8
@@
static int arasan_nand_send_rdcmd(struct arasan_nand_command_format *curr_cmd,
reg_val |= (page_val << ARASAN_NAND_CMD_PG_SIZE_SHIFT);
}
reg_val |= (page_val << ARASAN_NAND_CMD_PG_SIZE_SHIFT);
}
+ reg_val &= ~ARASAN_NAND_CMD_ECC_ON_MASK;
+
reg_val &= ~ARASAN_NAND_CMD_ADDR_CYCL_MASK;
addr_cycles = arasan_nand_get_addrcycle(mtd);
reg_val &= ~ARASAN_NAND_CMD_ADDR_CYCL_MASK;
addr_cycles = arasan_nand_get_addrcycle(mtd);
@@
-944,7
+947,7
@@
static void arasan_nand_read_buf(struct mtd_info *mtd, u8 *buf, int size)
static u8 arasan_nand_read_byte(struct mtd_info *mtd)
{
static u8 arasan_nand_read_byte(struct mtd_info *mtd)
{
- struct nand_chip *chip = mtd
->priv
;
+ struct nand_chip *chip = mtd
_to_nand(mtd)
;
u32 size;
u8 val;
struct nand_onfi_params *p;
u32 size;
u8 val;
struct nand_onfi_params *p;
@@
-976,8
+979,8
@@
static void arasan_nand_cmd_function(struct mtd_info *mtd, unsigned int command,
int column, int page_addr)
{
u32 i, ret = 0;
int column, int page_addr)
{
u32 i, ret = 0;
- struct nand_chip *chip = mtd
->priv
;
- struct arasan_nand_info *nand =
chip->priv
;
+ struct nand_chip *chip = mtd
_to_nand(mtd)
;
+ struct arasan_nand_info *nand =
nand_get_controller_data(chip)
;
curr_cmd = NULL;
writel(ARASAN_NAND_INT_STS_XFR_CMPLT_MASK,
curr_cmd = NULL;
writel(ARASAN_NAND_INT_STS_XFR_CMPLT_MASK,
@@
-1033,7
+1036,7
@@
static int arasan_nand_ecc_init(struct mtd_info *mtd)
{
int found = -1;
u32 regval, eccpos_start, i;
{
int found = -1;
u32 regval, eccpos_start, i;
- struct nand_chip *nand_chip = mtd
->priv
;
+ struct nand_chip *nand_chip = mtd
_to_nand(mtd)
;
nand_chip->ecc.mode = NAND_ECC_HW;
nand_chip->ecc.hwctl = NULL;
nand_chip->ecc.mode = NAND_ECC_HW;
nand_chip->ecc.hwctl = NULL;
@@
-1101,9
+1104,8
@@
static int arasan_nand_init(struct nand_chip *nand_chip, int devnum)
}
nand->nand_base = arasan_nand_base;
}
nand->nand_base = arasan_nand_base;
- mtd = &nand_info[0];
- nand_chip->priv = nand;
- mtd->priv = nand_chip;
+ mtd = nand_to_mtd(nand_chip);
+ nand_set_controller_data(nand_chip, nand);
/* Set the driver entry points for MTD */
nand_chip->cmdfunc = arasan_nand_cmd_function;
/* Set the driver entry points for MTD */
nand_chip->cmdfunc = arasan_nand_cmd_function;
@@
-1134,7
+1136,7
@@
static int arasan_nand_init(struct nand_chip *nand_chip, int devnum)
goto fail;
}
goto fail;
}
- if (nand_register(devnum)) {
+ if (nand_register(devnum
, mtd
)) {
printf("Nand Register Fail\n");
goto fail;
}
printf("Nand Register Fail\n");
goto fail;
}