Message ID | 20190523065404.BB60F68B20@newverein.lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add anx6345 DP/eDP bridge for Olimex Teres-I | expand |
On Wed, May 22, 2019 at 11:54 PM Torsten Duwe <duwe@lst.de> wrote: > > From: Icenowy Zheng <icenowy@aosc.io> > > Teres-I has an anx6345 bridge connected to the RGB666 LCD output, and > the I2C controlling signals are connected to I2C0 bus. eDP output goes > to an Innolux N116BGE panel. > > Enable it in the device tree. > > Signed-off-by: Icenowy Zheng <icenowy@aosc.io> > Signed-off-by: Torsten Duwe <duwe@suse.de> > --- > arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts | 65 +++++++++++++++++-- > 1 file changed, 61 insertions(+), 4 deletions(-) > > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > @@ -65,6 +65,21 @@ > }; > }; > > + panel: panel { > + compatible ="innolux,n116bge", "simple-panel"; IIRC Rob wanted it to be edp-connector, not simple-panel. Also you need to introduce edp-connector binding. > + status = "okay"; > + power-supply = <®_dcdc1>; > + backlight = <&backlight>; > + > + ports { > + panel_in: port { > + panel_in_edp: endpoint { > + remote-endpoint = <&anx6345_out>; > + }; > + }; > + }; > + }; > + > reg_usb1_vbus: usb1-vbus { > compatible = "regulator-fixed"; > regulator-name = "usb1-vbus"; > @@ -81,20 +96,48 @@ > }; > }; > > +&de { > + status = "okay"; > +}; > + > &ehci1 { > status = "okay"; > }; > > > -/* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline) > - * driver for this chip at the moment, the bootloader initializes it. > - * However it can be accessed with the i2c-dev driver from user space. > - */ > &i2c0 { > clock-frequency = <100000>; > pinctrl-names = "default"; > pinctrl-0 = <&i2c0_pins>; > status = "okay"; > + > + anx6345: anx6345@38 { > + compatible = "analogix,anx6345"; > + reg = <0x38>; > + reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ > + dvdd25-supply = <®_dldo2>; > + dvdd12-supply = <®_dldo3>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + anx6345_in: endpoint { > + remote-endpoint = <&tcon0_out_anx6345>; > + }; > + }; > + port@1 { > + anx6345_out: endpoint { > + remote-endpoint = <&panel_in_edp>; > + }; > + }; > + }; > + }; > +}; > + > +&mixer0 { > + status = "okay"; > }; > > &mmc0 { > @@ -279,6 +322,20 @@ > vcc-hdmi-supply = <®_dldo1>; > }; > > +&tcon0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&lcd_rgb666_pins>; > + > + status = "okay"; > +}; > + > +&tcon0_out { > + tcon0_out_anx6345: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&anx6345_in>; > + }; > +}; > + > &uart0 { > pinctrl-names = "default"; > pinctrl-0 = <&uart0_pb_pins>;
On Thu, May 23, 2019 at 07:48:03AM -0700, Vasily Khoruzhick wrote: > On Wed, May 22, 2019 at 11:54 PM Torsten Duwe <duwe@lst.de> wrote: > > > > > > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > > @@ -65,6 +65,21 @@ > > }; > > }; > > > > + panel: panel { > > + compatible ="innolux,n116bge", "simple-panel"; > > IIRC Rob wanted it to be edp-connector, not simple-panel. Also you > need to introduce edp-connector binding. This line is identically found in arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi and arch/arm64/boot/dts/nvidia/tegra132-norrin.dts > > + status = "okay"; > > + power-supply = <®_dcdc1>; > > + backlight = <&backlight>; > > + > > + ports { > > + panel_in: port { > > + panel_in_edp: endpoint { > > + remote-endpoint = <&anx6345_out>; > > + }; > > + }; > > + }; The whole node is the same as in rk3288-veyron-chromebook.dtsi; I only adapted the power-supply and remote-endpoint properties. Is there anything wrong with that? Torsten
On Fri, May 24, 2019 at 02:13:59PM +0200, Torsten Duwe wrote: > On Thu, May 23, 2019 at 07:48:03AM -0700, Vasily Khoruzhick wrote: > > On Wed, May 22, 2019 at 11:54 PM Torsten Duwe <duwe@lst.de> wrote: > > > > > > > > > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts > > > @@ -65,6 +65,21 @@ > > > }; > > > }; > > > > > > + panel: panel { > > > + compatible ="innolux,n116bge", "simple-panel"; > > > > IIRC Rob wanted it to be edp-connector, not simple-panel. Also you > > need to introduce edp-connector binding. > > This line is identically found in > arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi and > arch/arm64/boot/dts/nvidia/tegra132-norrin.dts That's not really an argument though. These are using rather old bindings, and realising that they are flawed and fixing these flaws is a natural process. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts @@ -65,6 +65,21 @@ }; }; + panel: panel { + compatible ="innolux,n116bge", "simple-panel"; + status = "okay"; + power-supply = <®_dcdc1>; + backlight = <&backlight>; + + ports { + panel_in: port { + panel_in_edp: endpoint { + remote-endpoint = <&anx6345_out>; + }; + }; + }; + }; + reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; @@ -81,20 +96,48 @@ }; }; +&de { + status = "okay"; +}; + &ehci1 { status = "okay"; }; -/* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline) - * driver for this chip at the moment, the bootloader initializes it. - * However it can be accessed with the i2c-dev driver from user space. - */ &i2c0 { clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; status = "okay"; + + anx6345: anx6345@38 { + compatible = "analogix,anx6345"; + reg = <0x38>; + reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ + dvdd25-supply = <®_dldo2>; + dvdd12-supply = <®_dldo3>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + anx6345_in: endpoint { + remote-endpoint = <&tcon0_out_anx6345>; + }; + }; + port@1 { + anx6345_out: endpoint { + remote-endpoint = <&panel_in_edp>; + }; + }; + }; + }; +}; + +&mixer0 { + status = "okay"; }; &mmc0 { @@ -279,6 +322,20 @@ vcc-hdmi-supply = <®_dldo1>; }; +&tcon0 { + pinctrl-names = "default"; + pinctrl-0 = <&lcd_rgb666_pins>; + + status = "okay"; +}; + +&tcon0_out { + tcon0_out_anx6345: endpoint@0 { + reg = <0>; + remote-endpoint = <&anx6345_in>; + }; +}; + &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pb_pins>;