/*
 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include "msm8916.dtsi"
#include "pm8916.dtsi"
#include "apq8016-sbc-soc-pins.dtsi"
#include "apq8016-sbc-pmic-pins.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/sound/apq8016-lpass.h>

/ {
	aliases {
		serial0 = &blsp1_uart2;
		serial1 = &blsp1_uart1;
		usid0 = &pm8916_0;
		i2c0	= &blsp_i2c2;
		i2c1	= &blsp_i2c6;
		i2c3	= &blsp_i2c4;
		spi0	= &blsp_spi5;
		spi1	= &blsp_spi3;
	};

	chosen {
		stdout-path = "serial0";
	};

	reserved-memory {
		ramoops@bff00000{
			compatible = "ramoops";
			reg = <0x0 0xbff00000 0x0 0x100000>;

			record-size = <0x20000>;
			console-size = <0x20000>;
			ftrace-size = <0x20000>;
		};
	};

	soc {
		dma@7884000 {
			status = "okay";
		};

		serial@78af000 {
			label = "LS-UART0";
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&blsp1_uart1_default>;
			pinctrl-1 = <&blsp1_uart1_sleep>;
		};

		serial@78b0000 {
			label = "LS-UART1";
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&blsp1_uart2_default>;
			pinctrl-1 = <&blsp1_uart2_sleep>;
		};

		i2c@78b6000 {
		/* On Low speed expansion */
			label = "LS-I2C0";
			status = "okay";
		};

		i2c@78b8000 {
		/* On High speed expansion */
			label = "HS-I2C2";
			status = "okay";

			adv_bridge: bridge@39 {
				status = "okay";

				compatible = "adi,adv7533";
				reg = <0x39>;

				interrupt-parent = <&msmgpio>;
				interrupts = <31 2>;

				adi,dsi-lanes = <4>;

				pd-gpios = <&msmgpio 32 0>;

				avdd-supply = <&pm8916_l6>;
				v1p2-supply = <&pm8916_l6>;
				v3p3-supply = <&pm8916_l17>;

				pinctrl-names = "default","sleep";
				pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
				pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
				#sound-dai-cells = <1>;

				ports {
					#address-cells = <1>;
					#size-cells = <0>;

					port@0 {
						reg = <0>;
						adv7533_in: endpoint {
							remote-endpoint = <&dsi0_out>;
						};
					};

					port@1 {
						reg = <1>;
						adv7533_out: endpoint {
							remote-endpoint = <&hdmi_con>;
						};
					};
				};
			};
		};

		i2c@78ba000 {
		/* On Low speed expansion */
			label = "LS-I2C1";
			status = "okay";
		};

		spi@78b7000 {
		/* On High speed expansion */
			label = "HS-SPI1";
			status = "okay";
		};

		spi@78b9000 {
		/* On Low speed expansion */
			label = "LS-SPI0";
			status = "okay";
		};

		leds {
			pinctrl-names = "default";
			pinctrl-0 = <&msmgpio_leds>,
				    <&pm8916_gpios_leds>,
				    <&pm8916_mpps_leds>;

			compatible = "gpio-leds";

			led@1 {
				label = "apq8016-sbc:green:user1";
				gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "heartbeat";
				default-state = "off";
			};

			led@2 {
				label = "apq8016-sbc:green:user2";
				gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "mmc0";
				default-state = "off";
			};

			led@3 {
				label = "apq8016-sbc:green:user3";
				gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "mmc1";
				default-state = "off";
			};

			led@4 {
				label = "apq8016-sbc:green:user4";
				gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "none";
				default-state = "off";
			};

			led@5 {
				label = "apq8016-sbc:yellow:wlan";
				gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "wlan";
				default-state = "off";
			};

			led@6 {
				label = "apq8016-sbc:blue:bt";
				gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
				linux,default-trigger = "bt";
				default-state = "off";
			};
		};

		sdhci@07824000 {
			vmmc-supply = <&pm8916_l8>;
			vqmmc-supply = <&pm8916_l5>;

			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
			pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
			status = "okay";
		};

		sdhci@07864000 {
			vmmc-supply = <&pm8916_l11>;
			vqmmc-supply = <&pm8916_l12>;

			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
			pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;

			cd-gpios = <&msmgpio 38 0x1>;
			status = "okay";
		};

		usb@78d9000 {
			extcon = <&usb_id>, <&usb_id>;
			status = "okay";
		};

		ehci@78d9000 {
			status = "okay";
		};

		phy@78d9000 {
			v1p8-supply = <&pm8916_l7>;
			v3p3-supply = <&pm8916_l13>;
			vddcx-supply = <&pm8916_s1>;
			extcon = <&usb_id>, <&usb_id>;
			dr_mode = "otg";
			status = "okay";
			switch-gpio = <&pm8916_gpios 4 GPIO_ACTIVE_HIGH>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb_sw_sel_pm>;
		};

		lpass@07708000 {
			status = "okay";
		};

		mdss@1a00000 {
			status = "okay";

			mdp@1a01000 {
				status = "okay";
			};

			dsi@1a98000 {
				status = "okay";

				vdda-supply = <&pm8916_l2>;
				vddio-supply = <&pm8916_l6>;

				ports {
					port@1 {
						endpoint {
							remote-endpoint = <&adv7533_in>;
							data-lanes = <0 1 2 3>;
						};
					};
				};
			};

			dsi-phy@1a98300 {
				status = "okay";

				vddio-supply = <&pm8916_l6>;
			};
		};

		lpass_codec: codec{
			status = "okay";
		};

		/*
		Internal Codec
			playback - Primary MI2S
			capture - Ter MI2S

		External Primary:
			playback - secondary MI2S
			capture - Quat MI2S

		External Secondary:
			playback - Quat MI2S
			capture - Quat MI2S

		*/

                sound: sound {
                        compatible = "qcom,apq8016-sbc-sndcard";
                        reg = <0x07702000 0x4>, <0x07702004 0x4>;
                        reg-names = "mic-iomux", "spkr-iomux";

                        status = "okay";
                        pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
                        pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
                        pinctrl-names = "default", "sleep";
                        qcom,model = "DB410c";
                        qcom,audio-routing =
                                "AMIC2", "MIC BIAS Internal2",
                                "AMIC3", "MIC BIAS External1";
			external-dai-link@0 {
				link-name = "ADV7533";
				cpu { /* QUAT */
					sound-dai = <&lpass MI2S_QUATERNARY>;
				};
				codec {
					sound-dai = <&adv_bridge 0>;
				};
			};

                        internal-codec-playback-dai-link@0 {            /* I2S - Internal codec */
                                link-name = "WCD";
                                cpu { /* PRIMARY */
                                        sound-dai = <&lpass MI2S_PRIMARY>;
                                };
                                codec {
                                        sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
                                };
                        };

                        internal-codec-capture-dai-link@0 {             /* I2S - Internal codec */
                                link-name = "WCD-Capture";
                                cpu { /* PRIMARY */
                                        sound-dai = <&lpass MI2S_TERTIARY>;
                                };
                                codec {
                                        sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
                                };
                        };
                };

		wcnss@a21b000 {
			status = "okay";
		};
	};

	usb2513 {
		compatible = "smsc,usb3503";
		reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>;
		initial-mode = <1>;
	};

	usb_id: usb-id {
		compatible = "linux,extcon-usb-gpio";
		id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb_id_default>;
	};

	hdmi-out {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_con: endpoint {
				remote-endpoint = <&adv7533_out>;
			};
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;

		pinctrl-names = "default";
		pinctrl-0 = <&msm_key_volp_n_default>;

		button@0 {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
		};
	};
};

&wcd_codec {
        status = "okay";
        clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
        clock-names = "mclk";
};

&smd_rpm_regulators {
	vdd_l1_l2_l3-supply = <&pm8916_s3>;
	vdd_l5-supply = <&pm8916_s3>;
	vdd_l4_l5_l6-supply = <&pm8916_s4>;
	vdd_l7-supply = <&pm8916_s4>;

	s1 {
		regulator-min-microvolt = <375000>;
		regulator-max-microvolt = <1562000>;
	};

	s3 {
		regulator-min-microvolt = <375000>;
		regulator-max-microvolt = <1562000>;
	};

	s4 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;

		regulator-always-on;
		regulator-boot-on;
	};

	l1 {
		regulator-min-microvolt = <375000>;
		regulator-max-microvolt = <1525000>;
	};

	l2 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
	};

	l3 {
		regulator-min-microvolt = <375000>;
		regulator-max-microvolt = <1525000>;
	};

	l4 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l5 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l6 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	l7 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l8 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l9 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l10 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l11 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l12 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l13 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l14 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	/**
	 * 1.8v required on LS expansion
	 * for mezzanine boards
	 */
	l15 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
		regulator-always-on;
	};

	l16 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};

	l17 {
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	l18 {
		regulator-min-microvolt = <1750000>;
		regulator-max-microvolt = <3337000>;
	};
};
