Re: [PATCH] pinctrl: mcp23s08: Initialize mcp->dev and mcp->addr before regmap init
From: Judith Mendez
Date: Wed May 13 2026 - 17:54:14 EST
Hi Linus,
On 5/11/26 4:13 AM, Linus Walleij wrote:
Hi Judith,
thanks for your patch!
On Fri, May 8, 2026 at 11:43 PM Judith Mendez <jm@xxxxxx> wrote:
Regmap initialization triggers regcache_maple_populate() which attempts(...)
SPI read to populate cache. SPI read requires mcp->dev and mcp->addr to
be set, without them, NULL pointer dereference occurs during probe.
Move initialization before mcp23s08_spi_regmap_init() call.
Cc: stable@xxxxxxxxxxxxxxx
Fixes: f9f4fda15e72 ("pinctrl: mcp23s08: init reg_defaults from HW at probe and switch cache type")
Signed-off-by: Judith Mendez <jm@xxxxxx>
+ data->mcp[addr]->dev = dev;
+ data->mcp[addr]->addr = 0x40 | (addr << 1);
What does this 0x40 mean here? Can you use a #define to specify
exactly what is going on?
Really I am just moving the two definitions up in probe, they will get
re-written later. It is the base WRITE opcode for SPI chips.
I don't know much on this driver/HW, beyond the things I had to debug
when enabling this driver on BeagleBadge with a on board MCP23S18 chip.
So please scrutinize my changes.
Will add a constant definition and respin.
BTW I found another bug so will append to this series.
Thanks for reviewing.
~ Judith