[PATCH] mtd: spinand: winbond: add support for W25N04LV

Huasin Liao huasinliao at gmail.com
Sun Aug 16 09:56:14 PDT 2026


Dominique Martinet wrote on Sun, Aug 16, 2026 at 20:19:02 +0900:
> Huasin Liao wrote on Sun, Aug 16, 2026 at 05:31:24PM +0800:
>> diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
>> index 9b78c1e6cbc9..892220a12b22 100644
>> --- a/drivers/mtd/nand/spi/winbond.c
>> +++ b/drivers/mtd/nand/spi/winbond.c
>> @@ -345,6 +345,35 @@ static const struct mtd_ooblayout_ops w25n02kv_ooblayout = {
>>  	.free = w25n02kv_ooblayout_free,
>>  };
>>  
>> +static int w25n04lv_ooblayout_ecc(struct mtd_info *mtd, int section,
>> +				  struct mtd_oob_region *region)
>> +{
>> +	if (section > 7)
>> +		return -ERANGE;
>> +
>> +	region->offset = 128 + (16 * section);
>> +	region->length = 13;
>> +
>> +	return 0;
>> +}
>> +
>> +static int w25n04lv_ooblayout_free(struct mtd_info *mtd, int section,
>> +				   struct mtd_oob_region *region)
>> +{
>> +	if (section > 7)
>> +		return -ERANGE;
>> +
>> +	region->offset = (16 * section) + 2;
>> +	region->length = 14;
>> +
>> +	return 0;
>> +}
>> +
>> +static const struct mtd_ooblayout_ops w25n04lv_ooblayout = {
>> +	.ecc = w25n04lv_ooblayout_ecc,
>> +	.free = w25n04lv_ooblayout_free,
> 
> FWIW, these two are the same as what I consolidated in
> https://lore.kernel.org/r/20260814-w25n04lw-v3-1-c6a7423ac7d0@atmark-techno.com
> using oobsize, so we probably want to reuse that here too

Thanks for the pointer, and good to see Miquel is fine with reusing
w25n02kv_ooblayout. Once your patch lands, I'll rebase on top of it
and switch from w25n04lv_ooblayout to w25n02kv_ooblayout — is that in
line with what you'd expect?

Huasin Liao



More information about the linux-mtd mailing list