arm64: dts: rockchip: describe the OV8858 user camera on PinePhone Pro

Add the description of the front/user camera (OV8858) on the PinePhone Pro
to the device dts file.
It receives commands over SCCB, an I2C-compatible protocol, at
I2C address 0x36 and transmits data over CSI-MIPI.
I confirmed this address experimentally.

The pin control mapping was again extracted from the PinePhone Pro
schematic v1.0 as well as the RK3399 datasheet revision 1.8.

Table 2-3 in section 2.8 of the RK3399 datasheet contains the mapping
of IO functions for the SoC pins. Page 52 shows GPIO1_A4, page 54 shows
GPIO2_B4.

For the reset (RESET) signal:
page 11 quadrant D2             | p.18 q.B3-4 | p.18 q.C2
RK3399_E.R28 -> GPIO1_A4 -> Camera2_RST -> MIPI_RST1 -> OV8858.12

For the powerdown (PWDN) signal:
page 9 quadrants D4-5          | p.18 q.B2
RK3399_L.F31 -> GPIO2_B4 -> DVP_PDN0_H -> OV8858.14

Helped-by: Dragan Simic <dsimic@manjaro.org>
Co-developed-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Olivier Benjamin <olivier.benjamin@bootlin.com>
Link: https://lore.kernel.org/r/20250620-camera-v4-4-0201a8ed5fae@bootlin.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
Olivier Benjamin 2025-06-20 17:21:35 +02:00 committed by Heiko Stuebner
parent 9336eb829a
commit b45f9f910a

View File

@ -480,6 +480,27 @@ wcam_lens: camera-lens@c {
/* Same I2c bus as both cameras, depends on vcca1v8_codec for power. */
vcc-supply = <&vcc1v8_dvp>;
};
ucam: camera@36 {
compatible = "ovti,ov8858";
reg = <0x36>;
clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK1, derived from CIF_CLK0 */
clock-names = "xvclk";
dovdd-supply = <&vcc1v8_dvp>;
orientation = <0>; /* V4L2_CAMERA_ORIENTATION_FRONT */
pinctrl-names = "default";
pinctrl-0 = <&camera2_rst_l &dvp_pdn0_h>;
powerdown-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_LOW>;
rotation = <90>;
port {
ucam_out: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_in_ucam>;
};
};
};
};
&i2c3 {
@ -524,6 +545,24 @@ &io_domains {
status = "okay";
};
&isp0 {
status = "okay";
ports {
port@0 {
mipi_in_ucam: endpoint@0 {
reg = <0>;
data-lanes = <1 2 3 4>;
remote-endpoint = <&ucam_out>;
};
};
};
};
&isp0_mmu {
status = "okay";
};
&isp1 {
status = "okay";
@ -596,10 +635,16 @@ lcd1_rst_pin: lcd1-rst-pin {
};
};
camera {
cameras {
camera_rst_l: camera-rst-l {
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
};
camera2_rst_l: camera2-rst-l {
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
dvp_pdn0_h: dvp-pdn0-h {
rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
leds {