diff mbox

[16/22] ARM: dts: nitrogen6x: Add dtsi for BD_HDMI_MIPI HDMI to MIPI CSI-2 receiver board

Message ID 20161007160107.5074-17-p.zabel@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Philipp Zabel Oct. 7, 2016, 4:01 p.m. UTC
Add device tree nodes for the BD_HDMI_MIPI HDMI to MIPI CSI-2 receiver
board with a TC358743 connected to the Nitrogen6X MIPI CSI-2 input
connector.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 .../boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi  | 73 ++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi

Comments

Gary Bisson Oct. 10, 2016, 3:48 p.m. UTC | #1
Hi Philipp, All,

On Fri, Oct 07, 2016 at 06:01:01PM +0200, Philipp Zabel wrote:
> Add device tree nodes for the BD_HDMI_MIPI HDMI to MIPI CSI-2 receiver
> board with a TC358743 connected to the Nitrogen6X MIPI CSI-2 input
> connector.

I've tested this series on my Nitrogen6x + BD_HDMI_MIPI daughter board
and have a few questions.

First, why is the tc358743 node in a separate dtsi file? Is this in
order to avoid a failed probe during bootup if the daughter board is
not present? Is this what should be done for every capture device that
targets this platform (like the OV5640 or OV5642)?

Can you provide some details on your testing procedure? In my case I've
reached a point where I get the same 'media-ctl --print-dot' output as
the one from your cover letter but I can't seem to set the EDID nor to
have a gstreamer pipeline (to fakesink). All the EDID v4l2-ctl commands
return "Inappropriate ioctl for device".

Do not hesitate to CC me to Boundary Devices related patches so I can
test them and give some feedback.

Regards,
Gary
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Philipp Zabel Oct. 14, 2016, 4:45 p.m. UTC | #2
Hi Gary,

Am Montag, den 10.10.2016, 17:48 +0200 schrieb Gary Bisson:
> Hi Philipp, All,
> 
> On Fri, Oct 07, 2016 at 06:01:01PM +0200, Philipp Zabel wrote:
> > Add device tree nodes for the BD_HDMI_MIPI HDMI to MIPI CSI-2 receiver
> > board with a TC358743 connected to the Nitrogen6X MIPI CSI-2 input
> > connector.
> 
> I've tested this series on my Nitrogen6x + BD_HDMI_MIPI daughter board
> and have a few questions.
> 
> First, why is the tc358743 node in a separate dtsi file? Is this in
> order to avoid a failed probe during bootup if the daughter board is
> not present? Is this what should be done for every capture device that
> targets this platform (like the OV5640 or OV5642)?
> 
> Can you provide some details on your testing procedure? In my case I've
> reached a point where I get the same 'media-ctl --print-dot' output as
> the one from your cover letter but I can't seem to set the EDID nor to
> have a gstreamer pipeline (to fakesink).

If I force EDID on the sender, it also works without setting EDID on the
tc358743:

# Make the detected dv timings current on TC358743
media-ctl --set-dv '"tc358743 1-000f":0'

# Enable link between TC358743 and MIPI CSI-2 receiver, set format
media-ctl --links '"tc358743 1-000f":0->"mipi-csi2":0[1]'
media-ctl --set-v4l2 '"tc358743 1-000f":0[fmt:UYVY/1920x1080]'

# Enable link between MIPI CSI-2 receiver and mux, set format,
# this switches the mux input to MIPI CSI-2
media-ctl --links '"mipi-csi2":1->"mipi_ipu1_mux":0[1]'
media-ctl --set-v4l2 '"mipi-csi2":1[fmt:UYVY/1920x1080]'

# Enable link between mux and CSI, set format
media-ctl --links '"mipi_ipu1_mux":2->"IPU0 CSI0":0[1]'
media-ctl --set-v4l2 '"mipi_ipu1_mux":2[fmt:UYVY/1920x1080]'
# this disables frame skipping and sets the nominal frame interval
# that will be returned by v4l2-ctl --get-parm
media-ctl --set-v4l2 '"IPU0 CSI0":0[fmt:UYVY/1920x1080@1/60]'

# Set capture format at CSI output
media-ctl --set-v4l2 '"IPU0 CSI0":1[fmt:UYVY2X8/960x540]'

I'd like to handle this format propagation in libv4l2.

# Capture
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=dmabuf ! video/x-raw,format=YUY2,framerate=30/1 ! kmssink

>  All the EDID v4l2-ctl commands
> return "Inappropriate ioctl for device".

The capture driver currently does not collect its subdevices' controls
to present them on the main video device. Also this would only work for
controls that appear only once in the configured pipeline.

I once hacked v4l2-ctl to allow it to directly set subdev controls on
the /dev/v4l2-subdev nodes: https://patchwork.kernel.org/patch/6097201/
but the correct solution seems to be to have a subdevice specific
QUERYCAP alternative.

> Do not hesitate to CC me to Boundary Devices related patches so I can
> test them and give some feedback.

I'll do that, thanks in advance for testing.

regards
Philipp

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi
new file mode 100644
index 0000000..e110874
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi
@@ -0,0 +1,73 @@ 
+/*
+ * Copyright 2015 Philipp Zabel, Pengutronix
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+	hdmi_osc: hdmi-osc {
+		compatible = "fixed-clock";
+		clock-output-names = "hdmi-osc";
+		clock-frequency = <27000000>;
+		#clock-cells = <0>;
+	};
+};
+
+&i2c2 {
+	tc358743: tc358743@0f {
+		compatible = "toshiba,tc358743";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_tc358743>;
+		reg = <0x0f>;
+		clocks = <&hdmi_osc>;
+		clock-names = "refclk";
+		reset-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
+		interrupt-parent = <&gpio2>;
+		interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+
+		port@0 {
+			tc358743_out: endpoint {
+				remote-endpoint = <&mipi_csi2_in>;
+				data-lanes = <1 2 3 4>;
+				clock-lanes = <0>;
+				clock-noncontinuous;
+				link-frequencies = /bits/ 64 <297000000>;
+			};
+		};
+	};
+};
+
+&iomuxc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hog>;
+
+	imx6q-nitrogen6x-tc358743 {
+		pinctrl_tc358743: tc358743grp {
+			fsl,pins = <
+				MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09 0x4000b0b0	/* RESETN */
+				MX6QDL_PAD_NANDF_D5__GPIO2_IO05   0x400130b0	/* INT */
+			>;
+		};
+	};
+};
+
+&mipi_csi {
+	status = "okay";
+
+	port@0 {
+		mipi_csi2_in: endpoint {
+			remote-endpoint = <&tc358743_out>;
+			data-lanes = <1 2 3 4>;
+			clock-lanes = <0>;
+			clock-noncontinuous;
+			link-frequencies = /bits/ 64 <297000000>;
+		};
+	};
+};