Merge pull request #291 from makermelissa/main
Update 2.8-inch Capacitive PiTFT
This commit is contained in:
commit
a6c6d5dc16
2 changed files with 105 additions and 6 deletions
|
|
@ -19,7 +19,7 @@ except ImportError:
|
|||
shell = Shell()
|
||||
shell.group = 'PITFT'
|
||||
|
||||
__version__ = "3.7.0"
|
||||
__version__ = "3.7.1"
|
||||
|
||||
"""
|
||||
This is the main configuration. Displays should be placed in the order
|
||||
|
|
@ -77,8 +77,17 @@ config = [
|
|||
"180": "1 0 0 0 1 0 0 0 1",
|
||||
"270": "0 -1 1 1 0 0 0 0 1",
|
||||
},
|
||||
"overlay_params": {
|
||||
"0": "touch-invx,touch-invy",
|
||||
"90": "touch-swapxy,touch-invy",
|
||||
"180": None,
|
||||
"270": "touch-swapxy,touch-invx",
|
||||
},
|
||||
},
|
||||
"overlay": """dtoverlay=pitft28-capacitive,speed=64000000,fps=30
|
||||
"overlay_src": "overlays/pitft28-capacitive-overlay.dts",
|
||||
"overlay_dest": "{boot_dir}/overlays/tinydrm-pitft28-capacitive.dtbo",
|
||||
"overlay": "dtoverlay=tinydrm-pitft28-capacitive,rotate={pitftrot}",
|
||||
"fb_overlay": """dtoverlay=pitft28-capacitive,speed=64000000,fps=30
|
||||
dtoverlay=pitft28-capacitive,rotate={pitftrot}""",
|
||||
"calibrations": "320 65536 0 -65536 0 15728640 65536",
|
||||
"width": 320,
|
||||
|
|
@ -322,7 +331,9 @@ def update_configtxt(rotation_override=None, tinydrm_install=False):
|
|||
if "{pitftrot}" in overlay:
|
||||
rotation = str(rotation_override) if rotation_override is not None else pitftrot
|
||||
overlay = overlay.format(pitftrot=rotation)
|
||||
|
||||
if tinydrm_install: # Wayland ignores X11 Transformations, so use params instead
|
||||
if "overlay_params" in pitft_config and pitftrot in pitft_config["overlay_params"] and pitft_config["overlay_params"][pitftrot] is not None:
|
||||
overlay += "," + pitft_config["overlay_params"][pitftrot]
|
||||
shell.write_text_file(f"{boot_dir}/config.txt", """
|
||||
# --- added by adafruit-pitft-helper {date} ---
|
||||
[all]
|
||||
|
|
@ -543,9 +554,12 @@ def uninstall_fbcp_rclocal():
|
|||
shell.pattern_replace("/etc/rc.local", '^.*fbcp.*$')
|
||||
return True
|
||||
|
||||
def update_xorg():
|
||||
def update_xorg(tinydrm_install=False):
|
||||
if "touchscreen" in pitft_config:
|
||||
transform = "Option \"TransformationMatrix\" \"{}\"".format(pitft_config["touchscreen"]["transforms"][pitftrot])
|
||||
transform_setting = pitft_config["touchscreen"]["transforms"][pitftrot]
|
||||
if not tinydrm_install and "old_transforms" in pitft_config["touchscreen"]:
|
||||
transform_setting = pitft_config["touchscreen"]["old_transforms"][pitftrot]
|
||||
transform = f"Option \"TransformationMatrix\" \"{transform_setting}\""
|
||||
shell.write_text_file("/usr/share/X11/xorg.conf.d/20-calibration.conf", """
|
||||
Section "InputClass"
|
||||
Identifier "{identifier}"
|
||||
|
|
@ -780,7 +794,7 @@ restart the script and choose a different orientation.""".format(rotation=pitftr
|
|||
|
||||
if shell.exists("/etc/lightdm"):
|
||||
shell.info("Updating Desktop Touch calibration...")
|
||||
if not update_xorg():
|
||||
if not update_xorg(tinydrm_install=wayland):
|
||||
shell.bail("Unable to update calibration")
|
||||
else:
|
||||
if not uninstall_fbcp():
|
||||
|
|
|
|||
85
overlays/pitft28-capacitive-overlay.dts
Normal file
85
overlays/pitft28-capacitive-overlay.dts
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
|
||||
*
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
pitft_pins: pitft_pins {
|
||||
brcm,pins = <24 25>;
|
||||
brcm,function = <0 1>; /* in out */
|
||||
brcm,pull = <2 0>; /* pullup none */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
/* needed to avoid dtc warning */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pitft: pitft@0{
|
||||
compatible = "adafruit,yx240qv29";
|
||||
reg = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pitft_pins>;
|
||||
|
||||
spi-max-frequency = <32000000>;
|
||||
rotation = <90>;
|
||||
dc-gpios = <&gpio 25 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
/* needed to avoid dtc warning */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ft6236: ft6236@38 {
|
||||
compatible = "focaltech,ft6236";
|
||||
reg = <0x38>;
|
||||
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <24 2>;
|
||||
touchscreen-size-x = <240>;
|
||||
touchscreen-size-y = <320>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
speed = <&pitft>,"spi-max-frequency:0";
|
||||
rotate = <&pitft>,"rotation:0";
|
||||
touch-sizex = <&ft6236>,"touchscreen-size-x?";
|
||||
touch-sizey = <&ft6236>,"touchscreen-size-y?";
|
||||
touch-invx = <&ft6236>,"touchscreen-inverted-x?";
|
||||
touch-invy = <&ft6236>,"touchscreen-inverted-y?";
|
||||
touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
|
||||
};
|
||||
};
|
||||
Loading…
Reference in a new issue