Hi, I finally found some time to update the proposed binding documentation for omap3isp according to the comments on RFCv1. Changes since v1: * Use common DT clock bindings to provide isp-xclk * Use common DT video-interface bindings to specify device connections * Apply style updates suggested by Mark Rutland * I renamed ti,enable-crc to ti,disable-crc, since I think its supposed to be used for remote hw adding broken crc values. I can't see other reasons for disabling it :) * I've kept the clocks the same for now. I think somebody else should look over them. Changing the actual referenced clocks / renaming them is just a small change and can be done at a later time in the omap3isp DT process IMHO. * I've kept the reg reference as a list for now, since that's how the omap3isp driver currently works and I can't see any disadvantages in making the memory segmentation visible in the DTS file. So here is the proposed DT binding documentation: Binding for the OMAP3 Camera subsystem with the image signal processor (ISP) feature. The binding follows the common video-interfaces Device Tree binding, so it is recommended to read the common binding description first. This description can be found in Documentation/devicetree/bindings/media/video-interfaces.txt omap3isp node ------------- Required properties: - compatible : should be "ti,omap3isp" for OMAP3. - reg : physical addresses and length of the registers set. - clocks : list of clock specifiers, corresponding to entries in clock-names property. - clock-names : must contain "cam_ick", "cam_mclk", "csi2_96m_fck", "l3_ick" entries, matching entries in the clocks property. - interrupts : must contain mmu interrupt. - ti,iommu : phandle to isp mmu. - #address-cells: Should be set to <1>. - #size-cells : Should be set to <0>. Optional properties: - vdd-csiphy1-supply : regulator for csi phy1 - vdd-csiphy2-supply : regulator for csi phy2 isp-xclk subnode ---------------- The omap3 ISP provides two external clocks, which are available as subnodes of the omap3isp node. Devices using one of these clock devices are supposed to follow the common Device Tree clock bindings described in Documentation/devicetree/bindings/clock/clock-bindings.txt Required properties: - compatible : should contain "ti,omap3-cam-xclk" - reg : should be set to * <0> for cam_xclka * <1> for cam_xclkb - #clock-cells : should be set to <0> port subnode ------------ The omap3 ISP provides three different physical interfaces for camera connections. Each of them is described using a port node. Required properties: - reg : Should be set to one of the following values * <0> for the parallel interface (CPI) * <1> for the first serial interface (CSI1) * <2> for the second serial interface (CSI2) endpoint subnode for parallel interface --------------------------------------- The endpoint subnode describes the connection between the port and the remote camera device. Required properties: - remote-endpoint : phandle to remote device Optional properties: - data-shift : integer describing how far the data lanes are shifted. - pclk-sample : integer describing if clk should be interpreted on rising (<1>) or falling edge (<0>). Default is <1>. - hsync-active : integer describing if hsync is active high (<1>) or active low (<0>). Default is <1>. - vsync-active : integer describing if vsync is active high (<1>) or active low (<0>). Default is <1>. - ti,data-ones-complement : boolean, describing that the data's polarity is one's complement. endpoint subnode for serial interfaces -------------------------------------- Required properties: - ti,isp-interface-type : should be one of the following values * <0> to use the phy in CSI mode * <1> to use the phy in CCP mode * <2> to use the phy in CCP mode, but configured for MIPI CSI2 - ti,isp-clock-divisor : integer used for configuration of the video port output clock control. Optional properties: - ti,disable-crc : boolean, which disables crc checking. - ti,strobe-mode : boolean, which setups data/strobe physical layer instead of data/clock physical layer. - pclk-sample : integer describing if clk should be interpreted on rising (<1>) or falling edge (<0>). Default is <1>. - data-lanes: an array of physical data lane indexes. Position of an entry determines the logical lane number, while the value of an entry indicates physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have "data-lanes = <1 2>;", assuming the clock lane is on hardware lane 0. This property is valid for serial busses only (e.g. MIPI CSI-2). - clock-lanes: an array of physical clock lane indexes. Position of an entry determines the logical lane number, while the value of an entry indicates physical lane, e.g. for a MIPI CSI-2 bus we could have "clock-lanes = <0>;", which places the clock lane on hardware lane 0. This property is valid for serial busses only (e.g. MIPI CSI-2). Note that for the MIPI CSI-2 bus this array contains only one entry. Example for Nokia N900 ---------------------- omap3isp: isp@480BC000 { compatible = "ti,omap3isp"; reg = <0x480BC000 0x070>, /* base */ <0x480BC100 0x078>, /* cbuf */ <0x480BC400 0x1F0>, /* cpp2 */ <0x480BC600 0x0A8>, /* ccdc */ <0x480BCA00 0x048>, /* hist */ <0x480BCC00 0x060>, /* h3a */ <0x480BCE00 0x0A0>, /* prev */ <0x480BD000 0x0AC>, /* resz */ <0x480BD200 0x0FC>, /* sbl */ <0x480BD400 0x070>; /* mmu */ clocks = <&cam_ick>, <&cam_mclk>, <&csi2_96m_fck>, <&l3_ick>; clock-names = "cam_ick", "cam_mclk", "csi2_96m_fck", "l3_ick"; interrupts = <24>; ti,iommu = <&mmu_isp>; isp_xclk1: isp-xclk@0 { compatible = "ti,omap3-isp-xclk"; reg = <0>; #clock-cells = <0>; }; isp_xclk2: isp-xclk@1 { compatible = "ti,omap3-isp-xclk"; reg = <1>; #clock-cells = <0>; }; #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; /* parallel interface is not used on Nokia N900 */ parallel_ep: endpoint {}; }; port@1 { reg = <1>; csi1_ep: endpoint { remote-endpoint = <&switch_in>; ti,isp-clock-divisor = <1>; ti,strobe-mode; }; } port@2 { reg = <2>; /* second serial interface is not used on Nokia N900 */ csi2_ep: endpoint {}; } }; camera-switch { /* * TODO: * - check if the switching code is generic enough to use a * more generic name like "gpio-camera-switch". * - document the camera-switch binding */ compatible = "nokia,n900-camera-switch"; gpios = <&gpio4 1>; /* 97 */ port@0 { switch_in: endpoint { remote-endpoint = <&csi1_ep>; }; switch_out1: endpoint { remote-endpoint = <&et8ek8>; }; switch_out2: endpoint { remote-endpoint = <&smiapp_dfl>; }; }; };
Attachment:
signature.asc
Description: Digital signature