mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 04:31:58 +08:00
mtd: core: Constify buf in mtd_write_user_prot_reg()
The write buffer comes from user and should be const. Constify write buffer in mtd core and across all _write_user_prot_reg() users. cfi_cmdset_{0001, 0002} and onenand_base will pay the cost of an explicit cast to discard the const qualifier since the beginning, since they are using an otp_op_t function prototype that is used for both reads and writes. mtd_dataflash and SPI NOR will benefit of the const buffer because they are using different paths for writes and reads. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20210403060931.7119-1-tudor.ambarus@microchip.com
This commit is contained in:
parent
ef4ed780d0
commit
1df1fc8c62
@ -72,7 +72,8 @@ static int cfi_intelext_is_locked(struct mtd_info *mtd, loff_t ofs,
|
|||||||
#ifdef CONFIG_MTD_OTP
|
#ifdef CONFIG_MTD_OTP
|
||||||
static int cfi_intelext_read_fact_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
static int cfi_intelext_read_fact_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
||||||
static int cfi_intelext_read_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
static int cfi_intelext_read_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
||||||
static int cfi_intelext_write_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
static int cfi_intelext_write_user_prot_reg(struct mtd_info *, loff_t, size_t,
|
||||||
|
size_t *, const u_char *);
|
||||||
static int cfi_intelext_lock_user_prot_reg (struct mtd_info *, loff_t, size_t);
|
static int cfi_intelext_lock_user_prot_reg (struct mtd_info *, loff_t, size_t);
|
||||||
static int cfi_intelext_get_fact_prot_info(struct mtd_info *, size_t,
|
static int cfi_intelext_get_fact_prot_info(struct mtd_info *, size_t,
|
||||||
size_t *, struct otp_info *);
|
size_t *, struct otp_info *);
|
||||||
@ -2447,10 +2448,10 @@ static int cfi_intelext_read_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
|||||||
|
|
||||||
static int cfi_intelext_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
static int cfi_intelext_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
||||||
size_t len, size_t *retlen,
|
size_t len, size_t *retlen,
|
||||||
u_char *buf)
|
const u_char *buf)
|
||||||
{
|
{
|
||||||
return cfi_intelext_otp_walk(mtd, from, len, retlen,
|
return cfi_intelext_otp_walk(mtd, from, len, retlen,
|
||||||
buf, do_otp_write, 1);
|
(u_char *)buf, do_otp_write, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cfi_intelext_lock_user_prot_reg(struct mtd_info *mtd,
|
static int cfi_intelext_lock_user_prot_reg(struct mtd_info *mtd,
|
||||||
|
@ -80,7 +80,7 @@ static int cfi_amdstd_read_fact_prot_reg(struct mtd_info *, loff_t, size_t,
|
|||||||
static int cfi_amdstd_read_user_prot_reg(struct mtd_info *, loff_t, size_t,
|
static int cfi_amdstd_read_user_prot_reg(struct mtd_info *, loff_t, size_t,
|
||||||
size_t *, u_char *);
|
size_t *, u_char *);
|
||||||
static int cfi_amdstd_write_user_prot_reg(struct mtd_info *, loff_t, size_t,
|
static int cfi_amdstd_write_user_prot_reg(struct mtd_info *, loff_t, size_t,
|
||||||
size_t *, u_char *);
|
size_t *, const u_char *);
|
||||||
static int cfi_amdstd_lock_user_prot_reg(struct mtd_info *, loff_t, size_t);
|
static int cfi_amdstd_lock_user_prot_reg(struct mtd_info *, loff_t, size_t);
|
||||||
|
|
||||||
static int cfi_amdstd_panic_write(struct mtd_info *mtd, loff_t to, size_t len,
|
static int cfi_amdstd_panic_write(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
@ -1635,9 +1635,9 @@ static int cfi_amdstd_read_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
|||||||
|
|
||||||
static int cfi_amdstd_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
static int cfi_amdstd_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
||||||
size_t len, size_t *retlen,
|
size_t len, size_t *retlen,
|
||||||
u_char *buf)
|
const u_char *buf)
|
||||||
{
|
{
|
||||||
return cfi_amdstd_otp_walk(mtd, from, len, retlen, buf,
|
return cfi_amdstd_otp_walk(mtd, from, len, retlen, (u_char *)buf,
|
||||||
do_otp_write, 1);
|
do_otp_write, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ static int dataflash_read_user_otp(struct mtd_info *mtd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int dataflash_write_user_otp(struct mtd_info *mtd,
|
static int dataflash_write_user_otp(struct mtd_info *mtd,
|
||||||
loff_t from, size_t len, size_t *retlen, u_char *buf)
|
loff_t from, size_t len, size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
struct spi_message m;
|
struct spi_message m;
|
||||||
const size_t l = 4 + 64;
|
const size_t l = 4 + 64;
|
||||||
|
@ -1889,7 +1889,7 @@ int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
|
|||||||
EXPORT_SYMBOL_GPL(mtd_read_user_prot_reg);
|
EXPORT_SYMBOL_GPL(mtd_read_user_prot_reg);
|
||||||
|
|
||||||
int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
|
int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
size_t *retlen, u_char *buf)
|
size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
struct mtd_info *master = mtd_get_master(mtd);
|
struct mtd_info *master = mtd_get_master(mtd);
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -3167,9 +3167,10 @@ static int onenand_read_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
|||||||
* Write user OTP area.
|
* Write user OTP area.
|
||||||
*/
|
*/
|
||||||
static int onenand_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
static int onenand_write_user_prot_reg(struct mtd_info *mtd, loff_t from,
|
||||||
size_t len, size_t *retlen, u_char *buf)
|
size_t len, size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
return onenand_otp_walk(mtd, from, len, retlen, buf, do_otp_write, MTD_OTP_USER);
|
return onenand_otp_walk(mtd, from, len, retlen, (u_char *)buf,
|
||||||
|
do_otp_write, MTD_OTP_USER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -211,7 +211,8 @@ struct spi_nor_otp_organization {
|
|||||||
*/
|
*/
|
||||||
struct spi_nor_otp_ops {
|
struct spi_nor_otp_ops {
|
||||||
int (*read)(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
int (*read)(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
||||||
int (*write)(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
int (*write)(struct spi_nor *nor, loff_t addr, size_t len,
|
||||||
|
const u8 *buf);
|
||||||
int (*lock)(struct spi_nor *nor, unsigned int region);
|
int (*lock)(struct spi_nor *nor, unsigned int region);
|
||||||
int (*is_locked)(struct spi_nor *nor, unsigned int region);
|
int (*is_locked)(struct spi_nor *nor, unsigned int region);
|
||||||
};
|
};
|
||||||
@ -504,7 +505,8 @@ ssize_t spi_nor_write_data(struct spi_nor *nor, loff_t to, size_t len,
|
|||||||
const u8 *buf);
|
const u8 *buf);
|
||||||
|
|
||||||
int spi_nor_otp_read_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
int spi_nor_otp_read_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
||||||
int spi_nor_otp_write_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf);
|
int spi_nor_otp_write_secr(struct spi_nor *nor, loff_t addr, size_t len,
|
||||||
|
const u8 *buf);
|
||||||
int spi_nor_otp_lock_sr2(struct spi_nor *nor, unsigned int region);
|
int spi_nor_otp_lock_sr2(struct spi_nor *nor, unsigned int region);
|
||||||
int spi_nor_otp_is_locked_sr2(struct spi_nor *nor, unsigned int region);
|
int spi_nor_otp_is_locked_sr2(struct spi_nor *nor, unsigned int region);
|
||||||
|
|
||||||
|
@ -70,7 +70,8 @@ int spi_nor_otp_read_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf)
|
|||||||
*
|
*
|
||||||
* Return: number of bytes written successfully, -errno otherwise
|
* Return: number of bytes written successfully, -errno otherwise
|
||||||
*/
|
*/
|
||||||
int spi_nor_otp_write_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf)
|
int spi_nor_otp_write_secr(struct spi_nor *nor, loff_t addr, size_t len,
|
||||||
|
const u8 *buf)
|
||||||
{
|
{
|
||||||
enum spi_nor_protocol write_proto;
|
enum spi_nor_protocol write_proto;
|
||||||
struct spi_mem_dirmap_desc *wdesc;
|
struct spi_mem_dirmap_desc *wdesc;
|
||||||
@ -241,7 +242,7 @@ out:
|
|||||||
|
|
||||||
static int spi_nor_mtd_otp_read_write(struct mtd_info *mtd, loff_t ofs,
|
static int spi_nor_mtd_otp_read_write(struct mtd_info *mtd, loff_t ofs,
|
||||||
size_t total_len, size_t *retlen,
|
size_t total_len, size_t *retlen,
|
||||||
u8 *buf, bool is_write)
|
const u8 *buf, bool is_write)
|
||||||
{
|
{
|
||||||
struct spi_nor *nor = mtd_to_spi_nor(mtd);
|
struct spi_nor *nor = mtd_to_spi_nor(mtd);
|
||||||
const struct spi_nor_otp_ops *ops = nor->params->otp.ops;
|
const struct spi_nor_otp_ops *ops = nor->params->otp.ops;
|
||||||
@ -285,7 +286,7 @@ static int spi_nor_mtd_otp_read_write(struct mtd_info *mtd, loff_t ofs,
|
|||||||
if (is_write)
|
if (is_write)
|
||||||
ret = ops->write(nor, rstart + rofs, len, buf);
|
ret = ops->write(nor, rstart + rofs, len, buf);
|
||||||
else
|
else
|
||||||
ret = ops->read(nor, rstart + rofs, len, buf);
|
ret = ops->read(nor, rstart + rofs, len, (u8 *)buf);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -310,7 +311,7 @@ static int spi_nor_mtd_otp_read(struct mtd_info *mtd, loff_t from, size_t len,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int spi_nor_mtd_otp_write(struct mtd_info *mtd, loff_t to, size_t len,
|
static int spi_nor_mtd_otp_write(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
size_t *retlen, u8 *buf)
|
size_t *retlen, const u8 *buf)
|
||||||
{
|
{
|
||||||
return spi_nor_mtd_otp_read_write(mtd, to, len, retlen, buf, true);
|
return spi_nor_mtd_otp_read_write(mtd, to, len, retlen, buf, true);
|
||||||
}
|
}
|
||||||
|
@ -334,7 +334,8 @@ struct mtd_info {
|
|||||||
int (*_read_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
int (*_read_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
||||||
size_t len, size_t *retlen, u_char *buf);
|
size_t len, size_t *retlen, u_char *buf);
|
||||||
int (*_write_user_prot_reg) (struct mtd_info *mtd, loff_t to,
|
int (*_write_user_prot_reg) (struct mtd_info *mtd, loff_t to,
|
||||||
size_t len, size_t *retlen, u_char *buf);
|
size_t len, size_t *retlen,
|
||||||
|
const u_char *buf);
|
||||||
int (*_lock_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
int (*_lock_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
||||||
size_t len);
|
size_t len);
|
||||||
int (*_erase_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
int (*_erase_user_prot_reg) (struct mtd_info *mtd, loff_t from,
|
||||||
@ -518,7 +519,7 @@ int mtd_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen,
|
|||||||
int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
|
int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
|
||||||
size_t *retlen, u_char *buf);
|
size_t *retlen, u_char *buf);
|
||||||
int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
|
int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
|
||||||
size_t *retlen, u_char *buf);
|
size_t *retlen, const u_char *buf);
|
||||||
int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
|
int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
|
||||||
int mtd_erase_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
|
int mtd_erase_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user