// 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]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"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]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[SYSBOOT]",
		"[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]",
		"[JTAG]",
		"[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 {

	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";
};
