182 lines
4.6 KiB
Diff
182 lines
4.6 KiB
Diff
|
From 0a23f11a17728b0ba3462bf789ddec5995c0361a Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
|
||
|
Date: Tue, 23 Jun 2020 19:43:24 +0200
|
||
|
Subject: [PATCH 025/464] ARM: dts: sun8i-a83t-tbs-a711: Add camera sensors
|
||
|
(HM5065, GC2145)
|
||
|
|
||
|
The tablet has two cameras, that can be switched between. Add
|
||
|
support for the both of them.
|
||
|
|
||
|
Sensor is connected via parallel bus to CSI and via I2C bus to
|
||
|
PE14/PE15 pins. Enable CSI module and add the node for HM5065
|
||
|
camera sensor.
|
||
|
|
||
|
Camera sensors are connected via I2C to PE14/PE15 pins on A83T.
|
||
|
Unfortunately while the A83T datasheet suggests TWI2 I2C controller
|
||
|
can be configured to have SDA/SCL on these pins, this configuration
|
||
|
doesn't work in reality. We need to either use CCI I2C controller
|
||
|
that is part of the CSI module, or as is done in this patch, use GPIO
|
||
|
based bitbanging I2C driver.
|
||
|
|
||
|
Reduce camera IOVDD voltage.
|
||
|
|
||
|
Force dvdd-csi-r/f regulators to 1.8V.
|
||
|
|
||
|
This is required by camera sensors that are connected to them.
|
||
|
|
||
|
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
||
|
---
|
||
|
.../dts/allwinner/sun8i-a83t-tbs-a711.dts | 101 +++++++++++++++++-
|
||
|
1 file changed, 99 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/arch/arm/boot/dts/allwinner/sun8i-a83t-tbs-a711.dts b/arch/arm/boot/dts/allwinner/sun8i-a83t-tbs-a711.dts
|
||
|
index 3d1493ce018d..62355c497b74 100644
|
||
|
--- a/arch/arm/boot/dts/allwinner/sun8i-a83t-tbs-a711.dts
|
||
|
+++ b/arch/arm/boot/dts/allwinner/sun8i-a83t-tbs-a711.dts
|
||
|
@@ -70,6 +70,16 @@ backlight: backlight {
|
||
|
default-brightness-level = <9>;
|
||
|
};
|
||
|
|
||
|
+ i2c_gpio: i2c-gpio {
|
||
|
+ compatible = "i2c-gpio";
|
||
|
+ /* PE15 = sda, PE14 = scl */
|
||
|
+ sda-gpios = <&pio 4 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||
|
+ scl-gpios = <&pio 4 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||
|
+ i2c-gpio,delay-us = <1>; /* ~100 kHz */
|
||
|
+ #address-cells = <1>;
|
||
|
+ #size-cells = <0>;
|
||
|
+ };
|
||
|
+
|
||
|
panel {
|
||
|
compatible = "tbs,a711-panel", "panel-lvds";
|
||
|
backlight = <&backlight>;
|
||
|
@@ -220,6 +230,13 @@ link2_codec: codec {
|
||
|
};
|
||
|
};
|
||
|
|
||
|
+&ccu {
|
||
|
+ /* Use a stable clock source with known fixed rate for MCLK */
|
||
|
+ assigned-clocks = <&ccu CLK_CSI_MCLK>;
|
||
|
+ assigned-clock-parents = <&osc24M>;
|
||
|
+ assigned-clock-rates = <24000000>;
|
||
|
+};
|
||
|
+
|
||
|
&cpu0 {
|
||
|
cpu-supply = <®_dcdc2>;
|
||
|
};
|
||
|
@@ -228,6 +245,37 @@ &cpu100 {
|
||
|
cpu-supply = <®_dcdc3>;
|
||
|
};
|
||
|
|
||
|
+&csi {
|
||
|
+ pinctrl-names = "default";
|
||
|
+ pinctrl-0 = <&csi_8bit_parallel_pins>, <&csi_mclk_pin>;
|
||
|
+ status = "okay";
|
||
|
+
|
||
|
+ port {
|
||
|
+ #address-cells = <1>;
|
||
|
+ #size-cells = <0>;
|
||
|
+
|
||
|
+ csi_hm5065_ep: endpoint@0 {
|
||
|
+ reg = <0>;
|
||
|
+ remote-endpoint = <&hm5065_ep>;
|
||
|
+ bus-width = <8>;
|
||
|
+ data-active = <1>;
|
||
|
+ pclk-sample = <0>;
|
||
|
+ hsync-active = <0>;
|
||
|
+ vsync-active = <1>;
|
||
|
+ };
|
||
|
+
|
||
|
+ csi_gc2145_ep: endpoint@1 {
|
||
|
+ reg = <1>;
|
||
|
+ remote-endpoint = <&gc2145_ep>;
|
||
|
+ bus-width = <8>;
|
||
|
+ hsync-active = <1>;
|
||
|
+ vsync-active = <1>;
|
||
|
+ data-active = <1>;
|
||
|
+ pclk-sample = <1>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+};
|
||
|
+
|
||
|
&de {
|
||
|
status = "okay";
|
||
|
};
|
||
|
@@ -288,6 +336,55 @@ npc100: nfc@28 {
|
||
|
};
|
||
|
};
|
||
|
|
||
|
+&i2c_gpio {
|
||
|
+ hm5065: rear-camera@1f {
|
||
|
+ compatible = "himax,hm5065";
|
||
|
+ reg = <0x1f>;
|
||
|
+ clocks = <&ccu CLK_CSI_MCLK>;
|
||
|
+ clock-names = "xclk";
|
||
|
+ IOVDD-supply = <®_dldo3>;
|
||
|
+ AVDD-supply = <®_dldo4>;
|
||
|
+ DVDD-supply = <®_eldo3>;
|
||
|
+ AFVDD-supply = <®_dldo3>;
|
||
|
+ reset-gpios = <&pio 4 18 GPIO_ACTIVE_LOW>; /* PE18 */
|
||
|
+ enable-gpios = <&pio 4 19 GPIO_ACTIVE_HIGH>; /* PE19 */
|
||
|
+
|
||
|
+ port {
|
||
|
+ hm5065_ep: endpoint {
|
||
|
+ remote-endpoint = <&csi_hm5065_ep>;
|
||
|
+ bus-width = <8>;
|
||
|
+ data-active = <1>;
|
||
|
+ pclk-sample = <0>;
|
||
|
+ hsync-active = <0>;
|
||
|
+ vsync-active = <1>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ gc2145: front-camera@3c {
|
||
|
+ compatible = "galaxycore,gc2145";
|
||
|
+ reg = <0x3c>;
|
||
|
+ clocks = <&ccu CLK_CSI_MCLK>;
|
||
|
+ clock-names = "xclk";
|
||
|
+ IOVDD-supply = <®_dldo3>;
|
||
|
+ AVDD-supply = <®_dldo4>;
|
||
|
+ DVDD-supply = <®_eldo3>;
|
||
|
+ reset-gpios = <&pio 4 16 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; /* PE16 */
|
||
|
+ enable-gpios = <&pio 4 17 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; /* PE17 */
|
||
|
+
|
||
|
+ port {
|
||
|
+ gc2145_ep: endpoint {
|
||
|
+ remote-endpoint = <&csi_gc2145_ep>;
|
||
|
+ bus-width = <8>;
|
||
|
+ hsync-active = <1>;
|
||
|
+ vsync-active = <1>;
|
||
|
+ data-active = <1>;
|
||
|
+ pclk-sample = <1>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+ };
|
||
|
+};
|
||
|
+
|
||
|
&i2s0 {
|
||
|
status = "okay";
|
||
|
pinctrl-names = "default";
|
||
|
@@ -509,7 +606,7 @@ ®_drivevbus {
|
||
|
};
|
||
|
|
||
|
®_eldo1 {
|
||
|
- regulator-min-microvolt = <1200000>;
|
||
|
+ regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-name = "pvdd-nfc";
|
||
|
regulator-always-on;
|
||
|
@@ -522,7 +619,7 @@ ®_eldo2 {
|
||
|
};
|
||
|
|
||
|
®_eldo3 {
|
||
|
- regulator-min-microvolt = <1200000>;
|
||
|
+ regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-name = "dvdd-csi-f";
|
||
|
};
|
||
|
--
|
||
|
2.34.1
|
||
|
|