Commit aa36ff25 authored by Boris Brezillon's avatar Boris Brezillon Committed by Miquel Raynal

mtd: rawnand: Pass a nand_chip object to chip->{get, set}_features()

Let's make the raw NAND API consistent by patching all helpers and
hooks to take a nand_chip object instead of an mtd_info one or
remove the mtd_info object when both are passed.

Let's tackle the chip->{get,set}_features() hooks.
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent a2098a9e
...@@ -1393,11 +1393,11 @@ static void mxc_nand_command(struct nand_chip *nand_chip, unsigned command, ...@@ -1393,11 +1393,11 @@ static void mxc_nand_command(struct nand_chip *nand_chip, unsigned command,
} }
} }
static int mxc_nand_set_features(struct mtd_info *mtd, struct nand_chip *chip, static int mxc_nand_set_features(struct nand_chip *chip, int addr,
int addr, u8 *subfeature_param) u8 *subfeature_param)
{ {
struct nand_chip *nand_chip = mtd_to_nand(mtd); struct mtd_info *mtd = nand_to_mtd(chip);
struct mxc_nand_host *host = nand_get_controller_data(nand_chip); struct mxc_nand_host *host = nand_get_controller_data(chip);
int i; int i;
host->buf_start = 0; host->buf_start = 0;
...@@ -1413,11 +1413,11 @@ static int mxc_nand_set_features(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -1413,11 +1413,11 @@ static int mxc_nand_set_features(struct mtd_info *mtd, struct nand_chip *chip,
return 0; return 0;
} }
static int mxc_nand_get_features(struct mtd_info *mtd, struct nand_chip *chip, static int mxc_nand_get_features(struct nand_chip *chip, int addr,
int addr, u8 *subfeature_param) u8 *subfeature_param)
{ {
struct nand_chip *nand_chip = mtd_to_nand(mtd); struct mtd_info *mtd = nand_to_mtd(chip);
struct mxc_nand_host *host = nand_get_controller_data(nand_chip); struct mxc_nand_host *host = nand_get_controller_data(chip);
int i; int i;
host->devtype_data->send_cmd(host, NAND_CMD_GET_FEATURES, false); host->devtype_data->send_cmd(host, NAND_CMD_GET_FEATURES, false);
......
...@@ -1163,12 +1163,10 @@ static bool nand_supports_set_features(struct nand_chip *chip, int addr) ...@@ -1163,12 +1163,10 @@ static bool nand_supports_set_features(struct nand_chip *chip, int addr)
int nand_get_features(struct nand_chip *chip, int addr, int nand_get_features(struct nand_chip *chip, int addr,
u8 *subfeature_param) u8 *subfeature_param)
{ {
struct mtd_info *mtd = nand_to_mtd(chip);
if (!nand_supports_get_features(chip, addr)) if (!nand_supports_get_features(chip, addr))
return -ENOTSUPP; return -ENOTSUPP;
return chip->get_features(mtd, chip, addr, subfeature_param); return chip->get_features(chip, addr, subfeature_param);
} }
EXPORT_SYMBOL_GPL(nand_get_features); EXPORT_SYMBOL_GPL(nand_get_features);
...@@ -1184,12 +1182,10 @@ EXPORT_SYMBOL_GPL(nand_get_features); ...@@ -1184,12 +1182,10 @@ EXPORT_SYMBOL_GPL(nand_get_features);
int nand_set_features(struct nand_chip *chip, int addr, int nand_set_features(struct nand_chip *chip, int addr,
u8 *subfeature_param) u8 *subfeature_param)
{ {
struct mtd_info *mtd = nand_to_mtd(chip);
if (!nand_supports_set_features(chip, addr)) if (!nand_supports_set_features(chip, addr))
return -ENOTSUPP; return -ENOTSUPP;
return chip->set_features(mtd, chip, addr, subfeature_param); return chip->set_features(chip, addr, subfeature_param);
} }
EXPORT_SYMBOL_GPL(nand_set_features); EXPORT_SYMBOL_GPL(nand_set_features);
...@@ -4846,13 +4842,11 @@ static int nand_max_bad_blocks(struct mtd_info *mtd, loff_t ofs, size_t len) ...@@ -4846,13 +4842,11 @@ static int nand_max_bad_blocks(struct mtd_info *mtd, loff_t ofs, size_t len)
/** /**
* nand_default_set_features- [REPLACEABLE] set NAND chip features * nand_default_set_features- [REPLACEABLE] set NAND chip features
* @mtd: MTD device structure
* @chip: nand chip info structure * @chip: nand chip info structure
* @addr: feature address. * @addr: feature address.
* @subfeature_param: the subfeature parameters, a four bytes array. * @subfeature_param: the subfeature parameters, a four bytes array.
*/ */
static int nand_default_set_features(struct mtd_info *mtd, static int nand_default_set_features(struct nand_chip *chip, int addr,
struct nand_chip *chip, int addr,
uint8_t *subfeature_param) uint8_t *subfeature_param)
{ {
return nand_set_features_op(chip, addr, subfeature_param); return nand_set_features_op(chip, addr, subfeature_param);
...@@ -4860,13 +4854,11 @@ static int nand_default_set_features(struct mtd_info *mtd, ...@@ -4860,13 +4854,11 @@ static int nand_default_set_features(struct mtd_info *mtd,
/** /**
* nand_default_get_features- [REPLACEABLE] get NAND chip features * nand_default_get_features- [REPLACEABLE] get NAND chip features
* @mtd: MTD device structure
* @chip: nand chip info structure * @chip: nand chip info structure
* @addr: feature address. * @addr: feature address.
* @subfeature_param: the subfeature parameters, a four bytes array. * @subfeature_param: the subfeature parameters, a four bytes array.
*/ */
static int nand_default_get_features(struct mtd_info *mtd, static int nand_default_get_features(struct nand_chip *chip, int addr,
struct nand_chip *chip, int addr,
uint8_t *subfeature_param) uint8_t *subfeature_param)
{ {
return nand_get_features_op(chip, addr, subfeature_param); return nand_get_features_op(chip, addr, subfeature_param);
...@@ -4874,7 +4866,6 @@ static int nand_default_get_features(struct mtd_info *mtd, ...@@ -4874,7 +4866,6 @@ static int nand_default_get_features(struct mtd_info *mtd,
/** /**
* nand_get_set_features_notsupp - set/get features stub returning -ENOTSUPP * nand_get_set_features_notsupp - set/get features stub returning -ENOTSUPP
* @mtd: MTD device structure
* @chip: nand chip info structure * @chip: nand chip info structure
* @addr: feature address. * @addr: feature address.
* @subfeature_param: the subfeature parameters, a four bytes array. * @subfeature_param: the subfeature parameters, a four bytes array.
...@@ -4882,8 +4873,8 @@ static int nand_default_get_features(struct mtd_info *mtd, ...@@ -4882,8 +4873,8 @@ static int nand_default_get_features(struct mtd_info *mtd,
* Should be used by NAND controller drivers that do not support the SET/GET * Should be used by NAND controller drivers that do not support the SET/GET
* FEATURES operations. * FEATURES operations.
*/ */
int nand_get_set_features_notsupp(struct mtd_info *mtd, struct nand_chip *chip, int nand_get_set_features_notsupp(struct nand_chip *chip, int addr,
int addr, u8 *subfeature_param) u8 *subfeature_param)
{ {
return -ENOTSUPP; return -ENOTSUPP;
} }
......
...@@ -1299,10 +1299,10 @@ struct nand_chip { ...@@ -1299,10 +1299,10 @@ struct nand_chip {
const struct nand_operation *op, const struct nand_operation *op,
bool check_only); bool check_only);
int (*erase)(struct nand_chip *chip, int page); int (*erase)(struct nand_chip *chip, int page);
int (*set_features)(struct mtd_info *mtd, struct nand_chip *chip, int (*set_features)(struct nand_chip *chip, int feature_addr,
int feature_addr, uint8_t *subfeature_para); uint8_t *subfeature_para);
int (*get_features)(struct mtd_info *mtd, struct nand_chip *chip, int (*get_features)(struct nand_chip *chip, int feature_addr,
int feature_addr, uint8_t *subfeature_para); uint8_t *subfeature_para);
int (*setup_read_retry)(struct mtd_info *mtd, int retry_mode); int (*setup_read_retry)(struct mtd_info *mtd, int retry_mode);
int (*setup_data_interface)(struct mtd_info *mtd, int chipnr, int (*setup_data_interface)(struct mtd_info *mtd, int chipnr,
const struct nand_data_interface *conf); const struct nand_data_interface *conf);
...@@ -1681,8 +1681,8 @@ int nand_read_oob_syndrome(struct nand_chip *chip, int page); ...@@ -1681,8 +1681,8 @@ int nand_read_oob_syndrome(struct nand_chip *chip, int page);
int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param); int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
int nand_set_features(struct nand_chip *chip, int addr, u8 *subfeature_param); int nand_set_features(struct nand_chip *chip, int addr, u8 *subfeature_param);
/* Stub used by drivers that do not support GET/SET FEATURES operations */ /* Stub used by drivers that do not support GET/SET FEATURES operations */
int nand_get_set_features_notsupp(struct mtd_info *mtd, struct nand_chip *chip, int nand_get_set_features_notsupp(struct nand_chip *chip, int addr,
int addr, u8 *subfeature_param); u8 *subfeature_param);
/* Default read_page_raw implementation */ /* Default read_page_raw implementation */
int nand_read_page_raw(struct nand_chip *chip, uint8_t *buf, int oob_required, int nand_read_page_raw(struct nand_chip *chip, uint8_t *buf, int oob_required,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment