/*
 * Copyright (C) 2016 Stefan Wahren <stefan.wahren@i2se.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
#include "bcm283x-rpi-usb-otg.dtsi"

/ {
	compatible = "raspberrypi,model-zero", "brcm,bcm2835";
	model = "Raspberry Pi Zero";

	leds {
		act {
			gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
		};
	};
};

&gpio {
	/*
	 * This is based on the official GPU firmware DT blob.
	 *
	 * Legend:
	 * "NC" = not connected (no rail from the SoC)
	 * "FOO" = GPIO line named "FOO" on the schematic
	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
	 */
	gpio-line-names = "SDA0",
			  "SCL0",
			  "SDA1",
			  "SCL1",
			  "GPIO_GCLK",
			  "GPIO5",
			  "GPIO6",
			  "SPI_CE1_N",
			  "SPI_CE0_N",
			  "SPI_MISO",
			  "SPI_MOSI",
			  "SPI_SCLK",
			  "GPIO12",
			  "GPIO13",
			  /* Serial port */
			  "TXD0",
			  "RXD0",
			  "GPIO16",
			  "GPIO17",
			  "GPIO18",
			  "GPIO19",
			  "GPIO20",
			  "GPIO21",
			  "GPIO22",
			  "GPIO23",
			  "GPIO24",
			  "GPIO25",
			  "GPIO26",
			  "GPIO27",
			  "SDA0",
			  "SCL0",
			  "NC", /* GPIO30 */
			  "NC", /* GPIO31 */
			  "CAM_GPIO1", /* GPIO32 */
			  "NC", /* GPIO33 */
			  "NC", /* GPIO34 */
			  "NC", /* GPIO35 */
			  "NC", /* GPIO36 */
			  "NC", /* GPIO37 */
			  "NC", /* GPIO38 */
			  "NC", /* GPIO39 */
			  "NC", /* GPIO40 */
			  "CAM_GPIO0", /* GPIO41 */
			  "NC", /* GPIO42 */
			  "NC", /* GPIO43 */
			  "NC", /* GPIO44 */
			  "NC", /* GPIO45 */
			  "HDMI_HPD_N",
			  "STATUS_LED_N",
			  /* Used by SD Card */
			  "SD_CLK_R",
			  "SD_CMD_R",
			  "SD_DATA0_R",
			  "SD_DATA1_R",
			  "SD_DATA2_R",
			  "SD_DATA3_R";

	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;

	/* I2S interface */
	i2s_alt0: i2s_alt0 {
		brcm,pins = <18 19 20 21>;
		brcm,function = <BCM2835_FSEL_ALT0>;
	};
};

&hdmi {
	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_gpio14>;
	status = "okay";
};
