From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v1 2/7] dt-binding: add bindings for Atmel LCDC mfd Date: Fri, 24 Aug 2018 10:45:17 +0200 Message-ID: <20180824104517.29f24f44@bbrezillon> References: <20180812184152.GA22343@ravnborg.org> <20180812184629.3808-2-sam@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180812184629.3808-2-sam@ravnborg.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sam Ravnborg Cc: Mark Rutland , devicetree@vger.kernel.org, Alexandre Belloni , linux-pwm@vger.kernel.org, Boris Brezillon , Nicolas Ferre , dri-devel@lists.freedesktop.org, Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org List-Id: linux-pwm@vger.kernel.org T24gU3VuLCAxMiBBdWcgMjAxOCAyMDo0NjoyNCArMDIwMApTYW0gUmF2bmJvcmcgPHNhbUByYXZu Ym9yZy5vcmc+IHdyb3RlOgoKPiBUaGUgTENEQyBJUCB1c2VkIGJ5IHNvbWUgQXRtZWwgU09DJ3Mg aGF2ZSBhCj4gbXVsdGlmdW5jdGlvbiBkZXZpY2UgdGhhdCBpbmNsdWRlIHR3byBzdWItZGV2aWNl czoKPiAtIHB3bQo+IC0gZGlzcGxheSBjb250cm9sbGVyCj4gCj4gVGhpcyBiaW5kaW5nIGRlc2Ny aWJlIHRoZSBtdWx0aSBmdW5jdGlvbiBkZXZpY2UKPiB0aGF0IGFjdCBhcyByb290IGZvciB0aGUg c3ViLWRldmljZXMKPiAKPiBUaGUgQXRtZWwgU09DJ3MgYXJlIGF0OTFzYW05IGV0Yy4KPiAKPiBU aGUgY29tcGF0aWJsZSBuYW1lIGlzIGludGVudGlvbmFsbHkKPiBwcmVmaXhlZCB3aXRoIC1tZmQg dG8gYXZvaWQgY2xhc2ggd2l0aCBleGlzdGluZwo+IGNvbXBhdGlibGUgZW50cmllcy4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+Cj4gQ2M6IExlZSBK b25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+Cj4gQ2M6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMu YnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4KPiAtLS0KPiAgLi4uL2RldmljZXRyZWUvYmlu ZGluZ3MvbWZkL2F0bWVsLWxjZGMudHh0ICAgICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysr KysrCj4gIDEgZmlsZSBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLWxjZGMudHh0 Cj4gCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQv YXRtZWwtbGNkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0 bWVsLWxjZGMudHh0Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAu LjcwZTliN2JkYTZjNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLWxjZGMudHh0Cj4gQEAgLTAsMCArMSw3NSBAQAo+ICtE ZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgQXRtZWwncyBMQ0RDIChMQ0QgQ29udHJvbGxlcikgTUZE IGRyaXZlcgo+ICsKPiArUmVxdWlyZWQgcHJvcGVydGllczoKPiArIC0gY29tcGF0aWJsZTogdmFs dWUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgo+ICsgICAiYXRtZWwsYXQ5MXNhbTky NjEtbGNkYy1tZmQiCj4gKyAgICJhdG1lbCxhdDkxc2FtOTI2My1sY2RjLW1mZCIKPiArICAgImF0 bWVsLGF0OTFzYW05ZzEwLWxjZGMtbWZkIgo+ICsgICAiYXRtZWwsYXQ5MXNhbTlnNDUtbGNkYy1t ZmQiCj4gKyAgICJhdG1lbCxhdDkxc2FtOWc0Ni1sY2RjLW1mZCIKPiArICAgImF0bWVsLGF0OTFz YW05bTEwLWxjZGMtbWZkIgo+ICsgICAiYXRtZWwsYXQ5MXNhbTltMTEtbGNkYy1tZmQiCj4gKyAg ICJhdG1lbCxhdDkxc2FtOXJsLWxjZGMtbWZkIgoKSSdtIHByZXR0eSBzdXJlIHdlIGRvbid0IHdh bnQgdGhlIC1tZmQgc3VmZml4IGluIHRoZSBjb21wYXRpYmxlLiBJIGtub3cKaXQncyBoZXJlIHRv IGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgb2xkIGJpbmRpbmcsIHNvIG1heWJlIHdlIGNhbiBmaW5k Cm5hbWUuCgo+ICsgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgTENEQyBkZXZp Y2UgcmVnaXN0ZXJzLgo+ICsgLSBjbG9jay1uYW1lczogdGhlIG5hbWUgb2YgdGhlIDIgY2xvY2tz IHJlcXVlc3RlZCBieSB0aGUgTENEQyBkZXZpY2UuCj4gKyAgIFNob3VsZCBjb250YWluICJsY2Rj X2NsayIsIGFuZCAiaGNsayIuCj4gKyAtIGNsb2Nrczogc2hvdWxkIGNvbnRhaW4gdGhlIDIgY2xv Y2tzIHJlcXVlc3RlZCBieSB0aGUgTENEQyBkZXZpY2UuCj4gKwkgICBNYXkgc3BlY2lmeSB0aGUg c2FtZSBjbG9jayB0d2ljZSBpcyB0aGVyZSBpcyBubyBuZWVkIHRvIGVuYWJsZQo+ICsJICAgImhj bGsiIHRvIHVzZSB0aGUgZGlzcGxheS4KPiArIC0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4g dGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBMQ0RDIGludGVycnVwdCBsaW5lCj4gKwo+ICtUaGUgTENE QyBJUCBleHBvc2VzIHR3byBzdWJkZXZpY2VzOgo+ICsgLSBhIFBXTSBjaGlwOiBzZWUgLi4vcHdt L2F0bWVsLWxjZGMtcHdtLnR4dAo+ICsgLSBhIERpc3BsYXkgQ29udHJvbGxlcjogc2VlIC4uL2Rp c3BsYXkvYXRtZWwvbGNkYy1kaXNwbGF5LWNvbnRyb2xsZXIudHh0Cj4gKwo+ICtFeGFtcGxlOgo+ ICsJbGNkYzA6IGxjZGNANzAwMDAwIHsKPiArCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05 MjYzLWxjZGMtbWZkIjsKPiArCQlyZWcgPSA8MHg3MDAwMDAgMHgxMDAwPjsKPiArCQlpbnRlcnJ1 cHRzID0gPDI2IElSUV9UWVBFX0xFVkVMX0hJR0ggMz47Cj4gKwkJY2xvY2tzID0gPCZsY2RfY2xr PiwgPCZsY2RfY2xrPjsKPiArCQljbG9jay1uYW1lcyA9ICJsY2RjX2NsayIsICJoY2xrIjsKPiAr Cj4gKwkJbGNkYy1kaXNwbGF5LWNvbnRyb2xsZXIgewo+ICsJCQljb21wYXRpYmxlID0gImF0bWVs LGxjZGMtZGlzcGxheS1jb250cm9sbGVyIjsKPiArCQkJbGNkLXN1cHBseSA9IDwmbGNkY19yZWc+ Owo+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4g Kwo+ICsJCQlwb3J0QDAgewo+ICsJCQkJcmVnID0gPDA+Owo+ICsJCQkJI2FkZHJlc3MtY2VsbHMg PSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiArCQkJCWxjZGNfcGFuZWxfb3V0cHV0 OiBlbmRwb2ludEAwIHsKPiArCQkJCQlyZWcgPSA8MD47Cj4gKwkJCQkJcmVtb3RlLWVuZHBvaW50 ID0gPCZwYW5lbF9pbnB1dD47Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsJCX07Cj4gKwo+ICsJCWxj ZGNfcHdtOiBsY2RjLXB3bSB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiYXRtZWwsbGNkYy1wd20iOwo+ ICsJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ICsJCQlwaW5jdHJsLTAgPSA8JnBpbmN0 cmxfbGNkY19wd20+Owo+ICsJCQkjcHdtLWNlbGxzID0gPDM+Owo+ICsJCX07Cj4gKwo+ICsJfTsK CkFsc28sIEkgZG9uJ3QgcmVtZW1iZXIgd2h5IEkgZGVjaWRlZCB0byBkZWNsYXJlIGRpc3RpbmN0 IG5vZGVzIGZvciB0aGUKUFdNIGFuZCBkaXNwbGF5IGNvbnRyb2xsZXIsIGJ1dCB5b3Ugc2hvdWxk IHByb2JhYmx5IHRyeSB0byBvbmx5IGRlY2xhcmUKdGhlIGxjZGMgbm9kZS4gU29tZXRoaW5nIGxp a2UgdGhhdDoKCglsY2RjMDogbGNkY0A3MDAwMDAgewoJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5 MXNhbTkyNjMtbGNkYyI7CgkJcmVnID0gPDB4NzAwMDAwIDB4MTAwMD47CgkJaW50ZXJydXB0cyA9 IDwyNiBJUlFfVFlQRV9MRVZFTF9ISUdIIDM+OwoJCWNsb2NrcyA9IDwmbGNkX2Nsaz4sIDwmbGNk X2Nsaz47CgkJY2xvY2stbmFtZXMgPSAibGNkY19jbGsiLCAiaGNsayI7CgkJcGluY3RybC1uYW1l cyA9ICJkZWZhdWx0IjsKCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbGNkY19wd20gLi4uPjsKCQkj cHdtLWNlbGxzID0gPDM+OwoJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwoJCSNzaXplLWNlbGxzID0g PDA+OwoKCQlwb3J0QDAgewoJCQlyZWcgPSA8MD47CgkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwoJ CQkjc2l6ZS1jZWxscyA9IDwwPjsKCQkJbGNkY19wYW5lbF9vdXRwdXQ6IGVuZHBvaW50QDAgewoJ CQkJcmVnID0gPDA+OwoJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbnB1dD47CgkJCX07 CgkJfTsKCX07CgpOb3RlIHRoYXQgdGhpcyByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBwcmV2ZW50 IHVzIGZyb20gaGF2aW5nIGFuIE1GRAp3aGljaCBkZWNsYXJlcyB0aGUgUFdNIGFuZCBEaXNwbGF5 IEVuZ2luZSwgaXQncyBqdXN0IHRoYXQgYWxsIGRldnMgd2lsbApwb2ludCB0byB0aGUgc2FtZSBv Zl9ub2RlLgoKPiArCj4gKwkJbGNkYy1kaXNwbGF5LWNvbnRyb2xsZXIgewo+ICsJCQljb21wYXRp YmxlID0gImF0bWVsLGxjZGMtZGlzcGxheS1jb250cm9sbGVyIjsKPiArCQkJbGNkLXN1cHBseSA9 IDwmbGNkY19yZWc+OwoKSG0sIGlzIHRoaXMgYSByZWd1bGF0b3IgZm9yIHRoZSBMQ0QgY29udHJv bGxlciBvciB0aGUgTENEPyBJZiBpdCdzIGZvcgp0aGUgTENEIGl0IHNob3VsZCBiZSBwbGFjZWQg dW5kZXIgdGhlIHBhbmVsIG5vZGUuCgo+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkJ I3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ICsJCQlwb3J0QDAgewo+ICsJCQkJcmVnID0gPDA+Owo+ ICsJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiAr CQkJCWxjZGNfcGFuZWxfb3V0cHV0OiBlbmRwb2ludEAwIHsKPiArCQkJCQlyZWcgPSA8MD47Cj4g KwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbnB1dD47Cj4gKwkJCQl9Owo+ICsJCQl9 Owo+ICsJCX07Cj4gKwo+ICsJCWxjZGNfcHdtOiBsY2RjLXB3bSB7Cj4gKwkJCWNvbXBhdGlibGUg PSAiYXRtZWwsbGNkYy1wd20iOwo+ICsJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ICsJ CQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbGNkY19wd20+Owo+ICsJCQkjcHdtLWNlbGxzID0gPDM+ Owo+ICsJCX07Cj4gKwo+ICsJfTsKCj4gKwo+ICsJcGFuZWw6IHBhbmVsIHsKPiArCQljb21wYXRp YmxlID0gImxvZ2ljdGVjaG5vbG9naWVzLGx0dGQ4MDA0ODAwNzAtbDJydCIsICJzaW1wbGUtcGFu ZWwiOwo+ICsJCWJhY2tsaWdodCA9IDwmYmFja2xpZ2h0PjsKPiArCQlwb3dlci1zdXBwbHkgPSA8 JnBhbmVsX3JlZz47Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJI3NpemUtY2VsbHMg PSA8MD47Cj4gKwo+ICsJCXBvcnRAMCB7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJ CQkjc2l6ZS1jZWxscyA9IDwwPjsKPiArCj4gKwkJCXBhbmVsX2lucHV0OiBlbmRwb2ludEAwIHsK PiArCQkJCXJlZyA9IDwwPjsKPiArCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmbGNkY19wYW5lbF9v dXRwdXQ+Owo+ICsJCQl9Owo+ICsJCX07Cj4gKwl9OwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: boris.brezillon@bootlin.com (Boris Brezillon) Date: Fri, 24 Aug 2018 10:45:17 +0200 Subject: [PATCH v1 2/7] dt-binding: add bindings for Atmel LCDC mfd In-Reply-To: <20180812184629.3808-2-sam@ravnborg.org> References: <20180812184152.GA22343@ravnborg.org> <20180812184629.3808-2-sam@ravnborg.org> Message-ID: <20180824104517.29f24f44@bbrezillon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Sun, 12 Aug 2018 20:46:24 +0200 Sam Ravnborg wrote: > The LCDC IP used by some Atmel SOC's have a > multifunction device that include two sub-devices: > - pwm > - display controller > > This binding describe the multi function device > that act as root for the sub-devices > > The Atmel SOC's are at91sam9 etc. > > The compatible name is intentionally > prefixed with -mfd to avoid clash with existing > compatible entries. > > Signed-off-by: Sam Ravnborg > Cc: Lee Jones > Cc: Boris Brezillon > --- > .../devicetree/bindings/mfd/atmel-lcdc.txt | 75 ++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/atmel-lcdc.txt > > diff --git a/Documentation/devicetree/bindings/mfd/atmel-lcdc.txt b/Documentation/devicetree/bindings/mfd/atmel-lcdc.txt > new file mode 100644 > index 000000000000..70e9b7bda6c7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/atmel-lcdc.txt > @@ -0,0 +1,75 @@ > +Device-Tree bindings for Atmel's LCDC (LCD Controller) MFD driver > + > +Required properties: > + - compatible: value should be one of the following: > + "atmel,at91sam9261-lcdc-mfd" > + "atmel,at91sam9263-lcdc-mfd" > + "atmel,at91sam9g10-lcdc-mfd" > + "atmel,at91sam9g45-lcdc-mfd" > + "atmel,at91sam9g46-lcdc-mfd" > + "atmel,at91sam9m10-lcdc-mfd" > + "atmel,at91sam9m11-lcdc-mfd" > + "atmel,at91sam9rl-lcdc-mfd" I'm pretty sure we don't want the -mfd suffix in the compatible. I know it's here to avoid clashes with the old binding, so maybe we can find name. > + - reg: base address and size of the LCDC device registers. > + - clock-names: the name of the 2 clocks requested by the LCDC device. > + Should contain "lcdc_clk", and "hclk". > + - clocks: should contain the 2 clocks requested by the LCDC device. > + May specify the same clock twice is there is no need to enable > + "hclk" to use the display. > + - interrupts: should contain the description of the LCDC interrupt line > + > +The LCDC IP exposes two subdevices: > + - a PWM chip: see ../pwm/atmel-lcdc-pwm.txt > + - a Display Controller: see ../display/atmel/lcdc-display-controller.txt > + > +Example: > + lcdc0: lcdc at 700000 { > + compatible = "atmel,at91sam9263-lcdc-mfd"; > + reg = <0x700000 0x1000>; > + interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>; > + clocks = <&lcd_clk>, <&lcd_clk>; > + clock-names = "lcdc_clk", "hclk"; > + > + lcdc-display-controller { > + compatible = "atmel,lcdc-display-controller"; > + lcd-supply = <&lcdc_reg>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + port at 0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + lcdc_panel_output: endpoint at 0 { > + reg = <0>; > + remote-endpoint = <&panel_input>; > + }; > + }; > + }; > + > + lcdc_pwm: lcdc-pwm { > + compatible = "atmel,lcdc-pwm"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_lcdc_pwm>; > + #pwm-cells = <3>; > + }; > + > + }; Also, I don't remember why I decided to declare distinct nodes for the PWM and display controller, but you should probably try to only declare the lcdc node. Something like that: lcdc0: lcdc at 700000 { compatible = "atmel,at91sam9263-lcdc"; reg = <0x700000 0x1000>; interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>; clocks = <&lcd_clk>, <&lcd_clk>; clock-names = "lcdc_clk", "hclk"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lcdc_pwm ...>; #pwm-cells = <3>; #address-cells = <1>; #size-cells = <0>; port at 0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; lcdc_panel_output: endpoint at 0 { reg = <0>; remote-endpoint = <&panel_input>; }; }; }; Note that this representation does not prevent us from having an MFD which declares the PWM and Display Engine, it's just that all devs will point to the same of_node. > + > + lcdc-display-controller { > + compatible = "atmel,lcdc-display-controller"; > + lcd-supply = <&lcdc_reg>; Hm, is this a regulator for the LCD controller or the LCD? If it's for the LCD it should be placed under the panel node. > + #address-cells = <1>; > + #size-cells = <0>; > + > + port at 0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + lcdc_panel_output: endpoint at 0 { > + reg = <0>; > + remote-endpoint = <&panel_input>; > + }; > + }; > + }; > + > + lcdc_pwm: lcdc-pwm { > + compatible = "atmel,lcdc-pwm"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_lcdc_pwm>; > + #pwm-cells = <3>; > + }; > + > + }; > + > + panel: panel { > + compatible = "logictechnologies,lttd800480070-l2rt", "simple-panel"; > + backlight = <&backlight>; > + power-supply = <&panel_reg>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + port at 0 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + panel_input: endpoint at 0 { > + reg = <0>; > + remote-endpoint = <&lcdc_panel_output>; > + }; > + }; > + };