Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 092b07b5 authored by Mayank Parashar's avatar Mayank Parashar
Browse files

ARM: dts: msm: Add support for camera for msm8909 target



Add DTS file to enable camera sensor support for
front and back camera with LED flash.
Add sleep and active states for the mclk0, mclk1,
reset, standby gpios as per pinctrl configuration.

Change-Id: I070e66d084f2a5597b80d2e916b94296fbc911d5
Signed-off-by: default avatarMayank Parashar <mayankp@codeaurora.org>
parent 93ec96e8
Loading
Loading
Loading
Loading
+130 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014, 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.
 */

&soc {
};

&i2c_3 {

	actuator0: qcom,actuator@0 {
		cell-index = <0>;
		reg = <0x0>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
		cam_vaf-supply = <&pm8909_l10>;
		qcom,cam-vreg-name = "cam_vaf";
		qcom,cam-vreg-type = <0>;
		qcom,cam-vreg-min-voltage = <2800000>;
		qcom,cam-vreg-max-voltage = <2900000>;
		qcom,cam-vreg-op-mode = <80000>;
	};

	led_flash0: qcom,led-flash@0 {
		cell-index = <0>;
		reg = <0x66>;
		qcom,slave-id = <0x66 0x00 0x0011>;
		compatible = "qcom,led-flash";
		label = "adp1660";
		qcom,flash-type = <1>;
		qcom,gpio-no-mux = <0>;
		qcom,enable_pinctrl;
		pinctrl-names = "cam_flash_default", "cam_flash_suspend";
		pinctrl-0 = <&cam_sensor_flash_default>;
		pinctrl-1 = <&cam_sensor_flash_sleep>;
		gpios = <&msm_gpio 36 0>,
			<&msm_gpio 31 0>,
			<&msm_gpio 32 0>;
		qcom,gpio-flash-reset = <0>;
		qcom,gpio-flash-en = <1>;
		qcom,gpio-flash-now = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <0 0 0>;
		qcom,gpio-req-tbl-label = "FLASH_RST",
			"FLASH_EN",
			"FLASH_NOW";
		qcom,cci-master = <0>;
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x0>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <90>;
		qcom,actuator-src = <&actuator0>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		cam_vaf-supply = <&pm8909_l10>;
		qcom,cam-vreg-name = "cam_vio", "cam_vana", "cam_vaf";
		qcom,cam-vreg-type = <1 0 0>;
		qcom,cam-vreg-min-voltage = <0 2850000 2800000>;
		qcom,cam-vreg-max-voltage = <0 2850000 2800000>;
		qcom,cam-vreg-op-mode = <0 80000 100000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_default
				&cam_sensor_rear_default>;
		pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
		gpios = <&msm_gpio 26 0>,
			<&msm_gpio 35 0>,
			<&msm_gpio 34 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
			"CAM_RESET1",
			"CAM_STANDBY";
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
		clocks = <&clock_gcc clk_mclk0_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk0_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};

	qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x1>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <90>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		qcom,cam-vreg-name = "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <1 0>;
		qcom,cam-vreg-min-voltage = <0 2850000>;
		qcom,cam-vreg-max-voltage = <0 2850000>;
		qcom,cam-vreg-op-mode = <0 80000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
		pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
		gpios = <&msm_gpio 27 0>,
			<&msm_gpio 28 0>,
			<&msm_gpio 33 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
			"CAM_RESET",
			"CAM_STANDBY";
		qcom,cci-master = <0>;
		status = "ok";
		clocks = <&clock_gcc clk_mclk1_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk1_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};
};
+133 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014, 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.
 */

&soc {
};

&i2c_3 {

	actuator0: qcom,actuator@0 {
		cell-index = <0>;
		reg = <0x0>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
		cam_vaf-supply = <&pm8909_l8>;
		qcom,cam-vreg-name = "cam_vaf";
		qcom,cam-vreg-type = <0>;
		qcom,cam-vreg-min-voltage = <2900000>;
		qcom,cam-vreg-max-voltage = <2900000>;
		qcom,cam-vreg-op-mode = <80000>;
	};

	led_flash0: qcom,led-flash@0 {
		cell-index = <0>;
		reg = <0x66>;
		qcom,slave-id = <0x66 0x00 0x0011>;
		compatible = "qcom,led-flash";
		label = "adp1660";
		qcom,flash-type = <1>;
		qcom,gpio-no-mux = <0>;
		qcom,enable_pinctrl;
		pinctrl-names = "cam_flash_default", "cam_flash_suspend";
		pinctrl-0 = <&cam_sensor_flash_default>;
		pinctrl-1 = <&cam_sensor_flash_sleep>;
		gpios = <&msm_gpio 36 0>,
			<&msm_gpio 31 0>,
			<&msm_gpio 32 0>;
		qcom,gpio-flash-reset = <0>;
		qcom,gpio-flash-en = <1>;
		qcom,gpio-flash-now = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <0 0 0>;
		qcom,gpio-req-tbl-label = "FLASH_RST",
			"FLASH_EN",
			"FLASH_NOW";
		qcom,cci-master = <0>;
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x0>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,mount-angle = <90>;
		qcom,actuator-src = <&actuator0>;
		cam_vdig-supply = <&pm8909_l2>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		cam_vaf-supply = <&pm8909_l8>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
							"cam_vaf";
		qcom,cam-vreg-type = <0 1 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 1800000 2900000>;
		qcom,cam-vreg-max-voltage = <1200000 1800000 2850000 2900000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk0_default
				&cam_sensor_rear_default>;
		pinctrl-1 = <&cam_sensor_mclk0_sleep &cam_sensor_rear_sleep>;
		gpios = <&msm_gpio 26 0>,
			<&msm_gpio 35 0>,
			<&msm_gpio 34 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
			"CAM_RESET1",
			"CAM_STANDBY";
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
		clocks = <&clock_gcc clk_mclk0_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk0_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};

	qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x1>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <90>;
		cam_vdig-supply = <&pm8909_l2>;
		cam_vana-supply = <&pm8909_l17>;
		cam_vio-supply = <&pm8909_l6>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <0 1 0>;
		qcom,cam-vreg-min-voltage = <2100000 0 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 1800000 2850000>;
		qcom,cam-vreg-op-mode = <200000 0 80000>;
		pinctrl-names = "cam_default", "cam_suspend";
		pinctrl-0 = <&cam_sensor_mclk1_default &cam_sensor_front_default>;
		pinctrl-1 = <&cam_sensor_mclk1_sleep &cam_sensor_front_sleep>;
		gpios = <&msm_gpio 27 0>,
			<&msm_gpio 28 0>,
			<&msm_gpio 33 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
			"CAM_RESET",
			"CAM_STANDBY";
		qcom,cci-master = <0>;
		status = "ok";
		clocks = <&clock_gcc clk_mclk1_clk_src>,
				<&clock_gcc clk_gcc_camss_mclk1_clk>;
		clock-names = "cam_src_clk", "cam_clk";
	};
};
+167 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014, 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.
 */

&soc {
	qcom,msm-cam@1800000{
		compatible = "qcom,msm-cam";
	};

	qcom,csiphy@1b0ac00 {
		cell-index = <0>;
		compatible = "qcom,csiphy-v3.1", "qcom,csiphy";
		reg = <0x1b0ac00 0x200>,
			<0x1b00030 0x4>;
		reg-names = "csiphy", "csiphy_clk_mux";
		interrupts = <0 78 0>;
		interrupt-names = "csiphy";
		clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
			<&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
			<&clock_gcc clk_csi0phytimer_clk_src>,
			<&clock_gcc clk_gcc_camss_csi0phytimer_clk>,
			<&clock_gcc clk_camss_ahb_clk_src>,
			<&clock_gcc clk_gcc_camss_csi0phy_clk>,
			<&clock_gcc clk_gcc_camss_ahb_clk>;
		clock-names = "camss_top_ahb_clk", "ispif_ahb_clk",
			"csiphy_timer_src_clk", "csiphy_timer_clk",
			"camss_ahb_src", "csi_phy_clk",
			"camss_ahb_clk";
		qcom,clock-rates = <0 0 200000000 0 0 0 0>;
	};

	qcom,csid@1b08000  {
		cell-index = <0>;
		compatible = "qcom,csid-v3.1", "qcom,csid";
		reg = <0x1b08000 0x100>;
		reg-names = "csid";
		interrupts = <0 49 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1200000>;
		qcom,mipi-csi-vdd-supply = <&pm8909_l2>;
		clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
			<&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
			<&clock_gcc clk_gcc_camss_csi0_ahb_clk>,
			<&clock_gcc clk_csi0_clk_src>,
			<&clock_gcc clk_gcc_camss_csi0_clk>,
			<&clock_gcc clk_gcc_camss_csi0pix_clk>,
			<&clock_gcc clk_gcc_camss_csi0rdi_clk>,
			<&clock_gcc clk_gcc_camss_ahb_clk>;
		clock-names = "camss_top_ahb_clk",
			"ispif_ahb_clk", "csi_ahb_clk", "csi_src_clk",
			"csi_clk",  "csi_pix_clk",
			"csi_rdi_clk", "camss_ahb_clk";
		qcom,clock-rates = <0 0 0 200000000 0 0 0 0>;
     };

	qcom,csid@1b08400 {
		cell-index = <1>;
		compatible = "qcom,csid-v3.1", "qcom,csid";
		reg = <0x1b08400 0x100>;
		reg-names = "csid";
		interrupts = <0 50 0>;
		interrupt-names = "csid";
		qcom,csi-vdd-voltage = <1200000>;
		qcom,mipi-csi-vdd-supply = <&pm8909_l2>;
		clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
			<&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
			<&clock_gcc clk_gcc_camss_csi1_ahb_clk>,
			<&clock_gcc clk_csi1_clk_src>,
			<&clock_gcc clk_gcc_camss_csi1_clk>,
			<&clock_gcc clk_gcc_camss_csi1pix_clk>,
			<&clock_gcc clk_gcc_camss_csi1rdi_clk>,
			<&clock_gcc clk_gcc_camss_ahb_clk>;
		clock-names = "camss_top_ahb_clk",
			"ispif_ahb_clk", "csi_ahb_clk", "csi_src_clk",
			"csi_clk", "csi_pix_clk",
			"csi_rdi_clk", "camss_ahb_clk";
		qcom,clock-rates = <0 0 0 200000000 0 0 0 0>;
	};

	qcom,ispif@1b0a000 {
		cell-index = <0>;
		compatible = "qcom,ispif-v3.0", "qcom,ispif";
		reg = <0x1b0a000 0x500>,
			<0x1b00020 0x10>;
		reg-names = "ispif", "csi_clk_mux";
		interrupts = <0 55 0>;
		interrupt-names = "ispif";
		clocks = <&clock_gcc clk_gcc_camss_ispif_ahb_clk>,
		<&clock_gcc clk_gcc_camss_ahb_clk>,
		<&clock_gcc clk_csi0_clk_src>,
		<&clock_gcc clk_gcc_camss_csi0_clk>,
		<&clock_gcc clk_gcc_camss_csi0pix_clk>,
		<&clock_gcc clk_gcc_camss_csi0rdi_clk>,
		<&clock_gcc clk_csi1_clk_src>,
		<&clock_gcc clk_gcc_camss_csi1_clk>,
		<&clock_gcc clk_gcc_camss_csi1pix_clk>,
		<&clock_gcc clk_gcc_camss_csi1rdi_clk>,
		<&clock_gcc clk_csi1_clk_src>,
		<&clock_gcc clk_gcc_camss_csi1_clk>,
		<&clock_gcc clk_gcc_camss_csi1pix_clk>,
		<&clock_gcc clk_gcc_camss_csi1rdi_clk>,
		<&clock_gcc clk_csi1_clk_src>,
		<&clock_gcc clk_gcc_camss_csi1_clk>,
		<&clock_gcc clk_gcc_camss_csi1pix_clk>,
		<&clock_gcc clk_gcc_camss_csi1rdi_clk>,
		<&clock_gcc clk_vfe0_clk_src>,
		<&clock_gcc clk_gcc_camss_vfe0_clk>,
		<&clock_gcc clk_gcc_camss_csi_vfe0_clk>,
		<&clock_gcc clk_vfe0_clk_src>,
		<&clock_gcc clk_gcc_camss_vfe0_clk>,
		<&clock_gcc clk_gcc_camss_csi_vfe0_clk>;
        clock-names = "ispif_ahb_clk","camss_ahb_clk",
            "csi0_src_clk", "csi0_clk",
            "csi0_pix_clk","csi0_rdi_clk", "csi1_src_clk",
            "csi1_clk", "csi1_pix_clk", "csi1_rdi_clk",
            "csi2_src_clk","csi2_clk", "csi2_pix_clk","csi2_rdi_clk",
            "csi3_src_clk","csi3_clk", "csi3_pix_clk",
            "csi3_rdi_clk", "vfe0_clk_src", "camss_vfe_vfe0_clk",
            "camss_csi_vfe0_clk","vfe1_clk_src","camss_vfe_vfe1_clk",
            "camss_csi_vfe1_clk";
	qcom,clock-rates = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
	};

	qcom,vfe@1b10000 {
		cell-index = <0>;
		compatible = "qcom,vfe40";
		reg = <0x1b10000 0x1000>,
			<0x1b40000 0x200>;
		reg-names = "vfe", "vfe_vbif";
		interrupts = <0 57 0>;
		interrupt-names = "vfe";
		vdd-supply = <&gdsc_vfe>;
		clocks = <&clock_gcc clk_gcc_camss_top_ahb_clk>,
			 <&clock_gcc clk_vfe0_clk_src>,
			 <&clock_gcc clk_gcc_camss_vfe0_clk>,
			 <&clock_gcc clk_gcc_camss_csi_vfe0_clk>,
			 <&clock_gcc clk_gcc_camss_vfe_ahb_clk>,
			 <&clock_gcc clk_gcc_camss_vfe_axi_clk>,
			 <&clock_gcc clk_gcc_camss_ahb_clk>;
		clock-names = "camss_top_ahb_clk", "vfe_clk_src",
			"camss_vfe_vfe_clk", "camss_csi_vfe_clk", "iface_clk",
			"bus_clk", "camss_ahb_clk";
		qcom,clock-rates = <0 266670000 0 0 0 0 0>;
		qos-entries = <8>;
		qos-regs = <0x2C4 0x2C8 0x2CC 0x2D0 0x2D4 0x2D8
				0x2DC 0x2E0>;
		qos-settings = <0xAAA5AAA5 0xAAA5AAA5 0xAAA5AAA5
				0xAAA5AAA5 0xAAA5AAA5 0xAAA5AAA5
				0xAAA5AAA5 0x0001AAA5>;
		};

	qcom,irqrouter@1b00000 {
		cell-index = <0>;
		compatible = "qcom,irqrouter";
		reg = <0x1b00000 0x100>;
		reg-names = "irqrouter";
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@

#include "msm8909.dtsi"
#include "msm8909-pinctrl.dtsi"
#include "msm8909-camera-sensor-cdp.dtsi"

&soc {
	i2c@78b9000 { /* BLSP1 QUP5 */
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
/dts-v1/;

#include "msm8909-mtp.dtsi"
#include "msm8909-camera-sensor-cdp.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. MSM8909 MTP";
Loading