Hi Pekon, I had some issues with this patch. Booting linux-next on a BeagleBone Black with this exact LCD left me with an unusable white screen. Please see below for some details. On Tue, Jun 24, 2014 at 05:54:26PM +0530, Pekon Gupta wrote: > This patch adds support for LCD4 cape as advertised on > http://elinux.org/CircuitCo:BeagleBone_LCD4 > > This cape has: > * 480x272 TFT-LCD panel > - LCD panel datasheet and timing information are sourced from [1] > - LCD backlight is connected to 'EHRPWM1A' on cape board, but its used for > enabling backlight power-supply. So 'gpio-backlight' driver is used instead > of 'pwm-backlight' driver (Kconfig: BACKLIGHT_GPIO=y). > > * 4-wire resistive Touchscreen > > *Known constrains* > As LCD panel pins (lcd_data, hsync, vsync, pclk) are shared with on-board > NXP HDMI framer, so either HDMI or LCD-cape can be used at time. Thus while > using this cape 'hdmi' DT node needs to be disabled in am335x-boneblack.dts > > [1] www.newhavendisplay.com/specs/NHD-4.3-480272MF-ATXI-T-1.pdf > www.newhavendisplay.com/app_notes/OTA5180A.pdf > > Signed-off-by: Pekon Gupta <pekon@xxxxxx> > --- > arch/arm/boot/dts/am335x-bone-display-cape.dts | 104 +++++++++++++++++++++++++ > arch/arm/boot/dts/am335x-bone.dts | 1 + > arch/arm/boot/dts/am335x-boneblack.dts | 1 + > 3 files changed, 106 insertions(+) > create mode 100644 arch/arm/boot/dts/am335x-bone-display-cape.dts > > diff --git a/arch/arm/boot/dts/am335x-bone-display-cape.dts b/arch/arm/boot/dts/am335x-bone-display-cape.dts > new file mode 100644 > index 0000000..f3b7cef > --- /dev/null > +++ b/arch/arm/boot/dts/am335x-bone-display-cape.dts > @@ -0,0 +1,104 @@ > +/* > + * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This DTS adds supports for display capes using LCD interface for display > + * and GPIO or PWM interface for backlight controls. > + */ > + > + > +&am33xx_pinmux { > + bbcape_backlight_pins: bbcape_backlight_pins { > + pinctrl-single,pins = < > + 0x48 (PIN_OUTPUT | MUX_MODE7) /* gpmc_a[2].GPIO1[18] (backlight control) */ > + >; > + }; > + > + bbcape_lcd_pins: bbcape_lcd_pins { > + pinctrl-single,pins = < > + 0xa0 (PIN_OUTPUT | MUX_MODE0) /* lcd_data0.lcd_data0 */ > + 0xa4 (PIN_OUTPUT | MUX_MODE0) /* lcd_data1.lcd_data1 */ > + 0xa8 (PIN_OUTPUT | MUX_MODE0) /* lcd_data2.lcd_data2 */ > + 0xac (PIN_OUTPUT | MUX_MODE0) /* lcd_data3.lcd_data3 */ > + 0xb0 (PIN_OUTPUT | MUX_MODE0) /* lcd_data4.lcd_data4 */ > + 0xb4 (PIN_OUTPUT | MUX_MODE0) /* lcd_data5.lcd_data5 */ > + 0xb8 (PIN_OUTPUT | MUX_MODE0) /* lcd_data6.lcd_data6 */ > + 0xbc (PIN_OUTPUT | MUX_MODE0) /* lcd_data7.lcd_data7 */ > + 0xc0 (PIN_OUTPUT | MUX_MODE0) /* lcd_data8.lcd_data8 */ > + 0xc4 (PIN_OUTPUT | MUX_MODE0) /* lcd_data9.lcd_data9 */ > + 0xc8 (PIN_OUTPUT | MUX_MODE0) /* lcd_data10.lcd_data10 */ > + 0xcc (PIN_OUTPUT | MUX_MODE0) /* lcd_data11.lcd_data11 */ > + 0xd0 (PIN_OUTPUT | MUX_MODE0) /* lcd_data12.lcd_data12 */ > + 0xd4 (PIN_OUTPUT | MUX_MODE0) /* lcd_data13.lcd_data13 */ > + 0xd8 (PIN_OUTPUT | MUX_MODE0) /* lcd_data14.lcd_data14 */ > + 0xdc (PIN_OUTPUT | MUX_MODE0) /* lcd_data15.lcd_data15 */ > + 0xe0 (PIN_OUTPUT | MUX_MODE0) /* lcd_vsync.lcd_vsync */ > + 0xe4 (PIN_OUTPUT | MUX_MODE0) /* lcd_hsync.lcd_hsync */ > + 0xe8 (PIN_OUTPUT | MUX_MODE0) /* lcd_pclk.lcd_pclk */ > + 0xec (PIN_OUTPUT | MUX_MODE0) /* lcd_ac_bias_en.lcd_ac_bias_en (lcd_en) */ > + 0x1a4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcasp0_fsr.gpio3[19] (lcd_disen) */ > + >; > + }; > + > + bbcape_touchscreen_pins: bbcape_touchscreen_pins { > + pinctrl-single,pins = < > + 0x184 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* uart1_txd.gpio0[15] (enter) */ > + 0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_a0.gpio1[16] (left) */ > + 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_a1.gpio1[17] (right) */ > + 0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_a3.gpio1[19] (up) */ > + 0x198 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mcasp0_axr0.gpio3[16] (down) */ > + >; > + }; > +}; > + > + > +/ { > + backlight { > + status = "disabled"; > + compatible = "gpio-backlight"; > + pinctrl-names = "default"; > + pinctrl-0 = <&bbcape_backlight_pins>; > + gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>; > + default-on; > + }; > + > + panel { > + status = "disabled"; > + compatible = "ti,tilcdc,panel"; > + pinctrl-names = "default"; > + pinctrl-0 = <&bbcape_lcd_pins>; > + panel-info { > + ac-bias = <255>; > + ac-bias-intrpt = <0>; > + dma-burst-sz = <16>; > + bpp = <16>; > + fdd = <0x80>; > + sync-edge = <0>; > + sync-ctrl = <0>; I had to set this to <1>. Does that make sense? > + raster-order = <0>; > + fifo-th = <0>; > + }; > + display-timings { > + native-mode = <&timing0>; > + /* www.newhavendisplay.com/app_notes/OTA5180A.pdf */ > + timing0: 480x272 { > + clock-frequency = <30000000>; > + hactive = <480>; > + vactive = <272>; > + hfront-porch = <8>; > + hback-porch = <47>; > + hsync-len = <41>; > + vback-porch = <2>; > + vfront-porch = <3>; > + vsync-len = <10>; > + hsync-active = <0>; > + vsync-active = <0>; > + de-active = <1>; > + pixelclk-active = <0>; Are you sure these timings are ok? When enabling the sync control I get an usable display, but it looks a bit funny. For example an all black display looks very clear and has a dotted pattern. I tried to take a picture of it but it doesn't show. Also I'm just guessing about the timings, maybe it's something else? > + }; > + }; > + }; > +}; > diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts > index f16bfcf..41439dc 100644 > --- a/arch/arm/boot/dts/am335x-bone.dts > +++ b/arch/arm/boot/dts/am335x-bone.dts > @@ -10,6 +10,7 @@ > #include "am33xx.dtsi" > #include "am335x-bone-common.dtsi" > #include "am335x-bone-memory-cape.dts" > +#include "am335x-bone-display-cape.dts" > > &ldo3_reg { > regulator-min-microvolt = <1800000>; > diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts > index e6d7e54..03232c7 100644 > --- a/arch/arm/boot/dts/am335x-boneblack.dts > +++ b/arch/arm/boot/dts/am335x-boneblack.dts > @@ -10,6 +10,7 @@ > #include "am33xx.dtsi" > #include "am335x-bone-common.dtsi" > #include "am335x-bone-memory-cape.dts" > +#include "am335x-bone-display-cape.dts" > > &ldo3_reg { > regulator-min-microvolt = <1800000>; > -- > 1.8.5.1.163.gd7aced9 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Guido Martínez, VanguardiaSur www.vanguardiasur.com.ar -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html