Message ID | 20200430124442.v4.4.Ifcdc4ecb12742a27862744ee1e8753cb95a38a7f@changeid (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: Prepare to use a GPIO on ti-sn65dsi86 for Hot Plug Detect | expand |
Hi Doug, Thank you for the patch. On Thu, Apr 30, 2020 at 12:46:15PM -0700, Douglas Anderson wrote: > This moves the bindings over, based a lot on toshiba,tc358768.yaml. > Unless there's someone known to be better, I've set the maintainer in > the yaml as the first person to submit bindings. > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > Reviewed-by: Stephen Boyd <swboyd@chromium.org> > --- > > Changes in v4: None > Changes in v3: None > Changes in v2: > - specification => specifier. > - power up => power. > - Added back missing suspend-gpios. > - data-lanes and lane-polarities are are the right place now. > - endpoints don't need to be patternProperties. > - Specified more details for data-lanes and lane-polarities. > - Added old example back in, fixing bugs in it. > - Example i2c bus is just called "i2c", not "i2c1" now. > > .../bindings/display/bridge/ti,sn65dsi86.txt | 87 ------ > .../bindings/display/bridge/ti,sn65dsi86.yaml | 279 ++++++++++++++++++ > 2 files changed, 279 insertions(+), 87 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > deleted file mode 100644 > index 8ec4a7f2623a..000000000000 > --- a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > +++ /dev/null > @@ -1,87 +0,0 @@ > -SN65DSI86 DSI to eDP bridge chip > --------------------------------- > - > -This is the binding for Texas Instruments SN65DSI86 bridge. > -http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > - > -Required properties: > -- compatible: Must be "ti,sn65dsi86" > -- reg: i2c address of the chip, 0x2d as per datasheet > -- enable-gpios: gpio specification for bridge_en pin (active high) > - > -- vccio-supply: A 1.8V supply that powers up the digital IOs. > -- vpll-supply: A 1.8V supply that powers up the displayport PLL. > -- vcca-supply: A 1.2V supply that powers up the analog circuits. > -- vcc-supply: A 1.2V supply that powers up the digital core. > - > -Optional properties: > -- interrupts-extended: Specifier for the SN65DSI86 interrupt line. > - > -- gpio-controller: Marks the device has a GPIO controller. > -- #gpio-cells : Should be two. The first cell is the pin number and > - the second cell is used to specify flags. > - See ../../gpio/gpio.txt for more information. > -- #pwm-cells : Should be one. See ../../pwm/pwm.yaml for description of > - the cell formats. > - > -- clock-names: should be "refclk" > -- clocks: Specification for input reference clock. The reference > - clock rate must be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > - > -- data-lanes: See ../../media/video-interface.txt > -- lane-polarities: See ../../media/video-interface.txt > - > -- suspend-gpios: specification for GPIO1 pin on bridge (active low) > - > -Required nodes: > -This device has two video ports. Their connections are modelled using the > -OF graph bindings specified in Documentation/devicetree/bindings/graph.txt. > - > -- Video port 0 for DSI input > -- Video port 1 for eDP output > - > -Example > -------- > - > -edp-bridge@2d { > - compatible = "ti,sn65dsi86"; > - #address-cells = <1>; > - #size-cells = <0>; > - reg = <0x2d>; > - > - enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; > - suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; > - > - interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; > - > - vccio-supply = <&pm8916_l17>; > - vcca-supply = <&pm8916_l6>; > - vpll-supply = <&pm8916_l17>; > - vcc-supply = <&pm8916_l6>; > - > - clock-names = "refclk"; > - clocks = <&input_refclk>; > - > - ports { > - #address-cells = <1>; > - #size-cells = <0>; > - > - port@0 { > - reg = <0>; > - > - edp_bridge_in: endpoint { > - remote-endpoint = <&dsi_out>; > - }; > - }; > - > - port@1 { > - reg = <1>; > - > - edp_bridge_out: endpoint { > - data-lanes = <2 1 3 0>; > - lane-polarities = <0 1 0 1>; > - remote-endpoint = <&edp_panel_in>; > - }; > - }; > - }; > -} > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > new file mode 100644 > index 000000000000..6d7d40ad45ac > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > @@ -0,0 +1,279 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/bridge/ti,sn65dsi86.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: SN65DSI86 DSI to eDP bridge chip > + > +maintainers: > + - Sandeep Panda <spanda@codeaurora.org> > + > +description: | > + The Texas Instruments SN65DSI86 bridge takes MIPI DSI in and outputs eDP. > + http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > + > +properties: > + compatible: > + const: ti,sn65dsi86 > + > + reg: > + const: 0x2d > + > + enable-gpios: > + maxItems: 1 > + description: GPIO specifier for bridge_en pin (active high). > + > + suspend-gpios: > + maxItems: 1 > + description: GPIO specifier for GPIO1 pin on bridge (active low). > + > + vccio-supply: > + description: A 1.8V supply that powers the digital IOs. > + > + vpll-supply: > + description: A 1.8V supply that powers the DisplayPort PLL. > + > + vcca-supply: > + description: A 1.2V supply that powers the analog circuits. > + > + vcc-supply: > + description: A 1.2V supply that powers the digital core. > + > + interrupts: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + description: > + Clock specifier for input reference clock. The reference clock rate must > + be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > + > + clock-names: > + const: refclk > + > + gpio-controller: true > + '#gpio-cells': > + const: 2 > + description: > + First cell is pin number, second cell is flags. GPIO pin numbers are > + 1-based to match the datasheet. See ../../gpio/gpio.txt for more > + information. > + > + '#pwm-cells': > + const: 1 > + description: See ../../pwm/pwm.yaml for description of the cell formats. > + > + ports: > + type: object Maybe additionalProperties: false here ? > + > + properties: > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > + port@0: > + type: object > + additionalProperties: false > + > + description: > + Video port for MIPI DSI input > + > + properties: > + reg: > + const: 0 > + > + endpoint: > + type: object > + additionalProperties: false > + > + properties: > + remote-endpoint: true > + > + data-lanes: > + minItems: 1 > + maxItems: 4 > + items: > + enum: > + - 0 > + - 1 > + - 2 > + - 3 > + description: See ../../media/video-interface.txt And maybe uniqueItems: true ? Same for port@1. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > + > + lane-polarities: > + minItems: 1 > + maxItems: 4 > + items: > + enum: > + - 0 > + - 1 > + description: See ../../media/video-interface.txt > + > + dependencies: > + data-lanes: [lane-polarities] > + > + required: > + - reg > + > + port@1: > + type: object > + additionalProperties: false > + > + description: > + Video port for eDP output (panel or connector). > + > + properties: > + reg: > + const: 1 > + > + endpoint: > + type: object > + additionalProperties: false > + > + properties: > + remote-endpoint: true > + > + data-lanes: > + minItems: 1 > + maxItems: 4 > + items: > + enum: > + - 0 > + - 1 > + - 2 > + - 3 > + description: See ../../media/video-interface.txt > + > + lane-polarities: > + minItems: 1 > + maxItems: 4 > + items: > + enum: > + - 0 > + - 1 > + description: See ../../media/video-interface.txt > + > + dependencies: > + data-lanes: [lane-polarities] > + > + required: > + - reg > + > + required: > + - "#address-cells" > + - "#size-cells" > + - port@0 > + - port@1 > + > +required: > + - compatible > + - reg > + - enable-gpios > + - vccio-supply > + - vpll-supply > + - vcca-supply > + - vcc-supply > + - ports > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/qcom,rpmh.h> > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + bridge@2d { > + compatible = "ti,sn65dsi86"; > + reg = <0x2d>; > + > + interrupt-parent = <&tlmm>; > + interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; > + > + enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>; > + > + vpll-supply = <&src_pp1800_s4a>; > + vccio-supply = <&src_pp1800_s4a>; > + vcca-supply = <&src_pp1200_l2a>; > + vcc-supply = <&src_pp1200_l2a>; > + > + clocks = <&rpmhcc RPMH_LN_BB_CLK2>; > + clock-names = "refclk"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + endpoint { > + remote-endpoint = <&dsi0_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + endpoint { > + remote-endpoint = <&panel_in_edp>; > + }; > + }; > + }; > + }; > + }; > + - | > + #include <dt-bindings/clock/qcom,rpmh.h> > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + bridge@2d { > + compatible = "ti,sn65dsi86"; > + reg = <0x2d>; > + > + enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; > + suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; > + > + interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; > + > + vccio-supply = <&pm8916_l17>; > + vcca-supply = <&pm8916_l6>; > + vpll-supply = <&pm8916_l17>; > + vcc-supply = <&pm8916_l6>; > + > + clock-names = "refclk"; > + clocks = <&input_refclk>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + edp_bridge_in: endpoint { > + remote-endpoint = <&dsi_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + edp_bridge_out: endpoint { > + data-lanes = <2 1 3 0>; > + lane-polarities = <0 1 0 1>; > + remote-endpoint = <&edp_panel_in>; > + }; > + }; > + }; > + }; > + };
Laurent, On Tue, May 5, 2020 at 2:35 PM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Doug, > > Thank you for the patch. > > On Thu, Apr 30, 2020 at 12:46:15PM -0700, Douglas Anderson wrote: > > This moves the bindings over, based a lot on toshiba,tc358768.yaml. > > Unless there's someone known to be better, I've set the maintainer in > > the yaml as the first person to submit bindings. > > > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > > Reviewed-by: Stephen Boyd <swboyd@chromium.org> > > --- > > > > Changes in v4: None > > Changes in v3: None > > Changes in v2: > > - specification => specifier. > > - power up => power. > > - Added back missing suspend-gpios. > > - data-lanes and lane-polarities are are the right place now. > > - endpoints don't need to be patternProperties. > > - Specified more details for data-lanes and lane-polarities. > > - Added old example back in, fixing bugs in it. > > - Example i2c bus is just called "i2c", not "i2c1" now. > > > > .../bindings/display/bridge/ti,sn65dsi86.txt | 87 ------ > > .../bindings/display/bridge/ti,sn65dsi86.yaml | 279 ++++++++++++++++++ > > 2 files changed, 279 insertions(+), 87 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > > > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > deleted file mode 100644 > > index 8ec4a7f2623a..000000000000 > > --- a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > +++ /dev/null > > @@ -1,87 +0,0 @@ > > -SN65DSI86 DSI to eDP bridge chip > > --------------------------------- > > - > > -This is the binding for Texas Instruments SN65DSI86 bridge. > > -http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > > - > > -Required properties: > > -- compatible: Must be "ti,sn65dsi86" > > -- reg: i2c address of the chip, 0x2d as per datasheet > > -- enable-gpios: gpio specification for bridge_en pin (active high) > > - > > -- vccio-supply: A 1.8V supply that powers up the digital IOs. > > -- vpll-supply: A 1.8V supply that powers up the displayport PLL. > > -- vcca-supply: A 1.2V supply that powers up the analog circuits. > > -- vcc-supply: A 1.2V supply that powers up the digital core. > > - > > -Optional properties: > > -- interrupts-extended: Specifier for the SN65DSI86 interrupt line. > > - > > -- gpio-controller: Marks the device has a GPIO controller. > > -- #gpio-cells : Should be two. The first cell is the pin number and > > - the second cell is used to specify flags. > > - See ../../gpio/gpio.txt for more information. > > -- #pwm-cells : Should be one. See ../../pwm/pwm.yaml for description of > > - the cell formats. > > - > > -- clock-names: should be "refclk" > > -- clocks: Specification for input reference clock. The reference > > - clock rate must be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > > - > > -- data-lanes: See ../../media/video-interface.txt > > -- lane-polarities: See ../../media/video-interface.txt > > - > > -- suspend-gpios: specification for GPIO1 pin on bridge (active low) > > - > > -Required nodes: > > -This device has two video ports. Their connections are modelled using the > > -OF graph bindings specified in Documentation/devicetree/bindings/graph.txt. > > - > > -- Video port 0 for DSI input > > -- Video port 1 for eDP output > > - > > -Example > > -------- > > - > > -edp-bridge@2d { > > - compatible = "ti,sn65dsi86"; > > - #address-cells = <1>; > > - #size-cells = <0>; > > - reg = <0x2d>; > > - > > - enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; > > - suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; > > - > > - interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; > > - > > - vccio-supply = <&pm8916_l17>; > > - vcca-supply = <&pm8916_l6>; > > - vpll-supply = <&pm8916_l17>; > > - vcc-supply = <&pm8916_l6>; > > - > > - clock-names = "refclk"; > > - clocks = <&input_refclk>; > > - > > - ports { > > - #address-cells = <1>; > > - #size-cells = <0>; > > - > > - port@0 { > > - reg = <0>; > > - > > - edp_bridge_in: endpoint { > > - remote-endpoint = <&dsi_out>; > > - }; > > - }; > > - > > - port@1 { > > - reg = <1>; > > - > > - edp_bridge_out: endpoint { > > - data-lanes = <2 1 3 0>; > > - lane-polarities = <0 1 0 1>; > > - remote-endpoint = <&edp_panel_in>; > > - }; > > - }; > > - }; > > -} > > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > new file mode 100644 > > index 000000000000..6d7d40ad45ac > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > @@ -0,0 +1,279 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/display/bridge/ti,sn65dsi86.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: SN65DSI86 DSI to eDP bridge chip > > + > > +maintainers: > > + - Sandeep Panda <spanda@codeaurora.org> > > + > > +description: | > > + The Texas Instruments SN65DSI86 bridge takes MIPI DSI in and outputs eDP. > > + http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > > + > > +properties: > > + compatible: > > + const: ti,sn65dsi86 > > + > > + reg: > > + const: 0x2d > > + > > + enable-gpios: > > + maxItems: 1 > > + description: GPIO specifier for bridge_en pin (active high). > > + > > + suspend-gpios: > > + maxItems: 1 > > + description: GPIO specifier for GPIO1 pin on bridge (active low). > > + > > + vccio-supply: > > + description: A 1.8V supply that powers the digital IOs. > > + > > + vpll-supply: > > + description: A 1.8V supply that powers the DisplayPort PLL. > > + > > + vcca-supply: > > + description: A 1.2V supply that powers the analog circuits. > > + > > + vcc-supply: > > + description: A 1.2V supply that powers the digital core. > > + > > + interrupts: > > + maxItems: 1 > > + > > + clocks: > > + maxItems: 1 > > + description: > > + Clock specifier for input reference clock. The reference clock rate must > > + be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > > + > > + clock-names: > > + const: refclk > > + > > + gpio-controller: true > > + '#gpio-cells': > > + const: 2 > > + description: > > + First cell is pin number, second cell is flags. GPIO pin numbers are > > + 1-based to match the datasheet. See ../../gpio/gpio.txt for more > > + information. > > + > > + '#pwm-cells': > > + const: 1 > > + description: See ../../pwm/pwm.yaml for description of the cell formats. > > + > > + ports: > > + type: object > > Maybe > > additionalProperties: false > > here ? Ah, this is to keep people from adding "additionalProperties" under the ports node. I will hold off on sending v5 for now. If there happens to be nothing else wrong I'm happy for this to be added by a maintainer when landing or I can quickly spin a v5. > > + > > + properties: > > + "#address-cells": > > + const: 1 > > + > > + "#size-cells": > > + const: 0 > > + > > + port@0: > > + type: object > > + additionalProperties: false > > + > > + description: > > + Video port for MIPI DSI input > > + > > + properties: > > + reg: > > + const: 0 > > + > > + endpoint: > > + type: object > > + additionalProperties: false > > + > > + properties: > > + remote-endpoint: true > > + > > + data-lanes: > > + minItems: 1 > > + maxItems: 4 > > + items: > > + enum: > > + - 0 > > + - 1 > > + - 2 > > + - 3 > > + description: See ../../media/video-interface.txt > > And maybe > uniqueItems: true > > ? Same for port@1. Sounds good. Again, I'll hold off on sending v5 for now and (if no other problems) happy if this gets done when applied. > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks! -Doug
Hi, On Tue, May 5, 2020 at 3:21 PM Doug Anderson <dianders@chromium.org> wrote: > > Laurent, > > On Tue, May 5, 2020 at 2:35 PM Laurent Pinchart > <laurent.pinchart@ideasonboard.com> wrote: > > > > Hi Doug, > > > > Thank you for the patch. > > > > On Thu, Apr 30, 2020 at 12:46:15PM -0700, Douglas Anderson wrote: > > > This moves the bindings over, based a lot on toshiba,tc358768.yaml. > > > Unless there's someone known to be better, I've set the maintainer in > > > the yaml as the first person to submit bindings. > > > > > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org> > > > --- > > > > > > Changes in v4: None > > > Changes in v3: None > > > Changes in v2: > > > - specification => specifier. > > > - power up => power. > > > - Added back missing suspend-gpios. > > > - data-lanes and lane-polarities are are the right place now. > > > - endpoints don't need to be patternProperties. > > > - Specified more details for data-lanes and lane-polarities. > > > - Added old example back in, fixing bugs in it. > > > - Example i2c bus is just called "i2c", not "i2c1" now. > > > > > > .../bindings/display/bridge/ti,sn65dsi86.txt | 87 ------ > > > .../bindings/display/bridge/ti,sn65dsi86.yaml | 279 ++++++++++++++++++ > > > 2 files changed, 279 insertions(+), 87 deletions(-) > > > delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > > create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > > deleted file mode 100644 > > > index 8ec4a7f2623a..000000000000 > > > --- a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt > > > +++ /dev/null > > > @@ -1,87 +0,0 @@ > > > -SN65DSI86 DSI to eDP bridge chip > > > --------------------------------- > > > - > > > -This is the binding for Texas Instruments SN65DSI86 bridge. > > > -http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > > > - > > > -Required properties: > > > -- compatible: Must be "ti,sn65dsi86" > > > -- reg: i2c address of the chip, 0x2d as per datasheet > > > -- enable-gpios: gpio specification for bridge_en pin (active high) > > > - > > > -- vccio-supply: A 1.8V supply that powers up the digital IOs. > > > -- vpll-supply: A 1.8V supply that powers up the displayport PLL. > > > -- vcca-supply: A 1.2V supply that powers up the analog circuits. > > > -- vcc-supply: A 1.2V supply that powers up the digital core. > > > - > > > -Optional properties: > > > -- interrupts-extended: Specifier for the SN65DSI86 interrupt line. > > > - > > > -- gpio-controller: Marks the device has a GPIO controller. > > > -- #gpio-cells : Should be two. The first cell is the pin number and > > > - the second cell is used to specify flags. > > > - See ../../gpio/gpio.txt for more information. > > > -- #pwm-cells : Should be one. See ../../pwm/pwm.yaml for description of > > > - the cell formats. > > > - > > > -- clock-names: should be "refclk" > > > -- clocks: Specification for input reference clock. The reference > > > - clock rate must be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > > > - > > > -- data-lanes: See ../../media/video-interface.txt > > > -- lane-polarities: See ../../media/video-interface.txt > > > - > > > -- suspend-gpios: specification for GPIO1 pin on bridge (active low) > > > - > > > -Required nodes: > > > -This device has two video ports. Their connections are modelled using the > > > -OF graph bindings specified in Documentation/devicetree/bindings/graph.txt. > > > - > > > -- Video port 0 for DSI input > > > -- Video port 1 for eDP output > > > - > > > -Example > > > -------- > > > - > > > -edp-bridge@2d { > > > - compatible = "ti,sn65dsi86"; > > > - #address-cells = <1>; > > > - #size-cells = <0>; > > > - reg = <0x2d>; > > > - > > > - enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; > > > - suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; > > > - > > > - interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; > > > - > > > - vccio-supply = <&pm8916_l17>; > > > - vcca-supply = <&pm8916_l6>; > > > - vpll-supply = <&pm8916_l17>; > > > - vcc-supply = <&pm8916_l6>; > > > - > > > - clock-names = "refclk"; > > > - clocks = <&input_refclk>; > > > - > > > - ports { > > > - #address-cells = <1>; > > > - #size-cells = <0>; > > > - > > > - port@0 { > > > - reg = <0>; > > > - > > > - edp_bridge_in: endpoint { > > > - remote-endpoint = <&dsi_out>; > > > - }; > > > - }; > > > - > > > - port@1 { > > > - reg = <1>; > > > - > > > - edp_bridge_out: endpoint { > > > - data-lanes = <2 1 3 0>; > > > - lane-polarities = <0 1 0 1>; > > > - remote-endpoint = <&edp_panel_in>; > > > - }; > > > - }; > > > - }; > > > -} > > > diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > > new file mode 100644 > > > index 000000000000..6d7d40ad45ac > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml > > > @@ -0,0 +1,279 @@ > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/display/bridge/ti,sn65dsi86.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: SN65DSI86 DSI to eDP bridge chip > > > + > > > +maintainers: > > > + - Sandeep Panda <spanda@codeaurora.org> > > > + > > > +description: | > > > + The Texas Instruments SN65DSI86 bridge takes MIPI DSI in and outputs eDP. > > > + http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf > > > + > > > +properties: > > > + compatible: > > > + const: ti,sn65dsi86 > > > + > > > + reg: > > > + const: 0x2d > > > + > > > + enable-gpios: > > > + maxItems: 1 > > > + description: GPIO specifier for bridge_en pin (active high). > > > + > > > + suspend-gpios: > > > + maxItems: 1 > > > + description: GPIO specifier for GPIO1 pin on bridge (active low). > > > + > > > + vccio-supply: > > > + description: A 1.8V supply that powers the digital IOs. > > > + > > > + vpll-supply: > > > + description: A 1.8V supply that powers the DisplayPort PLL. > > > + > > > + vcca-supply: > > > + description: A 1.2V supply that powers the analog circuits. > > > + > > > + vcc-supply: > > > + description: A 1.2V supply that powers the digital core. > > > + > > > + interrupts: > > > + maxItems: 1 > > > + > > > + clocks: > > > + maxItems: 1 > > > + description: > > > + Clock specifier for input reference clock. The reference clock rate must > > > + be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. > > > + > > > + clock-names: > > > + const: refclk > > > + > > > + gpio-controller: true > > > + '#gpio-cells': > > > + const: 2 > > > + description: > > > + First cell is pin number, second cell is flags. GPIO pin numbers are > > > + 1-based to match the datasheet. See ../../gpio/gpio.txt for more > > > + information. > > > + > > > + '#pwm-cells': > > > + const: 1 > > > + description: See ../../pwm/pwm.yaml for description of the cell formats. > > > + > > > + ports: > > > + type: object > > > > Maybe > > > > additionalProperties: false > > > > here ? > > Ah, this is to keep people from adding "additionalProperties" under > the ports node. I will hold off on sending v5 for now. If there > happens to be nothing else wrong I'm happy for this to be added by a > maintainer when landing or I can quickly spin a v5. > > > > > + > > > + properties: > > > + "#address-cells": > > > + const: 1 > > > + > > > + "#size-cells": > > > + const: 0 > > > + > > > + port@0: > > > + type: object > > > + additionalProperties: false > > > + > > > + description: > > > + Video port for MIPI DSI input > > > + > > > + properties: > > > + reg: > > > + const: 0 > > > + > > > + endpoint: > > > + type: object > > > + additionalProperties: false > > > + > > > + properties: > > > + remote-endpoint: true > > > + > > > + data-lanes: > > > + minItems: 1 > > > + maxItems: 4 > > > + items: > > > + enum: > > > + - 0 > > > + - 1 > > > + - 2 > > > + - 3 > > > + description: See ../../media/video-interface.txt > > > > And maybe > > uniqueItems: true > > > > ? Same for port@1. > > Sounds good. Again, I'll hold off on sending v5 for now and (if no > other problems) happy if this gets done when applied. > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> I didn't want to churn the whole series, so I ended up posting a patch that addressed the issues you mentioned and a few others. It could be squashed into this patch if desired. I'm also happy to re-post this series with that patch squashed in. See: https://lore.kernel.org/r/20200506140208.v2.2.I0a2bca02b09c1fcb6b09479b489736d600b3e57f@changeid
diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt deleted file mode 100644 index 8ec4a7f2623a..000000000000 --- a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.txt +++ /dev/null @@ -1,87 +0,0 @@ -SN65DSI86 DSI to eDP bridge chip --------------------------------- - -This is the binding for Texas Instruments SN65DSI86 bridge. -http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf - -Required properties: -- compatible: Must be "ti,sn65dsi86" -- reg: i2c address of the chip, 0x2d as per datasheet -- enable-gpios: gpio specification for bridge_en pin (active high) - -- vccio-supply: A 1.8V supply that powers up the digital IOs. -- vpll-supply: A 1.8V supply that powers up the displayport PLL. -- vcca-supply: A 1.2V supply that powers up the analog circuits. -- vcc-supply: A 1.2V supply that powers up the digital core. - -Optional properties: -- interrupts-extended: Specifier for the SN65DSI86 interrupt line. - -- gpio-controller: Marks the device has a GPIO controller. -- #gpio-cells : Should be two. The first cell is the pin number and - the second cell is used to specify flags. - See ../../gpio/gpio.txt for more information. -- #pwm-cells : Should be one. See ../../pwm/pwm.yaml for description of - the cell formats. - -- clock-names: should be "refclk" -- clocks: Specification for input reference clock. The reference - clock rate must be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. - -- data-lanes: See ../../media/video-interface.txt -- lane-polarities: See ../../media/video-interface.txt - -- suspend-gpios: specification for GPIO1 pin on bridge (active low) - -Required nodes: -This device has two video ports. Their connections are modelled using the -OF graph bindings specified in Documentation/devicetree/bindings/graph.txt. - -- Video port 0 for DSI input -- Video port 1 for eDP output - -Example -------- - -edp-bridge@2d { - compatible = "ti,sn65dsi86"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x2d>; - - enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; - suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; - - interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; - - vccio-supply = <&pm8916_l17>; - vcca-supply = <&pm8916_l6>; - vpll-supply = <&pm8916_l17>; - vcc-supply = <&pm8916_l6>; - - clock-names = "refclk"; - clocks = <&input_refclk>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - - edp_bridge_in: endpoint { - remote-endpoint = <&dsi_out>; - }; - }; - - port@1 { - reg = <1>; - - edp_bridge_out: endpoint { - data-lanes = <2 1 3 0>; - lane-polarities = <0 1 0 1>; - remote-endpoint = <&edp_panel_in>; - }; - }; - }; -} diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml new file mode 100644 index 000000000000..6d7d40ad45ac --- /dev/null +++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml @@ -0,0 +1,279 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/bridge/ti,sn65dsi86.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SN65DSI86 DSI to eDP bridge chip + +maintainers: + - Sandeep Panda <spanda@codeaurora.org> + +description: | + The Texas Instruments SN65DSI86 bridge takes MIPI DSI in and outputs eDP. + http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=sn65dsi86&fileType=pdf + +properties: + compatible: + const: ti,sn65dsi86 + + reg: + const: 0x2d + + enable-gpios: + maxItems: 1 + description: GPIO specifier for bridge_en pin (active high). + + suspend-gpios: + maxItems: 1 + description: GPIO specifier for GPIO1 pin on bridge (active low). + + vccio-supply: + description: A 1.8V supply that powers the digital IOs. + + vpll-supply: + description: A 1.8V supply that powers the DisplayPort PLL. + + vcca-supply: + description: A 1.2V supply that powers the analog circuits. + + vcc-supply: + description: A 1.2V supply that powers the digital core. + + interrupts: + maxItems: 1 + + clocks: + maxItems: 1 + description: + Clock specifier for input reference clock. The reference clock rate must + be 12 MHz, 19.2 MHz, 26 MHz, 27 MHz or 38.4 MHz. + + clock-names: + const: refclk + + gpio-controller: true + '#gpio-cells': + const: 2 + description: + First cell is pin number, second cell is flags. GPIO pin numbers are + 1-based to match the datasheet. See ../../gpio/gpio.txt for more + information. + + '#pwm-cells': + const: 1 + description: See ../../pwm/pwm.yaml for description of the cell formats. + + ports: + type: object + + properties: + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + port@0: + type: object + additionalProperties: false + + description: + Video port for MIPI DSI input + + properties: + reg: + const: 0 + + endpoint: + type: object + additionalProperties: false + + properties: + remote-endpoint: true + + data-lanes: + minItems: 1 + maxItems: 4 + items: + enum: + - 0 + - 1 + - 2 + - 3 + description: See ../../media/video-interface.txt + + lane-polarities: + minItems: 1 + maxItems: 4 + items: + enum: + - 0 + - 1 + description: See ../../media/video-interface.txt + + dependencies: + data-lanes: [lane-polarities] + + required: + - reg + + port@1: + type: object + additionalProperties: false + + description: + Video port for eDP output (panel or connector). + + properties: + reg: + const: 1 + + endpoint: + type: object + additionalProperties: false + + properties: + remote-endpoint: true + + data-lanes: + minItems: 1 + maxItems: 4 + items: + enum: + - 0 + - 1 + - 2 + - 3 + description: See ../../media/video-interface.txt + + lane-polarities: + minItems: 1 + maxItems: 4 + items: + enum: + - 0 + - 1 + description: See ../../media/video-interface.txt + + dependencies: + data-lanes: [lane-polarities] + + required: + - reg + + required: + - "#address-cells" + - "#size-cells" + - port@0 + - port@1 + +required: + - compatible + - reg + - enable-gpios + - vccio-supply + - vpll-supply + - vcca-supply + - vcc-supply + - ports + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/qcom,rpmh.h> + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + bridge@2d { + compatible = "ti,sn65dsi86"; + reg = <0x2d>; + + interrupt-parent = <&tlmm>; + interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; + + enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>; + + vpll-supply = <&src_pp1800_s4a>; + vccio-supply = <&src_pp1800_s4a>; + vcca-supply = <&src_pp1200_l2a>; + vcc-supply = <&src_pp1200_l2a>; + + clocks = <&rpmhcc RPMH_LN_BB_CLK2>; + clock-names = "refclk"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + + port@1 { + reg = <1>; + endpoint { + remote-endpoint = <&panel_in_edp>; + }; + }; + }; + }; + }; + - | + #include <dt-bindings/clock/qcom,rpmh.h> + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + bridge@2d { + compatible = "ti,sn65dsi86"; + reg = <0x2d>; + + enable-gpios = <&msmgpio 33 GPIO_ACTIVE_HIGH>; + suspend-gpios = <&msmgpio 34 GPIO_ACTIVE_LOW>; + + interrupts-extended = <&gpio3 4 IRQ_TYPE_EDGE_FALLING>; + + vccio-supply = <&pm8916_l17>; + vcca-supply = <&pm8916_l6>; + vpll-supply = <&pm8916_l17>; + vcc-supply = <&pm8916_l6>; + + clock-names = "refclk"; + clocks = <&input_refclk>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + edp_bridge_in: endpoint { + remote-endpoint = <&dsi_out>; + }; + }; + + port@1 { + reg = <1>; + + edp_bridge_out: endpoint { + data-lanes = <2 1 3 0>; + lane-polarities = <0 1 0 1>; + remote-endpoint = <&edp_panel_in>; + }; + }; + }; + }; + };