// SPDX-License-Identifier: GPL-2.0
/*
 * Support for CompuLab CM-T3517
 */
/dts-v1/;

#include "am3517.dtsi"
#include "omap3-cm-t3x.dtsi"

/ {
	model = "CompuLab CM-T3517";
	compatible = "compulab,omap3-cm-t3517", "ti,am3517", "ti,omap3";

	vmmc: regulator-vmmc {
		compatible = "regulator-fixed";
		regulator-name = "vmmc";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	wl12xx_vmmc2: wl12xx_vmmc2 {
		compatible = "regulator-fixed";
		regulator-name = "vw1271";
		pinctrl-names = "default";
		pinctrl-0 = <
				&wl12xx_wkup_pins
				&wl12xx_core_pins
			    >;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&gpio1 6 GPIO_ACTIVE_HIGH >; /* gpio6 */
		startup-delay-us = <20000>;
		enable-active-high;
	};

	wl12xx_vaux2: wl12xx_vaux2 {
		compatible = "regulator-fixed";
		regulator-name = "vwl1271_vaux2";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};
};

&omap3_pmx_wkup {

	wl12xx_wkup_pins: wl12xx-wkup-pins {
		pinctrl-single,pins = <
			OMAP3_WKUP_IOPAD(0x2a0e, PIN_OUTPUT | MUX_MODE4)	/* sys_boot2.gpio_4 */
			OMAP3_WKUP_IOPAD(0x2a12, PIN_OUTPUT | MUX_MODE4)	/* sys_boot4.gpio_6 */
		>;
	};
};

&omap3_pmx_core {

	phy1_reset_pins: hsusb1-phy-reset-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE4)	/* uart2_tx.gpio_146 */
		>;
	};

	phy2_reset_pins: hsusb2-phy-reset-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x217a, PIN_OUTPUT | MUX_MODE4)	/* uart2_rx.gpio_147 */
		>;
	};

	otg_drv_vbus: otg-drv-vbus-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2210, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_50MHz_clk.usb0_drvvbus */
		>;
	};

	mmc2_pins: mmc2-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_clk.sdmmc2_clk */
			OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_cmd.sdmmc2_cmd */
			OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_dat0.sdmmc2_dat0 */
			OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_dat1.sdmmc2_dat1 */
			OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_dat2.sdmmc2_dat2 */
			OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc2_dat3.sdmmc2_dat3 */
		>;
	};

	wl12xx_core_pins: wl12xx-core-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20b8, PIN_OUTPUT | MUX_MODE4)	/* gpmc_ncs5.gpio_56 */
			OMAP3_CORE1_IOPAD(0x2176, PIN_INPUT_PULLUP | MUX_MODE4)	/* uart2_rts.gpio_145 */
		>;
	};

	usb_hub_pins: usb-hub-pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2184, PIN_OUTPUT | MUX_MODE4)	/* mcbsp4_clkx.gpio_152 - USB HUB RST */
		>;
	};
};

&hsusb1_phy {
	pinctrl-names = "default";
	pinctrl-0 = <&phy1_reset_pins>;
	reset-gpios = <&gpio5 18 GPIO_ACTIVE_LOW>;
};

&hsusb2_phy {
	pinctrl-names = "default";
	pinctrl-0 = <&phy2_reset_pins>;
	reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;
};

&davinci_emac {
	status = "okay";
};

&davinci_mdio {
	status = "okay";
};

&am35x_otg_hs {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&otg_drv_vbus>;
};

&mmc1 {
	vmmc-supply = <&vmmc>;
};

&mmc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc2_pins>;
	vmmc-supply = <&wl12xx_vmmc2>;
	vqmmc-supply = <&wl12xx_vaux2>;
	non-removable;
	bus-width = <4>;
	cap-power-off-card;

	#address-cells = <1>;
	#size-cells = <0>;
	wlcore: wlcore@2 {
		compatible = "ti,wl1271";
		reg = <2>;
		interrupt-parent = <&gpio5>;
		interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* gpio 145 */
		ref-clock-frequency = <38400000>;
	};
};

&dss {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <
		&dss_dpi_pins_common
		&dss_dpi_pins_cm_t35x
	>;
};

