[v2] pinctrl: mcp23s08: spi: Fix regmap allocation for mcp23s18

Message ID 20190111150213.3257-1-jdk@ti.com
State New
Headers show
Series
  • [v2] pinctrl: mcp23s08: spi: Fix regmap allocation for mcp23s18
Related show

Commit Message

Jason Kridner Jan. 11, 2019, 3:02 p.m.
Fixes issue created by 9b3e4207661e67f04c72af15e29f74cd944f5964.

It wasn't possible for one_regmap_config to be non-NULL at the point
it was tested for mcp23s18 devices.

Applied the same pattern of allocating one_regmap_config using
devm_kmemdump() and then initializing the local regmap structure
from that.

Signed-off-by: Jason Kridner <jdk@ti.com>
---
Changes in v2:
  - Rebased on master.
---
 drivers/pinctrl/pinctrl-mcp23s08.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Linus Walleij Jan. 21, 2019, 1:18 p.m. | #1
On Fri, Jan 11, 2019 at 4:02 PM Jason Kridner <jkridner@gmail.com> wrote:

> Fixes issue created by 9b3e4207661e67f04c72af15e29f74cd944f5964.
>
> It wasn't possible for one_regmap_config to be non-NULL at the point
> it was tested for mcp23s18 devices.
>
> Applied the same pattern of allocating one_regmap_config using
> devm_kmemdump() and then initializing the local regmap structure
> from that.
>
> Signed-off-by: Jason Kridner <jdk@ti.com>
> ---
> Changes in v2:
>   - Rebased on master.

Patch applied for fixes.

Yours,
Linus Walleij

Patch

diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
index b03481ef99a1..98905d4a79ca 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -832,8 +832,13 @@  static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
 		break;
 
 	case MCP_TYPE_S18:
+		one_regmap_config =
+			devm_kmemdup(dev, &mcp23x17_regmap,
+				sizeof(struct regmap_config), GFP_KERNEL);
+		if (!one_regmap_config)
+			return -ENOMEM;
 		mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp,
-					       &mcp23x17_regmap);
+					       one_regmap_config);
 		mcp->reg_shift = 1;
 		mcp->chip.ngpio = 16;
 		mcp->chip.label = "mcp23s18";