mtd: nand: fix GET/SET_FEATURES address on 16-bit devices

Brian Norris computersforpeace at gmail.com
Fri Mar 21 20:20:07 EDT 2014


Hi David,

(BTW, it's nice if $SUBJECT begins with the text '[PATCH]'. I actually
filter mail based on this!)

On Fri, Mar 21, 2014 at 04:05:10PM -0600, David Mosberger wrote:
> linux-next almost works out of the box for us except that GET_FEATURES
> and SET_FEATURES also need byte-addressing.

Thanks a lot for testing linux-next for this! Our recent fixes for x16
buswidths really haven't gotten wide testing.

> With the attached patch,
> our board boots fine (save for on-die ECC patch, which I'll submit
> separately).  The only oddity is that the devices is reported as being
> SLC, when it's most definitely not:
> 
> nand: 512MiB, SLC, page size: 2048, OOB size: 64

Hmm. What's the part number + vendor? (And the ID bytes, if possible?)

>    --david
> 
> 
> 
> GET_FEATURES and SET_FEATURES also need byte-addressing on 16-bit devices.
> 
> Signed-off-by: David Mosberger <davidm at egauge.net>
> 
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 0747fef..29a23bb 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -925,7 +929,16 @@ static inline bool nand_is_slc(struct nand_chip *chip)
>   */
>  static inline int nand_opcode_8bits(unsigned int command)
>  {
> -	return command == NAND_CMD_READID || command == NAND_CMD_PARAM;
> +	switch (command) {
> +	case NAND_CMD_READID:
> +	case NAND_CMD_PARAM:
> +	case NAND_CMD_GET_FEATURES:
> +	case NAND_CMD_SET_FEATURES:
> +		return 1;
> +	default:
> +		break;
> +	}
> +	return 0;
>  }
>  
>  /* return the supported JEDEC features. */
> 

Patch looks good. I'll come back to this to test and apply for 3.15, I
hope (feel free to bug me if I don't reply back by 3.15-rc1). But:

Acked-by: Brian Norris <computersforpeace at gmail.com>

Brian



More information about the linux-mtd mailing list