# Reference: # Maintainer: Federico Amedeo Izzo pkgname=device-clockworkpi-uconsole-rpi pkgdesc="Clockwork Tech ClockworkPi uConsole with Raspberry Pi compute modules" pkgver=7 # commit to fork of kernel with drivers maintained by ak-rex _commit=d340a0416d34bf94591b45b50c5538aecbf5b09b pkgrel=0 url="https://postmarketos.org" license="MIT" arch="aarch64" options="!archcheck" depends=" linux-rpi postmarketos-base raspberrypi-bootloader " makedepends=" devicepkg-dev clang dtc linux-rpi-dev " subpackages=" $pkgname-nonfree-firmware:nonfree_firmware $pkgname-openrc $pkgname-x11 $pkgname-akms " source=" clockworkpi-linux-$_commit.tar.gz::https://github.com/ak-rex/ClockworkPi-linux/archive/$_commit.tar.gz deviceinfo modules-initfs usercfg.txt 95-vchiq-permissions.rules xorg.conf driver-makefile.in driver-akmbuild.in " builddir="$srcdir"/ClockworkPi-linux-$_commit # Location of out-of-tree drivers to be built using AKMS # Set by looking at diff of bcm2711_defconfig in kernel fork # where added configs can be tied to relevant files _drivers=" drivers/power/supply/axp20x_usb_power.c drivers/mfd/axp20x.c drivers/iio/adc/axp20x_adc.c drivers/iio/adc/ti-adc081c.c drivers/mfd/axp20x-i2c.c drivers/regulator/axp20x-regulator.c drivers/input/misc/axp20x-pek.c drivers/power/supply/axp20x_ac_power.c drivers/power/supply/axp20x_battery.c drivers/video/backlight/ocp8178_bl.c drivers/gpu/drm/panel/panel-cwd686-cm3.c drivers/gpu/drm/panel/panel-cwd686.c drivers/gpu/drm/panel/panel-cwu50-cm3.c drivers/gpu/drm/panel/panel-cwu50.c " # Location of relevant overlays to be built _dtso=" arch/arm/boot/dts/overlays/clockworkpi-uconsole-overlay.dts arch/arm/boot/dts/overlays/clockworkpi-uconsole-cm5-overlay.dts arch/arm/boot/dts/overlays/clockworkpi-custom-battery-overlay.dts " provides="device-clockworkpi-uconsole-cm4=$pkgver-r$pkgrel" build() { devicepkg_build $startdir $pkgname local _modules= local _objects= local _file= # setup akms folder # this also generates information to complete AKMBUILD and Makefile mkdir -p "$builddir"/akms "$builddir"/dtso for driver in $_drivers; do _file=${driver##*\/} cp "$builddir"/$driver "$builddir"/akms/$_file _modules="$_modules ${_file/.c/.ko}" _objects="$_objects ${_file/.c/.o}" done sed -e "s/%%MODVER%%/$pkgver/" -e "s/%%DRIVER_MOD%%/$_modules/" "$srcdir"/driver-akmbuild.in > "$builddir"/akms/AKMBUILD sed "s/%%DRIVER_OBJ%%/$_objects/" "$srcdir"/driver-makefile.in > "$builddir"/akms/Makefile # setup dtso folder for dtso in $_dtso; do _file=${dtso##*\/} cp "$builddir"/$dtso "$builddir"/dtso/$_file done # generate dtbo for uconsole _kernel_ver=$(find /lib/modules -maxdepth 1 -mindepth 1 | grep rpi | sed 's|.*/||g') echo ">>> Generating dtbo against $_kernel_ver" for dts in "$builddir"/dtso/*.dts; do cpp -nostdinc -I "/usr/src/linux-headers-$_kernel_ver/include" -I arch -undef -x assembler-with-cpp $dts $dts.preprocessed dtc -O dtb -o ${dts/-overlay.dts/.dtbo} $dts.preprocessed done } package() { devicepkg_package $startdir $pkgname install -Dm644 "$srcdir"/usercfg.txt "$pkgdir"/boot/usercfg.txt install -Dm644 "$srcdir"/95-vchiq-permissions.rules \ "$pkgdir"/usr/lib/udev/rules.d/95-vchiq-permissions.rules install -Dm644 "$builddir"/dtso/*dtbo -t "$pkgdir"/boot/overlays } # Test build of drivers against kernel check() { _kernel_ver=$(find /lib/modules -maxdepth 1 -mindepth 1 | sed 's|.*/||g') for ver in $_kernel_ver; do echo ">>> Testing module build against $ver" cp -R "$builddir"/akms "$builddir"/akms-$ver ( cd "$builddir"/akms-$ver make KVER=$ver ) done } akms() { pkgdesc="uConsole kernel module (AKMS)" depends="akms linux-rpi-dev build-base" install_if="$pkgname=$pkgver-r$pkgrel" mkdir -p "$subpkgdir"/usr/src cp -R "$builddir"/akms "$subpkgdir"/usr/src/clockworkpi-rpi chmod -R u=rwX,go=rX-w "$subpkgdir"/usr/src/clockworkpi-rpi } nonfree_firmware() { pkgdesc="WiFi/Bluetooth firmware" depends="linux-firmware-brcm" mkdir "$subpkgdir" } x11() { install_if="$pkgname xorg-server" install -Dm644 "$srcdir"/xorg.conf \ "$subpkgdir"/etc/X11/xorg.conf.d/10-monitor.conf } openrc() { pkgdesc="$pkgdesc (openrc)" depends="openrc" install_if="$pkgname=$pkgver-r$pkgrel openrc" install="$subpkgname.post-install $subpkgname.post-upgrade" mkdir -p "$subpkgdir" } sha512sums=" a47b3819274fca4a5c554923391d73f98ff0d4e7b78481e288e1ea401ef8e71287ad8845940ad63e482bb205dcad8b2331a3a08b9d838c2a8ec1ec18b8d18dc9 clockworkpi-linux-d340a0416d34bf94591b45b50c5538aecbf5b09b.tar.gz ca5a62f611318cfdb095728c7b473aa85e30e965222ca740d6ad8fa372eba7adc8ca62edc770da19375faa228cc0c8718234f2f07ea72a2db0d77bfbc6924546 deviceinfo d97e603ef83626ec12a2503035c8de4d3d4d548510b85b26b07382736c334ae0c420e6811612fa83795eb8aa349dae29ec9944708d57cdd04cce09db3c32de23 modules-initfs bc2bfea04073895f02e21d9248eb3f77910e95022d65bab7d80fd12484a6523d670f81d0aae2f4e811b7ab29f8537d73d87891572c212e647c69f1e98916685b usercfg.txt 7e5505cb07d5b4a81bd28443d508336b5c547356538f1c06f91ed93ad0d7d456d4f74f1d24df5a2e08c17e74f0a66607352ac4874e967e9a91dfec9522d2d58d 95-vchiq-permissions.rules 15cde27e41304f988009e3a1cbc4bb6a85b9d09538c727e9c22e1ec8a45d025b4be5d0064d7d7bba1988006ad291c06c8aec8bcc974f0689fbd0d187f8dc6979 xorg.conf 51a1fc5ba9336e784fe8dfb97eed8d3f51fd181a9a76c5266e227e1670aa423fdaec04b869795a2abd5afca6d472a1f107f30a0f0efd242ee16c8910773ddcc2 driver-makefile.in d36e2b1f9187f8269d557d867ccf6d5abd5925ea34c7a5c0b97dcdc96e3b76955701946c68309240e3bb3713f7466c5756806734fab4a8c2c2d161aab7ab1b26 driver-akmbuild.in "