diff --git a/device/testing/device-samsung-zerofltexx/APKBUILD b/device/testing/device-samsung-zerofltexx/APKBUILD index 68f51279a..5a465b632 100644 --- a/device/testing/device-samsung-zerofltexx/APKBUILD +++ b/device/testing/device-samsung-zerofltexx/APKBUILD @@ -2,14 +2,21 @@ pkgname=device-samsung-zerofltexx pkgdesc="Samsung Galaxy S6" pkgver=0.1 -pkgrel=1 +pkgrel=2 url="https://postmarketos.org" license="MIT" arch="aarch64" options="!check !archcheck" depends="postmarketos-base linux-samsung-zerofltexx mkbootimg mesa-dri-gallium msm-fb-refresher" makedepends="devicepkg-dev" -source="deviceinfo" +source="deviceinfo + udev/60-persistent-v4l.rules + " + +subpackages="$pkgname-nonfree-firmware:nonfree_firmware" + +install="$pkgname.post-install" + build() { devicepkg_build $startdir $pkgname @@ -17,6 +24,19 @@ build() { package() { devicepkg_package $startdir $pkgname + + install -Dm644 "$srcdir"/60-persistent-v4l.rules \ + "$pkgdir"/etc/udev/rules.d/60-persistent-v4l.rules } -sha512sums="a77cb40856b63d0c2646d000a7be2e2afc46d4c8353a495749ff54be7a9ae5b50c2849d1d01e69e793e8b6685d857fce19c674a4bf40c00d2afc19ac6f6e13bb deviceinfo" +nonfree_firmware() { + pkgdesc="Non-free firmware for the Samsung Galaxy S6" + depends="firmware-samsung-zero" + mkdir "$subpkgdir" +} + + +sha512sums=" +e21acd406c8803bf4672489ffc3d9a8584ee5e7f797ccc43270c94cf1ea23c0ac70ec98d037eeb572fbafcc2eaef46551e3374920aa0b80e8d3809c4075cf4cd deviceinfo +b8bf2e3ec166af6acbbfaaa2b57b053473c0b12df007090eecf7a885aee2e3cd5d982819e2ee73e2817e5266b9875dc9240389bca409d5523f3cfa8037fa7870 60-persistent-v4l.rules +" diff --git a/device/testing/device-samsung-zerofltexx/device-samsung-zerofltexx.post-install b/device/testing/device-samsung-zerofltexx/device-samsung-zerofltexx.post-install new file mode 100644 index 000000000..211fbbb3e --- /dev/null +++ b/device/testing/device-samsung-zerofltexx/device-samsung-zerofltexx.post-install @@ -0,0 +1,5 @@ +#!/bin/sh + +# enable deferred-initcalls script by default (from postmarketos-base package) +rc-update add deferred-initcalls default + diff --git a/device/testing/device-samsung-zerofltexx/deviceinfo b/device/testing/device-samsung-zerofltexx/deviceinfo index 777386bf6..eb12575f7 100644 --- a/device/testing/device-samsung-zerofltexx/deviceinfo +++ b/device/testing/device-samsung-zerofltexx/deviceinfo @@ -31,5 +31,6 @@ deviceinfo_flash_offset_ramdisk="0x01000000" deviceinfo_flash_offset_second="0x00f00000" deviceinfo_flash_offset_tags="0x00000100" deviceinfo_flash_pagesize="2048" -deviceinfo_flash_heimdall_partition_kernel="" -deviceinfo_flash_heimdall_partition_system="" +deviceinfo_flash_heimdall_partition_kernel="BOOT" +deviceinfo_flash_heimdall_partition_system="SYSTEM" +deviceinfo_flash_sparse="true" diff --git a/device/testing/device-samsung-zerofltexx/udev/60-persistent-v4l.rules b/device/testing/device-samsung-zerofltexx/udev/60-persistent-v4l.rules new file mode 100644 index 000000000..7ecc69a94 --- /dev/null +++ b/device/testing/device-samsung-zerofltexx/udev/60-persistent-v4l.rules @@ -0,0 +1,4 @@ +# This file is intentionally empty, to disable the default rule with the same name. +# You can find the default rule in /lib/udev/rules.d/60-persistent-v4l.rules. +# +# See https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1160 for why this is needed. diff --git a/device/testing/linux-samsung-zerofltexx/0007-usb_gadget-set-random-rndis-host-MAC-address-to-prev.patch b/device/testing/linux-samsung-zerofltexx/0007-usb_gadget-set-random-rndis-host-MAC-address-to-prev.patch new file mode 100644 index 000000000..f090ece7e --- /dev/null +++ b/device/testing/linux-samsung-zerofltexx/0007-usb_gadget-set-random-rndis-host-MAC-address-to-prev.patch @@ -0,0 +1,40 @@ +From 2e32a401ea5df22ab899f4da3e5e1b448b2df51a Mon Sep 17 00:00:00 2001 +From: Alexey Min +Date: Thu, 7 Mar 2019 17:25:48 +0300 +Subject: [PATCH 5/6] usb_gadget: set random rndis host MAC address to prevent + zero address + +This fixes zero host MAC: + +rndis0: MAC f6:45:91:9b:4e:43 +rndis0: HOST MAC 00:00:00:00:00:00 + +and allows devive to automatically obtain IP addrest on PC host side +zero MAC address prevented interface from autoconfiguring +--- + drivers/usb/gadget/function/u_ether.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c +index bf8b64d904c..9ce3ab6de34 100644 +--- a/drivers/usb/gadget/u_ether.c ++++ b/drivers/usb/gadget/u_ether.c +@@ -1224,8 +1224,16 @@ + dev_warn(&g->dev, + "using random %s ethernet address\n", "self"); + #ifdef CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE +- memcpy(dev->host_mac, ethaddr, ETH_ALEN); +- printk(KERN_DEBUG "usb: set unique host mac\n"); ++ if ((ethaddr[0] == 0x00) && (ethaddr[1] == 0x00) && ++ (ethaddr[2] == 0x00) && (ethaddr[3] == 0x00) && ++ (ethaddr[4] == 0x00) && (ethaddr[5] == 0x00)) { ++ printk(KERN_DEBUG "%s: no unique host MAC was set, generate random\n", __func__); ++ /* we can use random_ether_addr() from include/linux/etherdevice.h */ ++ random_ether_addr(ethaddr); ++ } else { ++ printk(KERN_DEBUG "%s: set unique host mac\n", __func__); ++ } ++ memcpy(dev->host_mac, ethaddr, ETH_ALEN); + #else + if (get_ether_addr(host_addr, dev->host_mac)) + dev_warn(&g->dev, diff --git a/device/testing/linux-samsung-zerofltexx/01-fix-red-blue.patch b/device/testing/linux-samsung-zerofltexx/01-fix-red-blue.patch new file mode 100644 index 000000000..371a6bf3f --- /dev/null +++ b/device/testing/linux-samsung-zerofltexx/01-fix-red-blue.patch @@ -0,0 +1,16 @@ +--- a/drivers/video/exynos/decon/decon-int_drv.c ++++ b/drivers/video/exynos/decon/decon-int_drv.c +@@ -600,11 +600,11 @@ + case 24: + /* our 24bpp is unpacked, so 32bpp */ + var->bits_per_pixel = 32; +- var->red.offset = 16; ++ var->red.offset = 0; + var->red.length = 8; + var->green.offset = 8; + var->green.length = 8; +- var->blue.offset = 0; ++ var->blue.offset = 16; + var->blue.length = 8; + break; + diff --git a/device/testing/linux-samsung-zerofltexx/02-fix-wifi-firmware-path.patch b/device/testing/linux-samsung-zerofltexx/02-fix-wifi-firmware-path.patch new file mode 100644 index 000000000..004e86bd6 --- /dev/null +++ b/device/testing/linux-samsung-zerofltexx/02-fix-wifi-firmware-path.patch @@ -0,0 +1,35 @@ +--- a/drivers/net/wireless/bcmdhd4358/dhd.h ++++ b/drivers/net/wireless/bcmdhd4358/dhd.h +@@ -1468,13 +1468,7 @@ + extern int dhdpcie_set_suspend_resume(struct pci_dev *dev, bool state); + #endif /* DHD_USE_IDLECOUNT && BCMPCIE */ + +-#ifdef DHD_LEGACY_FILE_PATH +-#define PLATFORM_PATH "/data/" +-#elif defined(PLATFORM_SLP) +-#define PLATFORM_PATH "/opt/etc/" +-#else +-#define PLATFORM_PATH "/data/misc/conn/" +-#endif /* DHD_LEGACY_FILE_PATH */ ++#define PLATFORM_PATH "/lib/firmware/postmarketos/" + + /* + * Enable this macro if you want to track the calls to wake lock +--- a/drivers/net/wireless/bcmdhd4359/dhd.h ++++ b/drivers/net/wireless/bcmdhd4359/dhd.h +@@ -1830,14 +1830,8 @@ + + extern bool dhd_query_bus_erros(dhd_pub_t *dhdp); + +-#ifdef DHD_LEGACY_FILE_PATH +-#define PLATFORM_PATH "/data/" +-#elif defined(PLATFORM_SLP) +-#define PLATFORM_PATH "/opt/etc/" +-#else +-#define PLATFORM_PATH "/data/misc/conn/" +-#endif /* DHD_LEGACY_FILE_PATH */ ++#define PLATFORM_PATH "/lib/firmware/postmarketos/" + + /* + * Enable this macro if you want to track the calls to wake lock + diff --git a/device/testing/linux-samsung-zerofltexx/03-fix-fimc-is-firmware-path.patch b/device/testing/linux-samsung-zerofltexx/03-fix-fimc-is-firmware-path.patch new file mode 100644 index 000000000..427b64799 --- /dev/null +++ b/device/testing/linux-samsung-zerofltexx/03-fix-fimc-is-firmware-path.patch @@ -0,0 +1,11 @@ +--- a/drivers/media/platform/exynos/fimc-is/fimc-is-sec-define.h ++++ b/drivers/media/platform/exynos/fimc-is/fimc-is-sec-define.h +@@ -103,7 +103,7 @@ + #define FIMC_IS_2P2_SETF "setfile_2p2.bin" + #define FIMC_IS_COMPANION_MASTER_SETF "companion_master_setfile.bin" + #define FIMC_IS_COMPANION_MODE_SETF "companion_mode_setfile.bin" +-#define FIMC_IS_FW_PATH "/system/vendor/firmware/" ++#define FIMC_IS_FW_PATH "/lib/firmware/postmarketos/" + #define FIMC_IS_FW_DUMP_PATH "/data/" + + #define FIMC_IS_FW_BASE_MASK ((1 << 26) - 1) diff --git a/device/testing/linux-samsung-zerofltexx/APKBUILD b/device/testing/linux-samsung-zerofltexx/APKBUILD index fee3cb38d..c7b4432f4 100644 --- a/device/testing/linux-samsung-zerofltexx/APKBUILD +++ b/device/testing/linux-samsung-zerofltexx/APKBUILD @@ -3,7 +3,7 @@ pkgname=linux-samsung-zerofltexx pkgver=3.10.108 -pkgrel=2 +pkgrel=3 pkgdesc="Samsung Galaxy S6 kernel fork" arch="aarch64" _carch="arm64" @@ -20,8 +20,12 @@ _config="config-$_flavor.$arch" source=" $pkgname-$_commit.tar.gz::https://github.com/Exynos7420/$_repository/archive/$_commit.tar.gz $_config + 01-fix-red-blue.patch + 02-fix-wifi-firmware-path.patch + 03-fix-fimc-is-firmware-path.patch Makefile_fix_paths.patch gcc10-extern_YYLOC_global_declaration.patch + 0007-usb_gadget-set-random-rndis-host-MAC-address-to-prev.patch " builddir="$srcdir/$_repository-$_commit" @@ -35,6 +39,7 @@ prepare() { build() { unset LDFLAGS make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \ + KCPPFLAGS=-mstrict-align KCFLAGS=-mstrict-align \ KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" # Master DTB (deviceinfo_bootimg_qcdt) @@ -51,7 +56,13 @@ package() { "$pkgdir"/boot/dt.img } -sha512sums="1f8917dfaf01865cbc0385579cad1565dcb1ec4445bbeaf3e70d0bd8a6a572a457813c311f54360f54c79b373e621d280982f560cf01091d156c90efcc98067b linux-samsung-zerofltexx-31cf7c95814358c4cd76feacf2f29bebc057fefc.tar.gz -a77cfcd46cbff7a035cec12363abcdd87933c9e8c889cb04c81b793c84eb3797bb6a6086fbdadb66a863e7267781059b61d4ad4fb7106c34cb54beefc96c02af config-samsung-zerofltexx.aarch64 +sha512sums=" +1f8917dfaf01865cbc0385579cad1565dcb1ec4445bbeaf3e70d0bd8a6a572a457813c311f54360f54c79b373e621d280982f560cf01091d156c90efcc98067b linux-samsung-zerofltexx-31cf7c95814358c4cd76feacf2f29bebc057fefc.tar.gz +2fd2c045eb369ba059dba6a171c74cef73267f6863cbbb0750cbe420fb508c8fe366c60c5e830a0d3aebe03cde74d18f0b0c5225958a775642a512fcb6b295e5 config-samsung-zerofltexx.aarch64 +f3e4770bb251efefce312986eeec6c5a8a55066c5408cdd10e00ab2657a4bff155da6a19155ceaf39c5f34cc02cbbb7866aa7b4e65c33cdd3cff4590fadba2a4 01-fix-red-blue.patch +9afbb020311f0bf8043f021292d0f05041ff4e29003bf2114dfc31906869f44dbf15ff560170bc9e9baf62d7bb4ed73d58415212fecac6f1bdd6886783b0fcc1 02-fix-wifi-firmware-path.patch +c98a074f46376936493b74285632cf38818bdb9d5e7b70b5b291aa8774711a93f352cb569d856215ebc75a33f819a8ce6cd5ccbee506d0a81141938924cf45e3 03-fix-fimc-is-firmware-path.patch 00aac98cfbaa68bd30c41622b12f38106f6595e2d74ee5cdd05add56f03facb4db45deb43b5df997143b54497d621b9fc5bae7207898c70df0672ebb482c4b46 Makefile_fix_paths.patch -2b48f1bf0e3f70703d2cdafc47d5e615cc7c56c70bec56b2e3297d3fa4a7a1321d649a8679614553dde8fe52ff1051dae38d5990e3744c9ca986d92187dcdbeb gcc10-extern_YYLOC_global_declaration.patch" +2b48f1bf0e3f70703d2cdafc47d5e615cc7c56c70bec56b2e3297d3fa4a7a1321d649a8679614553dde8fe52ff1051dae38d5990e3744c9ca986d92187dcdbeb gcc10-extern_YYLOC_global_declaration.patch +8684da1ef7032cb2160c9b071b2bf8cb57a31f5527ee3f6e9e3b58fa485a0ff244e3bc85446c8b09f5b5cec7d1a3f92da681f63495728aaa547438c93eb375d5 0007-usb_gadget-set-random-rndis-host-MAC-address-to-prev.patch +" diff --git a/device/testing/linux-samsung-zerofltexx/config-samsung-zerofltexx.aarch64 b/device/testing/linux-samsung-zerofltexx/config-samsung-zerofltexx.aarch64 index 7b4757df4..8e4e75527 100644 --- a/device/testing/linux-samsung-zerofltexx/config-samsung-zerofltexx.aarch64 +++ b/device/testing/linux-samsung-zerofltexx/config-samsung-zerofltexx.aarch64 @@ -1658,8 +1658,8 @@ CONFIG_BCM4358=y # CONFIG_BCM43241 is not set # CONFIG_BCM4334W is not set # CONFIG_BCM43455 is not set -CONFIG_BCMDHD_FW_PATH="/vendor/etc/wifi/bcmdhd_sta.bin" -CONFIG_BCMDHD_NVRAM_PATH="/vendor/etc/wifi/nvram_net.txt" +CONFIG_BCMDHD_FW_PATH="/lib/firmware/postmarketos/bcmdhd_sta.bin" +CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/postmarketos/nvram_net.txt" CONFIG_BROADCOM_WIFI_RESERVED_MEM=y # CONFIG_WIFI_BROADCOM_COB is not set CONFIG_WLAN_REGION_CODE=100