VU7+ / VU7a+ touch problem.

Post Reply
Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Hi:

Using Ubuntu 18.04.4 LTS with Kernel 3.16.81-49.

We use both VU7+ and VU7a+ in one product. In some ocasiones the touch it's recognized but doesnt work.
We are powering up the VU display from the standard connector and also the touch it's connected to the same groups of USB connector , we reserve the OTG for an audio device.


We analyzed the situations and we can detected 3 variants:

The lsusb always shows the touch 'iStation' connected in the 3 situations.


1 - The touch it's loaded with the usbfs driver, instead of the dwav_usb_mt
Using usb-devices we get:

Code: Select all

T:  Bus=01 Lev=02 Prnt=04 Port=01 Cnt=01 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=16b4 ProdID=0705 Rev=02.00
S:  Manufacturer=RPI_TOUCH
S:  Product=By ZH851
S:  SerialNumber=�OP38675689
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbfs
This situation was very unusual (low frequency).

2 - lsusb shows the device, and we can also found the device in the directory "/dev/input/by-id/" but there is no data when executing:
usbhid-dump -t 0 --entity=all
neither:
xxd /dev/input/by-id/usb-RPI_TOUCH_By_ZH851-event-if00

This is the most frequent situation of the 3.

3 - lsusb shows the device, and we can get data using
usbhid-dump -t 0 --entity=all
and also
xxd /dev/input/by-id/usb-RPI_TOUCH_By_ZH851-event-if00
but there is no response in the application.
We did an 'usbreset' and it solved the situation.

We created a script hubreset.sh so the user can manually turn off the hub/bus 001 by pressing a combination of buttons in our hardware:

Code: Select all

echo 126 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio126/direction
sleep 1
echo 0 > /sys/class/gpio/gpio126/value
sleep 1
echo 1 > /sys/class/gpio/gpio126/value
echo 126 > /sys/class/gpio/unexport
and also an usbreset

Code: Select all

/* usbreset -- send a USB port reset to a USB device */
// Basado en https://marc.info/?l=linux-usb&m=121459435621262&w=2
// de Alan Stern

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>


int main(int argc, char *argv[]) {
    const char *filename;
    int fd;
    int rc;

    if (argc != 2) {
        fprintf(stderr, "Usage: usbreset device-filename\n");
		//Hacer un lsusb para ver los dispositivos:
		//Bus 002 Device 002: ID 16b4:0705 iStation
		//
		//Ejecutar: 
		//sudo ./usbreset /dev/bus/usb/002/002
		/* Opcion:
			echo $(lsusb | grep iStation) myDev=$( lsusb | grep iStation | perl -nE "/\D+(\d+)\D+(\d+).+/; print qq(\$1/\$2)") sudo ./solidyne/usbreset /dev/bus/usb/$iStation
		*/
		
        return 1;
    }
    filename = argv[1];

    fd = open(filename, O_WRONLY);
    if (fd < 0) {
        perror("Error opening output file");
        return 1;
    }

    printf("Resetting USB device %s\n", filename);
    rc = ioctl(fd, USBDEVFS_RESET, 0);
    if (rc < 0) {
        perror("Error in ioctl");
        return 1;
    }
    printf("Reset successful\n");

    close(fd);
    return 0;
}
that would allows us to more efficiently reset the touch device, but we still dont know how to detect the failure programatically.

So any help/hint it's appreciated

Here i'ts dmesg output of situation #2:

Code: Select all

[    0.000000] __reserved_mem_alloc_size: linux,jpegenc_cma
[    0.000000] Reserved memory: created CMA memory pool at 0x000000005e000000, size 36 MiB
[    0.000000] Reserved memory: initialized node linux,jpegenc_cma, compatible id shared-dma-pool
[    0.000000] cma: CMA: reserved 8 MiB at 5d800000
[    0.000000] On node 0 totalpages: 486912
[    0.000000]   Normal zone: 6664 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 486912 pages, LIFO batch:31
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: Using PSCI v0.1 Function IDs from DT
[    0.000000] PERCPU: Embedded 12 pages/cpu s19712 r8192 d21248 u49152
[    0.000000] pcpu-alloc: s19712 r8192 d21248 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 480248
[    0.000000] Kernel command line: root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro console=ttyS0,115200n8 console=tty0 no_console_suspend hdmimode=1024x600p60hz  m_bpp=32 vout=dvi fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=true max_freq=1536 maxcpus=4 monitor_onoff=false disableuhs=false mmc_removable=true usbmulticam=false usbhid.quirks=0x0eef:0x0005:0x0004
[    0.000000] logo: get hdmimode: 1024x600p60hz
[    0.000000] dvfs [get_max_freq] - max_freq : 1536000000
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1469804K/1947648K available (8433K kernel code, 899K rwdata, 3064K rodata, 915K init, 4112K bss, 477844K reserved)
[    0.000000] Virtual kernel memory layout:
                   vmalloc : 0xffffff8000000000 - 0xffffffbbffff0000   (245759 MB)
                   vmemmap : 0xffffffbc00000000 - 0xffffffbc01a40000   (    26 MB)
                   modules : 0xffffffbffc000000 - 0xffffffc000000000   (    64 MB)
                   memory  : 0xffffffc000000000 - 0xffffffc078000000   (  1920 MB)
                     .init : 0xffffffc001bbc000 - 0xffffffc001ca0d00   (   916 kB)
                     .text : 0xffffffc001080000 - 0xffffffc001bbb694   ( 11502 kB)
                     .data : 0xffffffc001ca1000 - 0xffffffc001d81e30   (   900 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:64 nr_irqs:64 0
[    0.000006] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483648000ns
[    0.000024] mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000a994
[    0.000070] local timer MESON TIMER-G mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000c998
[    0.000093] local timer MESON TIMER-H mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff800000e99c
[    0.000115] local timer MESON TIMER-I mclk->mux_reg =ffffff8000002990,mclk->reg =ffffff80000109a0
[    0.000125] Switching to timer-based delay loop
[    0.000361] Console: colour dummy device 80x25
[    0.000915] console [tty0] enabled
[    0.003251] allocated 8388608 bytes of page_cgroup
[    0.003260] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.003277] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[    0.003295] pid_max: default: 32768 minimum: 301
[    0.003351] Security Framework initialized
[    0.003378] AppArmor: AppArmor initialized
[    0.003409] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.003422] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.003897] Initializing cgroup subsys memory
[    0.003974] Initializing cgroup subsys devices
[    0.003999] Initializing cgroup subsys freezer
[    0.004014] Initializing cgroup subsys net_cls
[    0.004030] Initializing cgroup subsys blkio
[    0.004047] Initializing cgroup subsys perf_event
[    0.004059] Initializing cgroup subsys net_prio
[    0.004083] Initializing cgroup subsys hugetlb
[    0.004094] Initializing cgroup subsys debug
[    0.004147] ftrace: allocating 30293 entries in 119 pages
[    0.031151] hw perfevents: enabled with arm/armv8-pmuv3 PMU driver, 7 counters available
[    0.071862] Meson chip version = RevC (1F:C - 0:0)
[    0.090847] CPU1: Booted secondary processor
[    0.110820] CPU2: Booted secondary processor
[    0.130813] CPU3: Booted secondary processor
[    0.130851] Brought up 4 CPUs
[    0.130883] SMP: Total of 4 processors activated.
[    0.131342] devtmpfs: initialized
[    0.137232] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.140179] pinctrl core: initialized pinctrl subsystem
[    0.140439] regulator-dummy: no parameters
[    0.146998] device-tree: Duplicate name in efusekey, renamed to "key0#1"
[    0.147045] device-tree: Duplicate name in efusekey, renamed to "key1#1"
[    0.147077] device-tree: Duplicate name in efusekey, renamed to "key2#1"
[    0.147110] device-tree: Duplicate name in efusekey, renamed to "key3#1"
[    0.149524] NET: Registered protocol family 16
[    0.150700] register canvas platform driver
[    0.150716] codec:ignore bus ops for cpu=25
[    0.150725] codec:ignore bus ops for cpu=29
[    0.150734] codec:register amports ops for bus[0]
[    0.150743] codec:register amports ops for bus[4]
[    0.150752] codec:register amports ops for bus[3]
[    0.150760] codec:register amports ops for bus[2]
[    0.150768] codec:register amports ops for bus[1]
[    0.150777] codec:register amports ops for bus[13]
[    0.150785] codec:register amports ops for bus[2]
[    0.150794] codec:register amports ops for bus[14]
[    0.150824] register rdma platform driver
[    0.151337] vdso: 2 pages (1 code, 1 data) at base ffffffc001caa000
[    0.151374] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.151972] DMA: preallocated 256 KiB pool for atomic allocations
[    0.153159] software IO TLB: mapped [mem 0x5a800000-0x5ac00000] (4MB)
[    0.153174] Serial: AMBA PL011 UART driver
[    0.153254] hdmitx: system: amhdmitx_init
[    0.153263] hdmitx: system: Ver: 2014May6
[    0.153302] tv_vout: tv_init_module
[    0.153316] tv_vout: major number 254 for disp
[    0.153326] vout_notify: vout_register_server
[    0.153334] tv_vout: register tv module server ok
[    0.153368] codec_mm:codec_mm_module_init
[    0.153709] gxbb clk HIU base is 0xffffff8000058000
[    0.153719] gxbb clk ao base is 0xffffff800005a000
[    0.153766] register mpll_clk_out0 success done
[    0.153778] register mpll_clk_out1 success done
[    0.153790] register mpll_clk_out2 success done
[    0.153979] register sys pll success done
[    0.154027] clkrate [ xtal 	] : 24000000Hz
[    0.154037] clkrate [ 32Khz 	] : 32000Hz
[    0.154046] clkrate [ clk81 	] : 166666666Hz
[    0.154055] clkrate [ fixed_pll 	] : 2000000000Hz
[    0.154064] clkrate [ fclk_div2 	] : 1000000000Hz
[    0.154073] clkrate [ fclk_div3 	] : 666666000Hz
[    0.154082] clkrate [ fclk_div4 	] : 500000000Hz
[    0.154091] clkrate [ fclk_div5 	] : 400000000Hz
[    0.154099] clkrate [ fclk_div7 	] : 285714000Hz
[    0.154129] gxbb clock initialization complete
[    0.154174] msr_clk_reg0=ffffff800005c75c,msr_clk_reg2=ffffff800005e764
[    0.155008] amlogic iomap probe done
[    0.155342] Init pinux probe!
[    0.156340] pinmux-gxbb c1109880.pinmux: Probed amlogic pinctrl driver
[    0.156667] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0x128)
[    0.156689] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0x128)
[    0.156768] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0x128)
[    0.156788] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0x128)
[    0.156989] dvfs [scpi_dvfs_get_opps] - new count 6, max_freq 1536000000
[    0.157533] codec:codec map io source 0x00000000c1100000,size=1048576 to 0xffffff8000680000
[    0.157558] codec:codec map io source 0x00000000c8820000,size=65536 to 0xffffff80000a0000
[    0.157579] codec:codec map io source 0x00000000c883c000,size=8192 to 0xffffff8000094000
[    0.157611] codec:codec map io source 0x00000000c8100000,size=1048576 to 0xffffff8000800000
[    0.157633] codec:codec map io source 0x00000000d0100000,size=262144 to 0xffffff8000980000
[    0.157652] codec:codec map io source 0x00000000c8838000,size=1024 to 0xffffff800007e000
[    0.157727] codec_mm has 2 memory regions
[    0.157743] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_cma ok
[    0.157758] codec_mm:codec_mm_reserved_init 0000000060700000->0000000064800000
[    0.157772] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_reserved ok
[    0.157784] codec_mm:codec_mm_probe mem init done
[    0.157796] codec_mm:add reserve memory 0000000060700000(aligned 0000000060700000) size=4100000(aligned 4100000)
[    0.157825] codec_mm has 2 memory regions
[    0.157837] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_cma ok
[    0.157852] codec_mm:codec_mm_reserved_init 0000000060700000->0000000064800000
[    0.157865] codec_mm codec_mm: assigned reserved memory node linux,codec_mm_reserved ok
[    0.157877] codec_mm:codec_mm reserved memory probed done
[    0.157886] codec_mm:codec_mm_probe ok
[    0.158705] VPU driver version: v01
[    0.158715] vpu driver detect cpu type: gxbaby
[    0.158732] load vpu_clk in dts: 666667000Hz(7)
[    0.158764] vpu_probe OK
[    0.159006] hdmitx: system: amhdmitx_probe
[    0.159266] hdmitx hpd irq = 89
[    0.159470] hdmitx20: Mapped PHY: 0xc0800000
[    0.159482] hdmitx20: Mapped PHY: 0xc1104400
[    0.159504] hdmitx20: Mapped PHY: 0xc8100000
[    0.159514] hdmitx20: Mapped PHY: 0xc8834000
[    0.159524] hdmitx20: Mapped PHY: 0xc883a000
[    0.159534] hdmitx20: Mapped PHY: 0xc883c000
[    0.159548] hdmitx20: Mapped PHY: 0xd0100000
[    0.159559] hdmitx20: Mapped PHY: 0xda83a000
[    0.159574] hdmitx: alread display in uboot 0x10
[    0.159601] avmute set to 1
[    0.160011] canvas_probe reg=00000000c8838000,size=400
[    0.160031] canvas maped reg_base =ffffff80000b2000
[    0.164319] rdma_probe
[    0.166588] hdmitx: system: irq 2
[    0.231118] SCSI subsystem initialized
[    0.231307] usbcore: registered new interface driver usbfs
[    0.231353] usbcore: registered new interface driver hub
[    0.231412] usbcore: registered new device driver usb
[    0.231513] media: Linux media interface: v0.10
[    0.231552] Linux video capture interface: v2.00
[    0.231621] pps_core: LinuxPPS API ver. 1 registered
[    0.231632] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.231658] PTP clock support registered
[    0.231864] logo: logo_init
[    0.231931] Advanced Linux Sound Architecture Driver Initialized.
[    0.232306] Bluetooth: Core ver 2.19
[    0.232337] NET: Registered protocol family 31
[    0.232346] Bluetooth: HCI device and connection manager initialized
[    0.232362] Bluetooth: HCI socket layer initialized
[    0.232376] Bluetooth: L2CAP socket layer initialized
[    0.232402] Bluetooth: SCO socket layer initialized
[    0.232428] NetLabel: Initializing
[    0.232437] NetLabel:  domain hash size = 128
[    0.232445] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.232487] NetLabel:  unlabeled traffic allowed by default
[    0.233198] Switched to clocksource Timer-E
[    0.264250] AppArmor: AppArmor Filesystem Enabled
[    0.269584] NET: Registered protocol family 2
[    0.270106] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.270203] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    0.270380] TCP: Hash tables configured (established 16384 bind 16384)
[    0.270457] TCP: reno registered
[    0.270469] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    0.270509] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    0.270664] NET: Registered protocol family 1
[    0.270894] RPC: Registered named UNIX socket transport module.
[    0.270905] RPC: Registered udp transport module.
[    0.270913] RPC: Registered tcp transport module.
[    0.270921] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.271098] Unpacking initramfs...
[    0.483372] hdmitx: plugin
[    0.483705] hdmitx: system: irq 80000001
[    0.547848] hdmitx: edid: raw data are all zeroes
[    0.547872] EDID Parser:
[    0.548367] EDID BlockCount=0
[    0.548383] hdmitx: edid: HDMI: set default vic
[    0.548400] hdmitx: video: get current mode: null
[    0.548411] hdmtix: set audio
[    0.548426] hdmitx tx_aud_src = 0
[    0.548459] hdmitx aud_n_para = 24576
[    0.548482] hdmitx set channel status
[    0.633415] Freeing initrd memory: 11372K (ffffffc073409000 - ffffffc073f24000)
[    0.637293] kvm [1]: Using HYP init bounce page @5a550000
[    0.637457] kvm [1]: interrupt-controller@c4304000 IRQ25
[    0.637599] kvm [1]: kvm_arch_timer: can't find DT node
[    0.637644] kvm [1]: error initializing Hyp mode: -19
[    0.638207] audit: initializing netlink subsys (disabled)
[    0.638269] audit: type=2000 audit(0.620:1): initialized
[    0.638854] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.644043] VFS: Disk quotas dquot_6.5.2
[    0.644179] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.645963] NFS: Registering the id_resolver key type
[    0.646004] Key type id_resolver registered
[    0.646014] Key type id_legacy registered
[    0.646033] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.646074] msgmni has been set to 3452
[    0.647161] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    0.647299] io scheduler noop registered (default)
[    0.647315] io scheduler deadline registered
[    0.647414] io scheduler cfq registered
[    0.647999] meson-rng c8834000.rng: hwrng registered
[    0.648317] enter  cpufreq
[    0.648349] probe  cpufreq okay
[    0.648479] dvfs [scpi_dvfs_get_opps] - new count 6, max_freq 1536000000
[    0.649475] aml-thermal aml-sensor@0: min state:500000 400 1 2
[    0.649654] aml-thermal aml-sensor@0: gpu coef:437, pp:3
[    0.654717] aml-thermal aml-sensor@0: cdev1 set upper to 3
[    0.654730] aml-thermal aml-sensor@0: cdev2 set upper to 3
[    0.654741] aml-thermal aml-sensor@0: cdev0 set upper to 3
[    0.657330] [drm] Initialized drm 1.1.0 20060810
[    0.657375] mali-utgard d00c0000.mali: max pp is 3
[    0.657387] mali-utgard d00c0000.mali: min pp is 3
[    0.657397] mali-utgard d00c0000.mali: min clk  is 4
[    0.657424] mali-utgard d00c0000.mali: hiu io source  0xffffff80000e4000
[    0.657441] mali-utgard d00c0000.mali: hiu io source  0xffffff80000e6000
[    0.657454] mali-utgard d00c0000.mali: num of pp used most of time 3
[    0.657466] mali-utgard d00c0000.mali: clock dvfs table size is 6
[    0.657478] mali-utgard d00c0000.mali: max clk set 4
[    0.657489] mali-utgard d00c0000.mali: max clk  is 4
[    0.657500] mali-utgard d00c0000.mali: turbo clk set to 5
[    0.657510] mali-utgard d00c0000.mali: turbo clk  is 5
[    0.657521] mali-utgard d00c0000.mali: default clk  is 4
[    0.657590] mali-utgard d00c0000.mali: ====================0====================
               clk_freq= 125000000, clk_parent=fclk_div4, voltage=1150, keep_count=5, threshod=<30 120>, clk_sample=125
[    0.657616] mali-utgard d00c0000.mali: ====================1====================
               clk_freq= 285000000, clk_parent=fclk_div7, voltage=1150, keep_count=5, threshod=<100 190>, clk_sample=285
[    0.657642] mali-utgard d00c0000.mali: ====================2====================
               clk_freq= 400000000, clk_parent=fclk_div5, voltage=1150, keep_count=5, threshod=<152 207>, clk_sample=400
[    0.657668] mali-utgard d00c0000.mali: ====================3====================
               clk_freq= 500000000, clk_parent=fclk_div4, voltage=1150, keep_count=5, threshod=<180 220>, clk_sample=500
[    0.657694] mali-utgard d00c0000.mali: ====================4====================
               clk_freq= 666000000, clk_parent=fclk_div3, voltage=1150, keep_count=5, threshod=<210 236>, clk_sample=666
[    0.657720] mali-utgard d00c0000.mali: ====================5====================
               clk_freq= 792000000, clk_parent=  gp0_pll, voltage=1150, keep_count=5, threshod=<230 255>, clk_sample=792
[    0.659343] cdev3 set upper to 2
[    0.659357] cdev4 set upper to 2
[    0.659366] gpu cooling register okay with err=0
[    0.659427] cdev5 set upper to 1
[    0.659435] gpu core cooling register okay with err=0
[    0.659608] Mali: Mali device driver loaded
[    0.659784] UMP: UMP device driver -v3.16.7-11723-g94ae9aeff5a7 loaded
[    0.662143] loop: module loaded
[    0.662443] mtdoops: mtd device (mtddev=name/number) must be supplied
[    0.662941] stmmac - user ID: 0x11, Synopsys ID: 0x37
[    0.662951]  Ring mode enabled
[    0.662959]  DMA HW capability register supported
[    0.662967]  Normal descriptors
[    0.662977]  RX Checksum Offload Engine supported (type 2)
[    0.662986]  TX Checksum insertion supported
[    0.662993]  Wake-Up On Lan supported
[    0.663033]  Enable RX Mitigation via HW Watchdog Timer
[    0.671150] libphy: stmmac: probed
[    0.671173] eth0: PHY ID 001cc916 at 0 IRQ POLL (stmmac-0:00) active
[    0.671184] eth0: PHY ID 001cc916 at 7 IRQ POLL (stmmac-0:07)
[    0.671485] usbcore: registered new interface driver cdc_ether
[    0.671556] usbcore: registered new interface driver cdc_ncm
[    0.671692] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.671707] ehci-h20ahb: H20AHB-EHCI Host Controller driver
[    0.671812] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.671879] usbcore: registered new interface driver cdc_acm
[    0.671889] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    0.671946] usbcore: registered new interface driver usb-storage
[    0.672047] usbcore: registered new interface driver usbserial
[    0.672081] usbcore: registered new interface driver usbserial_generic
[    0.672117] usbserial: USB Serial support registered for generic
[    0.672389] mousedev: PS/2 mouse device common for all mice
[    0.672682] i2c /dev entries driver
[    0.673099] IR Sharp protocol handler initialized
[    0.673532] ledtrig-cpu: registered to indicate activity on CPUs
[    0.673599] hidraw: raw HID events driver (C) Jiri Kosina
[    0.673770] usbcore: registered new interface driver usbhid
[    0.673780] usbhid: USB HID core driver
[    0.673939] ==uart0 reg addr = ffffff80002344c0
[    0.673967] c81004c0.serial: ttyS0 at MMIO 0xc81004c0 (irq = 225, base_baud = 1500000) is a meson_uart
[    2.468878] console [ttyS0] enabled
[    2.472541] ==uart1 reg addr = ffffff80002364c0
[    2.476835] c11084c0.serial: ttyS1 at MMIO 0xc11084c0 (irq = 58, base_baud = 1500000) is a meson_uart
[    2.526300] dwc_otg: usb1: type: 1 speed: 0, config: 0, dma: 0, id: 1, phy: c0000020, ctrl: 0
[    2.531832] dwc_otg: Core Release: 3.10a
[    2.533039] dwc_otg: Setting default values for core params
[    2.538574] dwc_otg: curmode: 1, host_only: 1
[    2.545086] dwc_otg: Using Buffer DMA mode
[    2.546924] dwc_otg: OTG VER PARAM: 1, OTG VER FLAG: 1
[    2.552012] dwc_otg: Working on port type = HOST
[    2.556734] dwc_otg dwc2_b: DWC OTG Controller
[    2.560994] dwc_otg dwc2_b: new USB bus registered, assigned bus number 1
[    2.567733] dwc_otg dwc2_b: irq 63, io mem 0x00000000
[    2.572712] dwc_otg: -------hcd->flags.d32 = 0
[    2.577133] dwc_otg: Init: Port Power? op_state=1
[    2.581768] dwc_otg: Init1: Power Port (0)
[    2.586297] hub 1-0:1.0: USB hub found
[    2.589548] hub 1-0:1.0: 1 port detected
[    2.593621] dwc_otg: usb0: type: 0 speed: 0, config: 0, dma: 0, id: 0, phy: c0000000, ctrl: 0
[    2.614458] dwc_otg: Core Release: 3.10a
[    2.614482] dwc_otg: Setting default values for core params
[    2.618273] dwc_otg: curmode: 1, host_only: 0
[    2.626792] dwc_otg: Using Buffer DMA mode
[    2.626816] dwc_otg: OTG VER PARAM: 1, OTG VER FLAG: 1
[    2.631724] dwc_otg: Working on port type = OTG
[    2.636218] dwc_otg: Current port type: SLAVE
[    2.640584] dwc_otg dwc2_a: DWC OTG Controller
[    2.644941] dwc_otg dwc2_a: new USB bus registered, assigned bus number 2
[    2.651661] dwc_otg dwc2_a: irq 62, io mem 0x00000000
[    2.657039] hub 2-0:1.0: USB hub found
[    2.660376] hub 2-0:1.0: 1 port detected
[    2.664397] dwc_otg: Dedicated Tx FIFOs mode
[    2.668639] dwc_otg: using timer detectid change, ffffffc05ba61800
[    2.674795] fb: osd_init_module
[    2.677780] fb: viu vsync irq: 35
[    2.680982] meson-fb has 1 memory regions
[    2.686006] meson-fb meson-fb: assigned reserved memory node linux,meson-fb ok
[    2.692105] logo: get initial logo vmode: 1024x600p60hz
[    2.697350] tv_vout: tv_set_current_vmode[707]fps_target_mode=12
[    2.703237] tv_vout: mode is 12,sync_duration_den=1,sync_duration_num=60
[    2.709870] switch_vpu_mem_pd: vencp ON
[    2.713671] tv_vout: TV mode 1080p60hz selected.
[    2.718236] tv_vout: new mode =1080p60hz set ok
[    2.722718] vout_serve: vinfo mode is: 1080p60hz
[    2.727298] tv_vout: tv_set_current_vmode[707]fps_target_mode=41
[    2.733251] tv_vout: mode is 41,sync_duration_den=1,sync_duration_num=60
[    2.739882] switch_vpu_mem_pd: vencp ON
[    2.743684] tv_vout: TV mode 1024x600p60hz selected.
[    2.748594] tv_vout: new mode =1024x600p60hz set ok
[    2.753429] vout_serve: vinfo mode is: 1024x600p60hz
[    2.758341] switch_vpu_mem_pd: viu_osd1 ON
[    2.762393] switch_vpu_mem_pd: viu_osd2 ON
[    2.766492] switch_vpu_mem_pd: viu_osd_scale ON
[    2.771020] osd_rdma: osd_rdma_init: rmda_table p=0x5d849000,op=0x5d849000 , v=0xffffff8000266000
[    2.779755] hdmitx: video: get current mode: 1024x600p60hz
[    2.785177] hdmitx: video: get current mode: 1024x600p60hz
[    2.790618] hdmitx: system: already init VIC = 0  Now VIC = 772
[    2.796512] dwc_otg: Indeed it is in host mode hprt0 = 00021501
[    2.803218] hdmitx: rx no SCDC present indicator
[    2.808911] hdmitx: ddc rd8b error 0x54 0x01
[    2.813131] hdmitx: ddc rd8b error 0x54 0x01
[    2.815361] hdmirx version is 1.4 or below
[    2.819404] hdmitx: system: set pll
[    2.822858] hdmitx: system: param->VIC:772
[    2.836996] hdmitx: set clk of VIC = 772 done
[    2.837046] hdmitx_set_hw[4470] set VIC = 772
[    2.965208] hdmitx: system: phy setting done
[    2.973210] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.974239] dwc_otg: Indeed it is in host mode hprt0 = 00001101
[    3.040931] Sink is DVI device
[    3.040982] Source reading EDID
[    3.063201] hdmtix: set audio
[    3.063225] hdmitx tx_aud_src = 0
[    3.063826] hdmitx: system: irq 80000001
[    3.067724] hdmitx aud_n_para = 24576
[    3.071338] hdmitx set channel status
[    3.083267] fb: validating vinfo tables
[    3.083304] hdmitx: warning: tvenc phy 27000 vid 54000 enc 27000 pix 27000 clocks not equal
[    3.089758] fb: vinfo 0 480i60hz, hdmi 7 720x480i60hz, 720x480-60 4:3 27000
[    3.096667] fb: warning: vinfo 1 480i_rpt, 720x480-60 4:3 27000, hdmi 11 no para
[    3.104001] fb: warning: vinfo 2 480cvbs, 720x480-60 4:3 27000, no hdmi vic
[    3.110889] fb: warning: vinfo 4 480p_rpt, 720x480-60 4:3 27000, hdmi 36 no para
[    3.118226] hdmitx: warning: tvenc phy 27000 vid 54000 enc 27000 pix 27000 clocks not equal
[    3.126506] fb: vinfo 5 576i50hz, hdmi 22 720x576i50hz, 720x576-50 4:3 27000
[    3.133492] fb: warning: vinfo 6 576i_rpt, 720x576-50 4:3 27000, hdmi 26 no para
[    3.140820] fb: warning: vinfo 7 576cvbs, 720x576-50 4:3 27000, no hdmi vic
[    3.147725] fb: warning: vinfo 9 576p_rpt, 720x576-50 4:3 27000, hdmi 38 no para
[    3.155074] fb: warning: vinfo 23 4k2k5g, 3840x2160-50 16:9 495000, no hdmi vic
[    3.162304] fb: warning: hdmi 109 (0x000 + 109) no video para
[    3.167991] hdmitx: warning: tvenc no clk for 109 hdmi
[    3.173072] fb: info: used 3840x1080p120hz for 29 4k1k120hz
[    3.178601] fb: vinfo 29 4k1k120hz, hdmi 109 3840x1080p120hz, 3840x1080-120 32:9 594000
[    3.186541] fb: warning: vinfo 30 4k1k120hz420, 3840x1080-120 32:9 594000, no hdmi vic
[    3.194389] fb: warning: hdmi 110 (0x000 + 110) no video para
[    3.200068] hdmitx: warning: tvenc no clk for 110 hdmi
[    3.205166] fb: warning: hdmi 3840x1080-50 594000 != 3840x1080-100 594000 vinfo
[    3.212402] fb: info: used 3840x1080p100hz for 31 4k1k100hz
[    3.217932] fb: vinfo 31 4k1k100hz, hdmi 110 3840x1080p100hz, 3840x1080-100 32:9 594000
[    3.225869] fb: warning: vinfo 32 4k1k100hz420, 3840x1080-100 32:9 594000, no hdmi vic
[    3.233718] fb: warning: vinfo 33 4k05k240hz, 3840x1080-240 64:9 594000, no hdmi vic
[    3.241388] fb: warning: vinfo 34 4k05k240hz420, 3840x540-240 64:9 594000, no hdmi vic
[    3.245136] hub 1-1:1.0: USB hub found
[    3.245429] hub 1-1:1.0: 4 ports detected
[    3.256920] fb: warning: vinfo 35 4k05k200hz, 3840x540-200 64:9 594000, no hdmi vic
[    3.264510] fb: warning: vinfo 36 4k05k200hz420, 3840x1080-200 64:9 594000, no hdmi vic
[    3.272440] hdmitx: warning: tvenc 51830 != 51450 hdmi
[    3.277530] fb: vinfo 41 1024x600p60hz, hdmi 772 1024x600p60hz, 1024x600-60 17:10 51450
[    3.285493] hdmitx: warning: 480x320p 800 263 0 tvenc !=
[    3.290718] hdmitx:          480x320p 800 525 0 hdmi
[    3.295641] hdmitx: warning: 100 120 95 8 100 4 tvenc !=
[    3.300895] hdmitx:          100 120 189 8 100 8 hdmi
[    3.305905] hdmitx: warning: tvenc TOTAL_LINES 263 != 320+107 (320+107) hdmi
[    3.312885] fb: vinfo 56 480x320p60hz, hdmi 787 480x320p60hz, 480x320-60 3:2 25200
[    3.320397] hdmitx: warning: 480x272p 800 263 0 tvenc !=
[    3.325656] hdmitx:          480x272p 800 525 0 hdmi
[    3.330565] hdmitx: warning: 100 120 119 8 100 4 tvenc !=
[    3.335919] hdmitx:          100 120 238 8 100 7 hdmi
[    3.340915] hdmitx: warning: tvenc TOTAL_LINES 263 != 272+131 (272+131) hdmi
[    3.347909] fb: vinfo 57 480x272p60hz, hdmi 788 480x272p60hz, 480x272-60 3:2 25200
[    3.355441] fb: warning: vinfo 62 wsxga, 1440x900-60 8:5 88750, no hdmi vic
[    3.362314] hdmitx: warning: no tvenc for hdmi vic 790
[    3.367401] fb: vinfo 69 custombuilt, hdmi 790 custombuilt, 0x0-0 16:9 0
[    3.374041] fb: found 64 vinfos
[    3.377139] fb: validating hdmi format tables
[    3.381454] fb: warning: hdmi 2 (0x000 + 2) no format para
[    3.386897] fb: warning: hdmi 6 (0x000 + 6) no format para
[    3.392321] hdmitx: warning: tvenc phy 27000 vid 54000 enc 27000 pix 27000 clocks not equal
[    3.400607] fb: info: hdmi 7 720x480i60hz, 1440x240-59 27000
[    3.406217] fb: warning: hdmi 17 (0x000 + 17) no format para
[    3.411814] fb: warning: hdmi 21 (0x000 + 21) no format para
[    3.417426] hdmitx: warning: tvenc phy 27000 vid 54000 enc 27000 pix 27000 clocks not equal
[    3.425706] fb: info: hdmi 22 720x576i50hz, 1440x288-50 27000
[    3.431427] fb: warning: hdmi 109 (0x000 + 109) no video para
[    3.437091] hdmitx: warning: tvenc no clk for 109 hdmi
[    3.442173] fb: info: hdmi 109 3840x1080p120hz, 3840x1080-120 594000
[    3.448475] fb: warning: hdmi 110 (0x000 + 110) no video para
[    3.454167] hdmitx: warning: tvenc no clk for 110 hdmi
[    3.459250] fb: info: hdmi 110 3840x1080p100hz, 3840x1080-50 594000
[    3.465466] fb: warning: hdmi 111 (0x000 + 111) no video para
[    3.471153] hdmitx: warning: 3840x1080p 4400 562 0 tvenc !=
[    3.476682] hdmitx:          3840x540p 4400 562 0 hdmi
[    3.481761] hdmitx: warning: tvenc TOTAL_LINES 562 != 1080+22 (1080+22) hdmi
[    3.488755] hdmitx: warning: tvenc no clk for 111 hdmi
[    3.493843] fb: info: hdmi 111 3840x540p240hz, 3840x540-120 594000
[    3.499960] fb: warning: hdmi 112 (0x000 + 112) no video para
[    3.505660] hdmitx: warning: 3840x1080p 5280 562 0 tvenc !=
[    3.511172] hdmitx:          3840x540p 5280 562 0 hdmi
[    3.516268] hdmitx: warning: tvenc TOTAL_LINES 562 != 1080+22 (1080+22) hdmi
[    3.523211] usb 1-1.2: new full-speed USB device number 3 using dwc_otg
[    3.529808] hdmitx: warning: tvenc no clk for 112 hdmi
[    3.534898] fb: info: hdmi 112 3840x540p200hz, 3840x540-50 594000
[    3.540970] fb: warning: hdmi 354 (0x100 + 98) no video para
[    3.546541] fb: warning: hdmi 354 (0x100 + 98) no format para
[    3.552233] hdmitx: warning: tvenc 51830 != 51450 hdmi
[    3.557324] fb: info: hdmi 772 1024x600p60hz, 1024x600-60 51450
[    3.563202] hdmitx: warning: 480x320p 800 263 0 tvenc !=
[    3.568442] hdmitx:          480x320p 800 525 0 hdmi
[    3.573365] hdmitx: warning: 100 120 95 8 100 4 tvenc !=
[    3.578620] hdmitx:          100 120 189 8 100 8 hdmi
[    3.583630] hdmitx: warning: tvenc TOTAL_LINES 263 != 320+107 (320+107) hdmi
[    3.590609] fb: info: hdmi 787 480x320p60hz, 480x320-60 25200
[    3.596308] hdmitx: warning: 480x272p 800 263 0 tvenc !=
[    3.601562] hdmitx:          480x272p 800 525 0 hdmi
[    3.606485] hdmitx: warning: 100 120 119 8 100 4 tvenc !=
[    3.611826] hdmitx:          100 120 238 8 100 7 hdmi
[    3.616835] hdmitx: warning: tvenc TOTAL_LINES 263 != 272+131 (272+131) hdmi
[    3.623822] fb: info: hdmi 788 480x272p60hz, 480x272-60 25200
[    3.629507] fb: found 226 valid hdmi format parameters
[    3.634601] fb: validation done.
[    3.637787] fb: osd_probe vinfo:ffffffc001d47780
[    3.642359] fb: Frame buffer memory assigned at
[    3.646678] fb:     phy: 0x78000000, vir:0xffffff8001780000, size=98304K
[    3.653494] fb: osd_set_res_bootargs : mode 41
[    3.657885] fb: hdmi vic for 41 1024x600p60hz is: 772
[    3.662886] fb: hdmi format para for 772 is: 772 1024x600p60hz
[    3.668672] fb: hdmi format para for 772 is: 772 1024x600p60hz
[    3.674450] fb: mode "1024x600-60"
[    3.677807] fb:     # D: 51450, H: 38280, V: 60000
[    3.682552] fb:     geometry 1024 600 1024 1200 32
[    3.687303] fb:     timings 19436 160 24 29 3 136 6
[    3.692123] fb: endmode
[    3.694374] fb: fb def : 1024 600 1024 1200 32
[    3.698938] fb: init fbdev bpp is:32
[    3.714047] fb: ---------------clear fb0 memory
[    3.742100] fb: osd[0] canvas.idx =0x40
[    3.742102] fb: osd[0] canvas.addr=0x78000000
[    3.742104] fb: osd[0] canvas.width=4096
[    3.742106] fb: osd[0] canvas.height=1200
[    3.753032] Console: switching to colour frame buffer device 128x37
[    3.780595] fb: Frame buffer memory assigned at
[    3.780678] fb:     phy: 0x7e000000, vir:0xffffff8007800000, size=1024K
[    3.813750] fb: osd probe OK
[    3.815505] vout_serve: vout_init_module
[    3.817188] vout_serve: meson_vout_probe
[    3.820377] vout_serve: create vout attribute OK
[    3.825008] ge2d: ge2d_init_module
[    3.828298] ge2d: ge2d_dev major:241
[    3.832000] ge2d: ge2d clock is 400 MHZ
[    3.835633] ge2d: ge2d: pdev=ffffffc05bb31000, irq=182, rstc=0xffffffc0586a9900, clk=ffffffc05bb23480
[    3.844803] ge2d: mapped phy: 0xd0160000
[    3.848653] ge2d: ge2d start monitor
[    3.852271] ge2d: ge2d workqueue monitor start
[    3.852411] BLASTER Driver Init
[    3.852570] secmon has 1 memory regions
[    3.852605] secmon: share in base: 0xffffff8000268000, share out base: 0xffffff800026a000
[    3.852611] secmon secmon: assigned reserved memory node linux,secmon ok
[    3.852612] secmon: probe done
[    3.852731] storage: storage in base: 0xffffff8007980000
[    3.852733] storage: storage out base: 0xffffff8007a00000
[    3.852735] storage: storage block base: 0xffffff8007a80000
[    3.852736] storage: probe done!
[    3.853538] aml_sd_emmc_probe: line 2898
[    3.853541] mmc driver version: 1.07, 2015-01-21: fix a bug in tuning which caused eMMC data CRC error
[    3.853936] aml_sd_emmc_reg_init 621
[    3.854005] pdata->caps 60007
[    3.854009] pdata->caps2 0
[    3.854013] get property:                ocr_avail, value:0x00200080
[    3.854016] get property:                    f_min, value:0x00061a80
[    3.854018] get property:                    f_max, value:0x0510ff40
[    3.854022] get property:             max_req_size, value:0x00020000
[    3.854024] get property:                   irq_in, value:0x00000003
[    3.854027] get property:                  irq_out, value:0x00000005
[    3.854030] get property:              power_level, value:0x00000001
[    3.854042] get property:                  gpio_cd, str:
[    3.854047] get property:               gpio_power, str:
[    3.854050] get property:                  pinname, str:sd
[    3.854053] get property:                 jtag_pin, str:
[    3.854056] get property:                card_type, value:0x00000005
[    3.854059] get property:                gpio_dat3, str:
[    3.854065] get property:               gpio_volsw, str:
[    3.923303] [aml_sd_emmc_probe] aml_sd_emmc_probe() success!
[    3.923322] aml_sd_emmc_probe: line 2898
[    3.943283] [aml_is_card_insert][0;40;33m card OUT
               [0m
[    3.963675] [aml_is_card_insert][0;40;33m card OUT
               [0m
[    3.963676] aml_sd_emmc_reg_init 621
[    3.963737] pdata->caps 80000547
[    3.963744] pdata->caps2 a1
[    3.963749] get property:                ocr_avail, value:0x00200080
[    3.963751] get property:                    f_min, value:0x00061a80
[    3.963754] get property:                    f_max, value:0x0bebc200
[    3.963757] get property:             max_req_size, value:0x00020000
[    3.963763] get property:                  pinname, str:emmc
[    3.963766] get property:                card_type, value:0x00000001
[    3.963773] get property:                gpio_dat3, str:
[    3.963776] get property:                 hw_reset, str:
[    4.023229] [aml_sd_emmc_probe] aml_sd_emmc_probe() success!
[    4.023231] aml_emmc_hw_reset 1356
[    4.023387] ion_dev has 1 memory regions
[    4.037213] codec:Amlogic A/V streaming port init
[    4.037980] codec:get gate demux control ok ffffffc05873fbc0
[    4.037984] codec:get gate parser_top control ok ffffffc05873fc40
[    4.037989] codec:get gate vpu_intr control ok ffffffc05873fcc0
[    4.037996] codec:get gate vdec control ok ffffffc05873fd40
[    4.038239] codec:[tsync_pcr_init]init success.
[    4.038296] codec:regist mpeg12 codec profile
[    4.038344] codec:regist mpeg4 codec profile
[    4.038350] codec:amvdec_vc1 module init
[    4.038393] codec:regist vc1 codec profile
[    4.038403] codec:amvdec_h264 module init
[    4.038470] codec:regist h264 codec profile
[    4.038478] codec:amvdec_h264mvc module init
[    4.038520] codec:regist hmvc codec profile
[    4.038531] codec:amvdec_h264_4k2k module init
[    4.038578] codec:regist h264_4k2k codec profile
[    4.038585] codec:amvdec_h265 module init
[    4.038627] codec:regist hevc codec profile
[    4.038678] codec:regist mjpeg codec profile
[    4.038685] codec:amvdec_real module init
[    4.038727] codec:regist real codec profile
[    4.038733] codec:amvdec_avs module init
[    4.038779] codec:regist avs codec profile
[    4.038834] amvenc_avc_probe -- reserved memory config fail.
[    4.038838] amvenc_avc - cma memory pool size: 40 MB
[    4.038856] encode_wq_init.
[    4.038861] encode start monitor.
[    4.038920] encode workqueue monitor start.
[    4.039064] jpegenc module init
[    4.039113] jpegenc probe start.
[    4.039117] jpegenc has 1 memory regions
[    4.039144] jpegenc jpegenc: assigned reserved memory node linux,jpegenc_cma ok
[    4.039148] jpegenc - cma memory pool size: 36 MB
[    4.039163] jpegenc memory config sucess, buff size is 0x2400000, level: 8M
[    4.039164] jpegenc_wq_init.
[    4.039236] jpegenc probe end.
[    4.039333] codec:picdec_driver_probe called.
[    4.039336] picdec has 1 memory regions
[    4.039344] picdec picdec: assigned reserved memory node linux,picdec ok
[    4.039346] codec:picdec_driver_probe done.
[    4.039348] codec:reserved memory config fail , use CMA	.
[    4.041981] codec:cma memory is 64800000 , size is  3000000
[    4.042369] codec:0 addr is 64800000################
[    4.042379] codec:1 addr is 648e4000################
[    4.042575] switch_vpu_mem_pd: vpu_arb ON
[    4.042863] codec:create_ge2d_work_queue video task ok
[    4.043273] codec:register clk_set_setting cpu[31]
[    4.043590] di_module_init ok.
[    4.043596] di_module_init: major 236
[    4.043732] di_probe
[    4.043841] deinterlace has 1 memory regions
[    4.043861] di reveser memory 0x76200000, size 30MB.
[    4.043866] deinterlace deinterlace: assigned reserved memory node linux,di ok
[    4.043973] rdma_register, rdma_table_addr ffffff8000481000 rdma_table_addr_phy 5d84e000 reg_buf ffffffc0587ac000
[    4.043976] rdma_register success, handle 1 table_size 8192
[    4.043977] di_probe allocate rdma channel 1.
[    4.043981] DI hw version 2.
[    4.043989] 0x000000c3:Y=c3,U=0,V=0
[    4.043991] 0x000000c4:Y=c4,U=0,V=0
[    4.043993] 0x000000c5:Y=c5,U=0,V=0
[    4.043995] 0x000000c6:Y=c6,U=0,V=0
[    4.043997] 0x000000c7:Y=c7,U=0,V=0
[    4.043999] 0x000000c8:Y=c8,U=0,V=0
[    4.044000] 0x000000c9:Y=c9,U=0,V=0
[    4.044004] 0x000000ca:Y=ca,U=0,V=0
[    4.044006] 0x000000cb:Y=cb,U=0,V=0
[    4.044007] 0x000000cc:Y=cc,U=0,V=0
[    4.044010] 0x000000cd:Y=cd,U=0,V=0
[    4.044012] 0x000000ce:Y=ce,U=0,V=0
[    4.044014] 0x000000cf:Y=cf,U=0,V=0
[    4.044168] di_probe here.
[    4.044181] switch_vpu_mem_pd: di_pre OFF
[    4.044349] efusekeynum: 4
[    4.044356] efusekeyname:             mac	offset:     0	size:     6
[    4.044362] efusekeyname:          mac_bt	offset:     6	size:     6
[    4.044369] efusekeyname:        mac_wifi	offset:    12	size:     6
[    4.044376] efusekeyname:            usid	offset:    18	size:    16
[    4.044486] efuse efuse: probe OK!
[    4.044647] 6aml_unifykeys_init done!
[    4.044655] ppmgr module init func called
[    4.044698] ppmgr_driver_probe called
[    4.044701] ppmgr has 1 memory regions
[    4.044709] init ppmgr memsource 74200000->761fffff
[    4.044879] ppmgr_probe done
[    4.045143] ionvideo-000: V4L2 device registered as video13
[    4.045162] [dsp]register dsp to char divece(257)
[    4.045493] amaudio: driver amaudio succuess!
[    4.045501] amlvideo_init called
[    4.045501] amlvideo_create_instance called
[    4.045504] v4l2_dev.name=:amlvideo-000
[    4.045575] amlvideo-000: V4L2 device registered as video10
[    4.045580] 
               
                VECM init

[    4.045916] saradc c1108680.saradc: initialized by BL30
[    4.045920] saradc c1108680.saradc: calibration start:
[    4.045967] saradc c1108680.saradc: nominal=0, value=0
[    4.046012] saradc c1108680.saradc: nominal=256, value=247
[    4.046061] saradc c1108680.saradc: nominal=512, value=504
[    4.046106] saradc c1108680.saradc: nominal=768, value=761
[    4.046156] saradc c1108680.saradc: nominal=1023, value=1019
[    4.046159] saradc c1108680.saradc: calibration end: coef=4080
[    4.046219] remote: Driver init
[    4.046522] gpio_key- gpio_key_probe
[    4.046548] gpio-key c8100000.gpio_keypad: gpio_key: find key_name=0 fail
[    4.046565] gpio-key: probe of c8100000.gpio_keypad failed with error -22
[    4.046994] input: cec_input as /devices/virtual/input/input0
[    4.047226] cectx c810023c.aocec: aml_cec_probe(): can't find hdmirx
[    4.050445] 6--------------------------------------------------------
[    4.050448] 6odroid_sysfs_init(321) : Sleep Enable !!
[    4.050449] 6--------------------------------------------------------
[    4.050601] input: vt-input as /devices/virtual/input/input1
[    4.050670] 6Virtual-Key input driver registered!!
[    4.051143] enter aml_soc_platform_pcm2bt_probe
[    4.051470] divider=16,frac=33920000,SDMval=4523
[    4.051609] enter aml_pcm_dai_probe
[    4.051657] [aml-spdif-dai]enter aml_dai_spdif_init
[    4.051718] aml_spdif_probe
[    4.051850] enter spdif_dit_probe
[    4.052548] odroid_hdmi_snd odroid_hdmi: dit-hifi <-> I2S mapping ok
[    4.053497] GACT probability on
[    4.053512] Mirror/redirect action on
[    4.053518] u32 classifier
[    4.053519]     Performance counters on
[    4.053520]     input device check on
[    4.053522]     Actions configured
[    4.053788] TCP: cubic registered
[    4.053872] NET: Registered protocol family 17
[    4.053918] NET: Registered protocol family 15
[    4.054000] Bluetooth: RFCOMM TTY layer initialized
[    4.054010] Bluetooth: RFCOMM socket layer initialized
[    4.054054] Bluetooth: RFCOMM ver 1.11
[    4.054066] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.054067] Bluetooth: BNEP filters: protocol multicast
[    4.054075] Bluetooth: BNEP socket layer initialized
[    4.054081] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    4.054087] Bluetooth: HIDP socket layer initialized
[    4.054165] NET: Registered protocol family 35
[    4.054412] Key type dns_resolver registered
[    4.055032] Registering SWP/SWPB emulation handler
[    4.055359] registered taskstats version 1
[    4.055454] AppArmor: AppArmor sha1 policy hashing enabled
[    4.055869] Mali DRM initialize, driver name: mali_drm, version 2.1
[    4.056101] [drm] Initialized mali_drm 2.1.1 20140306 on minor 0
[    4.056112] Mali DRM initialize, driver name: mali_drm, version 2.1
[    4.056231] [drm] Initialized mali_drm 2.1.1 20140306 on minor 1
[    4.056362] rtc_hctosys: unable to open rtc device (rtc0)
[    4.057621] 6enter meson_pm_probe!
[    4.057716] meson_pm_probe done
[    4.058015] ALSA device list:
[    4.058018]   #0: ODROID-HDMI
[    4.179044] [aml_sd_voltage_switch][0;40;32m switch to 1.8V for a non-uhs device.
               [0m
[    4.179044] cal[0][0]=9 dly_tmp = 4, temp = 8
[    4.179047] cal_result[0] = 8520
[    4.192029] cal[1][0]=9 dly_tmp = 6, temp = 8
[    4.192031] cal_result[1] = 8280
[    4.206878] cal[2][0]=10 dly_tmp = 7, temp = 9
[    4.206880] cal_result[2] = 9160
[    4.216187] cal[3][0]=9 dly_tmp = 4, temp = 8
[    4.216188] cal_result[3] = 8520
[    4.227322] cal[4][0]=9 dly_tmp = 5, temp = 8
[    4.227328] cal_result[4] = 8400
[    4.245363] cal[5][0]=9 dly_tmp = 7, temp = 8
[    4.245365] cal_result[5] = 8160
[    4.256506] cal[6][0]=9 dly_tmp = 5, temp = 8
[    4.256508] cal_result[6] = 8400
[    4.273219] cal[7][0]=9 dly_tmp = 8, temp = 8
[    4.273221] cal_result[7] = 8040
[    4.273222] max_cal_result =9160
[    4.273236] emmc: clk 200000000 SDR mode tuning start
[    4.273532] rx_tuning_result[0][0] = 10
[    4.273832] random: nonblocking pool is initialized
[    4.273848] rx_tuning_result[0][1] = 10
[    4.274138] rx_tuning_result[0][2] = 10
[    4.274456] rx_tuning_result[0][4] = 10
[    4.274459] best_win_start =4, best_win_size =4
[    4.274462] sd_emmc_regs->gclock =0x1000245, sd_emmc_regs->gadjust =0x2000
[    4.274470] emmc: gclock =0x1000245, gdelay=0x96865075
[    4.274471] gadjust=0x2000
[    4.274808] emmc: new HS200 MMC card at address 0001
[    4.275084] mmcblk0: emmc:0001 DG4016 14.6 GiB 
[    4.275633]  mmcblk0: p1 p2
[    4.899458] Freeing unused kernel memory: 912K (ffffffc001bbc000 - ffffffc001ca0000)
[    5.541259] vout_serve: vmode set to 1024x600p60hz

[    5.545511] vout_serve: don't set the same mode as current.
[    5.553423] vout_serve: vmode set to 1024x600p60hz

[    5.557868] vout_serve: don't set the same mode as current.
[    5.691572] switch_vpu_mem_pd: viu_vd1 OFF
[    5.693680] switch_vpu_mem_pd: afbc_dec OFF
[    5.696256] switch_vpu_mem_pd: di_post OFF
[    5.700309] switch_vpu_mem_pd: viu_vd2 OFF
[    5.737992] EXT4-fs (mmcblk0p2): mounted filesystem without journal. Opts: (null)
[    6.200263] systemd[1]: System time before build time, advancing clock.
[    6.313545] NET: Registered protocol family 10
[    6.322426] ip_tables: (C) 2000-2006 Netfilter Core Team
[    6.373736] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[    6.394964] systemd[1]: Detected architecture arm64.
[    6.411469] systemd[1]: Set hostname to <UX24-TRELEW>.
[    6.915618] systemd[1]: File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
[    6.932602] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[    7.149016] systemd[1]: Reached target User and Group Name Lookups.
[    7.156620] systemd[1]: Created slice User and Session Slice.
[    7.162714] systemd[1]: Reached target Swap.
[    7.169092] systemd[1]: Created slice System Slice.
[    7.175415] systemd[1]: Listening on udev Kernel Socket.
[    7.181654] systemd[1]: Listening on Syslog Socket.
[    7.188002] systemd[1]: Listening on fsck to fsckd communication Socket.
[    7.195572] systemd[1]: Listening on Journal Socket (/dev/log).
[    7.202311] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    7.210547] systemd[1]: Listening on Journal Audit Socket.
[    7.217301] systemd[1]: Created slice system-serial\x2dgetty.slice.
[    7.224581] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    7.233090] systemd[1]: Reached target Slices.
[    7.239640] systemd[1]: Reached target Remote File Systems.
[    7.246389] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    7.257041] systemd[1]: Listening on Journal Socket.
[    7.265680] systemd[1]: Mounting Huge Pages File System...
[    7.274925] systemd[1]: Mounting POSIX Message Queue File System...
[    7.285209] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    7.298452] systemd[1]: Starting Restore / save the current clock...
[    7.308438] systemd[1]: Starting Set the console keyboard layout...
[    7.320895] systemd[1]: Starting Load Kernel Modules...
[    7.330290] systemd[1]: Mounting Kernel Debug File System...
[    7.340578] systemd[1]: Starting Remount Root and Kernel File Systems...
[    7.349343] systemd[1]: Listening on udev Control Socket.
[    7.358635] systemd[1]: Starting udev Coldplug all Devices...
[    7.358661] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro
[    7.375813] systemd[1]: Starting Journal Service...
[    7.403184] systemd[1]: Starting Uncomplicated firewall...
[    7.412642] systemd[1]: Mounted Huge Pages File System.
[    7.419758] systemd[1]: Mounted POSIX Message Queue File System.
[    7.427995] systemd[1]: Started Create list of required static device nodes for the current kernel.
[    7.442598] systemd[1]: Started Restore / save the current clock.
[    7.450129] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
[    7.457619] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
[    7.466520] systemd[1]: Failed to start Load Kernel Modules.
[    7.477362] systemd[1]: Mounted Kernel Debug File System.
[    7.484054] systemd[1]: Started Journal Service.
[    7.551222] systemd-journald[285]: Received request to flush runtime journal from PID 1
[    7.582348] systemd-journald[285]: File /var/log/journal/2ae9ad504d104c639c0e5f72d3594c18/system.journal corrupted or uncleanly shut down, renaming and replacing.
[    8.115408] gpiomem-meson c8834000.gpiomem: Initialised: Registers at 0xc8834000
[    8.172572] Driver for 1-wire Dallas network protocol.
[    8.272018] ionvideo open
[    8.463241] ionvideo_stop_generating!!!!
[    8.463279] ionvideo release
[    8.539408] input: RPI_TOUCH By ZH851 as /devices/dwc2_b/usb1/1-1/1-1.2/1-1.2:1.0/input/input2
[    8.539607] dwav_usb_mt 1-1.2:1.0: ODROID VU7 Plus MultiTouch(1024x600)
[    8.539669] usbcore: registered new interface driver dwav_usb_mt
[    9.431909] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[    9.629804] audit: type=1400 audit(1606771405.300:2): apparmor="STATUS" operation="profile_load" name="libreoffice-oopslash" pid=466 comm="apparmor_parser"
[    9.631015] audit: type=1400 audit(1606771405.300:3): apparmor="STATUS" operation="profile_load" name="/usr/bin/man" pid=465 comm="apparmor_parser"
[    9.631079] audit: type=1400 audit(1606771405.300:4): apparmor="STATUS" operation="profile_load" name="man_filter" pid=465 comm="apparmor_parser"
[    9.631100] audit: type=1400 audit(1606771405.300:5): apparmor="STATUS" operation="profile_load" name="man_groff" pid=465 comm="apparmor_parser"
[    9.636155] audit: type=1400 audit(1606771405.310:6): apparmor="STATUS" operation="profile_load" name="libreoffice-senddoc" pid=467 comm="apparmor_parser"
[    9.639022] audit: type=1400 audit(1606771405.310:7): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=464 comm="apparmor_parser"
[    9.639050] audit: type=1400 audit(1606771405.310:8): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=464 comm="apparmor_parser"
[    9.639066] audit: type=1400 audit(1606771405.310:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=464 comm="apparmor_parser"
[    9.639082] audit: type=1400 audit(1606771405.310:10): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=464 comm="apparmor_parser"
[    9.642228] audit: type=1400 audit(1606771405.310:11): apparmor="STATUS" operation="profile_load" name="libreoffice-xpdfimport" pid=469 comm="apparmor_parser"
[   13.971766] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[   14.717091] eth0: device MAC address 00:1e:06:35:9a:de
[   15.962648] fb: osd[0] canvas.idx =0x40
[   15.962652] fb: osd[0] canvas.addr=0x78000000
[   15.962654] fb: osd[0] canvas.width=4096
[   15.962656] fb: osd[0] canvas.height=600
[   18.713561] stmmaceth c9410000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   23.522222] fuse init (API version 7.23)
[   24.669987] divider=17,frac=80768000,SDMval=11722
[   24.670034] i2sin_fifo0_set_buf
[   24.695699] [aml-i2s-dai]i2s dma ffffff80004b1000,phy addr 1569062912,mode 0,ch 2
[   24.695713] ----aml_hw_iec958_init,runtime->rate=44100,sample_rate=5--
[   24.695717] aml_set_spdif_clk rate
[   24.695723] share the same clock
[   24.695730] iec958 mode PCM16
[   24.695738] IEC958 16bit
[   24.695745] hdmitx: audio: aout notify rate 44100
[   24.695749] hdmitx: audio: aout notify size 16
[   24.695754] hdmtix: set audio
[   24.695768] hdmitx tx_aud_src = 0
[   24.695801] hdmitx aud_n_para = 6144
[   24.695821] hdmitx set channel status
[   24.695881] 958 with i2s
[   24.701707] i2sin_fifo0_set_buf
[   24.702547] [aml-i2s-dai]i2s dma ffffff80004b1000,phy addr 1569062912,mode 0,ch 4
[   24.702559] ----aml_hw_iec958_init,runtime->rate=44100,sample_rate=5--
[   24.702563] aml_set_spdif_clk rate
[   24.702569] share the same clock
[   24.702576] iec958 mode PCM16
[   24.702584] IEC958 16bit
[   24.702591] hdmitx: audio: aout notify rate 44100
[   24.702595] hdmitx: audio: aout notify size 16
[   24.702601] hdmtix: set audio
[   24.702615] hdmitx tx_aud_src = 0
[   24.702643] hdmitx aud_n_para = 6144
[   24.702669] hdmitx set channel status
[   24.702728] 958 with i2s
[   24.704118] i2sin_fifo0_set_buf
[   26.140460] gpiomem-meson c8834000.gpiomem: gpiomem device opened.
[   27.038640] gpiomem-meson c8834000.gpiomem: gpiomem device opened.
[   32.295830] Disconnect cb-Host
[   32.356914] usb 1-1: USB disconnect, device number 2
[   32.356929] usb 1-1.2: USB disconnect, device number 3
[   34.713342] dwc_otg: Indeed it is in host mode hprt0 = 00021501
[   34.983253] usb 1-1: new high-speed USB device number 4 using dwc_otg
[   34.983543] dwc_otg: Indeed it is in host mode hprt0 = 00001101
[   35.238889] hub 1-1:1.0: USB hub found
[   35.239630] hub 1-1:1.0: 4 ports detected
[   35.346188] gpiomem-meson c8834000.gpiomem: gpiomem device opened.
[   35.513288] usb 1-1.2: new full-speed USB device number 5 using dwc_otg
[   35.615664] input: RPI_TOUCH By ZH851 as /devices/dwc2_b/usb1/1-1/1-1.2/1-1.2:1.0/input/input3
[   35.615927] dwav_usb_mt 1-1.2:1.0: ODROID VU7 Plus MultiTouch(1024x600)


Thanks in advance,
Sebas

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

We will try to find a root cause.

BTW, what happens if you reset the USB hub always just after finishing the boot process?

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

We incorporated the hubreset.sh into our boot process and it seems to help the situation, but it's not perfect and we also dont know after boot if the hubreset.sh works.
We tested: sudo reboot, hubreset.sh, unplug/replug, to get statistics, and it seems that some displays are more sensible than others (I've comparaed VU7+ vs VU7a+ and the latter behaved muchs better).
Even after a succesfully reboot doing hubreset.sh we get an 71% of success on the VU7+.
The VU7a+ was almost perfect along the test that we did today.

If we can get a way to detect programatically the bad situation the we can use usbreset (it's faster and less noticeable) or hubreset.sh.

One more point, to extend the lifetime of the VU7+/VU7a+ display we have huboff.sh and hubon.sh that are called when we detect user inactivity.

Sebas

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

I see. We will try the old Vu7+ to reproduce the issue first and try to find a way to detect the touchscreen functionality .

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

I have a little of information to share.

usbreset it's faster but not as effective as hubreset.sh.
When usbreset didnt resolve the issue, we can call it 20 times and it will report 'Reset sucesffully' but the touch still will not work.
dmesg shows that the device was initialiazed 20 times:

Code: Select all

...
[ 3725.257916] usb 1-1.2: reset full-speed USB device number 5 using dwc_otg
[ 3725.377357] input: RPI_TOUCH By ZH851 as /devices/dwc2_b/usb1/1-1/1-1.2/1-1.2:1.0/input/input4
[ 3725.377896] dwav_usb_mt 1-1.2:1.0: ODROID VU7 Plus MultiTouch(1024x600)
In this situation hubreset.sh succesfully resolved the situation.

I've tried bind/unbind but it was denied due permissions, even executing as root (I always do these test in a remote terminal logged as root).

Also I've tried:

Code: Select all

cd /sys/bus/usb/devices
cd 1-1.2
echo 0 > authorization
echo 1 > authorization
without success.

and also

Code: Select all

cd 1-1.2:1.0/power
echo off > control
and I get "Permission denied"

Sebas

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

Thank you for the updates.
We will look into the issue early next week since we have a urgent problem internally. Sorry for the delay.

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Ok.
I will work with a electronic enginier to make some measurements in the board.
The typical voltage, data transmission, etc.
We compared the VU7+ and VU7a+ and noticed some differences, so we will review both boards.

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

We've set up a test environment with a C2 board and an old Vu7+ as this picture.
C2_Vu7Plus_Test.png
C2_Vu7Plus_Test.png (1.26 MiB) Viewed 517 times
Freshly installed Ubuntu 18.04.3 2019/08/20 Mate image and updated the system.

Code: Select all

Linux odroid 3.16.85-52 #1 SMP PREEMPT Mon Jun 29 13:18:51 -03 2020 aarch64 aarch64 aarch64 GNU/Linux
We did reboot the system around 20 times but we couldn't reproduce the issue.
We also ran a USB reset script over 3 hours. But there was no issue so far and the Vu7+ touchscreen always worked.

Code: Select all

cat usb_hubreset.sh
#!/bin/sh
echo 126 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio126/direction
sleep 1
echo 0 > /sys/class/gpio/gpio126/value
sleep 1
echo 1 > /sys/class/gpio/gpio126/value
sleep 1
echo 126 > /sys/class/gpio/unexport
echo " reset finish "

root@odroid :while true
do
./usb_hubreset.sh
sleep 5
done
Can you find any difference from your test environment?
Did you use our official 5V/2A PSU after removing the J1 jumper.
If your 5V PSU output is not stable or lower than 4.8V even a short period, the touchscreen controller might not work from time to time.
It is very worth to keep measuring the 5.0V power rail on the 40pin GPIO header with a DMM in the booting process to check the PSU stability.
https://wiki.odroid.com/odroid-c2/hardw ... _2x20_pins

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Thanks for the update!
In our product we have a own power supply. In my test environment I'm using the official 2Amp power supply.
We have experienced the issue in both situations.
We remove the j1 jumper.

We are currenlty in hollydays until wednesday when we will resume our work.

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

I see.
Once you resume, keep checking the voltage on the 40pin header.

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Our power supply it's delivering 4.9x volts.
We measured the voltage at the standard USB port and they are at 4.7x volts (j1 removed as always, and it's pretty the same when using the official power supply).
We discovered that there is a hiccup / glich at the voltage when the hub it's repowered.
The voltage goes to 4.7xV for 2ms, then goes down, and then goes up to again to 4.7xV at the usb ports when executing hubreset.sh (when we repower the hub).
I've asked for a screen capture of the oscilloscope software, or a simple cellphone photo.
We can see how the voltage decreases when the backlight is enabled, so we even tried to power the backlight independently but it's not the real solution.

One more point.
We discovered that the hub turns off when we execute:
echo out > /sys/class/gpio/gpio126/direction
So the hubreset.sh can be optimized to:

Code: Select all

echo 126 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio126/direction
sleep 0.1
echo 0 > /sys/class/gpio/gpio126/value
sleep 1
echo 1 > /sys/class/gpio/gpio126/value
sleep 0.1
echo 126 > /sys/class/gpio/unexport
Wich is faster.


Question:
There is a way (low level accepted) to know the status of the touch chip or the i2s->usb chip? (like calling ioctl )


Thanks in advance.
Sebas.

PS: Can you send me a PM with the anwser to viewtopic.php?f=205&t=40521 ?

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

4.7xx Volt seems to be a root cause.
I think you have to find a way to increase the output voltage of the power supply slightly.
Our official PSU has ~5.2Volt output when the load is very light.

PS. They already added the datasheet of the connectors.
These users thanked the author odroid for the post:
Sebas_Ledesma (Fri Dec 11, 2020 10:12 pm)

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Here it's the window capture of the Voltage signal at the usb output when powered on
Image
We can see that after powered on the voltages goes to "zero" again and after 200-300ms it becomes to the normal state.

A few seconds later (4.5 secs aprox) there is a slight down due the backlight.

We used a Vu7+A display. We did a lot of testings (around 100 times) to try get the more detailed info.

As we know the fail it's not due to the up-down-up situation.
BTW, the C2 specs indicates 5V and not 5.2V, we can easily adjust our power supply to ensure 5V at the USB output. Our power supply provides around 6Amp and it's not compromised by the load of the whole electronics.

We tried also an independent /external power supply connected to the micro USB connector of the display and we were able to get the fail.
Internally the external power supply dont power up the "touch" circuitery (neither the GT811 nor GD32FD103C).

When it fails there is no way to detect it using dmesg, xinput neither "lsusb -v".
Also there is no data when executing: "usbhid-dump --entity=all" neither "xxd /dev/input/by-id/usb-RPI_TOUCH_By_ZH851-event-if00"

Also there is no i2c activity between GT811 and the micro GD32FD103C.

We did a reset to the pin 7 of GD32FD103C and after executing usbreset on the terminal we recovered the data in the i2c.
So for some reason the GD32FD103C or the GT811 doesnt start correctly.

Question:
There is a way to send a reset command to the GD32FD103C?
ioctl(fd, USBDEVFS_RESET, 0) seems to work mainly in the Linux USB stack and not directly reseting the chip.

Bonus if you can send us by PM the schematic (VU7+/VU7+A) to make easier the electrical analysis.



Sebas.

PS: updated version of usbreset, now it allows to be called:
usbreset bus devId
Example:
usbreset 001 005
as suggested by someone in a forum:

Code: Select all

/* usbreset -- send a USB port reset to a USB device */
// Basado en https://marc.info/?l=linux-usb&m=121459435621262&w=2
// de Alan Stern

#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>


int main(int argc, char *argv[]) {
    char filename[1024];
    int fd;
    int rc;

    if ( argc <2 || argc >3 ) {
        fprintf(stderr, "Usage:\n usbreset BUS DEV\n usbreset /path/to/the/device\nExamples:\n usbreset 001 005\n usbreset /dev/bus/usb/001/005\n");
		//Hacer un lsusb para ver los dispositivos:
		//Bus 002 Device 002: ID 16b4:0705 iStation
		//
		//Ejecutar: 
		//sudo ./usbreset /dev/bus/usb/002/002
		/* Opcion:
			echo $(lsusb | grep iStation) myDev=$( lsusb | grep iStation | perl -nE "/\D+(\d+)\D+(\d+).+/; print qq(\$1/\$2)") sudo usbreset /dev/bus/usb/$iStation
		*/
		
        return 1;
    }

    if ( argc == 2) 
        strcpy(filename, argv[1]);
    else
        sprintf(filename, "/dev/bus/usb/%s/%s", argv[1], argv[2] );

    fd = open(filename, O_WRONLY);
    if (fd < 0) {
        fprintf(stderr, "usbreset: error opening %s\n", filename);
        return 1;
    }

    printf("Resetting USB device %s\n", filename);
    rc = ioctl(fd, USBDEVFS_RESET, 0);
    if (rc < 0) {
        perror("usbreset: error in ioctl");
        return 1;
    }
    printf("usbreset: Reset successful\n");

    close(fd);
    return 0;
}

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

Thank you for sharing the voltage transient capture.
To compensate the voltage drops in the DC power cable and connectors, we needed to increase the source voltage slightly to make the USB VBUS voltage near 5.0Volt.

The Vu7/Vu5 series were developed by a 3rd-party company and they didn't disclose the full schematics either firmware.

Could the updated 'usbreset' command reset the touchscreen controller without hub reset? :o

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

usbreset it's succesfully but if only previously we manually reset the IC.
The updated version only expands the options at command line, but internally it do the same, performs an ioctl(..USBDEVFS_RESET...);
I have in mind to add support for devName, for that I will have to integrate part of the code of lsusb to translate from devName to bus/devId.
It will allow to be called:
usbreset iStation

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

I don't think the usbreset command will reset the touchscreen controller properly. :(
But it is still worth to try. Once you have a test result with the devName, please share it.

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Hi:

We tested "hubpower" as alternative method ( https://github.com/hevz/hubpower/blob/master/hubpower.c ).
Now the updated version of hubreset.sh is:

Code: Select all

hubpower 001:001 power 1 off
sleep 1
hubpower 001:001 bind
huboff.sh becomes:

Code: Select all

hubpower 001:001 power 1 off
and hubon.sh becomes:

Code: Select all

hubpower 001:001 bind
1 - We tested with the oscilloscope and powering down/up using hubpower doesnt generate the glitch. :D

2 - Also initial long testing with a 'sensible' display (we localized a display that has a "high" rate of failures) it works correctly after an hubreset.sh.

We are also analizyng uhubctl ( https://github.com/mvp/uhubctl ) wich is more modern, but I sitll have to compile it.


Sebas

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Here is the image of voltage at USB port along the the boot process on C2.
Image

We can see the how the voltage drops when the C2 reboots, and a glitch in the standard boot process when the kernel power ups the normal hub.
A few seconds later there is a hubreset.sh that don't generate the glitch.

Source code of hubreset.sh, hubon.sh and huboff.sh are available in the previous post.

Source code of hubpower is:

Code: Select all

/* hubpower -- control the power settings for a USB hub
 *
 * To build: gcc -o hubpower hubpower.c
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <asm/byteorder.h>
#include <linux/usbdevice_fs.h>
#include <linux/usb/ch9.h>

#define USB_HUB_TIMEOUT     5000    /* milliseconds */
#define USB_PORT_FEAT_POWER 8

#define USB_DT_HUB      (USB_TYPE_CLASS | 0x09)
#define USB_DT_HUB_SIZE     7

struct usb_hub_descriptor {
    __u8  bDescLength;
    __u8  bDescriptorType;
    __u8  bNbrPorts;
    __le16 wHubCharacteristics;
    __u8  bPwrOn2PwrGood;
    __u8  bHubContrCurrent;
} __attribute__ ((packed));

struct usb_port_status {
    __le16 wPortStatus;
    __le16 wPortChange;
} __attribute__ ((packed));

#define USB_PORT_STAT_CONNECTION    0x0001
#define USB_PORT_STAT_ENABLE        0x0002
#define USB_PORT_STAT_SUSPEND       0x0004
#define USB_PORT_STAT_OVERCURRENT   0x0008
#define USB_PORT_STAT_RESET     0x0010
#define USB_PORT_STAT_L1        0x0020
/* bits 6 to 7 are reserved */
#define USB_PORT_STAT_POWER     0x0100
#define USB_PORT_STAT_LOW_SPEED     0x0200
#define USB_PORT_STAT_HIGH_SPEED        0x0400
#define USB_PORT_STAT_TEST              0x0800
#define USB_PORT_STAT_INDICATOR         0x1000
#define USB_PORT_STAT_POWER_3       0x0200  /* USB 3.0 */


int fd;     /* Hub device file */
int usb_level;


void usage(void)
{
    fprintf(stderr, "Usage:"
        "\thubpower busnum:devnum power {portnum (on|off)} ...\n"
        "\thubpower busnum:devnum status\n"
        "\thubpower busnum:devnum bind\n"
        );
    exit(1);
}

void port_status(int portnum)
{
    struct usbdevfs_ctrltransfer ctrl;
    struct usb_port_status pstat;
    int rc;

    ctrl.bRequestType = USB_DIR_IN | USB_TYPE_CLASS |
            USB_RECIP_OTHER;
    ctrl.bRequest = USB_REQ_GET_STATUS;
    ctrl.wValue = 0;
    ctrl.wIndex = portnum;
    ctrl.wLength = sizeof(pstat);
    ctrl.timeout = USB_HUB_TIMEOUT;
    ctrl.data = &pstat;
    rc = ioctl(fd, USBDEVFS_CONTROL, &ctrl);
    if (rc == -1) {
        fprintf(stderr, "Error in ioctl "
            "(get port %d status): %s\n",
            portnum, strerror(errno));
        return;
    }

    printf("Port %2d status: %04x ", portnum, pstat.wPortStatus);

    if (usb_level <= 2) {
        if (pstat.wPortStatus & USB_PORT_STAT_INDICATOR)
            printf(" Indicator");
        if (pstat.wPortStatus & USB_PORT_STAT_TEST)
            printf(" Test-Mode");
        if (pstat.wPortStatus & USB_PORT_STAT_HIGH_SPEED)
            printf(" High-Speed");
        if (pstat.wPortStatus & USB_PORT_STAT_LOW_SPEED)
            printf(" Low-Speed");
        if (pstat.wPortStatus & USB_PORT_STAT_POWER)
            printf(" Power-On");
        else
            printf(" Power-Off");
    } else if (usb_level == 3) {
        if (pstat.wPortStatus & USB_PORT_STAT_POWER_3)
            printf(" Power-On");
        else
            printf(" Power-Off");
    }

    if (pstat.wPortStatus & USB_PORT_STAT_RESET)
        printf(" Resetting");
    if (pstat.wPortStatus & USB_PORT_STAT_OVERCURRENT)
        printf(" Overcurrent");
    if (pstat.wPortStatus & USB_PORT_STAT_SUSPEND)
        printf(" Suspended");
    if (pstat.wPortStatus & USB_PORT_STAT_ENABLE)
        printf(" Enabled");
    if (pstat.wPortStatus & USB_PORT_STAT_CONNECTION)
        printf(" Connected");

    printf("\n");
}

int main(int argc, char **argv)
{
    int busnum, devnum, numports;
    enum {DO_POWER, DO_STATUS, DO_BIND} action;
    char fname1[40], fname2[40];
    int rc;
    int portnum;
    struct usb_device_descriptor dev_descr;
    struct usb_hub_descriptor hub_descr;
    struct usbdevfs_ctrltransfer ctrl;
    struct usbdevfs_ioctl usb_ioctl;
    int bus_endian;

    if (argc < 3)
        usage();
    if (sscanf(argv[1], "%d:%d", &busnum, &devnum) != 2 ||
            busnum <= 0 || busnum > 255 ||
            devnum <= 0 || devnum > 255)
        usage();

    if (strcmp(argv[2], "power") == 0) {
        action = DO_POWER;
        if ((argc - 3) % 2 != 0)
            usage();
    } else if (strcmp(argv[2], "status") == 0) {
        action = DO_STATUS;
        if (argc != 3)
            usage();
    } else if (strcmp(argv[2], "bind") == 0) {
        action = DO_BIND;
        if (argc != 3)
            usage();
    } else {
        usage();
    }

    sprintf(fname1, "/dev/bus/usb/%03d/%03d", busnum, devnum);
    sprintf(fname2, "/proc/bus/usb/%03d/%03d", busnum, devnum);

    bus_endian = 1;
    fd = open(fname1, O_RDWR);
    if (fd < 0) {
        int err1 = errno;

        bus_endian = 0;
        fd = open(fname2, O_RDWR);
        if (fd < 0) {
            fprintf(stderr, "Unable to open device file %s: %s\n",
                    fname1, strerror(err1));
            fprintf(stderr, "Unable to open device file %s: %s\n",
                    fname2, strerror(errno));
            return 1;
        }
    }

    rc = read(fd, &dev_descr, USB_DT_DEVICE_SIZE);
    if (rc != USB_DT_DEVICE_SIZE) {
        perror("Error reading device descriptor");
        return 1;
    }
    if (dev_descr.bDeviceClass != USB_CLASS_HUB) {
        fprintf(stderr, "Device %d:%d is not a hub\n",
                busnum, devnum);
        return 1;
    }
    if (bus_endian) {
        dev_descr.bcdUSB = __le16_to_cpu(dev_descr.bcdUSB);
    }
    usb_level = dev_descr.bcdUSB >> 8;

    ctrl.bRequestType = USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_DEVICE;
    ctrl.bRequest = USB_REQ_GET_DESCRIPTOR;
    ctrl.wValue = USB_DT_HUB << 8;
    ctrl.wIndex = 0;
    ctrl.wLength = USB_DT_HUB_SIZE;
    ctrl.timeout = USB_HUB_TIMEOUT;
    ctrl.data = &hub_descr;
    rc = ioctl(fd, USBDEVFS_CONTROL, &ctrl);
    if (rc == -1) {
        perror("Error in ioctl (read hub descriptor)");
        return 1;
    }
    numports = hub_descr.bNbrPorts;

    if (action == DO_STATUS) {
        for (portnum = 1; portnum <= numports; ++portnum)
            port_status(portnum);
        return 0;
    }

    if (action == DO_BIND) {
        usb_ioctl.ifno = 0;
        usb_ioctl.ioctl_code = USBDEVFS_CONNECT;
        usb_ioctl.data = NULL;
        rc = ioctl(fd, USBDEVFS_IOCTL, &usb_ioctl);
        if (rc == -1) {
            perror("Error in ioctl (USBDEVFS_CONNECT)");
            return 1;
        }
        printf("Bind-driver request sent to the kernel\n");
        return 0;
    }

    if (action == DO_POWER) {
        int i;

        usb_ioctl.ifno = 0;
        usb_ioctl.ioctl_code = USBDEVFS_DISCONNECT;
        usb_ioctl.data = NULL;
        rc = ioctl(fd, USBDEVFS_IOCTL, &usb_ioctl);
        if (rc == -1 && errno != ENODATA) {
            perror("Error in ioctl (USBDEVFS_DISCONNECT)");
            return 1;
        }

        for (i = 3; i < argc; i += 2) {
            portnum = atoi(argv[i]);
            if (portnum < 1 || portnum > numports) {
                fprintf(stderr, "Invalid port number: %d\n",
                        portnum);
                continue;
            }

            if (strcmp(argv[i+1], "on") == 0)
                ctrl.bRequest = USB_REQ_SET_FEATURE;
            else if (strcmp(argv[i+1], "off") == 0)
                ctrl.bRequest = USB_REQ_CLEAR_FEATURE;
            else {
                fprintf(stderr, "Invalid port power level: %s\n)",
                        argv[i+1]);
                continue;
            }

            ctrl.bRequestType = USB_DIR_OUT | USB_TYPE_CLASS |
                    USB_RECIP_OTHER;
            ctrl.wValue = USB_PORT_FEAT_POWER;
            ctrl.wIndex = portnum;
            ctrl.wLength = 0;
            ctrl.timeout = USB_HUB_TIMEOUT;
            ctrl.data = NULL;
            rc = ioctl(fd, USBDEVFS_CONTROL, &ctrl);
            if (rc == -1) {
                fprintf(stderr, "Error in ioctl "
                    "(set/clear port %d feature): %s\n",
                    portnum, strerror(errno));
                continue;
            }

            port_status(portnum);
        }
    }
    return 0;
}
It includes minor edit from the original: https://github.com/hevz/hubpower/blob/master/hubpower.c

We also tested the alternate version (wich dont performs usb_ioctl.ioctl_code = USBDEVFS_DISCONNECT; at DOPOWER option) but for us it's safer the original full version.

In a particulary "sensible" VU7+ display all the reboots and huboff.sh + hubon.sh were ok and the touchscreen worked.
This very same VU7+ display presented the fail with our old hubreset method (based on exporting the GPIO126).
So the conclusion that we have today is that not only the slightly low voltage caused the problem but also the glitch.

So:
- Can you review your boot code in order to avoid the standard glitch?

Thanks in advance,
Sebas

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

Thank you for sharing the very detail investigation.
We will try to find when (boot-rom or uboot or kernel) the glitch appears.

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

We could catch the gitch with an oscilloscope.
The glitch seems to be appearing at the very beginning of the kernel starting (just after uboot stage).
We will try finding what generates the strange glitch.
scope_4.png
scope_4.png (39.52 KiB) Viewed 320 times
But, regardless of the glitch, we couldn't reproduce the problem with Vu7+ nor Vu7a+ even with a 4.7Volt lab power settings. :(
Which USB devices are connected to your C2 board?
These users thanked the author odroid for the post:
Sebas_Ledesma (Fri Dec 18, 2020 12:51 am)

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

We are using an stereo USB audio card at the OTG port: Texas Instruments PCM2900C Audio CODEC.
In the other bus we have connected the touch device and also we use a second port just for powering up the backlight.

User avatar
odroid
Site Admin
Posts: 36385
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1431 times
Been thanked: 980 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by odroid »

The USB peripherals seems to be normal and they don't consume a lot of current.
Is the issue appearing frequently with a 5.2~5.3volt PSU?
How many Vu7+ and Vu7a+ do you have?
Can you sell us two Vu7+ units for reproducing the issue?

Sebas_Ledesma
Posts: 159
Joined: Thu Jun 08, 2017 2:49 am
languages_spoken: english
ODROIDs: c2
Has thanked: 16 times
Been thanked: 12 times
Contact:

Re: VU7+ / VU7a+ touch problem.

Post by Sebas_Ledesma »

Hi:

1 - Sorry by the delay, I was outside the country celebrating Christmas (and when retourned I was in 7 day mandatory quarantine, even with 2 negatives PCR!!).

2 - We buy small lots, tipically 20-30. I have 2 units for development/testing. I have to ask production manager.

3 - I think we have identified, at least partially, the case #3 of the original post of the thread: lsusb list the touch, we have data, but no response in the application (and more important, how to solve it).

- Note: with the new hubreset.sh we increased very much the reliability of the touch system (also ensuring the the power supply delivers 5.2V, so the USB port delivers 5.0v). but sometimes when rebooting we still have the problem.
So just by coincide I've touched the mouse while booting and it moved, but when our application showed (and it covers the whole screen) it no longer works.
So we killed our application and the mouse responds to the touch in the desktop. We investigated a little more this particulary case.

In this situation (no touch after reboot).
a - (new)hubreset.sh solved if we execute it manually after the startup proccess ends.
b - We did (from a putty terminal):

Code: Select all

export DISPLAY=:0
xinput --test-xi2 "RPI_TOUCH By ZH851"
the xinput window showed on the screen and it allowed to be dragged, but when touching our main app window it didnt switched the focus neither allowed to press buttons on the window.
In the remote terminal we can see the data that it's incoming, but there is no action in our application (case #3: lsusb list the device, we have data, but no reaction at our app).
Executing (from the same putty terminal):

Code: Select all

xinput dissable "RPI_TOUCH By ZH851"
xinput enable "RPI_TOUCH By ZH851"
solved the problem!.
So, for some reason the touch initalization can fail for our app, but it responds to the desktop or new created the apps. We also killed and launched our app and it worked, but there is no reason to kill the app if xinput dissable + xinput enable solves the situation with our main app running.

So, after a little of digging we believed that for some reason sometimes our application didnt receive the focus/touch. We analyzed the boot sequence and considered the posibility of a sincronicity issue with the hubreset.sh that we normally use (or the lack of sincronicity as one process it's launched from rc.local and the main app from autostart). So we did a small change in our startup sequence to ensure that our main app it's launched sincroniced and after the hubreset.sh and it worked (100/100 reboots). No need to add xinput dissable "RPI_TOUCH By ZH851" ; xinput enable "RPI_TOUCH By ZH851"
at the start.

We consider that this explains the case #3 (at least partially, we have to investigate if the case#3 it's fully resolved).

Sebas

Post Reply

Return to “Issues”

Who is online

Users browsing this forum: No registered users and 5 guests