Message ID | 1353318187-26484-1-git-send-email-acourbot@nvidia.com |
---|---|
State | Rejected, archived |
Headers | show |
Great. So this means I2C2 is used for LCD and HDMI both. While HDMI is not plugged, the EDID of LCD will be checked out, right? Mark On 11/19/2012 05:43 PM, Alexandre Courbot wrote: > Enable host1x and add the rgb output. > > Also add the power sequence that controls the backlight and panel. The > sequence strictly follows the order and timings of the panel > specification. > > Currently the backlight device controls both backlight and panel, this > needs to be fixed once the panel framework supports power sequences. > > Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> > --- > arch/arm/boot/dts/tegra20-ventana.dts | 108 +++++++++++++++++++++++++++++++++- > 1 file changed, 105 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts > index adc4754..31c9c5c 100644 > --- a/arch/arm/boot/dts/tegra20-ventana.dts > +++ b/arch/arm/boot/dts/tegra20-ventana.dts > @@ -10,6 +10,15 @@ > reg = <0x00000000 0x40000000>; > }; > > + host1x { > + dc@54200000 { > + rgb { > + status = "okay"; > + nvidia,ddc-i2c-bus = <&lcd_ddc>; > + }; > + }; > + }; > + > pinmux { > pinctrl-names = "default"; > pinctrl-0 = <&state_default>; > @@ -341,7 +350,7 @@ > #size-cells = <0>; > }; > > - i2c@1 { > + lcd_ddc: i2c@1 { > reg = <1>; > #address-cells = <1>; > #size-cells = <0>; > @@ -516,6 +525,99 @@ > bus-width = <8>; > }; > > + backlight: backlight { > + compatible = "pwm-backlight"; > + brightness-levels = <0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255>; > + default-brightness-level = <12>; > + > + /* resources used by the power sequences */ > + pwms = <&pwm 2 5000000>; > + pwm-names = "backlight"; > + power-supply = <&vdd_bl_reg>; > + panel-supply = <&vdd_panel_reg>; > + > + power-sequences { > + power-on { > + /* > + * Panel power and LVDS enable. > + * TODO: move into the panel device as soon as > + * panel framework supports power sequences. > + */ > + step0 { > + type = "regulator"; > + id = "panel"; > + enable; > + }; > + step1 { > + type = "gpio"; > + gpio = <&gpio 10 0>; > + value = <1>; > + }; > + step2 { > + type = "delay"; > + delay = <200000>; > + }; > + /* Backlight sequence. This belongs here. */ > + step3 { > + type = "regulator"; > + id = "power"; > + enable; > + }; > + step4 { > + type = "delay"; > + delay = <10000>; > + }; > + step5 { > + type = "pwm"; > + id = "backlight"; > + enable; > + }; > + step6 { > + type = "gpio"; > + gpio = <&gpio 28 0>; > + value = <1>; > + }; > + }; > + > + power-off { > + step0 { > + type = "gpio"; > + gpio = <&gpio 28 0>; > + value = <0>; > + }; > + step1 { > + type = "pwm"; > + id = "backlight"; > + disable; > + }; > + step2 { > + type = "delay"; > + delay = <10000>; > + }; > + step3 { > + type = "regulator"; > + id = "power"; > + disable; > + }; > + /* This also belongs to the panel sequence */ > + step4 { > + type = "delay"; > + delay = <200000>; > + }; > + step5 { > + type = "gpio"; > + gpio = <&gpio 10 0>; > + value = <0>; > + }; > + step6 { > + type = "regulator"; > + id = "panel"; > + disable; > + }; > + }; > + }; > + }; > + > regulators { > compatible = "simple-bus"; > #address-cells = <1>; > @@ -549,7 +651,7 @@ > enable-active-high; > }; > > - regulator@3 { > + vdd_panel_reg: regulator@3 { > compatible = "regulator-fixed"; > reg = <3>; > regulator-name = "vdd_pnl"; > @@ -559,7 +661,7 @@ > enable-active-high; > }; > > - regulator@4 { > + vdd_bl_reg: regulator@4 { > compatible = "regulator-fixed"; > reg = <4>; > regulator-name = "vdd_bl"; > -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday 20 November 2012 09:37:41 Mark Zhang wrote: > Great. So this means I2C2 is used for LCD and HDMI both. While HDMI is > not plugged, the EDID of LCD will be checked out, right? Ahhh. So that's why the LCD DDC was not working during my previous tests - I had HDMI nodes in my DT as well as the HDMI cable plugged! Indeed, things seem to work as you described. I assumed the i2cmux node would set the right pin configuration according to whether we want to read the LCD or HDMI DDC, but apparently this is not totally working yet. Glad we figured it out. Adding the HDMI nodes to Ventana will probably require to fix this (along with other things, probably) first. Alex. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11/19/2012 06:47 PM, Alex Courbot wrote: > On Tuesday 20 November 2012 09:37:41 Mark Zhang wrote: >> Great. So this means I2C2 is used for LCD and HDMI both. While HDMI is >> not plugged, the EDID of LCD will be checked out, right? > > Ahhh. So that's why the LCD DDC was not working during my previous tests - I > had HDMI nodes in my DT as well as the HDMI cable plugged! Indeed, things seem > to work as you described. I assumed the i2cmux node would set the right pin > configuration according to whether we want to read the LCD or HDMI DDC, but > apparently this is not totally working yet. Glad we figured it out. Adding the > HDMI nodes to Ventana will probably require to fix this (along with other > things, probably) first. That is kinda the whole point of the I2C mux... If it really isn't working, can you please investigate why. i2cdump or i2cget would be useful tools for testing this. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday 20 November 2012 13:08:20 Stephen Warren wrote: > On 11/19/2012 06:47 PM, Alex Courbot wrote: > > On Tuesday 20 November 2012 09:37:41 Mark Zhang wrote: > >> Great. So this means I2C2 is used for LCD and HDMI both. While HDMI is > >> not plugged, the EDID of LCD will be checked out, right? > > > > Ahhh. So that's why the LCD DDC was not working during my previous tests - > > I had HDMI nodes in my DT as well as the HDMI cable plugged! Indeed, > > things seem to work as you described. I assumed the i2cmux node would set > > the right pin configuration according to whether we want to read the LCD > > or HDMI DDC, but apparently this is not totally working yet. Glad we > > figured it out. Adding the HDMI nodes to Ventana will probably require to > > fix this (along with other things, probably) first. > > That is kinda the whole point of the I2C mux... If it really isn't > working, can you please investigate why. i2cdump or i2cget would be > useful tools for testing this. Keeping that on my TODO list. By the meantime, better not to add HDMI nodes on Ventana. LCD should work ok with this patch though. Alex. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts index adc4754..31c9c5c 100644 --- a/arch/arm/boot/dts/tegra20-ventana.dts +++ b/arch/arm/boot/dts/tegra20-ventana.dts @@ -10,6 +10,15 @@ reg = <0x00000000 0x40000000>; }; + host1x { + dc@54200000 { + rgb { + status = "okay"; + nvidia,ddc-i2c-bus = <&lcd_ddc>; + }; + }; + }; + pinmux { pinctrl-names = "default"; pinctrl-0 = <&state_default>; @@ -341,7 +350,7 @@ #size-cells = <0>; }; - i2c@1 { + lcd_ddc: i2c@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; @@ -516,6 +525,99 @@ bus-width = <8>; }; + backlight: backlight { + compatible = "pwm-backlight"; + brightness-levels = <0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255>; + default-brightness-level = <12>; + + /* resources used by the power sequences */ + pwms = <&pwm 2 5000000>; + pwm-names = "backlight"; + power-supply = <&vdd_bl_reg>; + panel-supply = <&vdd_panel_reg>; + + power-sequences { + power-on { + /* + * Panel power and LVDS enable. + * TODO: move into the panel device as soon as + * panel framework supports power sequences. + */ + step0 { + type = "regulator"; + id = "panel"; + enable; + }; + step1 { + type = "gpio"; + gpio = <&gpio 10 0>; + value = <1>; + }; + step2 { + type = "delay"; + delay = <200000>; + }; + /* Backlight sequence. This belongs here. */ + step3 { + type = "regulator"; + id = "power"; + enable; + }; + step4 { + type = "delay"; + delay = <10000>; + }; + step5 { + type = "pwm"; + id = "backlight"; + enable; + }; + step6 { + type = "gpio"; + gpio = <&gpio 28 0>; + value = <1>; + }; + }; + + power-off { + step0 { + type = "gpio"; + gpio = <&gpio 28 0>; + value = <0>; + }; + step1 { + type = "pwm"; + id = "backlight"; + disable; + }; + step2 { + type = "delay"; + delay = <10000>; + }; + step3 { + type = "regulator"; + id = "power"; + disable; + }; + /* This also belongs to the panel sequence */ + step4 { + type = "delay"; + delay = <200000>; + }; + step5 { + type = "gpio"; + gpio = <&gpio 10 0>; + value = <0>; + }; + step6 { + type = "regulator"; + id = "panel"; + disable; + }; + }; + }; + }; + regulators { compatible = "simple-bus"; #address-cells = <1>; @@ -549,7 +651,7 @@ enable-active-high; }; - regulator@3 { + vdd_panel_reg: regulator@3 { compatible = "regulator-fixed"; reg = <3>; regulator-name = "vdd_pnl"; @@ -559,7 +661,7 @@ enable-active-high; }; - regulator@4 { + vdd_bl_reg: regulator@4 { compatible = "regulator-fixed"; reg = <4>; regulator-name = "vdd_bl";
Enable host1x and add the rgb output. Also add the power sequence that controls the backlight and panel. The sequence strictly follows the order and timings of the panel specification. Currently the backlight device controls both backlight and panel, this needs to be fixed once the panel framework supports power sequences. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> --- arch/arm/boot/dts/tegra20-ventana.dts | 108 +++++++++++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 3 deletions(-)