From patchwork Mon Jan 15 03:13:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860571 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdln5dL9z9sCZ for ; Mon, 15 Jan 2018 14:15:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753742AbeAODOh (ORCPT ); Sun, 14 Jan 2018 22:14:37 -0500 Received: from mout.gmx.net ([212.227.15.18]:54097 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753586AbeAODOc (ORCPT ); Sun, 14 Jan 2018 22:14:32 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LzLJR-1exQ6K31nd-014WQC; Mon, 15 Jan 2018 04:14:17 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Brijesh Singh , Tom Lendacky , Thomas Gleixner , Borislav Petkov , Kees Cook Subject: [PATCH 1/6] resource: Extend the PPC32 reserved memory hack Date: Mon, 15 Jan 2018 04:13:56 +0100 Message-Id: <20180115031401.19577-2-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:ewp/ZmAIvF7BeAdWKX2XLRN7/DJ8fWbWAj55QyTBnL8IKQpgtXP jIbH37BAi+mA4HSAbrdk+KNfQGQyogylrhoEQWgaEDa3fpbW89zzD8GezTBoQh1Yfz05+sF Pdytm9MrU/q9haWLsCRa9m0N/Sx4+H11M0ze2lA8V4zCeLPl4B+QW70QvpmA7cJa9yGodhv 7DVNHqHB5jyuENXlA2OGQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:+JSW5nRpzc8=:T9i6LMGx8yz4iFL9w8qzb4 hgFCEa3RkxVzsXfccK1xUi/9qz75+QFECKOzin1uJJvFATYl+z9oGnTMiHqNmqQv9lr26/sNu wviKpJ+t8EXsxyc4uXQVVfj0O07jjnXUlxefgztFT9BrB9QPUBQ7MIqyxNUL2ikpHO9v9KVYR KccfD05+WLHTV0Ta/ZC/+ybc3Cf28PhOaCXcEJUaDQhvRWXXfaj6ci/NFrl2AutX+JI59/bpI Lxa1He1pM0k/Rnes+WfLTg++GbdFswuZNF63Mg7A7pa7iXfRb12F/c34KGLxhaMoUsF2/uKHT swjKxWYaO89DwoZZ1ZAWYsHNkh3XSPVQpNj5rhNaZp/UVIKc9o3mmrG3cJde3AM2cduzwaeTy JHm+c4F2sqRUSlMGbb0rkE2fBc+9A+gMlosI/LcfcHlIE03IHaxz0WK3lKulRKBwzEkTx4FL1 94Np42KrVSV3L+04zjlTzIZaVfpvALhcVjzZK0t9ou0ANFSM2pnnbT66QbSOHtDylcDd5AAOy 3mAa2MjsDlTkjAql2Z5sdk0XrrDw1VZ4blDtmM/EggpqDE2hMbDh8jiIlNN8USUMxLadT69kS niy48f1TWKgUajNEWdVLDg1XkuIJTABZ4yPaIAZaNn7hlxeRhR94Vf7Z93HPPpng8YOvbbgS7 TwYzOChN/dY0wDW7iZvgDQHiEK6U0bLz4pqDyMFCFfha8lTgIi1nSfdxdsxWEvxX+i0zsnfwb rsR7w/xl/B+uuP6n3LE1AGJhGu57MojH+HOfBs0Tf3GOsfw5Qj/ZJfjXqy03u3UdVWNPVzj3h ouw8UZ7yxe4rHVGV5Cwq6tFLzCox5ailA9Se5IVOOnD2e7KD4A= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org On the Nintendo Wii, there are two ranges of physical memory, and MMIO in between, but Linux on ppc32 doesn't support discontiguous memory. Therefore a hack was introduced in commit c5df7f775148 ("powerpc: allow ioremap within reserved memory regions") and commit de32400dd26e ("wii: use both mem1 and mem2 as ram"): - Treat the area from the start of the first memory area (MEM1) to the end of the second (MEM2) as one big memory area, but mark the part that doesn't belong to MEM1 or MEM2 as reserved. - Only on the Wii, allow ioremap to be used on reserved memory. This hack, however, doesn't account for the "resource"-based API in kernel/resource.c, because __request_region performs its own checks. Extend the hack to kernel/resource.c, to allow more drivers to allocate their MMIO regions on the Wii. Signed-off-by: Jonathan Neuschäfer --- kernel/resource.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/kernel/resource.c b/kernel/resource.c index 54ba6de3757c..bb3d329329da 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -1134,6 +1134,24 @@ resource_size_t resource_alignment(struct resource *res) static DECLARE_WAIT_QUEUE_HEAD(muxed_resource_wait); +/* + * On some ppc32 platforms (Nintendo Wii), reserved memory is used to work + * around the fact that Linux doesn't support discontiguous memory (all memory + * is treated as one large area with holes punched in it), and reserved memory + * is allowed to be allocated. + */ +#ifdef CONFIG_PPC32 +static bool conflict_ignored(struct resource *conflict) +{ + extern int __allow_ioremap_reserved; + + return __allow_ioremap_reserved && + (conflict->flags & IORESOURCE_SYSRAM); +} +#else +static bool conflict_ignored(struct resource *conflict) { return false; } +#endif + /** * __request_region - create a new busy resource region * @parent: parent resource descriptor @@ -1166,8 +1184,9 @@ struct resource * __request_region(struct resource *parent, res->desc = parent->desc; conflict = __request_resource(parent, res); - if (!conflict) + if (!conflict || conflict_ignored(conflict)) break; + if (conflict != parent) { if (!(conflict->flags & IORESOURCE_BUSY)) { parent = conflict; From patchwork Mon Jan 15 03:13:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860566 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdkJ6slcz9sCZ for ; Mon, 15 Jan 2018 14:14:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753589AbeAODOb (ORCPT ); Sun, 14 Jan 2018 22:14:31 -0500 Received: from mout.gmx.net ([212.227.15.18]:50131 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753016AbeAODO3 (ORCPT ); Sun, 14 Jan 2018 22:14:29 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LaWlT-1fGbdh2e0V-00mJaI; Mon, 15 Jan 2018 04:14:22 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Subject: [PATCH 2/6] powerpc: wii: Explicitly configure GPIO owner for poweroff pin Date: Mon, 15 Jan 2018 04:13:57 +0100 Message-Id: <20180115031401.19577-3-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:ZyCio/I3IPYIghMAzv1B8i5btL0VdqHT48zz5Qeih8qaGKDBplw EzgO1HzKK/2nHb/Usg9KFguoQMLkCEXr6T0pYaD+GLN+QvmGBTtY01rSXs8uFHmBafOcPNb J/C7Oq69kPMkJmC23Ep0FSzWDvZ0Q1Iy9BIsLdyblC+ws3Iang3k8sMpqximuM7owbYScvb WkSbUOQmpBg4Scmjih9mQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:6nwHZODyLco=:E84Ea/fsdX4G5+LI6YZbRC W+H1vyAGI2BMkJF/j5QUCDJjqkDYT3/bWFs6jMjxXTH89tftBteNSVorFyrLJPZuHKbqDvpKp XK1UKKvytTJt8rBSgdHQdLfmaVn1fGTFlwo1LVCRWi9qexPzs8TCBRGUBZmmbezoRRX+Jjbfa xwBACvwk7MBpJwFNySryaN04cE3nk2t/v/2pkriJJRIB+AA/m+WNhEX58Mpo3athxL8zEj5og OA+b0mdreBnuFmadudx399Nl5pcUba6zRtMPLT3ubFsSJk1+luxDy/BnXeRfXJ1+V/TUIA5HO L/72GjP9AdYNnnc3bzm+Q1HTWFpf7MJpf+LqrHlm5GT7Xlz4lsPAxslUz/FDWra5jD2ImpZCX d+jRluhTfzZo3YNp8hhIaNN69N2IyjzUjYHfLCFpPKrqyeuTfMvZHPr04N/I24JXepjibLqaH QKJGjP0m6R6Q9SnDVJdpoSuPTX58XL0bODywbEsTnnKZT5wcwjhXJrcfUkXX9jlHNwTCdXjRG 6AzpaAlEPxYYiTi/HUORm3Zw93r+jbPIqXfy+sPKXVq4gn7OyTJNtdlWy4fklzgqdssQyL9K7 N2WbasdveJHew8xaL7/FhfJJ6xPgQlhEXXbeC3SKfVDiEzcRCI+neM3EAtYBvAGXJmcc4OQW7 ce4dx2t17dDZ0lBVFkCDgPBCmQCUumuvJ9IvkAOIs8iuqK14+N3kCIrsV2T/3uWoYjaxwcTmE XzdRpsfMnCJ9DxnYGoApMx8qxt1Qde3HMJnI86j/G9Cvwf1oH1nv6Dxf2avj3NmqRbc/m/7V0 cvXtB1J9ZBUwCT7WZtDkbdEQXSx3iwBr1l0RXNBV+AEVT57szE= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The Hollywood chipset's GPIO controller has two sets of registers: One for access by the PowerPC CPU, and one for access by the ARM coprocessor (but both are accessible from the PPC because the memory firewall (AHBPROT) is usually disabled when booting Linux, today). The wii_power_off function currently assumes that the poweroff GPIO pin is configured for use via the ARM side, but the upcoming GPIO driver configures all pins for use via the PPC side, breaking poweroff. Configure the owner register explicitly in wii_power_off to make wii_power_off work with and without the new GPIO driver. I think the Wii can be switched to the generic gpio-poweroff driver, after the GPIO driver is merged. Signed-off-by: Jonathan Neuschäfer --- arch/powerpc/platforms/embedded6xx/wii.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/powerpc/platforms/embedded6xx/wii.c b/arch/powerpc/platforms/embedded6xx/wii.c index 79a1fe54ebc9..6e6db1e16d71 100644 --- a/arch/powerpc/platforms/embedded6xx/wii.c +++ b/arch/powerpc/platforms/embedded6xx/wii.c @@ -45,6 +45,7 @@ #define HW_GPIO_BASE(idx) (idx * 0x20) #define HW_GPIO_OUT(idx) (HW_GPIO_BASE(idx) + 0) #define HW_GPIO_DIR(idx) (HW_GPIO_BASE(idx) + 4) +#define HW_GPIO_OWNER (HW_GPIO_BASE(1) + 0x1c) #define HW_GPIO_SHUTDOWN (1<<1) #define HW_GPIO_SLOT_LED (1<<5) @@ -177,6 +178,12 @@ static void wii_power_off(void) local_irq_disable(); if (hw_gpio) { + /* + * set the owner of the shutdown pin to ARM, because it is + * accessed through the registers for the ARM, below + */ + clrbits32(hw_gpio + HW_GPIO_OWNER, HW_GPIO_SHUTDOWN); + /* make sure that the poweroff GPIO is configured as output */ setbits32(hw_gpio + HW_GPIO_DIR(1), HW_GPIO_SHUTDOWN); From patchwork Mon Jan 15 03:13:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860572 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdlr2SZCz9sNx for ; Mon, 15 Jan 2018 14:15:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753733AbeAODOg (ORCPT ); Sun, 14 Jan 2018 22:14:36 -0500 Received: from mout.gmx.net ([212.227.15.19]:61793 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753636AbeAODOd (ORCPT ); Sun, 14 Jan 2018 22:14:33 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MdKkd-1eKDis3EwN-00IWAU; Mon, 15 Jan 2018 04:14:25 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Albert Herranz , Segher Boessenkool , Linus Walleij Subject: [PATCH 3/6] gpio: Add GPIO driver for Nintendo Wii Date: Mon, 15 Jan 2018 04:13:58 +0100 Message-Id: <20180115031401.19577-4-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:JHq9BnK4lqnLUmuE17zIn2W6YNbN1hiMOzLUSx8f0ZfBmq0DB0a R1aT+dEvaLhHPTzX1j3mnjgwpx+VC23eJ1J0SNWGtaZVil9hwKD6qG+uSHFQRQAXEp7yAvl Ei9a4f/Q8oo3/OYxszwYdMfOEe9blfnaeThuMfNZTn0wmcYuzLfiqCnNmf0NJLOZX6nq8Hw VY+3zjDeBt051Vnxaz9qQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:KzcjH1PKoxY=:5ceC6nl6lcphblnZyHEqc3 kmkd62/8nE5VPP1tfhHy3wJx4r48bHt7N2+826kZdeO1FwFY62lbSRKm7+I2BYbvP9Y/vDj+p mY+4uzqg0YjncP37Yr5zAOdr77Ta9wtgqDWvmCMJMHyjpo1hicqrN9ymSgNT6nTO4zZQ+nVLD IXf8psVwPjX/drA+6SWBFhkPFr21x86NiQc/f5gWdUGi1urbYQEtMSbfMgxZgNhFHSZvjsKjo SA9/LgcEh4cQt1Y4JX05m2+CcEK/3oNG4leYi62gFngLoI/owF5ayj1dtFqkzGW93bkSAqoR6 bVAYPLUKeOZuA7775N6aFGQhWo6GkLKZkbDKAK4s0ZKWJSHyzDOxkgQ82ybeuGAs+3zpo9Q70 248x3SWSD4F9Yjt99dTgtp1hJRy4LmiNpViBcei4Rb1r1lNCHWjR/jMa9MItlgdZs2iF4izE/ ZVSeEKz+KmIWy0HkaiT5kQncQLhtVsv4IFLLX7FSYNecmGCm4tcTd//8p9ityK9LxzFsjRwjN G3OaoXyTAq1uVDvKxQZsknBVKSiz1WVvzNgY6P2rt00f7R3PSkXjPAjASS+1UnwN/V452WwCO tJNACoErYQN1K1Wd+C7M/K5EVoxJquZNYbPeD7+1zUqwbmTNENDpqec+MTJM1TIy1pWD6tq+7 mTc2dfqjOD/QP0++/vBDzMOqXFphM/85Oqa73GE45+6Dj3WBdK/CWOqEsYvuy/CS4nCIuXTl1 AGdvLkMydVuQZIeTcvYH297xoMhgv/q9Sc06OdTJMar2wqff5j1J5BmPi3MOy0jgCkybqz/lF AbnkCFyW3+e6aDrIKcKU97cOC1ZFk+G+cSUVHxSb8k0ldXAMLM= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The Nintendo Wii's chipset (called "Hollywood") has a GPIO controller that supports a configurable number of pins (up to 32), interrupts, and some special mechanisms to share the controller between the system's security processor (an ARM926) and the PowerPC CPU. Pin multiplexing is not supported. This patch adds a basic driver for this GPIO controller. Interrupt support will come in a later patch. This patch is based on code developed by Albert Herranz and the GameCube Linux Team, file arch/powerpc/platforms/embedded6xx/hlwd-gpio.c, available at https://github.com/DeltaResero/GC-Wii-Linux-Kernels, but has grown quite dissimilar. To compare this version of the driver against the original code: $ git fetch https://github.com/DeltaResero/GC-Wii-Linux-Kernels $ git co FETCH_HEAD -- arch/powerpc/platforms/embedded6xx/hlwd-gpio.c $ diff -u arch/powerpc/platforms/embedded6xx/hlwd-gpio.c \ drivers/gpio/gpio-hlwd.c Cc: Albert Herranz Cc: Segher Boessenkool Signed-off-by: Jonathan Neuschäfer --- This driver currently uses __raw_readl and __raw_writel to access the GPIO controller's MMIO registers. I wonder if readl/writel plus explicit byte-swapping would be more correct, because it could be independent of the CPU's endianness. That said, this hardware only exists in two big-endian machines (Wii and Wii U). --- drivers/gpio/Kconfig | 8 +++ drivers/gpio/Makefile | 1 + drivers/gpio/gpio-hlwd.c | 183 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 drivers/gpio/gpio-hlwd.c diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index d6a8e851ad13..4f85c2053f7d 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -229,6 +229,14 @@ config GPIO_GRGPIO Select this to support Aeroflex Gaisler GRGPIO cores from the GRLIB VHDL IP core library. +config GPIO_HLWD + tristate "Nintendo Wii (Hollywood) GPIO" + depends on OF_GPIO + help + Select this to support the GPIO controller of the Nintendo Wii. + + If unsure, say N. + config GPIO_ICH tristate "Intel ICH GPIO" depends on PCI && X86 diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index 4bc24febb889..492f62d0eb59 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -54,6 +54,7 @@ obj-$(CONFIG_GPIO_FTGPIO010) += gpio-ftgpio010.o obj-$(CONFIG_GPIO_GE_FPGA) += gpio-ge.o obj-$(CONFIG_GPIO_GPIO_MM) += gpio-gpio-mm.o obj-$(CONFIG_GPIO_GRGPIO) += gpio-grgpio.o +obj-$(CONFIG_GPIO_HLWD) += gpio-hlwd.o obj-$(CONFIG_HTC_EGPIO) += gpio-htc-egpio.o obj-$(CONFIG_GPIO_ICH) += gpio-ich.o obj-$(CONFIG_GPIO_INGENIC) += gpio-ingenic.o diff --git a/drivers/gpio/gpio-hlwd.c b/drivers/gpio/gpio-hlwd.c new file mode 100644 index 000000000000..0f8942ea6ed6 --- /dev/null +++ b/drivers/gpio/gpio-hlwd.c @@ -0,0 +1,183 @@ +// SPDX-License-Identifier: GPL-2.0+ +// Copyright (C) 2008-2009 The GameCube Linux Team +// Copyright (C) 2008,2009 Albert Herranz +// Copyright (C) 2017-2018 Jonathan Neuschäfer +// +// Nintendo Wii (Hollywood) GPIO driver + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Register names and offsets courtesy of WiiBrew: + * https://wiibrew.org/wiki/Hardware/Hollywood_GPIOs + * + * Note that for most registers, there are two versions: + * - HW_GPIOB_* Is always accessible by the Broadway PowerPC core, but does + * always give access to all GPIO lines + * - HW_GPIO_* Is only accessible by the Broadway PowerPC code if the memory + * firewall (AHBPROT) in the Hollywood chipset has been configured to allow + * such access. + * + * The ownership of each GPIO line can be configured in the HW_GPIO_OWNER + * register: A one bit configures the line for access via the HW_GPIOB_* + * registers, a zero bit indicates access via HW_GPIO_*. This driver uses + * HW_GPIOB_*. + */ +#define HW_GPIOB_OUT 0x00 +#define HW_GPIOB_DIR 0x04 +#define HW_GPIOB_IN 0x08 +#define HW_GPIOB_INTLVL 0x0c +#define HW_GPIOB_INTFLAG 0x10 +#define HW_GPIOB_INTMASK 0x14 +#define HW_GPIOB_INMIR 0x18 +#define HW_GPIO_ENABLE 0x1c +#define HW_GPIO_OUT 0x20 +#define HW_GPIO_DIR 0x24 +#define HW_GPIO_IN 0x28 +#define HW_GPIO_INTLVL 0x2c +#define HW_GPIO_INTFLAG 0x30 +#define HW_GPIO_INTMASK 0x34 +#define HW_GPIO_INMIR 0x38 +#define HW_GPIO_OWNER 0x3c + + +struct hlwd_gpio { + struct gpio_chip gpioc; + void __iomem *regs; + spinlock_t lock; +}; + +/* + * Update the bit with the given bit offset in the given register to a given + * value + */ +static void hlwd_gpio_update_bit(struct gpio_chip *gc, unsigned int reg, + int offset, int value) +{ + struct hlwd_gpio *hlwd = gpiochip_get_data(gc); + unsigned long flags; + u32 bit = 1UL << offset; + u32 tmp; + + spin_lock_irqsave(&hlwd->lock, flags); + tmp = __raw_readl(hlwd->regs + reg); + if (value) + __raw_writel(tmp | bit, hlwd->regs + reg); + else + __raw_writel(tmp & ~bit, hlwd->regs + reg); + spin_unlock_irqrestore(&hlwd->lock, flags); +} + +/* Read the bit with the given bit offset in the given register */ +static int hlwd_gpio_read_bit(struct gpio_chip *gc, unsigned int reg, + unsigned int offset) +{ + struct hlwd_gpio *hlwd = gpiochip_get_data(gc); + unsigned long flags; + u32 bit = 1UL << offset; + u32 tmp; + + spin_lock_irqsave(&hlwd->lock, flags); + tmp = __raw_readl(hlwd->regs + reg); + spin_unlock_irqrestore(&hlwd->lock, flags); + + return !!(tmp & bit); +} + +static int hlwd_gpio_get(struct gpio_chip *gc, unsigned int offset) +{ + return hlwd_gpio_read_bit(gc, HW_GPIOB_IN, offset); +} + +static void hlwd_gpio_set(struct gpio_chip *gc, unsigned int offset, int val) +{ + hlwd_gpio_update_bit(gc, HW_GPIOB_OUT, offset, val); +} + +static int hlwd_gpio_dir_in(struct gpio_chip *gc, unsigned int offset) +{ + hlwd_gpio_update_bit(gc, HW_GPIOB_DIR, offset, 0); + + return 0; +} + +static int hlwd_gpio_dir_out(struct gpio_chip *gc, + unsigned int offset, int val) +{ + /* Set the GPIO value, and then set the direction */ + hlwd_gpio_set(gc, offset, val); + hlwd_gpio_update_bit(gc, HW_GPIOB_DIR, offset, 1); + + return 0; +} + +static int hlwd_gpio_probe(struct platform_device *pdev) +{ + struct hlwd_gpio *hlwd; + struct resource *regs_resource; + u32 ngpios; + + hlwd = devm_kzalloc(&pdev->dev, sizeof(*hlwd), GFP_KERNEL); + if (!hlwd) + return -ENOMEM; + + regs_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (IS_ERR(regs_resource)) + return PTR_ERR(regs_resource); + + hlwd->regs = devm_ioremap_resource(&pdev->dev, regs_resource); + if (IS_ERR(hlwd->regs)) + return PTR_ERR(hlwd->regs); + + /* + * Claim all GPIOs using the OWNER register. This will not work on + * systems where the AHBPROT memory firewall hasn't been configured to + * permit PPC access to HW_GPIO_*. + */ + __raw_writel(0xffffffff, hlwd->regs + HW_GPIO_OWNER); + + spin_lock_init(&hlwd->lock); + + hlwd->gpioc.label = dev_name(&pdev->dev); + hlwd->gpioc.parent = &pdev->dev; + hlwd->gpioc.owner = THIS_MODULE; + hlwd->gpioc.direction_input = hlwd_gpio_dir_in; + hlwd->gpioc.direction_output = hlwd_gpio_dir_out; + hlwd->gpioc.get = hlwd_gpio_get; + hlwd->gpioc.set = hlwd_gpio_set; + + if (of_property_read_u32(pdev->dev.of_node, "ngpios", &ngpios)) + ngpios = 32; + hlwd->gpioc.ngpio = ngpios; + + return devm_gpiochip_add_data(&pdev->dev, &hlwd->gpioc, hlwd); +} + +static const struct of_device_id hlwd_gpio_match[] = { + { .compatible = "nintendo,hollywood-gpio", }, + {}, +}; +MODULE_DEVICE_TABLE(of, hlwd_gpio_match); + +static struct platform_driver hlwd_gpio_driver = { + .driver = { + .name = "hlwd_gpio", + .of_match_table = hlwd_gpio_match, + }, + .probe = hlwd_gpio_probe, +}; +module_platform_driver(hlwd_gpio_driver); + +MODULE_AUTHOR("Jonathan Neuschäfer "); +MODULE_DESCRIPTION("Nintendo Wii GPIO driver"); +MODULE_LICENSE("GPL"); From patchwork Mon Jan 15 03:13:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860568 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdkd5tVFz9sCZ for ; Mon, 15 Jan 2018 14:14:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754015AbeAODOr (ORCPT ); Sun, 14 Jan 2018 22:14:47 -0500 Received: from mout.gmx.net ([212.227.15.15]:64832 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753906AbeAODOk (ORCPT ); Sun, 14 Jan 2018 22:14:40 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MN1C4-1eUISF0FBo-006bNh; Mon, 15 Jan 2018 04:14:31 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Linus Walleij , Rob Herring , Mark Rutland , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Subject: [PATCH 4/6] dt-bindings: gpio: Add binding for Wii GPIO controller Date: Mon, 15 Jan 2018 04:13:59 +0100 Message-Id: <20180115031401.19577-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:/Ex9Ld09h93Xd4BrkSUDNyx7Umn9bx127R8zLNFBGwhOjnJpZ0t sgWf8wTcNrH7oLVKmIr728QIhu5JVrE7aNgicGb8lNCiOJ7iSgkfxSUlL3o+cSmRiOpxIOy dEl3B3dt/nV0+rvdH0Opf4bAekG8iQeUgR0JMhJP3lY5o+Lwq/tTHY24aShwX5XNSbO75u8 c8ML1r+AI6u+1yWaWFKUw== X-UI-Out-Filterresults: notjunk:1; V01:K0:uZyF7e2ByO0=:spkfsfMOoujsv3ZTSICCmE m1qcvSKjVKbuqcU/VKnT2/Ct5feH56vF8I1qu4n2grH/XJmLIryB1f1ZJS5fN1a5jl28DfY+M G1Xp+WNR1Yq3goG1kBDzlnHyVdYQEOkvmtCFHoMugWkVDajmG5S9gQr/cTeeVbMyc0gUJzA2T c15l5XD+AJ3QtovF3jYSjqSQXqROVv/DB/VGo6LzGEgTH53LHThO/gY63M+CFX19SNtkl7XZ4 6TiwRZyZ62i9AkA1EiPO92/ZBk8/izRQy3muIsGYpP0tnHqp1JNXAYJB7Ks84WrgGDF8ebZAy dXghU+PeNFUjvmxXbN1u/Jl4EW8baBr4zZrKslVsxyTco3Zg4cOVUbsQ+pqgXB3vuy9Pv7/7i QWD+2H/rbCldGLX5kjlvH/Dhf8MdBZDB5MxG/syRaqRzvHzczYBNh2wWNjxbdq2l4tM87mF+0 Ailv9INpjVRkKHk9UD2zWYyw8yCFKLoKaHoVRGM3clHu8baZfRk0oRfshsGsk9fOZ2SQXdm7H mfGI+PbQay0F8NXL9uLI+1Yfla+pOYlSUF6e8IpA/xkG7XZF53N+dCr7ls6kO/wjLshvaRHky 5S3FsJ+CvIdMuq6dKCoKGdBQGf1mK/7+YxSKG2Fm7DviMyaGP2rpEfCMDg0xg57JP8z+8Y3rG 898yB6gGpV4p9MTuIx+8QAopUcEMMIM+a4jgxpTFrzf9ZpXdof1v5EqyqigZ1szeW/Y8uZV75 CGZBKTO4c8iuSmu/vgNdbQfUy0eiDruPJ1bNGO2Y4ee5k3NzsICgSr8/DUPm5rZob9YmAmxig IBSaeRR3gWuI7CKUZFdYS9oS8TcJablnATluWaD6aPBqBlUMp4= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Signed-off-by: Jonathan Neuschäfer Reviewed-by: Rob Herring --- .../bindings/gpio/nintendo,hollywood-gpio.txt | 27 ++++++++++++++++++++++ .../devicetree/bindings/powerpc/nintendo/wii.txt | 9 +------- 2 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt diff --git a/Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt b/Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt new file mode 100644 index 000000000000..a97ce6b5b724 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt @@ -0,0 +1,27 @@ +Nintendo Wii (Hollywood) GPIO controller + +Required properties: +- compatible: "nintendo,hollywood-gpio +- reg: Physical base address and length of the controller's registers. +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells: Should be <2>. The first cell is the pin number and the + second cell is used to specify optional parameters: + - bit 0 specifies polarity (0 for normal, 1 for inverted). + +Optional properties: +- ngpios: see Documentation/devicetree/bindings/gpio/gpio.txt +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be two. +- interrupts: Interrupt specifier for the controller's Broadway (PowerPC) + interrupt. +- interrupt-parent: phandle of the parent interrupt controller. + +Example: + + GPIO: gpio@0d8000c0 { + #gpio-cells = <2>; + compatible = "nintendo,hollywood-gpio"; + reg = <0x0d8000c0 0x40>; + gpio-controller; + ngpios = <24>; + } diff --git a/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt b/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt index 36afa322b04b..a3dc4b9fa11a 100644 --- a/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt +++ b/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt @@ -152,14 +152,7 @@ Nintendo Wii device tree 1.l) The General Purpose I/O (GPIO) controller node - Represents the dual access 32 GPIO controller interface. - - Required properties: - - - #gpio-cells : <2> - - compatible : should be "nintendo,hollywood-gpio" - - reg : should contain the IPC registers location and length - - gpio-controller + see Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt 1.m) The control node From patchwork Mon Jan 15 03:14:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860570 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdl92RfQz9sPk for ; Mon, 15 Jan 2018 14:15:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753995AbeAODOp (ORCPT ); Sun, 14 Jan 2018 22:14:45 -0500 Received: from mout.gmx.net ([212.227.15.19]:62374 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753904AbeAODOk (ORCPT ); Sun, 14 Jan 2018 22:14:40 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LaWlT-1fGbe43zWJ-00mJaI; Mon, 15 Jan 2018 04:14:32 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Rob Herring , Mark Rutland , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Subject: [PATCH 5/6] powerpc: wii.dts: Add ngpios property Date: Mon, 15 Jan 2018 04:14:00 +0100 Message-Id: <20180115031401.19577-6-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:CFpQ49mCadQK5dUGav/UyEXdZ9H2uAU0r3ora/JGR7LgWIj3UcB +q+vaNlHK4qZ++rNo2couB57dmew+wlNelPhNn4jEfEAcKE01FckwZQaCLHmKwpRLwXrN2R RmMlZE7l0SE1UfPsivGd4o+kOOIqTEonUvtoeFL9qm2/OoxQdYUprL+eO0BRxoJpz57gjRQ LtemvXGStjdAt4SqRDEbg== X-UI-Out-Filterresults: notjunk:1; V01:K0:gX8PC5TLvrs=:PtazAtcY7W1mZAHeCb+MOw KcPtwMSd9QRuFaB1Hh8bhixViWerRMJILU7zdsg9ccw1b1IUFsN5zC7tJQkpIhKzdTbQfRSK8 E5CE69Ea9FuCoeqbCT1xkbzzGXy2fVlo5wgQT0vr9PhInWsTFlYg8md0Junm1zh2Jd5twh/mQ gT57aTOnSskxXUQkSSxS8oFeEgRwE4KMHHN6FLpkWITyGtzD/fVwqSxJGPCcrtyVRRydwmV4F Vcfdxk8l3MWOHB+fFQKicKpxtHkuK9RsuBBG2APNmKASqAthoXYRBnyvqpHRIJ86kcn2zrWxl 5FC3tScrRuWJZZaiUN9aKHNfeP2/KA2WnaiRokHrjKGwcrv0O4VcDzl0DbLM01zdn82gk4ZR8 f7r9u5Gh4Rv2YW3pfI0RIs6caKfZDDrJC+5+fYUVGcZte/kLEH0YIcLDYmlA0IiFWI81E9g/M Tv2FsA5FRUZzXyFDy4I+xGL9Jf5KDi+8xjvyRne70BpdUV9AszoDH0GTUDZRucTnyczwcRl0l VCQFzp3vG0sveOXPy08sZbSn+TFUk8sQJDZELc8LmdeSDMG7gthfmgd+FVzn227FCc4XpUvGd x8IHUr5Ooe60nIMqV+WYNvGzRgyIAFARDFg3WvPgmWpapp7bkDiC5KeRNxpvW2sHF3XBBZs8q XiNAkO5T4zVWM5Qzba657FJOFvEVeAA0jB7BxiT7T7Of4XMsexmG2zFYs+NyZdM4krG+xaYGA PDXBMZ+xe2VTZTE40jsMgzvaZohIKkQpP1hjPRk6XKr433m3zo4eBBxMbtjPXOyPwqWbglHiy v1GKRKRwbGLYLrnlrIeuTXHw3DLc+cQYMthiMNoXbMvnr1obkI= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The Hollywood GPIO controller supports 32 GPIOs, but on the Wii, only 24 are used. Signed-off-by: Jonathan Neuschäfer --- arch/powerpc/boot/dts/wii.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/boot/dts/wii.dts b/arch/powerpc/boot/dts/wii.dts index 40b324b6391e..7235e375919c 100644 --- a/arch/powerpc/boot/dts/wii.dts +++ b/arch/powerpc/boot/dts/wii.dts @@ -176,6 +176,7 @@ compatible = "nintendo,hollywood-gpio"; reg = <0x0d8000c0 0x40>; gpio-controller; + ngpios = <24>; /* * This is commented out while a standard binding From patchwork Mon Jan 15 03:14:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 860567 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=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKdkc2tzWz9sCZ for ; Mon, 15 Jan 2018 14:14:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753636AbeAODOn (ORCPT ); Sun, 14 Jan 2018 22:14:43 -0500 Received: from mout.gmx.net ([212.227.15.19]:51823 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753901AbeAODOk (ORCPT ); Sun, 14 Jan 2018 22:14:40 -0500 Received: from latitude.space.aachen.ccc.de ([89.0.90.88]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MO7ee-1eVOuq3eIm-005VzJ; Mon, 15 Jan 2018 04:14:33 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Rob Herring , Mark Rutland , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Subject: [PATCH 6/6] powerpc: wii.dts: Add GPIO line names Date: Mon, 15 Jan 2018 04:14:01 +0100 Message-Id: <20180115031401.19577-7-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180115031401.19577-1-j.neuschaefer@gmx.net> References: <20180115031401.19577-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K0:fuEYX8nlsb7gWC4pyuNR2jhfr6chC0xcVkYhfAkUmFSVbb9RUAC ox0gzo7Ny5T7lVb/UUUYzmfcwkCnUAgK76iqk1x+36Pw9HviWZE2oxWDYKvZlF1L4cLTJKB e+eUMycXKBNhgUUyatHAoRfD4/GLKqveK+VI2vupPZ4fyhjUsIdOFPpN14q4mOf6AhvBINP KbJFJmqFiYbcxhzpUBkSg== X-UI-Out-Filterresults: notjunk:1; V01:K0:jCY/qX3yuic=:21rYggWrGfDSVO7LOzPR3G MAbCoWkulURbYSFVv0o8sv2jF5xC/Mtq8PDAJ9n6Dwe1FzBfyokAW2Lz26Ef2nVUDYMHzML8p OjZvkboUHinNyY5RIotLSllWcZWrZOXlfEwZpGn72L6CoONdq7oJ4JzmDN2Wc6QLg9e0iQ++v gMaueGOI3t+1z387ycbp+6gx9wrmPpeESuOPyQW6YssYw/n4ZAYMUA//6Tl8BTNNhiiAmRrQp ivmIMxwc1Ajm2pgMApKVoS7n9Xl+/NSj4stWtRb9eMibbJD2ir2QH+yUxeYtfGMTmJEfnXLet krmwBPxrP9X/xjeCaBQ68Ww3MEIWrBJhe2HEpSx7l5sJo1aoKJO9FoE7kEV3mruKH/MCpGTz5 +3RJaDUfquCeR51IS1YMV8OkXBJg7WjSGLmoyh9t9LQrVAoj7mSijUx0Rh7TQ6yXDQWqn8wA4 Q6Szn4F8lTs4UNZz/5jqLUT6iOD6ItyI02T2TH/VW+PUZJbFctWg8vnSJExvejrulxxNAizZU xxk3XpYkmEn5kz2/8skFEgNQg2rz1VNNuSO+/gDQz31Y2YfU8dy4+Od/8mlKvAftAQp6Uioz4 56ebLDWFHIsRC0B3BxyDLcGaPw2l8xYHnN4x6uB8GBExo5iqG55kgEBYEqOZ4dtq2Z6uWoMYu l8N4xF0BQcRBR9JW7YhxYMNmjq3+b5B+an6xM56xydxkm0PMbWz8iLEJA4OhqqZBxWIIRl1sO 7R2WLkgYZKrjMBLShw9O3MJBzHl8VyOQpTSXM2590c8JUOrs0mrHj471TxmPWGKwoJ5aemcck lfnxSzHmaiuAOiKCBL4aQTVGHme5IqDCBpt9n1jNFMKPWb5om0= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org These are the GPIO line names on a Nintendo Wii, as documented in: https://wiibrew.org/wiki/Hardware/Hollywood_GPIOs Signed-off-by: Jonathan Neuschäfer --- arch/powerpc/boot/dts/wii.dts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/powerpc/boot/dts/wii.dts b/arch/powerpc/boot/dts/wii.dts index 7235e375919c..07d5e84e98b1 100644 --- a/arch/powerpc/boot/dts/wii.dts +++ b/arch/powerpc/boot/dts/wii.dts @@ -178,6 +178,14 @@ gpio-controller; ngpios = <24>; + gpio-line-names = + "POWER", "SHUTDOWN", "FAN", "DC_DC", + "DI_SPIN", "SLOT_LED", "EJECT_BTN", "SLOT_IN", + "SENSOR_BAR", "DO_EJECT", "EEP_CS", "EEP_CLK", + "EEP_MOSI", "EEP_MISO", "AVE_SCL", "AVE_SDA", + "DEBUG0", "DEBUG1", "DEBUG2", "DEBUG3", + "DEBUG4", "DEBUG5", "DEBUG6", "DEBUG7"; + /* * This is commented out while a standard binding * for i2c over gpio is defined.