// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2021 Sancloud Ltd
 * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
 */
/dts-v1/;

#include "am33xx.dtsi"
#include "am335x-bone-common.dtsi"
#include "am335x-boneblack-common.dtsi"
#include "am335x-sancloud-bbe-common.dtsi"
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	model = "SanCloud BeagleBone Enhanced Extended WiFi";
	compatible = "sancloud,am335x-boneenhanced",
		     "ti,am335x-bone-black",
		     "ti,am335x-bone",
		     "ti,am33xx";

	wlan_en_reg: fixedregulator@2 {
		compatible = "regulator-fixed";
		regulator-name = "wlan-en-regulator";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		startup-delay-us = <100000>;
	};
};

&am33xx_pinmux {
	mmc3_pins: mmc3-pins {
		pinctrl-single,pins = <
			/* gpmc_a9.gpio1_25: RADIO_EN */
			AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_OUTPUT_PULLUP, MUX_MODE7)

			/* gpmc_ad12.mmc2_dat0 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_INPUT_PULLUP, MUX_MODE3)

			/* gpmc_ad13.mmc2_dat1 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLUP, MUX_MODE3)

			/* gpmc_ad14.mmc2_dat2 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLUP, MUX_MODE3)

			/* gpmc_ad15.mmc2_dat3 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLUP, MUX_MODE3)

			/* gpmc_csn3.mmc2_cmd */
			AM33XX_PADCONF(AM335X_PIN_GPMC_CSN3, PIN_INPUT_PULLUP, MUX_MODE3)

			/* gpmc_clk.mmc2_clk */
			AM33XX_PADCONF(AM335X_PIN_GPMC_CLK, PIN_INPUT_PULLUP, MUX_MODE3)
		>;
	};

	bluetooth_pins: bluetooth-pins {
		pinctrl-single,pins = <
			/* event_intr0.gpio0_19 */
			AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
	};

	uart1_pins: uart1-pins {
		pinctrl-single,pins = <
			/* uart1_rxd */
			AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT, MUX_MODE0)

			/* uart1_txd */
			AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_INPUT, MUX_MODE0)

			/* uart1_ctsn */
			AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT_PULLDOWN, MUX_MODE0)

			/* uart1_rtsn */
			AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
		>;
	};
};

&i2c2 {
	status = "disabled";
};

&mmc3 {
	status = "okay";
	vmmc-supply = <&wlan_en_reg>;
	bus-width = <4>;
	non-removable;
	cap-power-off-card;
	ti,needs-special-hs-handling;
	keep-power-in-suspend;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc3_pins>;
	dmas = <&edma_xbar 12 0 1
		&edma_xbar 13 0 2>;
	dma-names = "tx", "rx";
	clock-frequency = <50000000>;
	max-frequency = <50000000>;
};

&uart1 {
	status = "okay";

	bluetooth {
		pinctrl-names = "default";
		pinctrl-0 = <&uart1_pins &bluetooth_pins>;
		compatible = "qcom,qca6174-bt";
		enable-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>;
		clocks = <&l4ls_clkctrl AM3_L4LS_UART2_CLKCTRL 0>;
		interrupt-parent = <&gpio0>;
		interrupts = <19 IRQ_TYPE_EDGE_RISING>;
	};
};
