samsung-a6lte: add WiFi and Bluetooth on mainline (MR 4665)

Also adds Bluetooth support on the downstream kernel.

[ci:skip-build] Already built fine on CI in MR
This commit is contained in:
Sergey Lisov 2023-12-29 16:33:46 +03:00 committed by Alexey Minnekhanov
parent f261b2b204
commit 4597357bfa
No known key found for this signature in database
GPG key ID: 6FE3B029D9D9FAFF
9 changed files with 104 additions and 26 deletions

View file

@ -2,13 +2,14 @@
pkgname=device-samsung-a6lte
pkgdesc="Samsung Galaxy A6 2018"
pkgver=0.5
pkgrel=4
pkgrel=5
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="
alsa-utils
bootmac
mkbootimg
postmarketos-base
samsungipcd
@ -17,13 +18,15 @@ depends="
replaces="
lightdm
pipewire-media-session
udev-init-scripts-openrc
"
makedepends="devicepkg-dev"
install="$pkgname.post-install"
source="
$pkgname.post-install
$pkgname-downstream-quirks.post-install
deviceinfo
etc-conf.d-samsungipcd
etc-init.d-hciattach-ttySAC0
etc-init.d-udev-settle
etc-init.d-wlan0-up
etc-lightdm-lightdm.conf
@ -38,6 +41,7 @@ subpackages="
$pkgname-kernel-downstream:kernel_downstream
$pkgname-kernel-mainline:kernel_mainline
$pkgname-nonfree-firmware:nonfree_firmware
$pkgname-downstream-quirks:downstream_quirks
"
# pulseaudio does not seem to work on this device. Will use pipewire-pulse instead.
@ -50,7 +54,6 @@ build() {
package() {
devicepkg_package $startdir $pkgname
install -Dm644 etc-conf.d-samsungipcd "$pkgdir"/etc/conf.d/samsungipcd
install -Dm755 etc-init.d-udev-settle "$pkgdir"/etc/init.d/udev-settle
install -Dm755 etc-init.d-wlan0-up "$pkgdir"/etc/init.d/wlan0-up
install -Dm644 etc-lightdm-lightdm.conf "$pkgdir"/etc/lightdm/lightdm.conf
install -Dm644 etc-NetworkManager-conf.d-swlan0-unmanaged.conf "$pkgdir"/etc/NetworkManager/conf.d/swlan0-unmanaged.conf
@ -62,13 +65,13 @@ package() {
}
kernel_downstream() {
pkgdesc="Working: display, touchscreen, wifi, audio, cellular"
pkgdesc="Working: display, touchscreen, wifi, bluetooth, audio, cellular"
depends="linux-samsung-a6lte msm-fb-refresher pipewire pipewire-pulse"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_mainline() {
pkgdesc="Close-to-mainline WIP (display and touchscreen works)"
pkgdesc="Close-to-mainline WIP. Working: display, touchscreen, wifi, bluetooth"
depends="linux-postmarketos-exynos7870 mesa-dri-simpledrm"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
@ -79,9 +82,25 @@ nonfree_firmware() {
mkdir "$subpkgdir"
}
downstream_quirks() {
pkgdesc="Hacks to make the downstream kernel work"
depends="bluez-deprecated"
install_if="$pkgname-kernel-downstream"
replaces="bootmac udev-init-scripts-openrc"
install="$subpkgname.post-install"
install -Dm755 etc-init.d-udev-settle "$subpkgdir"/etc/init.d/udev-settle
install -Dm755 etc-init.d-hciattach-ttySAC0 "$subpkgdir"/etc/init.d/hciattach-ttySAC0
# we run bootmac ourselves and don't want it to trigger from the udev rule
# so remove the rule
install -Dm755 /dev/null "$subpkgdir"/usr/lib/udev/rules.d/90-bootmac.rules
}
sha512sums="
e787dd30a667fd886a46bb0b670bd2771a8fc78fddc39bb86405fdda6024bc1211b82f89664b7cfc622adf2968b9cd09b0eb3d2ed607148bf3549dd783e6f752 device-samsung-a6lte.post-install
9c0f939c97582d9c03fb62386527569b7f08dd6c8350c8ac6cf9f70d6d5da61d5fc95997b413c4fdb671379ab35caedb631b9af33c7a1e8f3388b3fb56d9b435 device-samsung-a6lte-downstream-quirks.post-install
d5f9631b0753abc70b83dcba2eba1d7191bba979ab3ad404401abbe4f4326068d610b49d4482d16115ac9d8c36006753caf794aebed06413497f9f3c37bb9ffa deviceinfo
3e5bb764529010d2b6b1f2759a7799f665d140aebcee2dd63433e68cd4282e09b5d3b34fb7c21e737595b406501e7f02ece4592651c60e4c2b9419de4aedb438 etc-conf.d-samsungipcd
5e23fd88baa4694ef48ec9590f948e11101be1e472c626f88011a182534a16520eb00c95a10ea77a773123892036188e2e0783540f3b8f8fe158da5e06568e02 etc-init.d-hciattach-ttySAC0
203b832a7080d5f1351c5e024e444f9fe509f6e0fd4b376a60c7d73359b7e356863a4f15caf9b2e4e733dc44d2971722083e7c69ca94a012eb004b4b8ded9d09 etc-init.d-udev-settle
7caddfe4659c969a33adcc27a760bc78d4f70ca4b7a4a5ec28a6411c12f3e6dd6d427b59f75976a737a5fe0f09806f8b6d65798f6358bd1e1954ad2a28fbfdc8 etc-init.d-wlan0-up
861270c6bc0b2a3e6cd389c21c8c895e62de8cf8bec6fcf23c178f8cbaae855d62b0ee98692671ab4f518d84cb43dd0b2fe46f5a609f65af6a6c06e0fdbb6d0c etc-lightdm-lightdm.conf

View file

@ -0,0 +1,4 @@
#!/bin/sh
rc-update add wlan0-up sysinit
rc-update add hciattach-ttySAC0 default

View file

@ -5,5 +5,3 @@ if ! grep -q /efs /etc/fstab; then
mkdir -p /efs
echo "/dev/disk/by-partlabel/EFS /efs auto ro 0 0" >> /etc/fstab
fi
rc-update add wlan0-up sysinit

View file

@ -0,0 +1,27 @@
#!/sbin/openrc-run
description="Run hciattach on ttySAC0 to enable bcm43xx bluetooth"
depend () {
before rfkill
before bluetooth
}
start () {
ebegin "Starting hciattach-ttySAC0"
# we need to unlock an rfkill to be able to use bluetootch
if [[ -d /sys/bus/platform/drivers/bcm43xx_bluetooth/bluetooth ]]; then
rfkill unblock 0
# blocking and unblocking this rfkill requires restarting hciattach
# unregister it, so that the UI does not attempt to toggle it
# hciuart driver provides its own rfkill switch, so bluetooth can still be disabled
echo bluetooth > /sys/bus/platform/drivers/bcm43xx_bluetooth/unbind
fi
# if hci0 is already present, this means that the service is being restarted, we can just ignore it
if ! [[ -d /sys/class/bluetooth/hci0 ]]; then
# on the vendor kernel we have to do a manual hciattach
# since we unregistered the rfkill, we won't be able to restart, so this cannot be a "real" service
hciattach /dev/ttySAC0 bcm43xx 3000000 flow nosleep "$(bootmac -gb)"
fi
eend $?
}

View file

@ -1,7 +1,7 @@
# Kernel config based on defconfig
pkgname=linux-postmarketos-exynos7870
pkgver=6.3.9
pkgver=6.6.8
pkgrel=0
pkgdesc="Close-to-mainline kernel for Samsung Galaxy A6 2018"
arch="aarch64"
@ -20,21 +20,23 @@ makedepends="
perl
"
_patches_repo="https://gitlab.com/sleirsgoevy/a6lte-mainline"
_patches_repo_commit="a3d286c155a70e8075d611cffe17c579360b5d9b"
_patches_owner="exynos7870-mainline"
_patches_repo="mainline-patches"
_patches_commit="79fdca89077a3798ffde3eabd85c0336dd76194d"
_config="config-$_flavor.aarch64"
_dts_list="exynos7870-a6lte"
# Source
source="
linux-$pkgver.tar.gz::https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-$pkgver.tar.gz
$_config
patches-$_patches_repo_commit.tar.gz::$_patches_repo/-/archive/master/a6lte-mainline-$_patches_repo_commit.tar.gz
patches-$_patches_commit.tar.gz::https://gitlab.com/$_patches_owner/$_patches_repo/-/archive/$_patches_commit/$_patches_repo-$_patches_commit.tar.gz
"
builddir="$srcdir/linux-$pkgver"
_outdir="."
prepare() {
default_prepare
for i in "$srcdir"/a6lte-mainline-*/patches/*; do
for i in "$srcdir"/$_patches_repo-*/patches/*; do
patch -p1 < "$i"
done
cp "$srcdir"/$_config .config
@ -46,9 +48,9 @@ build() {
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
# Build out-of-tree devicetrees
rm -f "$srcdir/"a6lte-mainline-*/*-minimal-dts.dts
for i in "$srcdir/"a6lte-mainline-*/*.dts; do
scripts/dtc/dtc "$i" -o "$_outdir/arch/$_carch/boot/dts/$(basename -s .dts "$i").dtb"
rm -f "$srcdir/"$_patches_repo-*/*-minimal-dts.dts
for i in $_dts_list; do
scripts/dtc/dtc "$srcdir/"$_patches_repo-*/$i.dts -o "$_outdir/arch/$_carch/boot/dts/$i.dtb"
done
# Master DTB (deviceinfo_bootimg_qcdt)
@ -78,7 +80,7 @@ package() {
}
sha512sums="
e5f98f9e60b3020f5177585e0c7812932afc06f788d572c122eb1cc3343f876a4cc8d99f06a7834aa8f8821b4340b9c475c15d07f5322e11d25622813306bf50 linux-6.3.9.tar.gz
867187f7dab4a103b6cf015f7d231a1ea930646e8176c8b9a5f70b95d5fa793fa1321cfdd52d8b19e64a2f91c6d2f2c6e07228b59b454096566b318f17f33959 config-exynos7870.aarch64
9e50e192402671ac003a4f1725b62cd4f3ad97909fdfb2f60f89498659b5f94850ccec7348d9fb32eee053f5a08657c17d1390229215671d9069107e52cec4cf patches-a3d286c155a70e8075d611cffe17c579360b5d9b.tar.gz
ce7ff29dd73f5302a9717c139c308b2c2bfc6d572cad52ff69e041f30d21eec039c59ff6c851bcb37e457daba95505e5a8be983ceb33000349f7ce2283d24bc7 linux-6.6.8.tar.gz
e108b3516dd9212db0e50821e98f84d7c9dc26f9a012a15afeaa8f3c94e75632a2ef3d1db810756009cd5acfbdb53b24a014962773c82a7165b33c34271b5496 config-exynos7870.aarch64
04f3a6d5777847915af792d42251a99260d14ae891afeebf45d5427f2f88231875e964814d6def165164fc2e04ad3ca18207820260d135324a4e4b2de1c12afd patches-79fdca89077a3798ffde3eabd85c0336dd76194d.tar.gz
"

View file

@ -2,9 +2,9 @@
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 6.3.9 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="aarch64-unknown-linux-gnu-gcc (GCC) 12.2.0"
CONFIG_CC_VERSION_TEXT="aarch64-unknown-linux-gnu-gcc (GCC) 12.3.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=120200
CONFIG_GCC_VERSION=120300
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=24000
@ -2644,8 +2644,17 @@ CONFIG_MDIO_BUS_MUX_MMIOREG=y
CONFIG_PCS_XPCS=m
# end of PCS device drivers
# CONFIG_PPP is not set
CONFIG_PPP=m
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_MPPE is not set
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPPOE is not set
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
CONFIG_USB_NET_DRIVERS=y
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
@ -3051,7 +3060,7 @@ CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=16
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_LEGACY_TIOCSTI=y
CONFIG_LDISC_AUTOLOAD=y

View file

@ -3,7 +3,7 @@
pkgname=linux-samsung-a6lte
pkgver=3.18.140
pkgrel=2
pkgrel=3
pkgdesc="Samsung Galaxy A6 2018 kernel fork"
arch="aarch64"
_carch="arm64"
@ -41,6 +41,7 @@ source="
decon-fb-colors.patch
firmware-paths-fix.patch
disable-boot-mode-check.patch
uncomment-rfcomm-in-makefile.patch
linux3.7to4.5-ARM64-remove-Sun-Solaris-style-flag-on-section.patch
"
builddir="$srcdir/$_repository-$_commit"
@ -73,11 +74,12 @@ package() {
sha512sums="
c2cc5190c480de4ac2d376827c5c56a542c6644d3dbeb47956d0b90c5570b246872ecedbf5655ac5564c9f61190d23567a4c496bb4235c46f6bd7a6d8addcc68 linux-samsung-a6lte-981969320c1cdc214cf8a1a357fab642f401a5d1.tar.gz
d8239ea119c45e71047ab064fc8846a77a8e744867377ac6676a962df72cb8ad7c0f470c3cb2d840566f22d8550cf18ce337b207cfc7171468b8b378d834a12a config-samsung-a6lte.aarch64
f4c7c1a34cee55cb05cfa086564a2a09b9143b0dfd1909ff9ea2baf8cb78d13f6c18107ed4381c19aab851d274db957fa82fb0555992c1bd0772077a61dff7fa config-samsung-a6lte.aarch64
2b48f1bf0e3f70703d2cdafc47d5e615cc7c56c70bec56b2e3297d3fa4a7a1321d649a8679614553dde8fe52ff1051dae38d5990e3744c9ca986d92187dcdbeb gcc10-extern_YYLOC_global_declaration.patch
3f65a690e48f913fcb980718fae4dc03c29a6dc86eecb1e2af644488ad415de326a61d840399fb69915cbc5d56d5586f2df2287b3e7323a2927ae73a3b1b1373 zram-zs-create-pool-null.patch
5bd204239a5daff9f990757178398707ae5ec64f823ed9ec72a8d50ebe6d5f0a3cc9743e0d775094da4b3a7566f1ccceb56f39f3b0234d08ca05e537d86271ec decon-fb-colors.patch
e1409844c46869ffe6ac9e028c3f38868120b6fd38dcf52ca7c1fdb98e90d2717d72ed52f7f41d3b4a18862a5b7210b6921c5c635d91cbb2a5772b55d5f1b4fb firmware-paths-fix.patch
1e705ff6f256b93986adba4c1f296b2d47be48986490d6a1130fc57126a462b2adfb4f51d3717ef70e91d0b42eb54a33b0d29f85d0c0bb9bf1498bb80c1bb7c1 disable-boot-mode-check.patch
cd41a79406341cb72b4d569b21b2af3bbba4fcedd891a73b3273d5e9561466d5b99c424ce29bac83650298fc51d53b5cb65037a644f622a7e287ec38d30af66f uncomment-rfcomm-in-makefile.patch
75545ccd0082a119b9ad95fcef3523c939a5c946f8f3a5c3dde15cee1502f6c1011050a0ad5359426f018bb7ceea1c97a28c7665941bc89f365c8d11065ce0f6 linux3.7to4.5-ARM64-remove-Sun-Solaris-style-flag-on-section.patch
"

View file

@ -975,7 +975,8 @@ CONFIG_NET_FLOW_LIMIT=y
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=y
# CONFIG_BT_RFCOMM is not set
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
# CONFIG_BT_BNEP is not set
CONFIG_BT_HIDP=y
@ -984,7 +985,12 @@ CONFIG_BT_HIDP=y
#
# CONFIG_BT_HCIBTUSB is not set
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not set
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIUART_ATH3K is not set
# CONFIG_BT_HCIUART_LL is not set
CONFIG_BT_HCIUART_3WIRE=y
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set

View file

@ -0,0 +1,11 @@
--- linux-3.18-samsung-mod/net/bluetooth/Makefile 2023-12-21 03:06:56.384146361 +0300
+++ linux-3.18-samsung/net/bluetooth/Makefile 2023-12-25 05:41:55.756105376 +0300
@@ -3,7 +3,7 @@
#
obj-$(CONFIG_BT) += bluetooth.o
+obj-$(CONFIG_BT_RFCOMM) += rfcomm/
-#obj-$(CONFIG_BT_RFCOMM) += rfcomm/
#obj-$(CONFIG_BT_BNEP) += bnep/
obj-$(CONFIG_BT_CMTP) += cmtp/
#obj-$(CONFIG_BT_HIDP) += hidp/