/*
 * Copyright (c) 2019, 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.
 */

&tlmm {
	cam_sensor_rear4_active: cam_sensor_rear4_active {
		/* RESET */
		mux {
			pins = "gpio11";
			function = "gpio";
		};

		config {
			pins = "gpio11";
			bias-disable; /* No PULL */
			drive-strength = <2>; /* 2 MA */
		};
	};

	cam_sensor_rear4_suspend: cam_sensor_rear4_suspend {
		/* RESET */
		mux {
			pins = "gpio11";
			function = "gpio";
		};

		config {
			pins = "gpio11";
			bias-pull-down; /* PULL DOWN */
			drive-strength = <2>; /* 2 MA */
			output-low;
		};
	};

};

&soc {
	qcom,qbt1000 {
		status = "disabled";
	};
};
