// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
 *
 * Author: Robert Nelson <robertcnelson@gmail.com>
 */
/dts-v1/;

#include "am33xx.dtsi"
#include "am335x-osd335x-common.dtsi"

/ {
	model = "TI AM335x PocketBeagle";
	compatible = "ti,am335x-pocketbeagle", "ti,am335x-bone", "ti,am33xx";

	chosen {
		stdout-path = &uart0;
	};

	leds {
		pinctrl-names = "default";
		pinctrl-0 = <&usr_leds_pins>;

		compatible = "gpio-leds";

		usr0 {
			label = "beaglebone:green:usr0";
			gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
			default-state = "off";
		};

		usr1 {
			label = "beaglebone:green:usr1";
			gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "mmc0";
			default-state = "off";
		};

		usr2 {
			label = "beaglebone:green:usr2";
			gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "cpu0";
			default-state = "off";
		};

		usr3 {
			label = "beaglebone:green:usr3";
			gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

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

&gpio0 {
	gpio-line-names =
		"NC",
		"NC",
		"P1.08 [SPI0_CLK]",
		"P1.10 [SPI0_MISO]",
		"P1.12 [SPI0_MOSI]",
		"P1.06 [SPI0_CS]",
		"[MMC0_CD]",
		"P2.29 [SPI1_CLK]",
		"[SYSBOOT 12]",
		"[SYSBOOT 13]",
		"[SYSBOOT 14]",
		"[SYSBOOT 15]",
		"P1.26 [I2C2_SDA]",
		"P1.28 [I2C2_SCL]",
		"P2.11 [I2C1_SDA]",
		"P2.09 [I2C1_SCL]",
		"NC",
		"NC",
		"NC",
		"P2.31 [SPI1_CS]",
		"P1.20 [PRU0.16]",
		"NC",
		"NC",
		"P2.03",
		"NC",
		"NC",
		"P1.34",
		"P2.19",
		"NC",
		"NC",
		"P2.05 [UART4_RX]",
		"P2.07 [UART4_TX]";
};

&gpio1 {
	gpio-line-names =
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"P2.25 [SPI1_MOSI]",
		"P1.32 [UART0_RX]",
		"P1.30 [UART0_TX]",
		"P2.24",
		"P2.33",
		"P2.22",
		"P2.18",
		"NC",
		"NC",
		"P2.01 [PWM1A]",
		"NC",
		"P2.10",
		"[USR LED 0]",
		"[USR LED 1]",
		"[USR LED 2]",
		"[USR LED 3]",
		"P2.06",
		"P2.04",
		"P2.02",
		"P2.08",
		"NC",
		"NC",
		"NC";
};

&gpio2 {
	gpio-line-names =
		"P2.20",
		"P2.17",
		"NC",
		"NC",
		"NC",
		"[EEPROM_WP]",
		"[SYSBOOT 0]",
		"[SYSBOOT 1]",
		"[SYSBOOT 2]",
		"[SYSBOOT 3]",
		"[SYSBOOT 4]",
		"[SYSBOOT 5]",
		"[SYSBOOT 6]",
		"[SYSBOOT 7]",
		"[SYSBOOT 8]",
		"[SYSBOOT 9]",
		"[SYSBOOT 10]",
		"[SYSBOOT 11]",
		"NC",
		"NC",
		"NC",
		"NC",
		"P2.35 [AIN5]",
		"P1.02 [AIN6]",
		"P1.35 [PRU1.10]",
		"P1.04 [PRU1.11]",
		"[MMC0_DAT3]",
		"[MMC0_DAT2]",
		"[MMC0_DAT1]",
		"[MMC0_DAT0]",
		"[MMC0_CLK]",
		"[MMC0_CMD]";
};

&gpio3 {
	gpio-line-names =
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"[I2C0_SDA]",
		"[I2C0_SCL]",
		"[JTAG EMU0]",
		"[JTAG EMU1]",
		"NC",
		"NC",
		"NC",
		"NC",
		"P1.03 [USB1]",
		"P1.36 [PWM0A]",
		"P1.33 [PRU0.1]",
		"P2.32 [PRU0.2]",
		"P2.30 [PRU0.3]",
		"P1.31 [PRU0.4]",
		"P2.34 [PRU0.5]",
		"P2.28 [PRU0.6]",
		"P1.29 [PRU0.7]",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC",
		"NC";
};

&am33xx_pinmux {

	compatible = "pinconf-single";
	pinctrl-names = "default";

	pinctrl-0 =   < &P2_03_gpio &P1_34_gpio &P2_19_gpio &P2_24_gpio
			&P2_33_gpio &P2_22_gpio &P2_18_gpio &P2_10_gpio
			&P2_06_gpio &P2_04_gpio &P2_02_gpio &P2_08_gpio
			&P2_17_gpio >;

	/* P2_03 (ZCZ ball T10) gpio0_23 0x824 PIN 9 */
	P2_03_gpio: pinmux_P2_03_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P1_34 (ZCZ ball T11) gpio0_26 0x828 PIN 10 */
	P1_34_gpio: pinmux_P1_34_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_19 (ZCZ ball U12) gpio0_27 0x82c PIN 11 */
	P2_19_gpio: pinmux_P2_19_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_24 (ZCZ ball T12) gpio1_12 0x830 PIN 12 */
	P2_24_gpio: pinmux_P2_24_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_33 (ZCZ ball R12) gpio1_13 0x834 PIN 13 */
	P2_33_gpio: pinmux_P2_33_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_22 (ZCZ ball V13) gpio1_14 0x838 PIN 14 */
	P2_22_gpio: pinmux_P2_22_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_18 (ZCZ ball U13) gpio1_15 0x83c PIN 15 */
	P2_18_gpio: pinmux_P2_18_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_10 (ZCZ ball R14) gpio1_20 0x850 PIN 20 */
	P2_10_gpio: pinmux_P2_10_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_06 (ZCZ ball U16) gpio1_25 0x864 PIN 25 */
	P2_06_gpio: pinmux_P2_06_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_04 (ZCZ ball T16) gpio1_26 0x868 PIN 26 */
	P2_04_gpio: pinmux_P2_04_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_02 (ZCZ ball V17) gpio1_27 0x86c PIN 27 */
	P2_02_gpio: pinmux_P2_02_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	/* P2_08 (ZCZ ball U18) gpio1_28 0x878 PIN 30 */
	P2_08_gpio: pinmux_P2_08_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_BEN1, PIN_INPUT_PULLDOWN, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x00  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x00  0x00  0x10  0x18>;
	};

	/* P2_17 (ZCZ ball V12) gpio2_1 0x88c PIN 35 */
	P2_17_gpio: pinmux_P2_17_gpio {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_CLK, PIN_INPUT_PULLUP, MUX_MODE7)
		>;
		pinctrl-single,bias-pullup   =   < 0x10  0x10  0x00  0x18>;
		pinctrl-single,bias-pulldown   = < 0x10  0x00  0x10  0x18>;
	};

	i2c2_pins: pinmux-i2c2-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT_PULLUP, MUX_MODE3)	/* (D17) uart1_rtsn.I2C2_SCL */
			AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT_PULLUP, MUX_MODE3)	/* (D18) uart1_ctsn.I2C2_SDA */
		>;
	};

	ehrpwm0_pins: pinmux-ehrpwm0-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE1)	/* (A13) mcasp0_aclkx.ehrpwm0A */
		>;
	};

	ehrpwm1_pins: pinmux-ehrpwm1-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN, MUX_MODE6)	/* (U14) gpmc_a2.ehrpwm1A */
		>;
	};

	mmc0_pins: pinmux-mmc0-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_SPI0_CS1, PIN_INPUT, MUX_MODE7)		/* (C15) spi0_cs1.gpio0[6] */
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0)
		>;
	};

	spi0_pins: pinmux-spi0-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT_PULLUP, MUX_MODE0)
		>;
	};

	spi1_pins: pinmux-spi1-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_ECAP0_IN_PWM0_OUT, PIN_INPUT_PULLUP, MUX_MODE4)	/* (C18) eCAP0_in_PWM0_out.spi1_sclk */
			AM33XX_PADCONF(AM335X_PIN_UART0_CTSN, PIN_INPUT_PULLUP, MUX_MODE4)	/* (E18) uart0_ctsn.spi1_d0 */
			AM33XX_PADCONF(AM335X_PIN_UART0_RTSN, PIN_INPUT_PULLUP, MUX_MODE4)	/* (E17) uart0_rtsn.spi1_d1 */
			AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_INPUT_PULLUP, MUX_MODE4)	/* (A15) xdma_event_intr0.spi1_cs1 */
		>;
	};

	usr_leds_pins: pinmux-usr-leds-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT, MUX_MODE7)		/* (V15) gpmc_a5.gpio1[21] - USR_LED_0 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_OUTPUT, MUX_MODE7)		/* (U15) gpmc_a6.gpio1[22] - USR_LED_1 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_OUTPUT, MUX_MODE7)		/* (T15) gpmc_a7.gpio1[23] - USR_LED_2 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_OUTPUT, MUX_MODE7)		/* (V16) gpmc_a8.gpio1[24] - USR_LED_3 */
		>;
	};

	uart0_pins: pinmux-uart0-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_UART0_RXD, PIN_INPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_UART0_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
		>;
	};

	uart4_pins: pinmux-uart4-pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLUP, MUX_MODE6)	/* (T17) gpmc_wait0.uart4_rxd */
			AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_OUTPUT_PULLDOWN, MUX_MODE6)	/* (U17) gpmc_wpn.uart4_txd */
		>;
	};
};

&epwmss0 {
	status = "okay";
};

&ehrpwm0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&ehrpwm0_pins>;
};

&epwmss1 {
	status = "okay";
};

&ehrpwm1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&ehrpwm1_pins>;
};

&i2c0 {
	eeprom: eeprom@50 {
		compatible = "atmel,24c256";
		reg = <0x50>;
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;

	status = "okay";
	clock-frequency = <400000>;
};

&mmc1 {
	status = "okay";
	vmmc-supply = <&vmmcsd_fixed>;
	bus-width = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_pins>;
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
};

&rtc {
	system-power-controller;
};

&tscadc {
	status = "okay";
	adc {
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
		ti,chan-step-avg = <16 16 16 16 16 16 16 16>;
		ti,chan-step-opendelay = <0x98 0x98 0x98 0x98 0x98 0x98 0x98 0x98>;
		ti,chan-step-sampledelay = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins>;

	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_pins>;

	status = "okay";
};

&usb0 {
	dr_mode = "otg";
};

&usb1 {
	dr_mode = "host";
};
