mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-30 19:06:14 +00:00
[MTD] [OneNAND] Get correct density from device ID
Use the higher bits for other purpose. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
This commit is contained in:
parent
b21b72cf33
commit
e71f04fc92
2 changed files with 17 additions and 4 deletions
|
@ -169,6 +169,18 @@ static int onenand_buffer_address(int dataram1, int sectors, int count)
|
||||||
return ((bsa << ONENAND_BSA_SHIFT) | bsc);
|
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
|
* onenand_command - [DEFAULT] Send command to OneNAND device
|
||||||
* @param mtd MTD device structure
|
* @param mtd MTD device structure
|
||||||
|
@ -2146,7 +2158,7 @@ static int onenand_otp_walk(struct mtd_info *mtd, loff_t from, size_t len,
|
||||||
|
|
||||||
*retlen = 0;
|
*retlen = 0;
|
||||||
|
|
||||||
density = this->device_id >> ONENAND_DEVICE_DENSITY_SHIFT;
|
density = onenand_get_density(this->device_id);
|
||||||
if (density < ONENAND_DEVICE_DENSITY_512Mb)
|
if (density < ONENAND_DEVICE_DENSITY_512Mb)
|
||||||
otp_pages = 20;
|
otp_pages = 20;
|
||||||
else
|
else
|
||||||
|
@ -2337,7 +2349,7 @@ static void onenand_check_features(struct mtd_info *mtd)
|
||||||
unsigned int density, process;
|
unsigned int density, process;
|
||||||
|
|
||||||
/* Lock scheme depends on density and 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;
|
process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT;
|
||||||
|
|
||||||
/* Lock scheme */
|
/* Lock scheme */
|
||||||
|
@ -2386,7 +2398,7 @@ static void onenand_print_device_info(int device, int version)
|
||||||
vcc = device & ONENAND_DEVICE_VCC_MASK;
|
vcc = device & ONENAND_DEVICE_VCC_MASK;
|
||||||
demuxed = device & ONENAND_DEVICE_IS_DEMUX;
|
demuxed = device & ONENAND_DEVICE_IS_DEMUX;
|
||||||
ddp = device & ONENAND_DEVICE_IS_DDP;
|
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",
|
printk(KERN_INFO "%sOneNAND%s %dMB %sV 16-bit (0x%02x)\n",
|
||||||
demuxed ? "" : "Muxed ",
|
demuxed ? "" : "Muxed ",
|
||||||
ddp ? "(DDP)" : "",
|
ddp ? "(DDP)" : "",
|
||||||
|
@ -2478,7 +2490,7 @@ static int onenand_probe(struct mtd_info *mtd)
|
||||||
this->device_id = dev_id;
|
this->device_id = dev_id;
|
||||||
this->version_id = ver_id;
|
this->version_id = ver_id;
|
||||||
|
|
||||||
density = dev_id >> ONENAND_DEVICE_DENSITY_SHIFT;
|
density = onenand_get_density(dev_id);
|
||||||
this->chipsize = (16 << density) << 20;
|
this->chipsize = (16 << density) << 20;
|
||||||
/* Set density mask. it is used for DDP */
|
/* Set density mask. it is used for DDP */
|
||||||
if (ONENAND_IS_DDP(this))
|
if (ONENAND_IS_DDP(this))
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
/*
|
/*
|
||||||
* Device ID Register F001h (R)
|
* Device ID Register F001h (R)
|
||||||
*/
|
*/
|
||||||
|
#define ONENAND_DEVICE_DENSITY_MASK (0xf)
|
||||||
#define ONENAND_DEVICE_DENSITY_SHIFT (4)
|
#define ONENAND_DEVICE_DENSITY_SHIFT (4)
|
||||||
#define ONENAND_DEVICE_IS_DDP (1 << 3)
|
#define ONENAND_DEVICE_IS_DDP (1 << 3)
|
||||||
#define ONENAND_DEVICE_IS_DEMUX (1 << 2)
|
#define ONENAND_DEVICE_IS_DEMUX (1 << 2)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue