From cf3bc68bd86ec4cb48d7f7fd35d52ca13a2e6b64 Mon Sep 17 00:00:00 2001 From: goodtft Date: Mon, 15 Aug 2016 19:57:13 +0800 Subject: [PATCH] lcd driver lcd driver --- LCD-hdmi | 6 +++ LCD28-show | 9 ++++ LCD32-show | 9 ++++ LCD35-show | 9 ++++ LCD397-show | 7 +++ LCD43-show | 7 +++ LCD5-show | 7 +++ LCD7B-show | 5 ++ LCD7C-show | 5 ++ ReadMe.txt | 34 +++++++++++++ boot/config-28.txt | 58 ++++++++++++++++++++++ boot/config-32.txt | 58 ++++++++++++++++++++++ boot/config-35.txt | 58 ++++++++++++++++++++++ boot/config-397.txt | 63 ++++++++++++++++++++++++ boot/config-43.txt | 63 ++++++++++++++++++++++++ boot/config-5.txt | 62 ++++++++++++++++++++++++ boot/config-7B-800x480.txt | 62 ++++++++++++++++++++++++ boot/config-7C-1024x600.txt | 62 ++++++++++++++++++++++++ boot/config-nomal.txt | 56 ++++++++++++++++++++++ lcd.c | 0 usr/99-calibration.conf-28 | 6 +++ usr/99-calibration.conf-32 | 6 +++ usr/99-calibration.conf-35 | 6 +++ usr/99-calibration.conf-397 | 6 +++ usr/99-calibration.conf-43 | 6 +++ usr/99-calibration.conf-5 | 6 +++ usr/99-fbturbo.conf | 16 +++++++ usr/99-fbturbo.conf-HDMI | 16 +++++++ usr/cmdline.txt | 1 + usr/inittab | 72 ++++++++++++++++++++++++++++ usr/modules-HDMI | 13 +++++ usr/tft35a-overlay.dtb | Bin 0 -> 2592 bytes usr/tft9341-overlay.dtb | Bin 0 -> 2305 bytes xinput-calibrator_0.7.5-1_armhf.deb | Bin 0 -> 38368 bytes 34 files changed, 794 insertions(+) create mode 100644 LCD-hdmi create mode 100644 LCD28-show create mode 100644 LCD32-show create mode 100644 LCD35-show create mode 100644 LCD397-show create mode 100644 LCD43-show create mode 100644 LCD5-show create mode 100644 LCD7B-show create mode 100644 LCD7C-show create mode 100644 ReadMe.txt create mode 100644 boot/config-28.txt create mode 100644 boot/config-32.txt create mode 100644 boot/config-35.txt create mode 100644 boot/config-397.txt create mode 100644 boot/config-43.txt create mode 100644 boot/config-5.txt create mode 100644 boot/config-7B-800x480.txt create mode 100644 boot/config-7C-1024x600.txt create mode 100644 boot/config-nomal.txt create mode 100644 lcd.c create mode 100644 usr/99-calibration.conf-28 create mode 100644 usr/99-calibration.conf-32 create mode 100644 usr/99-calibration.conf-35 create mode 100644 usr/99-calibration.conf-397 create mode 100644 usr/99-calibration.conf-43 create mode 100644 usr/99-calibration.conf-5 create mode 100644 usr/99-fbturbo.conf create mode 100644 usr/99-fbturbo.conf-HDMI create mode 100644 usr/cmdline.txt create mode 100644 usr/inittab create mode 100644 usr/modules-HDMI create mode 100644 usr/tft35a-overlay.dtb create mode 100644 usr/tft9341-overlay.dtb create mode 100644 xinput-calibrator_0.7.5-1_armhf.deb diff --git a/LCD-hdmi b/LCD-hdmi new file mode 100644 index 0000000..c1838b4 --- /dev/null +++ b/LCD-hdmi @@ -0,0 +1,6 @@ +sudo cp -rf ./usr/modules-HDMI /etc/modules +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo cp ./boot/config-nomal.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo reboot diff --git a/LCD28-show b/LCD28-show new file mode 100644 index 0000000..00fcf2d --- /dev/null +++ b/LCD28-show @@ -0,0 +1,9 @@ +sudo mkdir /etc/X11/xorg.conf.d +sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/ +sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/tft9341.dtbo +sudo cp -rf ./usr/99-calibration.conf-28 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/ +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-28.txt /boot/config.txt +sudo reboot diff --git a/LCD32-show b/LCD32-show new file mode 100644 index 0000000..08aec0e --- /dev/null +++ b/LCD32-show @@ -0,0 +1,9 @@ +sudo mkdir /etc/X11/xorg.conf.d +sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/ +sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/tft9341.dtbo +sudo cp -rf ./usr/99-calibration.conf-32 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/ +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-32.txt /boot/config.txt +sudo reboot diff --git a/LCD35-show b/LCD35-show new file mode 100644 index 0000000..9fcc289 --- /dev/null +++ b/LCD35-show @@ -0,0 +1,9 @@ +sudo mkdir /etc/X11/xorg.conf.d +sudo cp ./usr/tft35a-overlay.dtb /boot/overlays/ +sudo cp ./usr/tft35a-overlay.dtb /boot/overlays/tft35a.dtbo +sudo cp -rf ./usr/99-calibration.conf-35 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/ +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-35.txt /boot/config.txt +sudo reboot diff --git a/LCD397-show b/LCD397-show new file mode 100644 index 0000000..994622d --- /dev/null +++ b/LCD397-show @@ -0,0 +1,7 @@ +sudo cp -rf ./boot/config-397.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo mkdir /etc/X11/xorg.conf.d +sudo cp -rf ./usr/99-calibration.conf-397 /etc/X11/xorg.conf.d/99-calibration.conf +sudo reboot diff --git a/LCD43-show b/LCD43-show new file mode 100644 index 0000000..7d9adcf --- /dev/null +++ b/LCD43-show @@ -0,0 +1,7 @@ +sudo cp -rf ./boot/config-43.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo mkdir /etc/X11/xorg.conf.d +sudo cp -rf ./usr/99-calibration.conf-43 /etc/X11/xorg.conf.d/99-calibration.conf +sudo reboot diff --git a/LCD5-show b/LCD5-show new file mode 100644 index 0000000..2dc0d10 --- /dev/null +++ b/LCD5-show @@ -0,0 +1,7 @@ +sudo cp -rf ./boot/config-5.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo mkdir /etc/X11/xorg.conf.d +sudo cp -rf ./usr/99-calibration.conf-5 /etc/X11/xorg.conf.d/99-calibration.conf +sudo reboot diff --git a/LCD7B-show b/LCD7B-show new file mode 100644 index 0000000..a66f8bd --- /dev/null +++ b/LCD7B-show @@ -0,0 +1,5 @@ +sudo cp -rf ./boot/config-7B-800x480.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo reboot diff --git a/LCD7C-show b/LCD7C-show new file mode 100644 index 0000000..1fb0550 --- /dev/null +++ b/LCD7C-show @@ -0,0 +1,5 @@ +sudo cp -rf ./boot/config-7C-1024x600.txt /boot/config.txt +sudo cp ./usr/cmdline.txt /boot/ +sudo cp ./usr/inittab /etc/ +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo reboot diff --git a/ReadMe.txt b/ReadMe.txt new file mode 100644 index 0000000..b15cd03 --- /dev/null +++ b/ReadMe.txt @@ -0,0 +1,34 @@ + +[version] + v1.1 +[Driver installation] +Step1, Install Raspbian official mirror +1)Download Raspbian official mirror:https://www.raspberrypi.org/downloads/ +2)Use¡°SDFormatter.exe¡±to Format your TF Card£¬ +3)Use¡°Win32DiskImager.exe¡± Burning mirror to TF Card¡£ +Step2, Install LCD Driver +1)Copy ¡°LCD-show-160701.tar.gz¡± to the root directory of raspberry pi£¨you can copy it directly to TF card after Step1, or use SFTP to remote copy£© +2)Landing Raspberry pi system to user command line (Name:pi,Password:raspberry)£¬Execute the following command: +cd /boot +sudo tar zxvf LCD-show-160701.tar.gz +cd LCD-show/ +#For 2.8inch RPI LCD excute: +sudo ./LCD28-show +# For 3.2inch RPI LCD excute: +sudo ./LCD32-show +# For 3.5inch RPI LCD excute: +sudo ./LCD35-show +# For 3.97inch RPI LCD excute: +sudo ./LCD397-show +# For 4.3inch RPI LCD excute: +sudo ./LCD43-show +# For 5inch RPI LCD excute: +sudo ./LCD5-show +# For 7inch(B)-800X480 RPI LCD excute: +sudo ./LCD7B-show +# For 7inch(C)-1024X600 RPI LCD excute: +sudo ./LCD7C-show +# If you need to switch back to the traditional HDMI display excute: +Sudo ./LCD-hdmi + +3)Wait a few minutes,the system will restart automaticall , enjoy with your LCD. diff --git a/boot/config-28.txt b/boot/config-28.txt new file mode 100644 index 0000000..d385381 --- /dev/null +++ b/boot/config-28.txt @@ -0,0 +1,58 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=tft9341:rotate=90 +dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-32.txt b/boot/config-32.txt new file mode 100644 index 0000000..7cc6e05 --- /dev/null +++ b/boot/config-32.txt @@ -0,0 +1,58 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=tft9341:rotate=270 +dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-35.txt b/boot/config-35.txt new file mode 100644 index 0000000..16f27d3 --- /dev/null +++ b/boot/config-35.txt @@ -0,0 +1,58 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=tft35a +dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-397.txt b/boot/config-397.txt new file mode 100644 index 0000000..454e2d9 --- /dev/null +++ b/boot/config-397.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +display_rotate=3 +max_usb_current=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 800 60 6 0 0 0 +dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-43.txt b/boot/config-43.txt new file mode 100644 index 0000000..7b6d5c6 --- /dev/null +++ b/boot/config-43.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +max_usb_current=1 +display_rotate=0 +max_usb_current=1 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=480 0 1 41 2 272 0 2 10 2 0 0 0 60 0 9000000 3 +dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-5.txt b/boot/config-5.txt new file mode 100644 index 0000000..9760f4c --- /dev/null +++ b/boot/config-5.txt @@ -0,0 +1,62 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +max_usb_current=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 800 480 60 6 0 0 0 +dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-7B-800x480.txt b/boot/config-7B-800x480.txt new file mode 100644 index 0000000..9760f4c --- /dev/null +++ b/boot/config-7B-800x480.txt @@ -0,0 +1,62 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +max_usb_current=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 800 480 60 6 0 0 0 +dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-7C-1024x600.txt b/boot/config-7C-1024x600.txt new file mode 100644 index 0000000..a2ef456 --- /dev/null +++ b/boot/config-7C-1024x600.txt @@ -0,0 +1,62 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +max_usb_current=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 1024 600 60 6 0 0 0 +dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-nomal.txt b/boot/config-nomal.txt new file mode 100644 index 0000000..9184c55 --- /dev/null +++ b/boot/config-nomal.txt @@ -0,0 +1,56 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on diff --git a/lcd.c b/lcd.c new file mode 100644 index 0000000..e69de29 diff --git a/usr/99-calibration.conf-28 b/usr/99-calibration.conf-28 new file mode 100644 index 0000000..9520bf6 --- /dev/null +++ b/usr/99-calibration.conf-28 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3770 171 239 3892" + Option "SwapAxes" "1" +EndSection diff --git a/usr/99-calibration.conf-32 b/usr/99-calibration.conf-32 new file mode 100644 index 0000000..bb27f01 --- /dev/null +++ b/usr/99-calibration.conf-32 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "115 3700 3865 155" + Option "SwapAxes" "1" +EndSection diff --git a/usr/99-calibration.conf-35 b/usr/99-calibration.conf-35 new file mode 100644 index 0000000..7f85eb0 --- /dev/null +++ b/usr/99-calibration.conf-35 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3936 227 268 3880" + Option "SwapAxes" "1" +EndSection diff --git a/usr/99-calibration.conf-397 b/usr/99-calibration.conf-397 new file mode 100644 index 0000000..4e759e0 --- /dev/null +++ b/usr/99-calibration.conf-397 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3865 158 289 3873" + Option "SwapAxes" "1" +EndSection diff --git a/usr/99-calibration.conf-43 b/usr/99-calibration.conf-43 new file mode 100644 index 0000000..489410f --- /dev/null +++ b/usr/99-calibration.conf-43 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "535 3860 254 3883" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-calibration.conf-5 b/usr/99-calibration.conf-5 new file mode 100644 index 0000000..c6fbc8c --- /dev/null +++ b/usr/99-calibration.conf-5 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "140 3951 261 3998" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-fbturbo.conf b/usr/99-fbturbo.conf new file mode 100644 index 0000000..8b039a9 --- /dev/null +++ b/usr/99-fbturbo.conf @@ -0,0 +1,16 @@ +# This is a minimal sample config file, which can be copied to +# /etc/X11/xorg.conf in order to make the Xorg server pick up +# and load xf86-video-fbturbo driver installed in the system. +# +# When troubleshooting, check /var/log/Xorg.0.log for the debugging +# output and error messages. +# Run "man fbturbo" to get additional information about the extra +# configuration options for tuning the driver. + +Section "Device" + Identifier "Allwinner A10/A13/A20 FBDEV" + Driver "fbturbo" + Option "fbdev" "/dev/fb1" + + Option "SwapbuffersWait" "true" +EndSection diff --git a/usr/99-fbturbo.conf-HDMI b/usr/99-fbturbo.conf-HDMI new file mode 100644 index 0000000..1f2fae0 --- /dev/null +++ b/usr/99-fbturbo.conf-HDMI @@ -0,0 +1,16 @@ +# This is a minimal sample config file, which can be copied to +# /etc/X11/xorg.conf in order to make the Xorg server pick up +# and load xf86-video-fbturbo driver installed in the system. +# +# When troubleshooting, check /var/log/Xorg.0.log for the debugging +# output and error messages. +# Run "man fbturbo" to get additional information about the extra +# configuration options for tuning the driver. + +Section "Device" + Identifier "Allwinner A10/A13/A20 FBDEV" + Driver "fbturbo" + Option "fbdev" "/dev/fb0" + + Option "SwapbuffersWait" "true" +EndSection diff --git a/usr/cmdline.txt b/usr/cmdline.txt new file mode 100644 index 0000000..936142b --- /dev/null +++ b/usr/cmdline.txt @@ -0,0 +1 @@ +dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo diff --git a/usr/inittab b/usr/inittab new file mode 100644 index 0000000..174e8fb --- /dev/null +++ b/usr/inittab @@ -0,0 +1,72 @@ +# /etc/inittab: init(8) configuration. +# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ + +# The default runlevel. +id:2:initdefault: + +# Boot-time system configuration/initialization script. +# This is run first except when booting in emergency (-b) mode. +si::sysinit:/etc/init.d/rcS + +# What to do in single-user mode. +~~:S:wait:/sbin/sulogin + +# /etc/init.d executes the S and K scripts upon change +# of runlevel. +# +# Runlevel 0 is halt. +# Runlevel 1 is single-user. +# Runlevels 2-5 are multi-user. +# Runlevel 6 is reboot. + +l0:0:wait:/etc/init.d/rc 0 +l1:1:wait:/etc/init.d/rc 1 +l2:2:wait:/etc/init.d/rc 2 +l3:3:wait:/etc/init.d/rc 3 +l4:4:wait:/etc/init.d/rc 4 +l5:5:wait:/etc/init.d/rc 5 +l6:6:wait:/etc/init.d/rc 6 +# Normally not reached, but fallthrough in case of emergency. +z6:6:respawn:/sbin/sulogin + +# What to do when CTRL-ALT-DEL is pressed. +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +# Action on special keypress (ALT-UpArrow). +#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." + +# What to do when the power fails/returns. +pf::powerwait:/etc/init.d/powerfail start +pn::powerfailnow:/etc/init.d/powerfail now +po::powerokwait:/etc/init.d/powerfail stop + +# /sbin/getty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: +# +# Note that on most Debian systems tty7 is used by the X Window System, +# so if you want to add more getty's go ahead but skip tty7 if you run X. +# +1:2345:respawn:/sbin/getty --noclear 38400 tty1 +2:23:respawn:/sbin/getty 38400 tty2 +3:23:respawn:/sbin/getty 38400 tty3 +4:23:respawn:/sbin/getty 38400 tty4 +5:23:respawn:/sbin/getty 38400 tty5 +6:23:respawn:/sbin/getty 38400 tty6 + +# Example how to put a getty on a serial line (for a terminal) +# +#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 +#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 + +# Example how to put a getty on a modem line. +# +#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 + + +#Spawn a getty on Raspberry Pi serial line +T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 diff --git a/usr/modules-HDMI b/usr/modules-HDMI new file mode 100644 index 0000000..8dcd5f7 --- /dev/null +++ b/usr/modules-HDMI @@ -0,0 +1,13 @@ +# /etc/modules: kernel modules to load at boot time. +# +# This file contains the names of kernel modules that should be loaded +# at boot time, one per line. Lines beginning with "#" are ignored. +# Parameters can be specified after the module name. + +snd-bcm2835 +i2c-bcm2708 +i2c-dev + +#flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3 +#fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24 +#ads7846_device model=7846 cs=1 gpio_pendown=17 keep_vref_on=1 swap_xy=1 pressure_max=255 x_plate_ohms=60 x_min=200 x_max=3900 y_min=200 y_max=3900 diff --git a/usr/tft35a-overlay.dtb b/usr/tft35a-overlay.dtb new file mode 100644 index 0000000000000000000000000000000000000000..31aeff966e441aa8e217516d5ac7d65fe378b79c GIT binary patch literal 2592 zcmbtWzmMEh5PseON^(SSp#gzH&>?X|XKr)3aGM2*6d(`)2j)I>!4qTiP3+CP(XaQjUS1=qp#_s7!OkV`%>{=m`+}N&Yy< z>o>6OK0ZEAV{g5@=VYJPa&9{>xt4|JdJGTr6+@mhr}UHut4oKEk~;OSQbQ1$J$B z@S?HyzVA9;%BMl^C2|tinWoy?WLS4=IS_w5+ugq<#LcdJ8v^5ce~&vae~i5go&8U+ z=GlJ#Q>=+w%Iy6Y4o~boAFsdT^t=x~-v4VWQV!_<4U+$yI`DNg{vP-c;yd8%#wPfe z;ID#z1-|q^_Y)NCH4Y|MB-Vt|Qj-h~@i4j1q@lW)74|4ojg{*J);Kn77dBR-CB4 z!R}EUA$$|-KwS9nrjyyH??CKH_q-q6{qcPE^fxEdjt}*;|4Y0~(aXV_xYx++H4~(5 zw+`>y)MIB+g<+%YG_v-`GPhgi zJl^AN?p1}3wRAf+Ht|5L_a>$C8;nOiG1D7OtFE3sAa;9+9Mx01LwjH%cn16wdan-S zGMq0s0_;6Sky^|~MdqraJ+KpOZnuMPyEBKkkC|_X9qhLDJIB~B%@oFe>HhW&ZVZ;9 zXp+wB(l?$tUP6r5+8F(zj;pEED7sbdv`Ut1`u#olpRLK|)}&P)U%;@EO6qW0rUh@~ zMDt|)A8k#o!!*~js_IgQWnAH#c;XS(t(19E9OmXId*jW$X2m$pmOE#A@GW}x=85^^ z3pUnO7WSFR68eX#lrlN0?!bG+p#k@b-U53?X;HnR^pIXr6V7w@su?^JFK5QZtc-Pv z&%dy+5DG6>t?XYA^JzAJQzkV^Op9D(XDHB; z3g4JKo=Me6eQ{(02;UH4>ldg@pky(s)nS_GeSvU((O^q>;0RN*Nb^+V$Du>DO9vFu tg#gFvJS;PelCapHDas{lsVm9xgd}lw!nRFx-(|b@Dy>*fUzqn!`~&fe{TBcL literal 0 HcmV?d00001 diff --git a/usr/tft9341-overlay.dtb b/usr/tft9341-overlay.dtb new file mode 100644 index 0000000000000000000000000000000000000000..2162ba69a4c28e8b22ac3c4d1cb8eb70ddcc5523 GIT binary patch literal 2305 zcma)7J8u&~5FR@q2qA(53Gt992q*~o6z2g+ETp8N~*NJ2T(R&TH34)4xuLCM!g=Ms(p5e;+W- zFkNNhRe8$teZ3$0g$>pO(>ykp)ValepcU2-RjivUJX6-rrZ+@XM!)t=a|aNo`DllU(2r= z-o`c@-%{qnV*gb`)Of@AviN72HJ@kVw*`g%3Uq$pE3sYU52rWWujj@V*o#arJkfE} zKtXK%2fQ!mvO_=amG!TQ_R9PLGw^He-|!ywv;14$V_E(k?{PMG)bzcXA=Dbn%0C)8 z>W^jZ4>g{@)wPw!;BtH9GMxXN{XL^c+@G0d zn965P`mMARh)}DtGhllFT@oo*38T@zFR>hbt#)E* z74Qc+`de*vld>FrMW3pkXr*1P0iMsOT;uPA+;wB8Kfr8bAvbv zp}5!!rFUlGjQe|+ZRQJ`rN7yf?+ngZ7=tg*kBPP8_tV%m0I@z~KaIjqy`kKsD-WTj<&z^Y>c;Su7xh@QfrHiI74$-Pn)NmhpJ6{lDNWZy`5}Fz1USg|J9Km4U&A(QmOxLvwxxNFS(O)hJF-M z;D>3y7H_$s$2N1W=W)NK(-uJ>X-@jDgxM#eOSUed+Y>V9>U8QgAX^X8=@Vy5oE)`M zx$Apsi%L^Pc48>Yl=6X)#n#LQm79*oweQ3MKO|1H)sx_3M4u)Cj}wQ*y&_#F8oJ4b O$%RTHhdN~=Lw^8pYv^GB literal 0 HcmV?d00001 diff --git a/xinput-calibrator_0.7.5-1_armhf.deb b/xinput-calibrator_0.7.5-1_armhf.deb new file mode 100644 index 0000000000000000000000000000000000000000..bc5f57bbd0cc732259d61d8a939ccdcf51e329ac GIT binary patch literal 38368 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