From patchwork Tue Sep 25 14:56:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Marco Felsch X-Patchwork-Id: 974488 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-gpio-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42KPLH0Lxnz9s1c for ; Wed, 26 Sep 2018 00:57:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729653AbeIYVE6 (ORCPT ); Tue, 25 Sep 2018 17:04:58 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:40803 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729655AbeIYVE5 (ORCPT ); Tue, 25 Sep 2018 17:04:57 -0400 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1g4oll-0007yQ-Nj; Tue, 25 Sep 2018 16:56:57 +0200 Received: from mfe by dude.hi.pengutronix.de with local (Exim 4.91) (envelope-from ) id 1g4oll-0002JA-8c; Tue, 25 Sep 2018 16:56:57 +0200 From: Marco Felsch To: linus.walleij@linaro.org Cc: linux-gpio@vger.kernel.org, kernel@pengutronix.de, stable@vger.kernel.org, =?utf-8?q?Jan_Kundr=C3=A1t?= Subject: [PATCH 1/3] pinctrl: mcp23s08: fix debugfs entry for mcp23s18 device Date: Tue, 25 Sep 2018 16:56:14 +0200 Message-Id: <20180925145616.12610-2-m.felsch@pengutronix.de> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180925145616.12610-1-m.felsch@pengutronix.de> References: <20180925145616.12610-1-m.felsch@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: mfe@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-gpio@vger.kernel.org Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org This patch fixes 'commit 9b3e4207661e ("pinctrl: mcp23s08: spi: Fix regmap debugfs entries")'. For sure the MCP23S18 device has only 1 address pin but this will get decoded into three internally ([1], section 1.4). [1] http://ww1.microchip.com/downloads/en/DeviceDoc/22103a.pdf Cc: stable@vger.kernel.org Cc: Jan Kundrát Fixes: 9b3e4207661e ('pinctrl: mcp23s08: spi: Fix regmap debugfs entries') Signed-off-by: Marco Felsch --- drivers/pinctrl/pinctrl-mcp23s08.c | 49 ++++++++++++++---------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c index 4a8a8efadefa..472746931ea8 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08.c +++ b/drivers/pinctrl/pinctrl-mcp23s08.c @@ -794,41 +794,38 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev, switch (type) { #ifdef CONFIG_SPI_MASTER case MCP_TYPE_S08: - case MCP_TYPE_S17: - switch (type) { - case MCP_TYPE_S08: - one_regmap_config = - devm_kmemdup(dev, &mcp23x08_regmap, - sizeof(struct regmap_config), GFP_KERNEL); - mcp->reg_shift = 0; - mcp->chip.ngpio = 8; - mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, - "mcp23s08.%d", raw_chip_address); - break; - case MCP_TYPE_S17: - one_regmap_config = - devm_kmemdup(dev, &mcp23x17_regmap, - sizeof(struct regmap_config), GFP_KERNEL); - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, - "mcp23s17.%d", raw_chip_address); - break; - } + one_regmap_config = devm_kmemdup(dev, &mcp23x08_regmap, + sizeof(struct regmap_config), + GFP_KERNEL); if (!one_regmap_config) return -ENOMEM; - one_regmap_config->name = devm_kasprintf(dev, GFP_KERNEL, "%d", raw_chip_address); + mcp->reg_shift = 0; + mcp->chip.ngpio = 8; + mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s08.%d", + raw_chip_address); + one_regmap_config->name = devm_kasprintf(dev, GFP_KERNEL, "%d", + raw_chip_address); mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, one_regmap_config); break; - + case MCP_TYPE_S17: case MCP_TYPE_S18: - mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, - &mcp23x17_regmap); + one_regmap_config = devm_kmemdup(dev, &mcp23x17_regmap, + sizeof(struct regmap_config), + GFP_KERNEL); + if (!one_regmap_config) + return -ENOMEM; + mcp->reg_shift = 1; mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23s18"; + mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s%s.%d", + type == MCP_TYPE_S17 ? + "17" : "18", raw_chip_address); + one_regmap_config->name = devm_kasprintf(dev, GFP_KERNEL, "%d", + raw_chip_address); + mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, + one_regmap_config); break; #endif /* CONFIG_SPI_MASTER */