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.
