Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 84275
b: refs/heads/master
c: e71f04f
h: refs/heads/master
i:
  84273: ac79d24
  84271: 7a17952
v: v3
  • Loading branch information
Kyungmin Park committed Jan 29, 2008
1 parent d21a6de commit 719d124
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b21b72cf33bb212414c1d967850e261b795befa4
refs/heads/master: e71f04fc9234b14636887ceb5862755f1690642c
20 changes: 16 additions & 4 deletions trunk/drivers/mtd/onenand/onenand_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,18 @@ static int onenand_buffer_address(int dataram1, int sectors, int count)
return ((bsa << ONENAND_BSA_SHIFT) | bsc);
}

/**
* onenand_get_density - [DEFAULT] Get OneNAND density
* @param dev_id OneNAND device ID
*
* Get OneNAND density from device ID
*/
static inline int onenand_get_density(int dev_id)
{
int density = dev_id >> ONENAND_DEVICE_DENSITY_SHIFT;
return (density & ONENAND_DEVICE_DENSITY_MASK);
}

/**
* onenand_command - [DEFAULT] Send command to OneNAND device
* @param mtd MTD device structure
Expand Down Expand Up @@ -2146,7 +2158,7 @@ static int onenand_otp_walk(struct mtd_info *mtd, loff_t from, size_t len,

*retlen = 0;

density = this->device_id >> ONENAND_DEVICE_DENSITY_SHIFT;
density = onenand_get_density(this->device_id);
if (density < ONENAND_DEVICE_DENSITY_512Mb)
otp_pages = 20;
else
Expand Down Expand Up @@ -2337,7 +2349,7 @@ static void onenand_check_features(struct mtd_info *mtd)
unsigned int density, process;

/* Lock scheme depends on density and process */
density = this->device_id >> ONENAND_DEVICE_DENSITY_SHIFT;
density = onenand_get_density(this->device_id);
process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT;

/* Lock scheme */
Expand Down Expand Up @@ -2386,7 +2398,7 @@ static void onenand_print_device_info(int device, int version)
vcc = device & ONENAND_DEVICE_VCC_MASK;
demuxed = device & ONENAND_DEVICE_IS_DEMUX;
ddp = device & ONENAND_DEVICE_IS_DDP;
density = device >> ONENAND_DEVICE_DENSITY_SHIFT;
density = onenand_get_density(device);
printk(KERN_INFO "%sOneNAND%s %dMB %sV 16-bit (0x%02x)\n",
demuxed ? "" : "Muxed ",
ddp ? "(DDP)" : "",
Expand Down Expand Up @@ -2478,7 +2490,7 @@ static int onenand_probe(struct mtd_info *mtd)
this->device_id = dev_id;
this->version_id = ver_id;

density = dev_id >> ONENAND_DEVICE_DENSITY_SHIFT;
density = onenand_get_density(dev_id);
this->chipsize = (16 << density) << 20;
/* Set density mask. it is used for DDP */
if (ONENAND_IS_DDP(this))
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/mtd/onenand_regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
/*
* Device ID Register F001h (R)
*/
#define ONENAND_DEVICE_DENSITY_MASK (0xf)
#define ONENAND_DEVICE_DENSITY_SHIFT (4)
#define ONENAND_DEVICE_IS_DDP (1 << 3)
#define ONENAND_DEVICE_IS_DEMUX (1 << 2)
Expand Down

0 comments on commit 719d124

Please sign in to comment.