Difference between revisions of "IoTGateway/Features/Linux/Display"

From ESS-WIKI
Jump to: navigation, search
m (Winston.huang moved page IoTGateway/Features/Linux/Display/Dual Channel to IoTGateway/Features/Linux/Display without leaving a redirect)
Line 1: Line 1:
 +
==Single Channel LVDS Display==
 +
 
==Dual Channel LVDS Display==
 
==Dual Channel LVDS Display==
 
Calculating Timings parameter of LVDS Panel SOP
 
Calculating Timings parameter of LVDS Panel SOP
Line 48: Line 50:
  
 
(5)vback-porch + vfront-porch + vsync-len (Total) = Blanking =  Vertical Total - Vertical Active Display Period
 
(5)vback-porch + vfront-porch + vsync-len (Total) = Blanking =  Vertical Total - Vertical Active Display Period
 +
 +
==Touchscreen==
 +
===E21D03U-C01-04 Irtouch-Dualtouch===
 +
IRTOUCH panel  [Android 4.4]
 +
<small>
 +
  (1) Download IRTOUCH driver  ([[Media:Irtouch-dualtouch-package-android-v14.2.0.0002.7z|Irtouch-dualtouch-package-android-v14.2.0.0002.7z]])
 +
  (2) Download IRTOUCH SWAP mode tool ([[Media:Swapmode.7z|Swapmode.7z]])
 +
  (3) Swap mode
 +
      You need to check and swap IRTOUCH 0X80.
 +
      Please install SWAP mode tool in win7.
 +
      Run SwapModeTool.exe and choose IRTOUCH 0X80. 
 +
  (4) Installing the IRTOUCH Dual-touch Touchscreen Driver
 +
      (a) irtouchusb-dt.c locate to kernel_imx/driver/input/touchscreen;
 +
      (b) modify Makefile in kernel_imx/driver/input/touchscreen
 +
          add:  "obj-$(CONFIG_TOUCHSCREEN_USBIRTOUCH_DT) += irtouchusb-dt.o"
 +
      (c) modify Kconfig in kernel_imx/driver/input/touchscreen
 +
          add:
 +
          config TOUCHSCREEN_USBIRTOUCH_DT
 +
                tristate "IRTOUCH USB Touchscreen Driver For single point"
 +
                depends on USB_ARCH_HAS_HCD
 +
                select USB
 +
                help
 +
                  Say Y here if you have a IRTOUCH based touchscreen
 +
                  controller.
 +
                  If unsure, say N.
 +
                  To compile this driver as a module, choose M here: the
 +
                  module will be called irtouch.
 +
      (d)  You can make menuconfig select TOUCHSCREEN_USBIRTOUCH_DT and build kernel
 +
          Modify defconfig CONFIG_TOUCHSCREEN_USBIRTOUCH_DT=y
 +
          example : imx6_rsb4410_android_kk44_defconfig
 +
      (e)  Add one line to Android file system's ueventd.rc:
 +
          File path : device/fsl/imx6/etc/ueventd.freescale.rc 
 +
          /dev/irtouch      0666  root    root
 +
      (f)  Copy "Vendor_6615_Product_0081.idc" and "Vendor_6615_Product_0080.idc" file to the Android file system's /usr/idc directory.
 +
  (5)  Calibration the Touchscreen
 +
          Install CalibrationTools.apk and run "CalibrationTools" to start calibrate touchscreen.
 +
          package name:com.irtouch.android.calibration   
 +
          class name:  CalibrationToolsActivity</small>
 +
 +
eGTouch touch panel [Android 4.2 ~ Android 4.4]
 +
<small>
 +
  (1) Add "eGalaxCalibrator" PRODUCK PACKAGES in device/fsl/imx6/iMX6.mk
 +
  (2) Add eGtouch file path in device/fsl/imx6/iMX6.mk
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGalaxTouch_VirtualDevice.idc:system/usr/idc/eGalaxTouch_VirtualDevice.idc \
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchA.ini:data/eGTouchA.ini \
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchD:system/bin/eGTouchD \
 +
  (3) Add eGtouch idc and ini file in device/fsl/imx6/BoardConfigCommon.mK
 +
      BOARD_USERDATAIMAGE_PARTITION_SIZE := 128M
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchA.ini
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchD
 +
      device/fsl/common/input/eGTouch_v2.5.2320.A/eGalaxTouch_VirtualDevice.idc
 +
  (4) Add service about eGTouch in device/fsl/rsb_4410/init.rc
 +
      service eGTouchD /system/bin/eGTouchD
 +
        class main
 +
        user root
 +
        group root
 +
        oneshot      [Android 4.2 and 4.4 MP version is include eGTouch function]
 +
</small>
 +
 +
===IDK-1105R-50VGA1E===
 +
:The following operations are performed using Linux BSP 4410LBV2080.
 +
 +
* u-boot
 +
:apparently specify <span style="color:red">LDB-VGA</span> in video item contained in the variable <code>bootargs_base</code>
 +
:<code>setenv bootargs_base 'setenv bootargs console=ttymxc0,115200 enable_wait_mode=off video=mxcfb0:dev=ldb,<span style="color:red">LDB-VGA</span>,if=RGB666'</code>
 +
 +
* linux kernel
 +
:in drivers/video/mxc/ldb.c, insert the following lines into <code>static struct struct fb_videomode ldb_modefb[]</code> (or modify the exist element contained <span style="color:red">"LDB-VGA"</span>) :
 +
<div style="margin-left: 2em;"><source lang="C">
 +
{
 +
"LDB-VGA", 60, 640, 480, 39722,
 +
50, 80,
 +
24, 18,
 +
30, 10,
 +
0,
 +
FB_VMODE_NONINTERLACED,
 +
FB_MODE_IS_DETAILED,},
 +
</source></div>

Revision as of 04:04, 11 August 2016

Single Channel LVDS Display

Dual Channel LVDS Display

Calculating Timings parameter of LVDS Panel SOP OS: Yocto 1.8 Modify imx6qdl-advantech.dtsi Step1: In ldb parameter, add parameter --> split-mode; /* dual-channel setting *

  &ldb {
       ext_ref = "true";
       status = "okay";
       split-mode; /* dual-channel setting */

Step2: In lvds-channel@1, change [crtc = "ipu1-di1";] to [crtc = "ipu1-di0";]

       lvds-channel@1 {
               fsl,data-mapping = "spwg";
               fsl,data-width = <24>;
               /* crtc = "ipu1-di1"; */
               crtc = "ipu1-di0"; /* dual-channel setting */
               status = "okay";

Step3: In display-timings native-mode = <&timing0>, Delete the other panel parameter.Add" LTI370LN01 " Parameter

        //Dual channel panel
                       timing0: lti370ln01 {
                               clock-frequency = <148500000>;
                               hactive = <1920>;
                               vactive = <544>;
                               hback-porch = <70>;
                               hfront-porch = <70>;
                               vback-porch = <200>;
                               vfront-porch = <200>;
                               hsync-len = <140>;
                               vsync-len = <185>;
                       };

Calculating Timings parameter Check your panel Timing table Example : samsung 37 inch panel

Timing lvds.png
Timing lvds2.png

(1)clock-frequency --> Clock (MHz)

(2)hactive --> Horizontal Active Display Period

(3)vactive --> Vertical Active Display Period

(4)hback-porch + hfront-porch + hsync-len (Total) = Blanking = Horizontal Total - Horizontal Active Display Period

(5)vback-porch + vfront-porch + vsync-len (Total) = Blanking = Vertical Total - Vertical Active Display Period

Touchscreen

E21D03U-C01-04 Irtouch-Dualtouch

IRTOUCH panel [Android 4.4]

 (1) Download IRTOUCH driver  (Irtouch-dualtouch-package-android-v14.2.0.0002.7z)
 (2) Download IRTOUCH SWAP mode tool (Swapmode.7z)
 (3) Swap mode
     You need to check and swap IRTOUCH 0X80.
     Please install SWAP mode tool in win7.
     Run SwapModeTool.exe and choose IRTOUCH 0X80.  
 (4) Installing the IRTOUCH Dual-touch Touchscreen Driver
     (a) irtouchusb-dt.c locate to kernel_imx/driver/input/touchscreen;
     (b) modify Makefile in kernel_imx/driver/input/touchscreen
         add:  "obj-$(CONFIG_TOUCHSCREEN_USBIRTOUCH_DT)	+= irtouchusb-dt.o"
     (c) modify Kconfig in kernel_imx/driver/input/touchscreen
         add:
         config TOUCHSCREEN_USBIRTOUCH_DT
                tristate "IRTOUCH USB Touchscreen Driver For single point"
                depends on USB_ARCH_HAS_HCD
                select USB
                help
                  Say Y here if you have a IRTOUCH based touchscreen
                  controller.
                  If unsure, say N.
                  To compile this driver as a module, choose M here: the
                  module will be called irtouch.
     (d)  You can make menuconfig select TOUCHSCREEN_USBIRTOUCH_DT and build kernel 
          Modify defconfig CONFIG_TOUCHSCREEN_USBIRTOUCH_DT=y
          example : imx6_rsb4410_android_kk44_defconfig
     (e)  Add one line to Android file system's ueventd.rc: 
          File path : device/fsl/imx6/etc/ueventd.freescale.rc  
          /dev/irtouch      0666   root    root
     (f)  Copy "Vendor_6615_Product_0081.idc" and "Vendor_6615_Product_0080.idc" file to the Android file system's /usr/idc directory. 
 (5)  Calibration the Touchscreen
         Install CalibrationTools.apk and run "CalibrationTools" to start calibrate touchscreen. 
         package name:com.irtouch.android.calibration    
         class name:  CalibrationToolsActivity

eGTouch touch panel [Android 4.2 ~ Android 4.4]

 (1) Add "eGalaxCalibrator" PRODUCK PACKAGES in device/fsl/imx6/iMX6.mk
 (2) Add eGtouch file path in device/fsl/imx6/iMX6.mk
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGalaxTouch_VirtualDevice.idc:system/usr/idc/eGalaxTouch_VirtualDevice.idc \
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchA.ini:data/eGTouchA.ini \
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchD:system/bin/eGTouchD \
 (3) Add eGtouch idc and ini file in device/fsl/imx6/BoardConfigCommon.mK
     BOARD_USERDATAIMAGE_PARTITION_SIZE := 128M
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchA.ini
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGTouchD
     device/fsl/common/input/eGTouch_v2.5.2320.A/eGalaxTouch_VirtualDevice.idc
 (4) Add service about eGTouch in device/fsl/rsb_4410/init.rc
      service eGTouchD /system/bin/eGTouchD
        class main
        user root
        group root
        oneshot      [Android 4.2 and 4.4 MP version is include eGTouch function]

IDK-1105R-50VGA1E

The following operations are performed using Linux BSP 4410LBV2080.
  • u-boot
apparently specify LDB-VGA in video item contained in the variable bootargs_base
setenv bootargs_base 'setenv bootargs console=ttymxc0,115200 enable_wait_mode=off video=mxcfb0:dev=ldb,LDB-VGA,if=RGB666'
  • linux kernel
in drivers/video/mxc/ldb.c, insert the following lines into static struct struct fb_videomode ldb_modefb[] (or modify the exist element contained "LDB-VGA") :
 {
 "LDB-VGA", 60, 640, 480, 39722,
 50, 80,
 24, 18,
 30, 10,
 0,
 FB_VMODE_NONINTERLACED,
 FB_MODE_IS_DETAILED,},