From patchwork Sun Oct 1 15:01:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 147116 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp915804vqb; Sun, 1 Oct 2023 08:03:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG9Nsn4isjU97oGbDVKwKf9C++5ZyZa1My46e2b8hQjdfJQWOIFesYYHOLa8wutDjHxGH3j X-Received: by 2002:a17:902:ed44:b0:1c3:83e2:d0c6 with SMTP id y4-20020a170902ed4400b001c383e2d0c6mr6849214plb.52.1696172582297; Sun, 01 Oct 2023 08:03:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696172582; cv=none; d=google.com; s=arc-20160816; b=RB/zHZy4+5fz+mvU0VVt15VlkMT6sVjHIrpB3//V9jxhp7ZIUZwIPhhfcuFpkULzYR /12F2LYP3yIfcpQ8JwMtMvkDPKVrLapSXVQ5UtzzQM3vZqyUpSk1VQoDngAghQvpkvSn jcbxz+QWXqoniVU6S3w3X7Rms75P3pIgrZVhgN3cyRd5H4g/J3xRps/VOT8InFCzGYo6 Yf3lJdfw82ZgghpEbXB14U22fO2HWYxseqmonZCopNNkctL6zUr9o0z1TnReHlZJHFyT kXduXlCLrryUIMy+ilOZX5pLseID7lQMWUJupODTP6F9l7boMDgAocZRpbttcX8OHmOM 6ZIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=cn2xQ6DJ9L4oBwAtmv8P4EKwMl2dFrw3/NmNWoFisXE=; fh=xeSrQ7kCdgcCVb2zAn5rBkDAdtmCo24cOODwKpU9NDo=; b=yAOPErd9TiA0WGvd5+P629xXdCHOyAGVmfGrVo97jjgkuhTCuPMZq0c9YuXFoWmvzR smFUz2EYKStJytR3JlEGinaolCbQEmZX1hPGjTnfKqBrNgFPSDZ+vx9QC+4FUZGXH6be OXdbqWbSYMMOb/z3F2wYZqYaVIXJZ53DS0DAZVCu/2Jn3pwx8XPkJdSu3sW62XWX+4BS T/syKmrPo8f2wF01gV/WpuNdsFW2gs13jely0Y7IuREkRTlrsbt7F2bydBr8PAFSC6qB HsdTCZsyMgQfnHRnPypwlt/MsK6jfkn6UhcrAYKQ46w9ngoZtLV19J6AdXwXOjlIcaJU 5dsQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id s17-20020a170902ea1100b001bf01fee6bcsi18879138plg.610.2023.10.01.08.03.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Oct 2023 08:03:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 365088092203; Sun, 1 Oct 2023 08:01:43 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235138AbjJAPB1 (ORCPT + 18 others); Sun, 1 Oct 2023 11:01:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235132AbjJAPB0 (ORCPT ); Sun, 1 Oct 2023 11:01:26 -0400 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6D059D8; Sun, 1 Oct 2023 08:01:23 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.03,191,1694703600"; d="scan'208";a="177808876" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 02 Oct 2023 00:01:22 +0900 Received: from localhost.localdomain (unknown [10.226.92.25]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 9B45D420635B; Mon, 2 Oct 2023 00:01:20 +0900 (JST) From: Biju Das To: Linus Walleij Cc: Biju Das , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Andy Shevchenko Subject: [PATCH v4 1/3] pinctrl: mcp23s08_i2c: Extend match support for OF tables Date: Sun, 1 Oct 2023 16:01:11 +0100 Message-Id: <20231001150113.7752-2-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> References: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sun, 01 Oct 2023 08:01:43 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778565861522349239 X-GMAIL-MSGID: 1778565861522349239 The driver has OF match table, still it uses ID lookup table for retrieving match data. Currently the driver is working on the assumption that a I2C device registered via OF will always match a legacy I2C device ID. The correct approach is to have an OF device ID table using of_device_match_data() if the devices are registered via OF. Signed-off-by: Biju Das Reviewed-by: Andy Shevchenko --- v3->v4: * No change. v2->v3: * Added Rb tag from Andy. v1->v2: * Arranged variable declaration in reverse xmas tree. --- drivers/pinctrl/pinctrl-mcp23s08_i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c index 3dd1bd8e73eb..41ea2650a7e4 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c @@ -10,16 +10,16 @@ static int mcp230xx_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_client_get_device_id(client); struct device *dev = &client->dev; - unsigned int type = id->driver_data; struct mcp23s08 *mcp; + unsigned int type; int ret; mcp = devm_kzalloc(dev, sizeof(*mcp), GFP_KERNEL); if (!mcp) return -ENOMEM; + type = (uintptr_t)i2c_get_match_data(client); switch (type) { case MCP_TYPE_008: mcp->regmap = devm_regmap_init_i2c(client, &mcp23x08_regmap); From patchwork Sun Oct 1 15:01:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 147117 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp916177vqb; Sun, 1 Oct 2023 08:03:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHiv8HeaA7pkasi0wXABkpj3bHUWAwFKTYW83K/IsN445qmm32cnmZB/6ZQnUp1HompRudl X-Received: by 2002:a05:6a21:3e0a:b0:163:b85e:6337 with SMTP id bk10-20020a056a213e0a00b00163b85e6337mr2286874pzc.38.1696172614779; Sun, 01 Oct 2023 08:03:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696172614; cv=none; d=google.com; s=arc-20160816; b=eCLh+2jhQpqXzg0x8SIkMFS+SxFNBQqm0qhDbhsj7b1IXW9kAubYvpzzLKyWLo8B0G 13r0955e02LM1Bql2F5LoBxE9agAjRYjjZHExwmp1Hjc04hiLva/QirGMF0mIGgU7YAt SFxh5r4IBq+z71Xc+PtnGiHPV0cNEcLf8BcsRPYGm6G1sIIiGcxElaZmj52ulFSr8Mi2 uLwWFJylNfTYRLGUvB7MUFn8tHRJWbXx7g3PJgBfJg12I4WQhTpHBu2rhjYlwtzsCgYt aSv8Y3HagzBxx6PP8dSGbfTniXtPBNfQpLmV0XsQE8YTwd1JV/A82Xwb9S16T5DIK/oQ MK+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=AK0kydBIdonXtKjXa8WjPCs2FsUGcWla1rU/pGhzJ5I=; fh=xeSrQ7kCdgcCVb2zAn5rBkDAdtmCo24cOODwKpU9NDo=; b=RRE7pTszq3G1BrTXnQ1HdUORCTowMyasDP9cyFvGm4cwrPOvH0a3HmIcno4djyTh+l UpxwZJxRMMUkLKA0DBcIPcoCXUPOi/Yz3yPYrLorCiJCqFVqH/bhvOqToNDIApb+1Nm0 JdFrYIuOE0qWx6mqKaCB80aKQSt5HuhKSLa46l1shFPYGxqrvJ3shQE6iOxHYlAYFqeb DxLP27QSd9qv9QuoLFbv4rKsfkL0eNFgesiaff8UOghLH/eUcoFFkzQWOTUfw2GNTIxw mnlaTn+V5wRH5LalB2fGitCEj/C3BBYCw7LT6VxxrXyBbrY0B4wC2vKfLHcYz1X1LJ/y WffA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id x19-20020aa793b3000000b0068e4704fd5bsi23463589pff.346.2023.10.01.08.03.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Oct 2023 08:03:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 362858085F92; Sun, 1 Oct 2023 08:01:53 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235148AbjJAPB2 (ORCPT + 18 others); Sun, 1 Oct 2023 11:01:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235142AbjJAPB1 (ORCPT ); Sun, 1 Oct 2023 11:01:27 -0400 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 5898FD9; Sun, 1 Oct 2023 08:01:25 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.03,191,1694703600"; d="scan'208";a="181547672" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 02 Oct 2023 00:01:25 +0900 Received: from localhost.localdomain (unknown [10.226.92.25]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 24735420635B; Mon, 2 Oct 2023 00:01:22 +0900 (JST) From: Biju Das To: Linus Walleij Cc: Biju Das , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Andy Shevchenko Subject: [PATCH v4 2/3] pinctrl: mcp23s08_spi: Simplify probe() Date: Sun, 1 Oct 2023 16:01:12 +0100 Message-Id: <20231001150113.7752-3-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> References: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Sun, 01 Oct 2023 08:01:53 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778565895700829988 X-GMAIL-MSGID: 1778565895700829988 Simpilfy probe() by replacing device_get_match_data() and ID lookup for retrieving match data by spi_get_device_match_data(). While at it, replace data type of variable type from 'int'->'unsigned int' and declare variables following a reverse christmas tree order. Signed-off-by: Biju Das Reviewed-by: Andy Shevchenko --- v3->v4: * No change. v2->v3: * Added Rb tag from Andy * Reordered the patch. v2: * New patch. --- drivers/pinctrl/pinctrl-mcp23s08_spi.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08_spi.c b/drivers/pinctrl/pinctrl-mcp23s08_spi.c index ea059b9c5542..caf528284d07 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_spi.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_spi.c @@ -143,22 +143,17 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, static int mcp23s08_probe(struct spi_device *spi) { - struct device *dev = &spi->dev; struct mcp23s08_driver_data *data; + struct device *dev = &spi->dev; unsigned long spi_present_mask; - const void *match; - unsigned int addr; unsigned int ngpio = 0; + unsigned int type; + unsigned int addr; int chips; - int type; int ret; u32 v; - match = device_get_match_data(dev); - if (match) - type = (int)(uintptr_t)match; - else - type = spi_get_device_id(spi)->driver_data; + type = (uintptr_t)spi_get_device_match_data(spi); ret = device_property_read_u32(dev, "microchip,spi-present-mask", &v); if (ret) { From patchwork Sun Oct 1 15:01:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 147118 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp916437vqb; Sun, 1 Oct 2023 08:03:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHxujlsa1KnPC5TkFvbHAVs3F1xrEIIid6ckAIHUWyE+r59LY8JBUuIbFAJASkUSPfJooRZ X-Received: by 2002:a05:6a20:5485:b0:15d:6fd3:8e8c with SMTP id i5-20020a056a20548500b0015d6fd38e8cmr9729484pzk.14.1696172635191; Sun, 01 Oct 2023 08:03:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696172635; cv=none; d=google.com; s=arc-20160816; b=CIirq4CV16v5A9/TTc/DpbOT5xDMum3j8f037r0K2iLDZ2xwoFcQI9pwAcFq/yskp9 7lpFFbkE5phvQ3qNSw2eOhaI3QzkKh+jh/xRHqU6nXkLVO9JVshYzVnR7y8NZMUeSC0n nCuZSToLOqzF1oKE9bkBA/CAzHu/yaWPZRJbg77RODA7/bmI9JqHLazj3Y4pyS8KiOoj fIBnEUrKzj1fSoBcpE34NM/pNlhMM6Zp9w0j65U3bbV5uE1/EIvujf2xJKfGG3rCgwBn zM3r2TUHFjQWCML4yJOx4Gg70FRDRROMk6MPy6pjdqNHyHYDKXwzRatHssG82CwPv/Io 5T6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=WmFeU0JzEDdJ4fIWc5wumGRfGesklQjZcgk0gouY0V4=; fh=xeSrQ7kCdgcCVb2zAn5rBkDAdtmCo24cOODwKpU9NDo=; b=Xp1WMSJC8f+UAhOtJdxFV12mQ5shg15VA6uCJvRcNgDZptt4iNzMYMNWpMWHDBSP83 gpFgn3fq8czRnsGaPo1NyZQ2TFm56EQSXhTHSa/o7UTJJsWVBFk1hAtHySRaZtm20T3r wwyuEBxWMQ52jshq3YJ3LEtYS5ABCzLEu7aBEcIkf98UJiuqElbQKwkSJgvW3V0/c+W+ scQbHKykwtS4RaE4ATw+pUgb0e2GrfHS+IlkdUFtZFC6tm2ZhPyMyRSJc3Y57IOe4tNS A0SqfyZMqIyq+MuXbpYdikaIduJtXvzcvXe00fYDCzmdqUc2BacHnZODBI3X9RX1NIiH LaPg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id x42-20020a056a0018aa00b0068e2b1d5651si27281074pfh.281.2023.10.01.08.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Oct 2023 08:03:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 46DEC8095677; Sun, 1 Oct 2023 08:02:00 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235157AbjJAPBd (ORCPT + 18 others); Sun, 1 Oct 2023 11:01:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235153AbjJAPBb (ORCPT ); Sun, 1 Oct 2023 11:01:31 -0400 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DA22ADD; Sun, 1 Oct 2023 08:01:27 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.03,191,1694703600"; d="scan'208";a="181547677" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 02 Oct 2023 00:01:27 +0900 Received: from localhost.localdomain (unknown [10.226.92.25]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id A2054420635B; Mon, 2 Oct 2023 00:01:25 +0900 (JST) From: Biju Das To: Linus Walleij Cc: Biju Das , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Andy Shevchenko Subject: [PATCH v4 3/3] pinctrl: mcp23s08: Simplify probe()/mcp23s08_spi_regmap_init() Date: Sun, 1 Oct 2023 16:01:13 +0100 Message-Id: <20231001150113.7752-4-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> References: <20231001150113.7752-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Sun, 01 Oct 2023 08:02:00 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778565917584196314 X-GMAIL-MSGID: 1778565917584196314 Add struct mcp23s08_info and simplify probe()/mcp23s08_spi_regmap_init() by replacing match data 'type' with 'struct mcp23s08_info'. While at it, replace 'dev_err()'->'dev_err_probe()' and drop printing 'type' in error path for i2c_get_match_data(). Signed-off-by: Biju Das Reviewed-by: Andy Shevchenko --- v3->v4: * Added Rb tag from Andy. * Removed duplicate mcp23s08 in the name of variables for struct mcp23s08_info. v2->v3: * Added struct mcp23s08_info in pinctrl-mcp23s08.h and both i2c and spi drivers using same match data structure. v1->v2: * Updated commit description * Dropped printing 'type' in error path for i2c_get_match_data(). --- drivers/pinctrl/pinctrl-mcp23s08.h | 8 +++ drivers/pinctrl/pinctrl-mcp23s08_i2c.c | 93 ++++++++++++-------------- drivers/pinctrl/pinctrl-mcp23s08_spi.c | 88 ++++++++++++------------ 3 files changed, 93 insertions(+), 96 deletions(-) diff --git a/drivers/pinctrl/pinctrl-mcp23s08.h b/drivers/pinctrl/pinctrl-mcp23s08.h index b15516af7783..105bce9e0f50 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08.h +++ b/drivers/pinctrl/pinctrl-mcp23s08.h @@ -22,6 +22,14 @@ struct regmap; struct pinctrl_dev; +struct mcp23s08_info { + const struct regmap_config *regmap; + const char *label; + unsigned int type; + u16 ngpio; + bool reg_shift; +}; + struct mcp23s08 { u8 addr; bool irq_active_high; diff --git a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c index 41ea2650a7e4..04e8e7d079f0 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_i2c.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_i2c.c @@ -10,50 +10,30 @@ static int mcp230xx_probe(struct i2c_client *client) { + const struct mcp23s08_info *info; struct device *dev = &client->dev; struct mcp23s08 *mcp; - unsigned int type; int ret; mcp = devm_kzalloc(dev, sizeof(*mcp), GFP_KERNEL); if (!mcp) return -ENOMEM; - type = (uintptr_t)i2c_get_match_data(client); - switch (type) { - case MCP_TYPE_008: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x08_regmap); - mcp->reg_shift = 0; - mcp->chip.ngpio = 8; - mcp->chip.label = "mcp23008"; - break; - - case MCP_TYPE_017: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x17_regmap); - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23017"; - break; - - case MCP_TYPE_018: - mcp->regmap = devm_regmap_init_i2c(client, &mcp23x17_regmap); - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23018"; - break; - - default: - dev_err(dev, "invalid device type (%d)\n", type); - return -EINVAL; - } + info = i2c_get_match_data(client); + if (!info) + return dev_err_probe(dev, -EINVAL, "invalid device type\n"); + mcp->reg_shift = info->reg_shift; + mcp->chip.ngpio = info->ngpio; + mcp->chip.label = info->label; + mcp->regmap = devm_regmap_init_i2c(client, info->regmap); if (IS_ERR(mcp->regmap)) return PTR_ERR(mcp->regmap); mcp->irq = client->irq; mcp->pinctrl_desc.name = "mcp23xxx-pinctrl"; - ret = mcp23s08_probe_one(mcp, dev, client->addr, type, -1); + ret = mcp23s08_probe_one(mcp, dev, client->addr, info->type, -1); if (ret) return ret; @@ -62,36 +42,45 @@ static int mcp230xx_probe(struct i2c_client *client) return 0; } +static const struct mcp23s08_info mcp23008_i2c = { + .regmap = &mcp23x08_regmap, + .label = "mcp23008", + .type = MCP_TYPE_008, + .ngpio = 8, + .reg_shift = 0, +}; + +static const struct mcp23s08_info mcp23017_i2c = { + .regmap = &mcp23x17_regmap, + .label = "mcp23017", + .type = MCP_TYPE_017, + .ngpio = 16, + .reg_shift = 1, +}; + +static const struct mcp23s08_info mcp23018_i2c = { + .regmap = &mcp23x17_regmap, + .label = "mcp23018", + .type = MCP_TYPE_018, + .ngpio = 16, + .reg_shift = 1, +}; + static const struct i2c_device_id mcp230xx_id[] = { - { "mcp23008", MCP_TYPE_008 }, - { "mcp23017", MCP_TYPE_017 }, - { "mcp23018", MCP_TYPE_018 }, + { "mcp23008", (kernel_ulong_t)&mcp23008_i2c }, + { "mcp23017", (kernel_ulong_t)&mcp23017_i2c }, + { "mcp23018", (kernel_ulong_t)&mcp23018_i2c }, { } }; MODULE_DEVICE_TABLE(i2c, mcp230xx_id); static const struct of_device_id mcp23s08_i2c_of_match[] = { - { - .compatible = "microchip,mcp23008", - .data = (void *) MCP_TYPE_008, - }, - { - .compatible = "microchip,mcp23017", - .data = (void *) MCP_TYPE_017, - }, - { - .compatible = "microchip,mcp23018", - .data = (void *) MCP_TYPE_018, - }, + { .compatible = "microchip,mcp23008", .data = &mcp23008_i2c }, + { .compatible = "microchip,mcp23017", .data = &mcp23017_i2c }, + { .compatible = "microchip,mcp23018", .data = &mcp23018_i2c }, /* NOTE: The use of the mcp prefix is deprecated and will be removed. */ - { - .compatible = "mcp,mcp23008", - .data = (void *) MCP_TYPE_008, - }, - { - .compatible = "mcp,mcp23017", - .data = (void *) MCP_TYPE_017, - }, + { .compatible = "mcp,mcp23008", .data = &mcp23008_i2c }, + { .compatible = "mcp,mcp23017", .data = &mcp23017_i2c }, { } }; MODULE_DEVICE_TABLE(of, mcp23s08_i2c_of_match); diff --git a/drivers/pinctrl/pinctrl-mcp23s08_spi.c b/drivers/pinctrl/pinctrl-mcp23s08_spi.c index caf528284d07..4a872fff5fe8 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08_spi.c +++ b/drivers/pinctrl/pinctrl-mcp23s08_spi.c @@ -80,21 +80,18 @@ static const struct regmap_bus mcp23sxx_spi_regmap = { }; static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, - unsigned int addr, unsigned int type) + unsigned int addr, + const struct mcp23s08_info *info) { - const struct regmap_config *config; struct regmap_config *copy; const char *name; - switch (type) { + switch (info->type) { case MCP_TYPE_S08: - mcp->reg_shift = 0; - mcp->chip.ngpio = 8; mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s08.%d", addr); if (!mcp->chip.label) return -ENOMEM; - config = &mcp23x08_regmap; name = devm_kasprintf(dev, GFP_KERNEL, "%d", addr); if (!name) return -ENOMEM; @@ -102,13 +99,10 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, break; case MCP_TYPE_S17: - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s17.%d", addr); if (!mcp->chip.label) return -ENOMEM; - config = &mcp23x17_regmap; name = devm_kasprintf(dev, GFP_KERNEL, "%d", addr); if (!name) return -ENOMEM; @@ -116,20 +110,18 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, break; case MCP_TYPE_S18: - mcp->reg_shift = 1; - mcp->chip.ngpio = 16; - mcp->chip.label = "mcp23s18"; - - config = &mcp23x17_regmap; - name = config->name; + mcp->chip.label = info->label; + name = info->regmap->name; break; default: - dev_err(dev, "invalid device type (%d)\n", type); + dev_err(dev, "invalid device type (%d)\n", info->type); return -EINVAL; } - copy = devm_kmemdup(dev, config, sizeof(*config), GFP_KERNEL); + mcp->reg_shift = info->reg_shift; + mcp->chip.ngpio = info->ngpio; + copy = devm_kmemdup(dev, info->regmap, sizeof(*info->regmap), GFP_KERNEL); if (!copy) return -ENOMEM; @@ -144,16 +136,16 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, static int mcp23s08_probe(struct spi_device *spi) { struct mcp23s08_driver_data *data; + const struct mcp23s08_info *info; struct device *dev = &spi->dev; unsigned long spi_present_mask; unsigned int ngpio = 0; - unsigned int type; unsigned int addr; int chips; int ret; u32 v; - type = (uintptr_t)spi_get_device_match_data(spi); + info = spi_get_device_match_data(spi); ret = device_property_read_u32(dev, "microchip,spi-present-mask", &v); if (ret) { @@ -182,7 +174,7 @@ static int mcp23s08_probe(struct spi_device *spi) data->mcp[addr] = &data->chip[--chips]; data->mcp[addr]->irq = spi->irq; - ret = mcp23s08_spi_regmap_init(data->mcp[addr], dev, addr, type); + ret = mcp23s08_spi_regmap_init(data->mcp[addr], dev, addr, info); if (ret) return ret; @@ -192,7 +184,8 @@ static int mcp23s08_probe(struct spi_device *spi) if (!data->mcp[addr]->pinctrl_desc.name) return -ENOMEM; - ret = mcp23s08_probe_one(data->mcp[addr], dev, 0x40 | (addr << 1), type, -1); + ret = mcp23s08_probe_one(data->mcp[addr], dev, 0x40 | (addr << 1), + info->type, -1); if (ret < 0) return ret; @@ -203,36 +196,43 @@ static int mcp23s08_probe(struct spi_device *spi) return 0; } +static const struct mcp23s08_info mcp23s08_spi = { + .regmap = &mcp23x08_regmap, + .type = MCP_TYPE_S08, + .ngpio = 8, + .reg_shift = 0, +}; + +static const struct mcp23s08_info mcp23s17_spi = { + .regmap = &mcp23x17_regmap, + .type = MCP_TYPE_S17, + .ngpio = 16, + .reg_shift = 1, +}; + +static const struct mcp23s08_info mcp23s18_spi = { + .regmap = &mcp23x17_regmap, + .label = "mcp23s18", + .type = MCP_TYPE_S18, + .ngpio = 16, + .reg_shift = 1, +}; + static const struct spi_device_id mcp23s08_ids[] = { - { "mcp23s08", MCP_TYPE_S08 }, - { "mcp23s17", MCP_TYPE_S17 }, - { "mcp23s18", MCP_TYPE_S18 }, + { "mcp23s08", (kernel_ulong_t)&mcp23s08_spi }, + { "mcp23s17", (kernel_ulong_t)&mcp23s17_spi }, + { "mcp23s18", (kernel_ulong_t)&mcp23s18_spi }, { } }; MODULE_DEVICE_TABLE(spi, mcp23s08_ids); static const struct of_device_id mcp23s08_spi_of_match[] = { - { - .compatible = "microchip,mcp23s08", - .data = (void *) MCP_TYPE_S08, - }, - { - .compatible = "microchip,mcp23s17", - .data = (void *) MCP_TYPE_S17, - }, - { - .compatible = "microchip,mcp23s18", - .data = (void *) MCP_TYPE_S18, - }, + { .compatible = "microchip,mcp23s08", .data = &mcp23s08_spi }, + { .compatible = "microchip,mcp23s17", .data = &mcp23s17_spi }, + { .compatible = "microchip,mcp23s18", .data = &mcp23s18_spi }, /* NOTE: The use of the mcp prefix is deprecated and will be removed. */ - { - .compatible = "mcp,mcp23s08", - .data = (void *) MCP_TYPE_S08, - }, - { - .compatible = "mcp,mcp23s17", - .data = (void *) MCP_TYPE_S17, - }, + { .compatible = "mcp,mcp23s08", .data = &mcp23s08_spi }, + { .compatible = "mcp,mcp23s17", .data = &mcp23s17_spi }, { } }; MODULE_DEVICE_TABLE(of, mcp23s08_spi_of_match);