[RFC 12/13] Enable camera on N900.

From: Pavel Machek
Date: Tue Feb 14 2017 - 08:41:18 EST


---
arch/arm/boot/dts/omap3-n900.dts | 158 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 157 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 87ca50b..aa4170f9 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -144,6 +144,59 @@
io-channel-names = "temp", "bsi", "vbat";
};

+ rear_camera: camera@0 {
+ compatible = "linux,camera";
+
+ module {
+ model = "TCM8341MD";
+ sensor = <&cam1>;
+ };
+ };
+
+ front_camera: camera@1 {
+ compatible = "linux,camera";
+
+ module {
+ model = "VS6555";
+ sensor = <&cam2>;
+ };
+ };
+
+ video-bus-switch {
+ compatible = "video-bus-switch-gpio";
+
+ switch-gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>; /* 97 */
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ csi_switch_in: endpoint {
+ remote-endpoint = <&csi_isp>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ csi_switch_out1: endpoint {
+ remote-endpoint = <&csi_cam1>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ csi_switch_out2: endpoint {
+ remote-endpoint = <&csi_cam2>;
+ };
+ };
+ };
+ };
+
pwm9: dmtimer-pwm {
compatible = "ti,omap-dmtimer-pwm";
#pwm-cells = <3>;
@@ -157,6 +210,32 @@
};
};

+&isp {
+ vdds_csib-supply = <&vaux2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&camera_pins>;
+ ti,camera-flashes = <&adp1653 &cam1 &ad5820 &cam1>;
+
+ ports {
+ port@1 {
+ reg = <1>;
+
+ csi_isp: endpoint {
+ remote-endpoint = <&csi_switch_in>;
+ bus-type = <3>; /* CCP2 */
+ clock-lanes = <0>;
+ data-lanes = <1>;
+ lane-polarity = <0 0>;
+ clock-inv = <0>;
+ /* Select strobe = <1> for back camera, <0> for front camera */
+ strobe = <1>;
+ crc = <0>;
+ };
+ };
+ };
+};
+
&omap3_pmx_core {
pinctrl-names = "default";

@@ -319,6 +398,22 @@
OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE4) /* gpio 157 => cmt_bsi */
>;
};
+
+ camera_pins: pinmux_camera {
+ pinctrl-single,pins = <
+ OMAP3_CORE1_IOPAD(0x210c, PIN_OUTPUT | MUX_MODE7) /* cam_hs */
+ OMAP3_CORE1_IOPAD(0x210e, PIN_OUTPUT | MUX_MODE7) /* cam_vs */
+ OMAP3_CORE1_IOPAD(0x2110, PIN_OUTPUT | MUX_MODE0) /* cam_xclka */
+ OMAP3_CORE1_IOPAD(0x211e, PIN_OUTPUT | MUX_MODE7) /* cam_d4 */
+ OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE0) /* cam_d6 */
+ OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE0) /* cam_d7 */
+ OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | MUX_MODE0) /* cam_d8 */
+ OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | MUX_MODE0) /* cam_d9 */
+ OMAP3_CORE1_IOPAD(0x212a, PIN_OUTPUT | MUX_MODE7) /* cam_d10 */
+ OMAP3_CORE1_IOPAD(0x212e, PIN_OUTPUT | MUX_MODE7) /* cam_xclkb */
+ OMAP3_CORE1_IOPAD(0x2132, PIN_OUTPUT | MUX_MODE0) /* cam_strobe */
+ >;
+ };
};

&i2c1 {
@@ -507,6 +602,28 @@

clock-frequency = <100000>;

+ cam2: camera@10 {
+ compatible = "nokia,smia";
+ reg = <0x10>;
+
+ vana-supply = <&vaux4>;
+
+ clocks = <&isp 0>;
+ clock-frequency = <9600000>;
+
+ port {
+ csi_cam2: endpoint {
+ link-frequencies = /bits/ 64 <60000000>;
+ bus-type = <3>; /* CCP2 */
+ strobe = <0>;
+ clock-inv = <0>;
+ crc = <0>;
+
+ remote-endpoint = <&csi_switch_out2>;
+ };
+ };
+ };
+
tlv320aic3x: tlv320aic3x@18 {
compatible = "ti,tlv320aic3x";
reg = <0x18>;
@@ -716,18 +833,57 @@
st,max-limit-y = <32>;
st,max-limit-z = <32>;
};
+
+ cam1: camera@3e {
+ compatible = "toshiba,et8ek8";
+ reg = <0x3e>;
+
+ vana-supply = <&vaux4>;
+
+ clocks = <&isp 0>;
+ clock-names = "extclk";
+ clock-frequency = <9600000>;
+
+ reset-gpio = <&gpio4 6 GPIO_ACTIVE_HIGH>; /* 102 */
+
+ port {
+ csi_cam1: endpoint {
+ bus-type = <3>; /* CCP2 */
+ strobe = <1>;
+ clock-inv = <0>;
+ crc = <1>;
+
+ remote-endpoint = <&csi_switch_out1>;
+ };
+ };
+ };
+
+ /* D/A converter for auto-focus */
+ ad5820: dac@0c {
+ compatible = "adi,ad5820";
+ reg = <0x0c>;
+
+ VANA-supply = <&vaux4>;
+
+ #io-channel-cells = <0>;
+ };
};

&mmc1 {
+ slot-name = "external";
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
vmmc-supply = <&vmmc1>;
bus-width = <4>;
- cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
+ /* For debugging, it is often good idea to remove this GPIO.
+ It means you can remove back cover (to reboot by removing
+ battery) and still use the MMC card. */
+// cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
};

/* most boards use vaux3, only some old versions use vmmc2 instead */
&mmc2 {
+ slot-name = "internal";
pinctrl-names = "default";
pinctrl-0 = <&mmc2_pins>;
vmmc-supply = <&vaux3>;
--
2.1.4


--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature