1/*
2 * Copyright (c) 2023 Dave Rensberger - Beechwoods Software
3 * Copyright (c) 2024 Steve Boylan <stephen.boylan@beechwoods.com>
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8/dts-v1/;
9
10#include "rpi_pico-common.dtsi"
11
12&pinctrl {
13	pio0_spi0_default: pio0_spi0_default {
14		/* gpio 25 is used for chip select, not assigned to the PIO */
15		group1 {
16			pinmux = <PIO0_P29>;
17		};
18	};
19
20	airoc_wifi_default: airoc_wifi_default {
21		/* Control of GPIO24 is done through the WiFi driver */
22		group1 {
23			pinmux = <PIO0_P24>;
24			input-enable;
25		};
26	};
27
28	airoc_wifi_host_wake: airoc_wifi_host_wake {
29		/* Assign GPIO24 to SIO (GPIO) for use as an interrupt source */
30		group1 {
31			/* Lacking a specific SIO pin definition, use the RP2040_PINMUX macro */
32			pinmux = <RP2XXX_PINMUX(24, RP2_PINCTRL_GPIO_FUNC_SIO)>;
33			input-enable;
34		};
35	};
36};
37
38&pio0 {
39	status = "okay";
40
41	pio0_spi0: pio0_spi0 {
42		compatible = "raspberrypi,pico-spi-pio";
43		clocks = < &clocks RPI_PICO_CLKID_CLK_SYS >;
44		#address-cells = <1>;
45		#size-cells = <0>;
46		cs-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
47		clk-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
48		sio-gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
49		pinctrl-0 = <&pio0_spi0_default>;
50		pinctrl-names = "default";
51		status = "okay";
52		airoc-wifi@0 {
53			compatible = "infineon,airoc-wifi";
54			reg = < 0 >;
55			wifi-reg-on-gpios = < &gpio0 23 GPIO_ACTIVE_HIGH >;
56			bus-select-gpios = < &gpio0 24 GPIO_ACTIVE_HIGH >;
57			wifi-host-wake-gpios = < &gpio0 24 GPIO_ACTIVE_HIGH >;
58			spi-max-frequency = < 10000000 >;
59			spi-half-duplex;
60			spi-data-irq-shared;
61			pinctrl-0 = <&airoc_wifi_default>;
62			pinctrl-1 = <&airoc_wifi_host_wake>;
63			pinctrl-names = "default", "host_wake";
64			status = "okay";
65		};
66	};
67};
68