[{"id":3675131,"web_url":"http://patchwork.ozlabs.org/comment/3675131/","msgid":"<CAD++jLnzitRAczNRiqiBBbytqVjccSVUAXre9YfQgqC=dzE-Yw@mail.gmail.com>","list_archive_url":null,"date":"2026-04-09T07:53:55","subject":"Re: [RFC PATCH 1/5] gpio: generic: add a generic register wrapper for\n MMIO and PMIO","submitter":{"id":92050,"url":"http://patchwork.ozlabs.org/api/people/92050/","name":"Linus Walleij","email":"linusw@kernel.org"},"content":"Hi Jose,\n\nthanks for your patch!\n\nOn Tue, Apr 7, 2026 at 8:49 PM Jose Javier Rodriguez Barbarin\n<dev-josejavier.rodriguez@duagon.com> wrote:\n\n> For adding support to port-mapped devices within gpio_generic_chip, a new\n> data type is required for passing to read_reg() and write_reg()\n> callbacks as I/O port-mapped and memory-mapped registers use different\n> data types.\n>\n> Introduce a new struct gpio_chip_reg to encapsulate mmio addresses and\n> I/O port numbers.\n>\n> Signed-off-by: Jose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>\n\nOverall this is just fine, but I have one idea:\n\n> +struct gpio_chip_reg {\n> +       void __iomem *mmio;\n> +       unsigned long port;\n> +};\n\nSince you're always using one or the other, can we use a union?\n\nunion gpio_chip_reg {\n    void __iomem *mmio;\n    unsigned long port;\n};\n\nThis way it will use the same amount of memory no matter which version is\nused.\n\nOK it's a micro-optimization but also elegant because it reflects the fact that\nwe just use one or the other.\n\nYours,\nLinus Walleij","headers":{"Return-Path":"\n <linux-gpio+bounces-34917-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=cI32OPlg;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34917-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"cI32OPlg\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frsdl6GXDz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 17:54:19 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 78C80302293D\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Apr 2026 07:54:07 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1907538736A;\n\tThu,  9 Apr 2026 07:54:07 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id CEF7E386551\n\tfor <linux-gpio@vger.kernel.org>; Thu,  9 Apr 2026 07:54:06 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 7F49CC4CEF7\n\tfor <linux-gpio@vger.kernel.org>; Thu,  9 Apr 2026 07:54:06 +0000 (UTC)","by mail-yw1-f180.google.com with SMTP id\n 00721157ae682-794719afcd4so6505437b3.1\n        for <linux-gpio@vger.kernel.org>;\n Thu, 09 Apr 2026 00:54:06 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775721246; cv=none;\n b=Z76EV2jOepmwbatW8QIFuQF5oP6oJc2uMPlPNAZw4+t3DIHBT5R1bqRDLqfz2xapMhDhS9xQRBPNiQ6/vSQ9VCHQt0GhP+FnIvfP2Y+IIXhn9DxacIHO/SD0yorrFtXjaN6xJ2GVgRAcePew8b6QeCUUwdYU8fzu/BX00jvfwtw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775721246; c=relaxed/simple;\n\tbh=LDxskAvYrLlYziQ4oEdOKyB1Dc3CMk6QXtnDVYQnjhc=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=mtaYOxR7YPVx7eAxI3s7PXy03tGRC80epv8lgFUG7Vev//C9uZY0wsAximI1EZMan5zaqOZEikXimhHfu73cwjgRfAsaIRyTJm4E55bqVGyFenump3FacQWRS5pH2QNGPgX5t2ZfWpM1fLACXiQZfRE8AzpKELfDGf0hKD+7oBU=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=cI32OPlg; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775721246;\n\tbh=LDxskAvYrLlYziQ4oEdOKyB1Dc3CMk6QXtnDVYQnjhc=;\n\th=References:In-Reply-To:From:Date:Subject:To:Cc:From;\n\tb=cI32OPlgsfSr+M0gTmcA4n4yh8lcNLgtrKlIY1qvG8vL6ntbJrpxELZQbvijDQRgu\n\t ybQGMEow4G+KcDn4VO+ZLOBB7spEzGO16L438nc837E7RKuMQjYNAwziXw8L2RIYAE\n\t n9jaBLAFJSvi76gfEewiNAbJWvVqembfhU6NFFzuwdi1GRF3GL2kmoybm89coD8KZ5\n\t Hp8HYxBPfZPbFZ1IxthbuRxuCm/XqPvlT9NshmbAPFt7o+FmNk2TcmXfRST5UEfTNc\n\t 1Wbw0IOmnawNK6gihNlP2Bo4moALR6JJ8AZqDERt9vRlpVAdZm3Ko6FeyxDNaWd4nS\n\t cNi/afteNq9+Q==","X-Forwarded-Encrypted":"i=1;\n AJvYcCVGVtZ+frTZY8GGHe/qa/SrI4i1cGaQUrNt5QgngH2bdmMymuiv9nqIG5nw0yYbA9H/bto+KRU3kG4T@vger.kernel.org","X-Gm-Message-State":"AOJu0Ywv6ymIybvR4bCh8tg/mt4sd9CIIdg4rdtiIDDstwu4WFGd+dI7\n\tFzOhVpBJbXtyILMsBCGLXlLOgACe9EzOUVipYfE+b5mflrSYEkDfz4zw5eDXw82Qg/nWtNAYd7u\n\tXB6ycvk1ujYiFtvdq3CYZWbAPa7cCoOE=","X-Received":"by 2002:a05:690c:83:b0:79e:9cc1:edf7 with SMTP id\n 00721157ae682-7a4d35d7d6fmr226490547b3.13.1775721245929; Thu, 09 Apr 2026\n 00:54:05 -0700 (PDT)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","References":"<20260407184805.807328-1-dev-josejavier.rodriguez@duagon.com>\n <20260407184805.807328-2-dev-josejavier.rodriguez@duagon.com>","In-Reply-To":"<20260407184805.807328-2-dev-josejavier.rodriguez@duagon.com>","From":"Linus Walleij <linusw@kernel.org>","Date":"Thu, 9 Apr 2026 09:53:55 +0200","X-Gmail-Original-Message-ID":"\n <CAD++jLnzitRAczNRiqiBBbytqVjccSVUAXre9YfQgqC=dzE-Yw@mail.gmail.com>","X-Gm-Features":"AQROBzBRjTq-qScoacgRL1SZl9sFJult8v_deA_uRg6K4Fdrkxvg3spSEcpI2v8","Message-ID":"\n <CAD++jLnzitRAczNRiqiBBbytqVjccSVUAXre9YfQgqC=dzE-Yw@mail.gmail.com>","Subject":"Re: [RFC PATCH 1/5] gpio: generic: add a generic register wrapper for\n MMIO and PMIO","To":"Jose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>","Cc":"brgl@kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}}]