mtd: rawnand: mtk: Add validity check for CE# pin setting
Currently, we only check how many CE# pins are set in device tree. But it should be necessary to check whether CE# pin setting is duplicated or if CE# pin index exceeds the maximum CE# number that controller supports. So, add validity check to avoid these invalid settings. Signed-off-by: Xiaolei Li <xiaolei.li@mediatek.com> Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
parent
42d13a09ef
commit
8dbd7b103f
|
@ -154,6 +154,8 @@ struct mtk_nfc {
|
|||
struct list_head chips;
|
||||
|
||||
u8 *buffer;
|
||||
|
||||
unsigned long assigned_cs;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1359,6 +1361,17 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc,
|
|||
dev_err(dev, "reg property failure : %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (tmp >= MTK_NAND_MAX_NSELS) {
|
||||
dev_err(dev, "invalid CS: %u\n", tmp);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (test_and_set_bit(tmp, &nfc->assigned_cs)) {
|
||||
dev_err(dev, "CS %u already assigned\n", tmp);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
chip->sels[i] = tmp;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue