From 74142b4d671d7ae3f6d50ea8bc3c39f807328dc6 Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Wed, 24 Apr 2019 13:50:00 +0000 Subject: [PATCH] pine-dontbeevil: Touch and wifi (!331) * Inverted the X-axis on the touchscreen * Enabled the driver for the wifi/bluetooth chip and added it to the dts * Added a horrible hack for making the touchscreen work This also decreases the kernel version because the previous version I've used was technically incorrect. [ci:skip-build]: doesn't finish in time --- device/device-pine-dontbeevil/APKBUILD | 16 ++- .../load_touchscreen.sh | 10 ++ .../load_touchscreen.start | 3 + device/device-pine-dontbeevil/start_weston.sh | 48 +++++++++ main/linux-postmarketos-allwinner/APKBUILD | 14 ++- .../config-postmarketos-allwinner.aarch64 | 101 +++++++++++++++++- .../sun50i-a64-dontbeevil.dts | 16 +++ 7 files changed, 197 insertions(+), 11 deletions(-) create mode 100644 device/device-pine-dontbeevil/load_touchscreen.sh create mode 100644 device/device-pine-dontbeevil/load_touchscreen.start create mode 100644 device/device-pine-dontbeevil/start_weston.sh diff --git a/device/device-pine-dontbeevil/APKBUILD b/device/device-pine-dontbeevil/APKBUILD index 317b0c6e6..e25ba526c 100644 --- a/device/device-pine-dontbeevil/APKBUILD +++ b/device/device-pine-dontbeevil/APKBUILD @@ -2,7 +2,7 @@ pkgname="device-pine-dontbeevil" pkgdesc="PINE64 PinePhone Don't be evil devkit" pkgver=0.1 -pkgrel=1 +pkgrel=2 url="https://postmarketos.org" license="MIT" arch="aarch64" @@ -15,6 +15,9 @@ source=" uboot-script.cmd weston.ini xorg.conf + start_weston.sh + load_touchscreen.sh + load_touchscreen.start " build() { @@ -26,6 +29,10 @@ package() { devicepkg_package $startdir $pkgname install -D -m644 "$srcdir"/boot.scr \ "$pkgdir"/boot/boot.scr + install -D -m755 "$srcdir"/load_touchscreen.sh \ + "$pkgdir"/usr/bin/load_touchscreen.sh + install -D -m755 "$srcdir"/load_touchscreen.start \ + "$pkgdir"/etc/local.d/load_touchscreen.start } x11() { @@ -42,6 +49,8 @@ weston() { install_if="$pkgname weston" install -Dm644 "$srcdir"/weston.ini \ "$subpkgdir"/etc/xdg/weston/weston.ini + install -Dm755 "$srcdir"/start_weston.sh \ + "$subpkgdir"/etc/profile.d/000_start_weston.sh } nonfree_firmware() { @@ -53,4 +62,7 @@ nonfree_firmware() { sha512sums="a13743f37c982d0ba4524c9e3a3b8a1bb95dceeefe3f9aac01c893128c70b5a7f3e501dd3995fcfe231c1fbb59857af79508a14181263c9ea53a5f1109097a4b deviceinfo ef7d21144b8c33f80968a6a089dcc6b568abd54f66f30d21d5befc10e51217484440aa8edb1065cd871ffba7bc599f44502bb6d240ee01f59dc92706ec6eabfd uboot-script.cmd c4c57d1627dd451213e1ef20d89de9266cd4edcc2d33a69aa9a1f13e16d9f9742036b69dc149fd910d7213f7525c41eb79576d4457bc85cc96eba0d986382d27 weston.ini -f86ef35730b89bcc8160c08db7a7fcd0970adf60c0b77af68bac397de49c0d1783e6b8db1762380c9bf874aff2d030c6f44ecb75c803d69e79ede11376409369 xorg.conf" +f86ef35730b89bcc8160c08db7a7fcd0970adf60c0b77af68bac397de49c0d1783e6b8db1762380c9bf874aff2d030c6f44ecb75c803d69e79ede11376409369 xorg.conf +aa11864b9960e94e13b1467e09d8eb528e3d3652bf1fb251c7a040f4d44270403072db8aa906405d4c81fa9d6043fafa8d9ccd1f97031fd96d0dcacc38da8f84 start_weston.sh +3898faf2c5fbdb3c9edf6fecc5c1bcc34b61a97de8067dca6446c72cf44bcbb8d744038e394fc0fa687b646610be2bbafcf6b06d1cd5d7f4f7a633a70b39c753 load_touchscreen.sh +40e553ec8d2f2c159acddcb8492e8a797120043c22e2fb00c941590f49adab304402189d1eaedb469ddb1d1f7dd19bf28e8332240a024c396b1f548c7c4539bd load_touchscreen.start" diff --git a/device/device-pine-dontbeevil/load_touchscreen.sh b/device/device-pine-dontbeevil/load_touchscreen.sh new file mode 100644 index 000000000..35ad1aaed --- /dev/null +++ b/device/device-pine-dontbeevil/load_touchscreen.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# Keep reloading the touchscreen driver until the probe is successful + +while ! [ -d /dev/input ] ; +do + rmmod edt_ft5x06 + modprobe edt_ft5x06 + sleep 2 +done diff --git a/device/device-pine-dontbeevil/load_touchscreen.start b/device/device-pine-dontbeevil/load_touchscreen.start new file mode 100644 index 000000000..c65ad1fb2 --- /dev/null +++ b/device/device-pine-dontbeevil/load_touchscreen.start @@ -0,0 +1,3 @@ +#!/bin/sh + +load_touchscreen.sh & diff --git a/device/device-pine-dontbeevil/start_weston.sh b/device/device-pine-dontbeevil/start_weston.sh new file mode 100644 index 000000000..d748a0a75 --- /dev/null +++ b/device/device-pine-dontbeevil/start_weston.sh @@ -0,0 +1,48 @@ +export DISPLAY=:0 + +. /etc/deviceinfo + +if test -z "${XDG_RUNTIME_DIR}"; then + # https://wayland.freedesktop.org/building.html + export XDG_RUNTIME_DIR=/tmp/$(id -u)-runtime-dir + if ! test -d "${XDG_RUNTIME_DIR}"; then + mkdir "${XDG_RUNTIME_DIR}" + chmod 0700 "${XDG_RUNTIME_DIR}" + fi + + # Weston autostart on tty1 (Autologin on tty1 is enabled in + # /etc/inittab by postmarketos-base post-install.hook) + if [ "$(id -u)" = "10000" ] && [ $(tty) = "/dev/tty1" ]; then + + # Find right weston.ini + cfg="/etc/xdg/weston/weston.ini" + [ -e "$cfg" ] || cfg="$cfg.default" + WESTON_OPTS="-c $cfg" + + echo "Waiting for touchscreen" + while ! [ -d /dev/input ] ; + do + echo -n "." + sleep 2 + done + echo "" + echo "Touchscreen loaded. starting weston" + + # #633: Weston doesn't support autostarting applications (yet), so + # we try to run postmarketos-demos for 10 seconds, until it succeeds. + ( + for i in $(seq 0 19); do + sleep 0.5 + postmarketos-demos && break + done + ) & + + + weston-launch -- ${WESTON_OPTS} 2>&1 | logger -t "$(whoami):weston" + + # In case of failure, restart after 1s + sleep 1 + exit + fi +fi + diff --git a/main/linux-postmarketos-allwinner/APKBUILD b/main/linux-postmarketos-allwinner/APKBUILD index 52fed250a..d8d9bcc1b 100644 --- a/main/linux-postmarketos-allwinner/APKBUILD +++ b/main/linux-postmarketos-allwinner/APKBUILD @@ -3,8 +3,8 @@ _config="config-${_flavor}.${CARCH}" pkgname=linux-${_flavor} -pkgver=5.0.0 -pkgrel=2 +pkgver=5.0.0_git20190420 +pkgrel=0 arch="aarch64" pkgdesc="Kernel fork with PinePhone Don't be evil patches" @@ -13,12 +13,11 @@ depends="" makedepends="devicepkg-dev perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev openssl-dev file bison flex" options="!strip !check !tracedeps" install= -_commit="a91169202e61c4876dde06a5548d76a385306d05" +_commit="4b05d9617e12dc72882e652307effaaa25d1a468" source=" ${pkgname}-${_commit}.tar.gz::https://gitlab.com/pine64-org/linux/-/archive/${_commit}/linux-${_commit}.tar.gz config-${_flavor}.aarch64 dtb-add.patch - stk3335.patch sun50i-a64-dontbeevil.dts " @@ -87,8 +86,7 @@ package() { INSTALL_DTBS_PATH="$pkgdir/usr/share/dtb" } -sha512sums="4ae10aa5f141aa82610c65d0a5100bd86551a6323b67e4316ad43b2b5f1a6a1ff6f08e9747865b65381696385d4366f22eff5591ef8bc6fc988ac3978392dbc9 linux-postmarketos-allwinner-a91169202e61c4876dde06a5548d76a385306d05.tar.gz -788dc7a75875e884aff0b35db9ddf437ecbe58617eb7c937ba7381ed215188c950e0e95e7e4cd74142fff775bffcb3034b8bd6f3c38b540fe4b0f6e7b989a097 config-postmarketos-allwinner.aarch64 +sha512sums="42818ce72ee8ca4d5017ac2ff1d1837bd7a39b34eabeff9aca8f616aa019fd97536e906e768c1673c6afecbbe05513991d05c01a835c8f0f9e8cfa794de42ea7 linux-postmarketos-allwinner-4b05d9617e12dc72882e652307effaaa25d1a468.tar.gz +2d48abe7f7122b726cc02a7e6d9970dfe1a5fe5d35e6b4231de29e51fcca975cff7c6613ffb3bf9f4c1b991ee6c9ad309fc40bfd452d88e05fd4b69eaa9c419f config-postmarketos-allwinner.aarch64 3b5580adb3c8a4c88da5cd23d1cfdb7bfad9f544207c21d7d80b2086733460a627d9a49f4d67ac4b1d954f078af655580c7fa0b8d75980ea08df319ff3e757be dtb-add.patch -1333d303e4259b4e5a9a30b0a9c7295453b61f37af8413c84fdbdb794da882ba4b5764211ab50aa0beecc580a38373b4473c3f7bffd0f22e02b186555a39be16 stk3335.patch -f8e956b6044df719e2e3fe884624668418d9525565dc425004937bb7e06e3b86c90b5897c6910714844411032e088587760d9e751e3230b456f933e52aa94d49 sun50i-a64-dontbeevil.dts" +a063fdfc5fd67de8fd6daf21bc6815fe7b4422e20484761b425ce8bc72e50d1e16c2bcad81786c58781b603c82e390150fb7065c7fd678f18fe2622ee9230f67 sun50i-a64-dontbeevil.dts" diff --git a/main/linux-postmarketos-allwinner/config-postmarketos-allwinner.aarch64 b/main/linux-postmarketos-allwinner/config-postmarketos-allwinner.aarch64 index 925d46ae7..2e6e3e06e 100644 --- a/main/linux-postmarketos-allwinner/config-postmarketos-allwinner.aarch64 +++ b/main/linux-postmarketos-allwinner/config-postmarketos-allwinner.aarch64 @@ -703,6 +703,7 @@ CONFIG_FRAME_VECTOR=y # CONFIG_GUP_BENCHMARK is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y CONFIG_NET_INGRESS=y CONFIG_SKB_EXTENSIONS=y @@ -1066,6 +1067,10 @@ CONFIG_BT_HCIUART_BCM=y # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_PRIV=y CONFIG_CFG80211=m # CONFIG_NL80211_TESTMODE is not set # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set @@ -4837,7 +4842,101 @@ CONFIG_SWIOTLB_XEN=y # CONFIG_XEN_PVCALLS_BACKEND is not set CONFIG_XEN_PRIVCMD=y CONFIG_XEN_AUTO_XLATE=y -# CONFIG_STAGING is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTLLIB is not set +CONFIG_RTL8723BS=m +# CONFIG_R8712U is not set +# CONFIG_R8188EU is not set +# CONFIG_R8822BE is not set +# CONFIG_RTS5208 is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7606 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7280 is not set + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7746 is not set + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set + +# +# Resolver to digital converters +# +# CONFIG_AD2S1210 is not set +# CONFIG_FB_SM750 is not set +# CONFIG_FB_XGI is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +# CONFIG_STAGING_MEDIA is not set + +# +# Android +# +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_FB_TFT is not set +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +# CONFIG_MOST is not set +# CONFIG_KS7010 is not set +# CONFIG_GREYBUS is not set +# CONFIG_PI433 is not set + +# +# Gasket devices +# +# CONFIG_STAGING_GASKET_FRAMEWORK is not set +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_EROFS_FS is not set # CONFIG_GOLDFISH is not set CONFIG_CHROME_PLATFORMS=y CONFIG_CROS_EC_CTL=m diff --git a/main/linux-postmarketos-allwinner/sun50i-a64-dontbeevil.dts b/main/linux-postmarketos-allwinner/sun50i-a64-dontbeevil.dts index 11d6ee01e..569836145 100644 --- a/main/linux-postmarketos-allwinner/sun50i-a64-dontbeevil.dts +++ b/main/linux-postmarketos-allwinner/sun50i-a64-dontbeevil.dts @@ -247,6 +247,8 @@ touchscreen-size-x = <720>; touchscreen-size-y = <1440>; + + touchscreen-inverted-x; }; }; @@ -285,6 +287,20 @@ }; }; +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins>; + vmmc-supply = <®_dcdc1>; + vqmmc-supply = <®_dldo4>; + bus-width = <4>; + non-removable; + status = "okay"; + + rtl8723bs: wifi@1 { + reg = <1>; + }; +}; + &mmc2 { pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>;