On Tue, Sep 19, 2017 at 9:57 PM, Sandy Huang <hjc@xxxxxxxxxxxxxx> wrote: > > > 在 2017/9/20 9:51, Sandy Huang 写道: >> >> Hi rob, >> thanks for you review. >> >> 在 2017/9/19 22:46, Rob Herring 写道: >>> >>> On Thu, Sep 14, 2017 at 11:43:18AM +0800, Sandy Huang wrote: >>>> >>>> This path add support rv1108 rgb output interface driver. >>>> >>>> Signed-off-by: Sandy Huang <hjc@xxxxxxxxxxxxxx> >>>> --- >>>> .../bindings/display/rockchip/rockchip-rgb.txt | 80 >>>> ++++++++++++++++++++++ >>>> 1 file changed, 80 insertions(+) >>>> create mode 100644 >>>> Documentation/devicetree/bindings/display/rockchip/rockchip-rgb.txt >>>> >>>> diff --git >>>> a/Documentation/devicetree/bindings/display/rockchip/rockchip-rgb.txt >>>> b/Documentation/devicetree/bindings/display/rockchip/rockchip-rgb.txt >>>> new file mode 100644 >>>> index 0000000..4164512 >>>> --- /dev/null >>>> +++ >>>> b/Documentation/devicetree/bindings/display/rockchip/rockchip-rgb.txt >>>> @@ -0,0 +1,80 @@ >>>> +Rockchip RV1108 RGB interface >>>> +================================ >>>> + >>>> +Required properties: >>>> +- compatible: matching the soc type: >>>> + - "rockchip,rv1108-rgb"; >>>> + >>>> +Optional properties: >>>> +- pinctrl-names: must contain a "lcdc" entry. >>>> +- pinctrl-0: pin control group to be used for this interface. >>>> + >>>> +Required nodes: >>>> +- rockchip,rgb-mode: should be "p888", "p666", "p565", "s888", >>>> "s888-dummy" >>> >>> >>> This should be a standard property. Any device with a parallel interface >>> is going to need something like this. >>> >> so, i need to move this property to panel? or just rename >> rockchip,rgb-mode to rgb-mode? >> >>>> + - p888: output r8-g8-b8 at each dclk cycle for per-pixel >>>> + - p666: output r6-g6-b6 at each dclk cycle for per-pixel >>>> + - p565: output r5-g6-b5 at each dclk cycle for per-pixel >>>> + - s888: output r8-g8-b8 in three dclk cycle for per-pixel >>>> + - s888-dmmy: output r8-g8-b8-dummy in four dclk cycle for per-pixel >>>> + >>>> +The rgb has two video ports described by: >>>> + Documentation/devicetree/bindings/media/video-interfaces.txt >>>> +Their connections are modeled using the OF graph bindings specified in >>>> + Documentation/devicetree/bindings/graph.txt. >>>> + >>>> +- video port 0 for the VOP input, the remote endpoint maybe >>>> vopb/vopl/vop >>>> +- video port 1 for either a panel or subsequent encoder >>>> + >>>> +the panel described by: >>>> + Documentation/devicetree/bindings/display/panel/simple-panel.txt >>>> +Panel other required properties: >>>> +- ports for remote rgb output. >>>> + >>>> +Example: >>>> + >>>> +panel: panel { >>>> + compatible = "auo,b101ean01"; >>>> + enable-gpios = <&gpio7 21 GPIO_ACTIVE_HIGH>; >>>> + >>>> + ports { >>>> + panel_in_rgb: endpoint { >>>> + remote-endpoint = <&rgb_out_panel>; >>>> + }; >>>> + }; >>>> +}; >>>> + >>>> +For Rockchip RV1108: >>>> + >>>> + rgb: rgb { >>>> + compatible = "rockchip,rv1108-rgb"; >>>> + pinctrl-names = "lcdc"; >>>> + pinctrl-0 = <&lcdc_ctl>; >>>> + rockchip,rgb-mode = "p888"; >>>> + >>>> + ports { >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + rgb_in: port@0 { >>>> + reg = <0>; >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + rgb_in_vop: endpoint@0 { >>>> + reg = <0>; >>> >>> >>> Don't need reg for a single endpoint. >>> >> ok, this will be deleted at next version. >>>> >>>> + remote-endpoint = <&vop_out_rgb>; >>>> + }; >>>> + }; >>>> + >>>> + rgb_out: port@1 { >>>> + reg = <1>; >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + rgb_out_panel: endpoint@0 { >>>> + reg = <0>; >>> >>> >>> ditto. >>> >> ok, this will be deleted at next version. > > sorry,this can't be deleted, because rgb output remote endpoint maybe panel > or convert chip, the dts node maybe like this: > > panel: panel { > status = "disabled"; > ports { > panel_in_rgb: endpoint { > remote-endpoint = <&rgb_out_panel>; > }; > }; > }; > > bridge: bridge { > status = "okay"; > ports { > bridge_in_rgb: endpoint { > remote-endpoint = <&rgb_out_bridge>; > }; > }; > }; > > rgb_out: port@1 { > reg = <1>; > #address-cells = <1>; > #size-cells = <0>; > rgb_out_panel: endpoint@0 { > reg = <0>; > remote-endpoint = <&panel_in_rgb>; > }; > rgb_out_bridge: endpoint@1 { > reg = <1>; > remote-endpoint = <&bridge_in_rgb>; > }; > }; > > so rockchip_rgb_bind() @ rockchip_rgb.c use reg id to find the remote > actived endpoint. > > for_each_child_of_node(port, endpoint) { > of_property_read_u32(endpoint, "reg", &endpoint_id); Lack of reg property here should imply 0 for endpoint_id. > ret = drm_of_find_panel_or_bridge(dev->of_node, 1, endpoint_id, > &rgb->panel, &rgb->bridge); > if (!ret) > break; > } > >>>> + remote-endpoint = <&panel_in_rgb>; >>>> + }; >>>> + }; >>>> + }; >>>> + }; >>>> -- >>>> 2.7.4 >>>> >>>> >>> >>> >>> >> >> >> _______________________________________________ >> Linux-rockchip mailing list >> Linux-rockchip@xxxxxxxxxxxxxxxxxxx >> http://lists.infradead.org/mailman/listinfo/linux-rockchip > > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel