Hello,
I'm trying to wire a touchscreen lcd to the BBB.
The lcd appears to be working great, biggest trouble I'm having is with 
touch.

Main problem I'm having, I load my device tree file that enables lcd/touch. 
 I can cat 
out /dev/input/touchscreen0 or /dev/input/event1 and see data when tapping 
the lcd, as expected.  It gets weird when I run ts_calibrate.  The results 
of ts_calibrate seem to vary with each try.  Sometimes it might finish, 
most times it just freezes, sometimes the order of the touch corners will 
vary(appears to get false touch events).

It in the chance it seemed to finish, I run ts_test and it will work good 
for a few seconds and then freeze.

In all cases after I have problems with either ts_calibrate/ts_test, when I 
try to cat out /dev/input/touchscreen0/event1, 
it appears dead(i've checked to ensure no ts* utils were still running). 
 Data no longer is coming out.  So its looking like the ts utils kills the 
touchscreen after a very short period of usage, a few seconds.  By just 
catting out the device (before running any ts utils) I can tap the screen 
all day and see data coming out.

The only way to restore it, is reboot and reload the device tree.

I'm mapping the following pins for touch:
AIN0 - left
AIN1 - right
AIN2 - down
AIN3 - up
Its just pin to pin connections.  I believe I had the same touchscreen 
working on BB, and earlier with the BBB on 3.2.  And I thought I had 
everything working on the BBB 3.8 kernel, but i'm beginning to doubt my 
memory...

I've tried building kernel/rootfs with Angstrom, I've tried Robert Nelsons 
guide both debian/ubuntu, all 
seems to show the same issue.  

I've been going back and forth trying to determine if it is kernel, 
hardware (wiring), possibly device tree related, or some rootfs issue (ts 
utils problem).   

I'm coping the device tree file I've pieced together below.  Any 
suggestions would be greatly appreciated.



 * Copyright (C) 2012 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.
 */
/dts-v1/;
/plugin/;

/ {
compatible = "ti,beaglebone-black";

/* identification */
part-number = "DEMO-LCD";
version = "00A0";

/* state the resources this cape uses */
exclusive-use =
/* ----- LCD ------- */
"P8.45", /* lcd: lcd_data0 */
"P8.46", /* lcd: lcd_data1 */
"P8.43", /* lcd: lcd_data2 */
"P8.44", /* lcd: lcd_data3 */
"P8.41", /* lcd: lcd_data4 */
"P8.42", /* lcd: lcd_data5 */
"P8.39", /* lcd: lcd_data6 */
"P8.40", /* lcd: lcd_data7 */
"P8.37", /* lcd: lcd_data8 */
"P8.38", /* lcd: lcd_data9 */
"P8.36", /* lcd: lcd_data10 */
"P8.34", /* lcd: lcd_data11 */
"P8.35", /* lcd: lcd_data12 */
"P8.33", /* lcd: lcd_data13 */
"P8.31", /* lcd: lcd_data14 */
"P8.32", /* lcd: lcd_data15 */


"P8.27", /* lcd: lcd_vsync */
"P8.29", /* lcd: lcd_hsync */
"P8.28", /* lcd: lcd_pclk */
"P8.30", /* lcd: lcd_ac_bias_en */
"P9.14", /* bl: ehrpwm1a */
                "lcd",
                "ehrpwm1a",  
        "tscadc";

fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {

pwm_bl_pins: pinmux_pwm_bl_pins {
                               pinctrl-single,pins = < 
                                        0x48 0x06       /* 
gpmc_a2.ehrpwm1a, OMAP_MUX_MODE6 | AM33XX_PIN_OUTPUT */
                               >;  
                        };  
demo_lcd_pins: pinmux_demo_lcd_pins {
pinctrl-single,pins = <
0xa0 0x08 /* lcd_data0.lcd_data0, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xa4 0x08 /* lcd_data1.lcd_data1, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xa8 0x08 /* lcd_data2.lcd_data2, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xac 0x08 /* lcd_data3.lcd_data3, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xb0 0x08 /* lcd_data4.lcd_data4, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xb4 0x08 /* lcd_data5.lcd_data5, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xb8 0x08 /* lcd_data6.lcd_data6, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xbc 0x08 /* lcd_data7.lcd_data7, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xc0 0x08 /* lcd_data8.lcd_data8, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xc4 0x08 /* lcd_data9.lcd_data9, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xc8 0x08 /* lcd_data10.lcd_data10, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xcc 0x08 /* lcd_data11.lcd_data11, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xd0 0x08 /* lcd_data12.lcd_data12, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xd4 0x08 /* lcd_data13.lcd_data13, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xd8 0x08 /* lcd_data14.lcd_data14, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
0xdc 0x08 /* lcd_data15.lcd_data15, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | 
AM33XX_PULL_DISA */
// -----
0xe0 0x00 /* lcd_vsync.lcd_vsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
0xe4 0x00 /* lcd_hsync.lcd_hsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
0xe8 0x00 /* lcd_pclk.lcd_pclk, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
0xec 0x00 /* lcd_ac_bias_en.lcd_ac_bias_en, OMAP_MUX_MODE0 | 
AM33XX_PIN_OUTPUT */
>;
};
};
};

fragment@1 {
target = <&epwmss1>;
__overlay__ {
status = "okay";
};
};

fragment@2 {
target = <&ehrpwm1>;
__overlay__ {
status = "okay";
};
};

fragment@3 {
target = <&ocp>;

__overlay__ {

/* avoid stupid warning */
#address-cells = <1>;
#size-cells = <1>;

backlight {
compatible      = "pwm-backlight";
  pinctrl-names   = "default";
pinctrl-0       = <&pwm_bl_pins>;
status = "okay";

pwms = <&ehrpwm1 0 500000 0>;
pwm-names = "lcd";
brightness-levels = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 
96 97 98 99 100>;
default-brightness-level = <100>; /* index to the array above */
  };

tscadc {
                                compatible = "ti,ti-tscadc";
                                status = "okay";

                                reg = <0x44e0d000 0x1000>;
                                interrupt-parent = <&intc>;
                                interrupts = <16>;
                                ti,hwmods = "adc_tsc";
                                tsc {
                                        ti,wires = <4>;
                                        ti,x-plate-resistance = <200>;
                                        ti,coordinate-readouts = <5>;
                                        ti,wire-config = <0x00 0x11 0x22 
0x33>;
                                };

                                adc {
                                        //ti,adc-channels = <0 1 2 3 4 5 6 
7>;
                                        ti,adc-channels = <4 5 6 7>;
                                        //ti,adc-channels = <4>;
                                        //ti,adc-channels = <8>;
                                };
                        };


panel {
compatible = "tilcdc,panel";
pinctrl-names = "default";
pinctrl-0 = <&demo_lcd_pins>;
panel-info {
ac-bias           = <255>;
ac-bias-intrpt    = <0>;
dma-burst-sz      = <16>;
bpp               = <16>;
fdd               = <0x80>;
tft-alt-mode      = <0>;
stn-565-mode      = <0>;
mono-8bit-mode    = <0>;
sync-edge         = <0>;
sync-ctrl         = <1>;
raster-order      = <0>;
fifo-th           = <0>;
invert-pxl-clk;
};

display-timings {
native-mode = <&timing0>;
timing0: 640x480-63 {
hactive         = <640>;
vactive         = <480>;
hback-porch     = <46>;
hfront-porch    = <97>;
hsync-len       = <2>;
vback-porch     = <33>;
vfront-porch    = <11>;
vsync-len       = <2>;
clock-frequency = <40000000>;
hsync-active    = <1>;
vsync-active    = <0>;
};
};
};

fb {
compatible = "ti,am33xx-tilcdc";
//compatible = "ti,da830-lcdc";
reg = <0x4830e000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <36>;
ti,hwmods = "lcdc";
//ti,power-gpio = <&gpio1 2 0x0>;
//ti,allow-non-reduced-blanking-modes;
};

};
};
};







-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to