/*
 * Google Veyron (and derivatives) fragment for the  max98090 audio
 * codec and analog headphone jack.
 *
 * Copyright 2016 Google, Inc
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/ {
	sound {
		compatible = "rockchip,rockchip-audio-max98090";
		pinctrl-names = "default";
		pinctrl-0 = <&mic_det>, <&hp_det>;
		rockchip,model = "VEYRON-I2S";
		rockchip,i2s-controller = <&i2s>;
		rockchip,audio-codec = <&max98090>;
		rockchip,hp-det-gpios = <&gpio6 5 GPIO_ACTIVE_HIGH>;
		rockchip,mic-det-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
		rockchip,headset-codec = <&headsetcodec>;
	};
};

&i2c2 {
	max98090: max98090@10 {
		compatible = "maxim,max98090";
		reg = <0x10>;
		interrupt-parent = <&gpio6>;
		interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
		clock-names = "mclk";
		clocks = <&cru SCLK_I2S0_OUT>;
		pinctrl-names = "default";
		pinctrl-0 = <&int_codec>;
	};
};

&i2c4 {
	headsetcodec: ts3a227e@3b {
		compatible = "ti,ts3a227e";
		reg = <0x3b>;
		interrupt-parent = <&gpio0>;
		interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts3a227e_int_l>;
		ti,micbias = <7>;		/* MICBIAS = 2.8V */
	};
};

&i2s {
	status = "okay";
};

&io_domains {
	audio-supply = <&vcc18_codec>;
};

&rk808 {
	vcc10-supply = <&vcc33_sys>;

	regulators {
		vcc18_codec: LDO_REG6 {
			regulator-name = "vcc18_codec";
			regulator-always-on;
			regulator-boot-on;
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-state-mem {
				regulator-off-in-suspend;
			};
		};
	};
};

&pinctrl {
	codec {
		hp_det: hp-det {
			rockchip,pins = <6 5 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		/*
		 * HACK: We're going to _pull down_ this _active low_ interrupt
		 * so that it never fires.  We don't need this interrupt because
		 * we've got a ts3a227e chip but the driver requires it.
		 */
		int_codec: int-codec {
			rockchip,pins = <6 7 RK_FUNC_GPIO &pcfg_pull_down>;
		};

		mic_det: mic-det {
			rockchip,pins = <6 11 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	headset {
		ts3a227e_int_l: ts3a227e-int-l {
			rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};
};
