mtd: onenand: fix 4KiB page onenand chip recognition
For 4Gib non-DDP chip it does not follow that it is always 4KiB page chip. The number of data buffers is checked and if it is equal to 1 we suppose that it is 4KiB page onenand chip. Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
940fe282ae
commit
edb44b9b9c
1 changed files with 3 additions and 2 deletions
|
@ -3365,18 +3365,19 @@ static int onenand_lock_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
|||
static void onenand_check_features(struct mtd_info *mtd)
|
||||
{
|
||||
struct onenand_chip *this = mtd->priv;
|
||||
unsigned int density, process;
|
||||
unsigned int density, process, numbufs;
|
||||
|
||||
/* Lock scheme depends on density and process */
|
||||
density = onenand_get_density(this->device_id);
|
||||
process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT;
|
||||
numbufs = this->read_word(this->base + ONENAND_REG_NUM_BUFFERS) >> 8;
|
||||
|
||||
/* Lock scheme */
|
||||
switch (density) {
|
||||
case ONENAND_DEVICE_DENSITY_4Gb:
|
||||
if (ONENAND_IS_DDP(this))
|
||||
this->options |= ONENAND_HAS_2PLANE;
|
||||
else
|
||||
else if (numbufs == 1)
|
||||
this->options |= ONENAND_HAS_4KB_PAGE;
|
||||
|
||||
case ONENAND_DEVICE_DENSITY_2Gb:
|
||||
|
|
Loading…
Reference in a new issue