From nobody Wed Jun 17 06:02:59 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 128F43D34B6; Mon, 27 Apr 2026 14:24:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299851; cv=none; b=eXKex6K6tiSHVGEZIRWeq1+kyG3jay6vtztyAYVWnFpvs3XQKGZibfVX+/BCnFsF++J00A2OYzzYkIGNFQTv69wYar62HpyPHK3ay0I3P09uHyXGxXQVQe2zG1868P7UmTfMPGWKugeLq52a5WX4FQAzWa6pfQr0k2srKPAfHUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299851; c=relaxed/simple; bh=7Y8vgQ5oaQQ1eADmt9RQJb/9/dRh7wzS0n00a5vfL4Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ggBM6+XssVXXf8XqUgYPd9Px+Y7IWlu/5xqZUU9GnxyKWlc1x0i1CG+GDZ2w5iWVNpClFulATgdai1Pk4foPDacW4Xmay1LKCINjuKaIvL/oZr/98ZwB6JY5pRUfmQWcAMGOywCBzlljxYgPmiqWWF4Bip7uGl2TAvObgH+lsVo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qsQWO2DW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qsQWO2DW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF564C2BCB4; Mon, 27 Apr 2026 14:24:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777299850; bh=7Y8vgQ5oaQQ1eADmt9RQJb/9/dRh7wzS0n00a5vfL4Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qsQWO2DWlqlAEh6KEPtkJCtTRC/t+Pot7fdDQCo6CjBn3k0liWl7zwSAyFTyjSufR vMX/O8Cizu1pCgc0PjuC2MqwFl4P2BCz1+bhdHxTowdpX9A/P9jdl7RmFfUrEp4r80 eod90/FmuICu9XxZ1azHPR8HhC8iCKSjF8/+x5rKjr+/UvJ98b8nuCT6X9yWPU7Qq5 h4FeuIMedSH7F1tcBBZc+tB3pZrxZBMOLHP+nDPzsnyupWrgdbKvRTsaXfXfS3l43v r8G+vYX8akZ/0zhVWz4XM2L9tfavLipRgNn78I6KqW79r8dmkdM2yQHnwWQEuuGrlk lmRcPIvKDGdEA== From: Arnd Bergmann To: Cc: Arnd Bergmann , "Aaro Koskinen" , "Andreas Kemnade" , "Bartosz Golaszewski" , =?UTF-8?q?Beno=C3=AEt=20Cousson?= , "David S. Miller" , "Dmitry Torokhov" , "Eric Dumazet" , "Felipe Balbi" , "Jakub Kicinski" , "Johannes Berg" , "Kevin Hilman" , "Krzysztof Kozlowski" , "Linus Walleij" , "Paolo Abeni" , "Rob Herring" , "Roger Quadros" , "Tony Lindgren" , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-omap@vger.kernel.org, Christian Lamparter Subject: [PATCH v3 1/3] dt-bindings: net: add st,stlc45xx/p54spi binding Date: Mon, 27 Apr 2026 16:23:53 +0200 Message-Id: <20260427142355.2532714-2-arnd@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260427142355.2532714-1-arnd@kernel.org> References: <20260427142355.2532714-1-arnd@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann The SPI version of Prism54 was sold under a couple of different names and supported by the Linux p54spi driver, but there was never a DT binding for it. Document the four known names of this device and the properties that are sufficient for its use on the Nokia N8x0 tablet. As I don't have this hardware or documentation for it, this is purely based on existing usage in the driver. Link: https://lore.kernel.org/all/e8dc9acb-6f85-e0a9-a145-d101ca6da201@gmai= l.com/ Acked-by: Christian Lamparter Signed-off-by: Arnd Bergmann Reviewed-by: Krzysztof Kozlowski --- .../bindings/net/wireless/st,stlc45xx.yaml | 58 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 59 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/wireless/st,stlc4= 5xx.yaml diff --git a/Documentation/devicetree/bindings/net/wireless/st,stlc45xx.yam= l b/Documentation/devicetree/bindings/net/wireless/st,stlc45xx.yaml new file mode 100644 index 000000000000..12d907720ec4 --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/st,stlc45xx.yaml @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/wireless/st,stlc45xx.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ST/Intersil/Conexant stlc45xx/p54spi/cx3110x SPI wireless device + +maintainers: + - Christian Lamparter + +description: + The SPI variant of the Intersil Prism54 wireless device was sold + under a variety of names, including Conexant CX3110x and + ST Microelectronics STLC5460. + +allOf: + - $ref: ieee80211.yaml# + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +properties: + compatible: + enum: + - cnxt,3110x + - isil,p54spi + - st,stlc4550 + - st,stlc4560 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + powerdown-gpios: + maxItems: 1 + +required: + - compatible + - reg + - interrupts + +unevaluatedProperties: false + +examples: + - | + spi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + wifi@0 { + compatible =3D "st,stlc4560"; + reg =3D <0>; + spi-max-frequency =3D <48000000>; + interrupts-extended =3D <&gpio 23>; + powerdown-gpios =3D <&gpio 1>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 84afd29c9b1b..deacfc4e244d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20098,6 +20098,7 @@ M: Christian Lamparter L: linux-wireless@vger.kernel.org S: Maintained W: https://wireless.wiki.kernel.org/en/users/Drivers/p54 +F: Documentation/devicetree/bindings/net/wireless/st,stlc45xx.yaml F: drivers/net/wireless/intersil/ =20 PACKET SOCKETS --=20 2.39.5 From nobody Wed Jun 17 06:02:59 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E9AA26E142; Mon, 27 Apr 2026 14:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299856; cv=none; b=kKXRSW9llE6t71VRQsZVHrxjtfXI3vmVPRk5/zqC7w5uaF5mjyGNKpqeQtyVizNjekYPjZHhi39B4LTsk5lmv6jS5rEJvHbBUsLJlIUd5/ShgrkQScoX38TYAhu8lwPrcF2hhX/3IJ32jhwrJZN4g0t3lW7ynz80UWfENuvnNSY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299856; c=relaxed/simple; bh=Nv1JYf3LO+jPMQgpo8pnXz9mJrVmyxe8ICeN5WxGts0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TaSHfRMPKJstMD0PO8juA+POXkmZo42HlE3FdfBTY+bT6/VCvgwB50p11pei9BAO4W54c2lNHLs+OgOrN3AJc6+2V/vXJ4NMtr656+D7rquJuzTDpIqRS6dMBIN7OisU4siMin9ev+TPj0/DqWIW2lKSd+PF+M5S9wreLg3KPtw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MqNrrf3g; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MqNrrf3g" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 291B2C19425; Mon, 27 Apr 2026 14:24:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777299856; bh=Nv1JYf3LO+jPMQgpo8pnXz9mJrVmyxe8ICeN5WxGts0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MqNrrf3g5O6M65G1JhS7bEZJX1r8MEERTG22J+Ynebq3uEAY/PvQ7VWZhbWmuxA6Y 8U1FJ4y47vfh6ZcPkCHxPBD70DnaqAuY/nfkaqwFSr+xOiKtX7ZMYsd+XdmF4vrO// kSjh7yQcq4iI6f6TTLgsRC0SH+DOGeKdQGuarmbU44+cnJ46gb27/SP71av0s3gZ07 5dZr7nZCrtqFNugvftIk6vbTV602ox/34HBW3ZZzAngvZif8z5AGGToYTJ/V+OzVuk guMW+CUMhKZUuCeNW/Lnrf29IRET91h9LWu/JiqzLYeMNj/CYRJWROpZWW7DlK3Epz 5+ndG4WFx1HwA== From: Arnd Bergmann To: Cc: Arnd Bergmann , "Aaro Koskinen" , "Andreas Kemnade" , "Bartosz Golaszewski" , =?UTF-8?q?Beno=C3=AEt=20Cousson?= , "David S. Miller" , "Dmitry Torokhov" , "Eric Dumazet" , "Felipe Balbi" , "Jakub Kicinski" , "Johannes Berg" , "Kevin Hilman" , "Krzysztof Kozlowski" , "Linus Walleij" , "Paolo Abeni" , "Rob Herring" , "Roger Quadros" , "Tony Lindgren" , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-omap@vger.kernel.org, Krzysztof Kozlowski Subject: [PATCH v3 2/3] ARM: dts: omap2: add stlc4560 spi-wireless node Date: Mon, 27 Apr 2026 16:23:54 +0200 Message-Id: <20260427142355.2532714-3-arnd@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260427142355.2532714-1-arnd@kernel.org> References: <20260427142355.2532714-1-arnd@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann Converted from the platform_device creation in board-n8x0.c. Link: https://lore.kernel.org/all/20230314163201.955689-1-arnd@kernel.org/ Reviewed-by: Krzysztof Kozlowski Signed-off-by: Arnd Bergmann --- arch/arm/boot/dts/ti/omap/omap2.dtsi | 4 ++++ arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap2.dtsi b/arch/arm/boot/dts/ti/om= ap/omap2.dtsi index afabb36a8ac1..fdc1790adf43 100644 --- a/arch/arm/boot/dts/ti/omap/omap2.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap2.dtsi @@ -129,6 +129,8 @@ i2c2: i2c@48072000 { }; =20 mcspi1: spi@48098000 { + #address-cells =3D <1>; + #size-cells =3D <0>; compatible =3D "ti,omap2-mcspi"; ti,hwmods =3D "mcspi1"; reg =3D <0x48098000 0x100>; @@ -140,6 +142,8 @@ mcspi1: spi@48098000 { }; =20 mcspi2: spi@4809a000 { + #address-cells =3D <1>; + #size-cells =3D <0>; compatible =3D "ti,omap2-mcspi"; ti,hwmods =3D "mcspi2"; reg =3D <0x4809a000 0x100>; diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap2420-n8x0-common.dtsi index 63b0b4921e4e..fe9dd8bbfc85 100644 --- a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi @@ -109,3 +109,15 @@ partition@5 { }; }; }; + +&mcspi2 { + status =3D "okay"; + + wifi@0 { + reg =3D <0>; + compatible =3D "st,stlc4560"; + spi-max-frequency =3D <48000000>; + interrupts-extended =3D <&gpio3 23 IRQ_TYPE_EDGE_RISING>; + powerdown-gpios =3D <&gpio4 1 GPIO_ACTIVE_LOW>; /* gpio 97 */ + }; +}; --=20 2.39.5 From nobody Wed Jun 17 06:02:59 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0077C3D47B8; Mon, 27 Apr 2026 14:24:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299862; cv=none; b=kE2z9OTXg3VcoI35IkyO+LTMJOyaK3PtlMm7ju9WarMDOUqdsvm0GAYw0dRz5/Iz13sWTgIBB2anQayteYVb6AVPp+nAIicGuhze727KyCbcQKpp/kqH1CMPTx5GOlbks/7OM6UrDRNBKmJd3FlUMPMPG0ijlG5q28DmPsyv934= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777299862; c=relaxed/simple; bh=5vHeUD4XDO+jrNf3SjbxNwWzSv6HWIWXWuo72nUC1JI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XTEo+3K4qvj/Qw5PgD824LchE2hGsvkB/JHOROIci38DLc5hq+pQ6T1zwxe55bdaRQyRC0Cw3YpF+YU4WY7uhyPO1PU2CJOjPAAkAihpD/PmbjK2CpBXkgxndCqPdYXKCyvbD7bLmD2sBHbDL8El6OO6UUilzifla/QZVQWHP9U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uGdsR4+k; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uGdsR4+k" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F4C4C2BCC4; Mon, 27 Apr 2026 14:24:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777299861; bh=5vHeUD4XDO+jrNf3SjbxNwWzSv6HWIWXWuo72nUC1JI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uGdsR4+k3FvnnYnvX3Y8UhtjVufTKOlRn85hY5P7E9hwpr3x3DRbxCttv2TDtdkMC UZBGTe8kwF1BBuT+Rk8dj3YxZ7hcEMWHn3RZ2E35/Igo/CaXdbC8fANsB7mH+rKLkb fjm8htxAkvo46HqYmaN+ZUCW7/DeEHD7hkXKPJP/trr3Fsf0pYfh+w/aRK9YuYhtgr ue73ltKQMJqkuDpyG6xB9V7mVUy303EhLF5iJFMY0kV/XSr1p86aoTUeQInQPIaC+R 2wtwquWyoYCKsrMS4MKjF7S987ZTRy66tm0UjHpMiDgYFAytkx472Rjo/Udnownd7r tog962DDwol7w== From: Arnd Bergmann To: Cc: Arnd Bergmann , "Aaro Koskinen" , "Andreas Kemnade" , "Bartosz Golaszewski" , =?UTF-8?q?Beno=C3=AEt=20Cousson?= , "David S. Miller" , "Dmitry Torokhov" , "Eric Dumazet" , "Felipe Balbi" , "Jakub Kicinski" , "Johannes Berg" , "Kevin Hilman" , "Krzysztof Kozlowski" , "Linus Walleij" , "Paolo Abeni" , "Rob Herring" , "Roger Quadros" , "Tony Lindgren" , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-omap@vger.kernel.org, Christian Lamparter Subject: [PATCH v3 3/3] p54spi: convert to devicetree Date: Mon, 27 Apr 2026 16:23:55 +0200 Message-Id: <20260427142355.2532714-4-arnd@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260427142355.2532714-1-arnd@kernel.org> References: <20260427142355.2532714-1-arnd@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann The Prism54 SPI driver hardcodes GPIO numbers and expects users to pass them as module parameters, apparently a relic from its life as a staging driver. This works because there is only one user, the Nokia N8x0 tablet. Convert this to the gpio descriptor interface and DT based probing to improve this and simplify the code at the same time. Acked-by: Christian Lamparter Signed-off-by: Arnd Bergmann --- arch/arm/mach-omap2/board-n8x0.c | 18 ------ drivers/net/wireless/intersil/p54/p54spi.c | 68 ++++++++-------------- drivers/net/wireless/intersil/p54/p54spi.h | 3 + 3 files changed, 28 insertions(+), 61 deletions(-) diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n= 8x0.c index 969265d5d5c6..d9acd32c5457 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include =20 @@ -106,21 +105,6 @@ static void __init n8x0_usb_init(void) {} =20 #endif /*CONFIG_USB_MUSB_TUSB6010 */ =20 - -static struct omap2_mcspi_device_config p54spi_mcspi_config =3D { - .turbo_mode =3D 0, -}; - -static struct spi_board_info n800_spi_board_info[] __initdata =3D { - { - .modalias =3D "p54spi", - .bus_num =3D 2, - .chip_select =3D 0, - .max_speed_hz =3D 48000000, - .controller_data =3D &p54spi_mcspi_config, - }, -}; - #if defined(CONFIG_MENELAUS) && IS_ENABLED(CONFIG_MMC_OMAP) =20 /* @@ -524,7 +508,5 @@ omap_late_initcall(n8x0_late_initcall); void * __init n8x0_legacy_init(void) { board_check_revision(); - spi_register_board_info(n800_spi_board_info, - ARRAY_SIZE(n800_spi_board_info)); return &mmc1_data; } diff --git a/drivers/net/wireless/intersil/p54/p54spi.c b/drivers/net/wirel= ess/intersil/p54/p54spi.c index 9d66dcae54e0..1cda3b42b5d7 100644 --- a/drivers/net/wireless/intersil/p54/p54spi.c +++ b/drivers/net/wireless/intersil/p54/p54spi.c @@ -8,6 +8,7 @@ */ =20 #include +#include #include #include #include @@ -15,7 +16,7 @@ #include #include #include -#include +#include #include =20 #include "p54spi.h" @@ -30,19 +31,6 @@ MODULE_FIRMWARE("3826.arm"); MODULE_FIRMWARE("3826.eeprom"); =20 -/* gpios should be handled in board files and provided via platform data, - * but because it's currently impossible for p54spi to have a header file - * in include/linux, let's use module parameters for now - */ - -static int p54spi_gpio_power =3D 97; -module_param(p54spi_gpio_power, int, 0444); -MODULE_PARM_DESC(p54spi_gpio_power, "gpio number for power line"); - -static int p54spi_gpio_irq =3D 87; -module_param(p54spi_gpio_irq, int, 0444); -MODULE_PARM_DESC(p54spi_gpio_irq, "gpio number for irq line"); - static void p54spi_spi_read(struct p54s_priv *priv, u8 address, void *buf, size_t len) { @@ -262,14 +250,14 @@ static int p54spi_upload_firmware(struct ieee80211_hw= *dev) =20 static void p54spi_power_off(struct p54s_priv *priv) { - disable_irq(gpio_to_irq(p54spi_gpio_irq)); - gpio_set_value(p54spi_gpio_power, 0); + disable_irq(priv->irq); + gpiod_set_value(priv->gpio_powerdown, 1); } =20 static void p54spi_power_on(struct p54s_priv *priv) { - gpio_set_value(p54spi_gpio_power, 1); - enable_irq(gpio_to_irq(p54spi_gpio_irq)); + gpiod_set_value(priv->gpio_powerdown, 0); + enable_irq(priv->irq); =20 /* need to wait a while before device can be accessed, the length * is just a guess @@ -608,30 +596,19 @@ static int p54spi_probe(struct spi_device *spi) goto err_free; } =20 - ret =3D gpio_request(p54spi_gpio_power, "p54spi power"); - if (ret < 0) { - dev_err(&priv->spi->dev, "power GPIO request failed: %d", ret); + priv->gpio_powerdown =3D gpiod_get(&spi->dev, "powerdown", GPIOD_OUT_HIGH= ); + if (IS_ERR(priv->gpio_powerdown)) { + ret =3D PTR_ERR(priv->gpio_powerdown); + dev_err(&priv->spi->dev, "powerdown GPIO request failed: %d", ret); goto err_free; } =20 - ret =3D gpio_request(p54spi_gpio_irq, "p54spi irq"); - if (ret < 0) { - dev_err(&priv->spi->dev, "irq GPIO request failed: %d", ret); - goto err_free_gpio_power; - } - - gpio_direction_output(p54spi_gpio_power, 0); - gpio_direction_input(p54spi_gpio_irq); - - ret =3D request_irq(gpio_to_irq(p54spi_gpio_irq), - p54spi_interrupt, IRQF_NO_AUTOEN, "p54spi", - priv->spi); + ret =3D request_irq(spi->irq, p54spi_interrupt, IRQF_NO_AUTOEN, "p54spi",= priv->spi); if (ret < 0) { dev_err(&priv->spi->dev, "request_irq() failed"); - goto err_free_gpio_irq; + goto err_free_gpio_power; } =20 - irq_set_irq_type(gpio_to_irq(p54spi_gpio_irq), IRQ_TYPE_EDGE_RISING); =20 INIT_WORK(&priv->work, p54spi_work); init_completion(&priv->fw_comp); @@ -659,11 +636,9 @@ static int p54spi_probe(struct spi_device *spi) =20 err_free_common: release_firmware(priv->firmware); - free_irq(gpio_to_irq(p54spi_gpio_irq), spi); -err_free_gpio_irq: - gpio_free(p54spi_gpio_irq); + free_irq(priv->irq, spi); err_free_gpio_power: - gpio_free(p54spi_gpio_power); + gpiod_put(priv->gpio_powerdown); err_free: p54_free_common(priv->hw); return ret; @@ -675,10 +650,8 @@ static void p54spi_remove(struct spi_device *spi) =20 p54_unregister_common(priv->hw); =20 - free_irq(gpio_to_irq(p54spi_gpio_irq), spi); - - gpio_free(p54spi_gpio_power); - gpio_free(p54spi_gpio_irq); + free_irq(priv->irq, spi); + gpiod_put(priv->gpio_powerdown); release_firmware(priv->firmware); =20 mutex_destroy(&priv->mutex); @@ -686,10 +659,19 @@ static void p54spi_remove(struct spi_device *spi) p54_free_common(priv->hw); } =20 +struct of_device_id p54spi_of_ids[] =3D { + { .compatible =3D "cnxt,3110x", }, + { .compatible =3D "isil,p54spi", }, + { .compatible =3D "st,stlc4550", }, + { .compatible =3D "st,stlc4560", }, + { }, +}; +MODULE_DEVICE_TABLE(of, p54spi_of_ids); =20 static struct spi_driver p54spi_driver =3D { .driver =3D { .name =3D "p54spi", + .of_match_table =3D p54spi_of_ids, }, =20 .probe =3D p54spi_probe, diff --git a/drivers/net/wireless/intersil/p54/p54spi.h b/drivers/net/wirel= ess/intersil/p54/p54spi.h index e5619a13fd61..118785cc635a 100644 --- a/drivers/net/wireless/intersil/p54/p54spi.h +++ b/drivers/net/wireless/intersil/p54/p54spi.h @@ -107,6 +107,9 @@ struct p54s_priv { =20 enum fw_state fw_state; const struct firmware *firmware; + + struct gpio_desc *gpio_powerdown; + int irq; }; =20 #endif /* P54SPI_H */ --=20 2.39.5