ARM: tegra: laguna-erss: add camera module support
Shreshtha Sahu [Fri, 25 Jul 2014 13:51:05 +0000 (13:51 +0000)]
Adds tegra124-pm359-camera-a00.dtsi file and
support for camera module NVD9A951 which consists of
imx135 sensor and dw9718 focuser.

Bug 1359310

Change-Id: I6b377255471566a1e95b2ace8c3f18c5aa230c3f
Signed-off-by: Tushar Khinvasara <tkhinvasara@nvidia.com>
Signed-off-by: Mihir Thakkar <mthakkar@nvidia.com>
Reviewed-on: http://git-master/r/555462
GVS: Gerrit_Virtual_Submit
Reviewed-by: Shreshtha Sahu <ssahu@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>

arch/arm/boot/dts/tegra124-laguna.dts
arch/arm/boot/dts/tegra124-platforms/tegra124-laguna-power-tree-pm359-0000-a00.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-camera-a00.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-pmic.dtsi

index 34ac1e3..861797b 100644 (file)
@@ -6,6 +6,7 @@
 #include "tegra124-platforms/tegra124-pm359-pinmux.dtsi"
 #include "tegra124-platforms/tegra124-pm359-pmic.dtsi"
 #include "tegra124-platforms/tegra124-pm359-fixed.dtsi"
+#include "tegra124-platforms/tegra124-laguna-power-tree-pm359-0000-a00.dtsi"
 
 / {
        model = "NVIDIA Tegra124 Laguna";
diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-laguna-power-tree-pm359-0000-a00.dtsi b/arch/arm/boot/dts/tegra124-platforms/tegra124-laguna-power-tree-pm359-0000-a00.dtsi
new file mode 100644 (file)
index 0000000..4a482db
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * arch/arm/boot/dts/tegra124-platforms/tegra124-laguna-power-tree-pm359-0000-a00.dtsi
+ *
+ * Copyright (c) 2014, NVIDIA CORPORATION.  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 as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include "tegra124-platforms/tegra124-pm359-pmic.dtsi"
+#include "tegra124-platforms/tegra124-pm359-fixed.dtsi"
+#include "tegra124-platforms/tegra124-pm359-camera-a00.dtsi"
+
+/ {
+       host1x {
+               /* tegradc.0 */
+               dc@54200000 {
+                       avdd_dsi_csi-supply = <&as3722_ldo2>;
+                       avdd_lcd-supply = <&as3722_gpio4_supply>;
+                       dvdd_lcd-supply = <&reg_1v8_supply>;
+                       vdd_ds_1v8-supply = <&reg_1v8_supply>;
+                       vdd_1v2_en-supply = <&reg_dcdc_1v2>;
+                       vdd_lcd_bl-supply = <&vdd_lcd_bl>;
+                       vdd_lcd_bl_en-supply = <&vdd_lcd_bl_en>;
+               };
+               /* tegradc.1 */
+               dc@54240000 {
+                       avdd_hdmi-supply = <&as3722_sd4>;
+                       avdd_hdmi_pll-supply = <&avdd_hdmi_pll>;
+                       vdd_hdmi_5v0-supply = <&vdd_hdmi>;
+               };
+               vi {
+                       avdd_dsi_csi-supply = <&as3722_ldo2>;
+               };
+       };
+       i2c@7000c000 {
+               pca9546@70 {
+                       vcc-supply = <&as3722_ldo1>;
+                       vcc-pullup-supply = <&as3722_ldo6>;
+               };
+       };
+
+       pcie-controller {
+               hvdd-pex-supply = <&reg_3v3_supply>;
+               hvdd-pex-pll-e-supply = <&reg_3v3_supply>;
+               dvddio-pex-supply = <&as3722_sd4>;
+               avddio-pex-supply = <&as3722_sd4>;
+               avdd-pex-pll-supply = <&as3722_sd4>;
+               vddio-pex-ctl-supply = <&as3722_sd4>;
+       };
+
+       tegra-snd-max98090 {
+               vdd-aud-dgtl-supply = <&reg_1v8_supply>;
+               avdd-aud-supply = <&reg_dcdc_1v2>;
+       };
+
+       sata@70020000 {
+               avdd_sata-supply = <&as3722_sd4>;
+               vdd_sata-supply = <&as3722_sd4>;
+               avdd_sata_pll-supply =<&as3722_sd4>;
+               hvdd_sata-supply = <&as3722_gpio2_supply>;
+               vddio_pex_sata-supply = <&vdd_ac_bat>;
+        };
+
+       udc@7d000000 {
+               avdd_usb-supply = <&as3722_gpio2_supply>;
+               avdd_pll_utmip-supply = <&reg_1v8_supply>;
+       };
+
+        otg@7d000000 {
+                usb_vbus-supply = <&usb0_vbus>;
+        };
+
+       /* Populate fuse supply */
+       efuse@7000f800 {
+               vpp_fuse-supply = <&as3722_ldo11>;
+       };
+
+       power-detect {
+               pwrdet-pex-ctl-supply = <&as3722_sd4>;
+               pwrdet-nand-supply = <&as3722_sd5>;
+               pwrdet-sdmmc1-supply = <&as3722_sd5>;
+               pwrdet-sdmmc4-supply = <&as3722_sd5>;
+               pwrdet-audio-supply = <&as3722_sd5>;
+               pwrdet-uart-supply = <&as3722_sd5>;
+               pwrdet-bb-supply = <&as3722_sd5>;
+               pwrdet-cam-supply = <&as3722_ldo1>;
+               pwrdet-mipi-supply = <&as3722_ldo2>;
+               pwrdet-sdmmc3-supply = <&as3722_ldo6>;
+               pwrdet-hv-supply = <&as3722_gpio2_supply>;
+       };
+
+       xusb@70090000 {
+               usb_vbus0-supply = <&usb0_vbus>;
+               usb_vbus1-supply = <&usb1_usb2_vbus>;
+               usb_vbus2-supply = <&usb1_usb2_vbus>;
+               hvdd_usb-supply = <&as3722_gpio2_supply>;
+               avdd_pll_utmip-supply = <&reg_1v8_supply>;
+               vddio_hsic-supply = <&as3722_ldo2>;
+               avddio_usb-supply = <&as3722_sd4>;
+       };
+};
diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-camera-a00.dtsi b/arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-camera-a00.dtsi
new file mode 100644 (file)
index 0000000..6245e8d
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-camera-a00.dtsi
+ *
+ * Copyright (c) 2014, NVIDIA CORPORATION.  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 as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <dt-bindings/media/camera.h>
+
+/ {
+       camera-pcl {
+               compatible = "nvidia,tegra124-camera", "simple-bus";
+               configuration = <0xAA55AA55>;
+
+               modules {
+                       module1: module1@modules {
+                               /* Camera Module NVD9A951 */
+                               compatible = "sensor,front";
+                               badge_info = "pm359_erss_front_D9A951";
+
+                               sensor {
+                                       profile = <&imx135_1>;
+                                       platformdata = "ardbeg_imx135_pdata";
+                               };
+                               focuser {
+                                       profile = <&dw9718_1>;
+                                       platformdata = "ardbeg_dw9718_pdata";
+                               };
+                       };
+               };
+               profiles {
+                       imx135_1: imx135@2_0010 {
+                               index = <1>;
+                               chipname = "pcl_IMX135";
+                               type = "sensor";
+                               guid = "s_IMX135";
+                               position = <0>;
+                               bustype = "i2c";
+                               busnum = <2>;
+                               addr = <0x10>;
+                               datalen = <2>;
+                               pinmuxgrp = <0xFFFF>;
+                               gpios = <3>;
+                               regulators = "vana", "vdig_lv", "vif";
+                               clocks = "mclk";
+                               drivername = "imx135";
+                               detect = <0x0002 0x0016 0xFFFF 0x0135>;
+                               devid = <0x0135>;
+                               poweron = <
+                                       CAMERA_IND_CLK_SET(10000)
+                                       CAMERA_GPIO_CLR(221)
+                                       CAMERA_WAITUS(10)
+                                       CAMERA_REGULATOR_ON(2)
+                                       CAMERA_REGULATOR_ON(1)
+                                       CAMERA_REGULATOR_ON(0)
+                                       CAMERA_WAITMS(5)
+                                       CAMERA_GPIO_SET(221)
+                                       CAMERA_WAITUS(300)
+                                       CAMERA_END
+                                       >;
+                               poweroff = <
+                                       CAMERA_IND_CLK_CLR
+                                       CAMERA_GPIO_CLR(221)
+                                       CAMERA_WAITUS(10)
+                                       CAMERA_REGULATOR_OFF(2)
+                                       CAMERA_REGULATOR_OFF(1)
+                                       CAMERA_REGULATOR_OFF(0)
+                                       CAMERA_END
+                                       >;
+                       };
+                       dw9718_1: dw9718@2_000c {
+                               index = <2>;
+                               chipname = "pcl_DW9718";
+                               type = "focuser";
+                               guid = "f_NVCAM0";
+                               position = <0>;
+                               bustype = "i2c";
+                               busnum = <2>;
+                               addr = <0xc>;
+                               datalen = <1>;
+                               pinmuxgrp = <0xFFFF>;
+                               gpios = <3>;
+                               regulators = "vdd", "vdd_i2c";
+                               drivername = "dw9718";
+                               detect = <0x0002 0x0004 0xFFFF 0x0060>;
+                               devid = <0x9718>;
+                               poweron = <
+                                       CAMERA_REGULATOR_ON(1)
+                                       CAMERA_REGULATOR_ON(0)
+                                       CAMERA_WAITUS(10)
+                                       CAMERA_GPIO_SET(223)
+                                       CAMERA_WAITUS(10)
+                                       CAMERA_END
+                                       >;
+                               poweroff = <
+                                       CAMERA_REGULATOR_OFF(0)
+                                       CAMERA_REGULATOR_OFF(1)
+                                       CAMERA_GPIO_CLR(223)
+                                       CAMERA_WAITUS(10)
+                                       CAMERA_END
+                                       >;
+                       };
+               };
+       };
+};
index 2a59b56..0b087f9 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * arch/arm/boot/dts/tegra124-platforms/tegra124-pm359-pmic.dtsi
+ *
+ * Copyright (c) 2014, NVIDIA CORPORATION.  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 as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
 / {
        i2c@7000d000 {
                as3722: as3722@40 {
                                                     regulator-consumer-supply = "vdd_i2c";
                                                     regulator-consumer-device = "2-000c";
                                             };
+                                            c7 {
+                                                    regulator-consumer-supply = "vdd_i2c";
+                                                    regulator-consumer-device = "2-0010";
+                                            };
                                     };
                             };
 
                                             c2 {
                                                     regulator-consumer-supply = "imx135_reg2";
                                             };
+                                            c3 {
+                                                    regulator-consumer-supply = "vdig_lv";
+                                                    regulator-consumer-device = "2-0010";
+                                            };
                                     };
                             };