[RESEND PATCH v4 2/4] mtd: cfi_cmdset_0002: Invalidate cache after entering/exiting OTP memory
Brian Norris
computersforpeace at gmail.com
Tue May 27 23:46:28 PDT 2014
On Mon, May 05, 2014 at 08:14:27AM +0200, Christian Riesch wrote:
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -1157,11 +1157,42 @@ static int cfi_amdstd_read (struct mtd_info *mtd, loff_t from, size_t len, size_
> typedef int (*otp_op_t)(struct map_info *map, struct flchip *chip,
> loff_t adr, size_t len, u_char *buf);
>
> +static inline void otp_enter(struct map_info *map, struct flchip *chip,
Why is this function marked 'inline'? Is this to satisfy the comments
regarding CONFIG_MTD_XIP and inlining functions? That all looks highly
fragile ('inline' is not a guarantee, for instance). And does anyone
use CONFIG_MTD_XIP=y these days?
If there are no good reasons otherwise, I'd say this trips over Chapter
15 of Documentation/CodingStyle.
But if this is the only issue, then I'm OK taking the series as-is -- it
has been pending for a long time, as you note...
> + loff_t adr, size_t len)
> +{
> + struct cfi_private *cfi = map->fldrv_priv;
> +
> + cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
> + cfi->device_type, NULL);
> + cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
> + cfi->device_type, NULL);
> + cfi_send_gen_cmd(0x88, cfi->addr_unlock1, chip->start, map, cfi,
> + cfi->device_type, NULL);
> +
> + INVALIDATE_CACHED_RANGE(map, chip->start + adr, len);
> +}
> +
> +static inline void otp_exit(struct map_info *map, struct flchip *chip,
Same here.
> + loff_t adr, size_t len)
> +{
> + struct cfi_private *cfi = map->fldrv_priv;
> +
> + cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
> + cfi->device_type, NULL);
> + cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
> + cfi->device_type, NULL);
> + cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi,
> + cfi->device_type, NULL);
> + cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi,
> + cfi->device_type, NULL);
> +
> + INVALIDATE_CACHED_RANGE(map, chip->start + adr, len);
> +}
> +
> static inline int do_read_secsi_onechip(struct map_info *map, struct flchip *chip, loff_t adr, size_t len, u_char *buf)
> {
> DECLARE_WAITQUEUE(wait, current);
> unsigned long timeo = jiffies + HZ;
> - struct cfi_private *cfi = map->fldrv_priv;
>
> retry:
> mutex_lock(&chip->mutex);
Brian
More information about the linux-mtd
mailing list