From b1d88b7bf088ea5e3544d891fd92396fa87aeb9f Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Wed, 14 Jul 2021 21:17:39 +0200 Subject: [PATCH] device-kobo-clara: add init script to extract EPD waveform (MR 2334) [ci:skip-build] already built successfully in CI --- device/testing/device-kobo-clara/APKBUILD | 20 +++++++++++----- .../device-kobo-clara.post-install | 3 +++ .../device-kobo-clara/extract-waveform.initd | 21 ++++++++++++++++ .../device-kobo-clara/extract-waveform.pl | 24 +++++++++++++++++++ 4 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 device/testing/device-kobo-clara/device-kobo-clara.post-install create mode 100644 device/testing/device-kobo-clara/extract-waveform.initd create mode 100644 device/testing/device-kobo-clara/extract-waveform.pl diff --git a/device/testing/device-kobo-clara/APKBUILD b/device/testing/device-kobo-clara/APKBUILD index 66a615569..8de0cdf10 100644 --- a/device/testing/device-kobo-clara/APKBUILD +++ b/device/testing/device-kobo-clara/APKBUILD @@ -1,28 +1,32 @@ # Reference: pkgname=device-kobo-clara pkgdesc="Kobo Clara HD" -pkgver=0.1 +pkgver=0.2 pkgrel=0 url="https://postmarketos.org" license="MIT" arch="armv7" options="!check !archcheck" depends=" + perl postmarketos-base u-boot-kobo-clara u-boot-tools " makedepends="devicepkg-dev" -source=" - deviceinfo - uboot-script-downstream.cmd - uboot-script-mainline.cmd -" +install="$pkgname.post-install" subpackages=" $pkgname-kernel-downstream:kernel_downstream $pkgname-kernel-mainline:kernel_mainline $pkgname-nonfree-firmware:nonfree_firmware " +source=" + deviceinfo + extract-waveform.initd + extract-waveform.pl + uboot-script-downstream.cmd + uboot-script-mainline.cmd +" build() { devicepkg_build $startdir $pkgname @@ -30,6 +34,8 @@ build() { package() { devicepkg_package $startdir $pkgname + install -Dm755 "$srcdir"/extract-waveform.pl "$pkgdir"/usr/sbin/extract-waveform.pl + install -Dm755 "$srcdir"/extract-waveform.initd "$pkgdir"/etc/init.d/extract-waveform } kernel_downstream() { @@ -60,6 +66,8 @@ nonfree_firmware() { sha512sums=" 8ff8c8a4a1cd274a060413423dea7767e06f4ab2bf539bcb1a084e2d4cb488115947e553e86e0c4a20287ca156ce167329a2c2c462a66094f1bec6ddccc07276 deviceinfo +c68e4e41d73a1f9d08aeed95743d5a3ae6831d36d0259ba96ceca297479fef01b78c2b569c376c5b24b4ee24ea7d3cb44d6e97730f44d81fd67e9f0586c4911a extract-waveform.initd +34475b314e45135c84e4abdc769d3aba9df56e37814c7f689d5e1aca5af060b2e028c01e871c3863534fede0be7c79aaebe0a1ff4f2bfab2ee974489119005cf extract-waveform.pl 9f95496929f46de69afb6b25b1e3d099668e0f759eb1d36f76d84af14c8bd78cb739c410c58d7a31283782c6ff11999575c8c7ec22c11adec018b3026b290408 uboot-script-downstream.cmd 5152e007591e07c4772ecbce4e212ae6c1b65264a46234c11c425f91439171a6379727e344a5c9654da368baa61b863660bf781e5e211d813532d29d8c2e7fd9 uboot-script-mainline.cmd " diff --git a/device/testing/device-kobo-clara/device-kobo-clara.post-install b/device/testing/device-kobo-clara/device-kobo-clara.post-install new file mode 100644 index 000000000..eef41e601 --- /dev/null +++ b/device/testing/device-kobo-clara/device-kobo-clara.post-install @@ -0,0 +1,3 @@ +#!/bin/sh + +rc-update add extract-waveform default diff --git a/device/testing/device-kobo-clara/extract-waveform.initd b/device/testing/device-kobo-clara/extract-waveform.initd new file mode 100644 index 000000000..bfd46ced8 --- /dev/null +++ b/device/testing/device-kobo-clara/extract-waveform.initd @@ -0,0 +1,21 @@ +#!/sbin/openrc-run + +description="Extract EPD waveform blob to /lib/firmware" + +depend() { + after root +} + +start() +{ + # Only run once + rm -f /etc/runlevels/*/$RC_SVCNAME + + dir="/lib/firmware/imx/epdc" + + ebegin "Copying EPD waveform to /lib/firmware..." + mkdir -p "$dir" && cd "$dir" \ + && extract-waveform.pl /dev/mmcblk0 epdc_PENG060D.fw \ + && ln -sf epdc_PENG060D.fw epdc.fw + eend $? +} diff --git a/device/testing/device-kobo-clara/extract-waveform.pl b/device/testing/device-kobo-clara/extract-waveform.pl new file mode 100644 index 000000000..9d9e86dda --- /dev/null +++ b/device/testing/device-kobo-clara/extract-waveform.pl @@ -0,0 +1,24 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0+ +# (c) 2020, Andreas Kemnade + +sub usage { + print "Usage: $0 disk epdc.fw\ndisk is the Kobo/Toline disk (image) containing a waveform\n"; + exit(1); +} + +&usage unless $#ARGV == 1; + +open IMGFILE, '<:raw', @ARGV[0] or die "cannot open @ARGV[0]"; +seek IMGFILE, 0x700000-16, 0; +read IMGFILE, $magic, 8; +(unpack("x0 H16", $magic) eq "fff5afff78563412") or die "invalid magic"; + +seek IMGFILE, 0x700000-8, 0; +read IMGFILE, $lengthbytes, 4; +$length = unpack("x0 V", $lengthbytes) or die "invalid length"; +print $length . " bytes\n" ; +seek IMGFILE, 0x700000, 0 or die "seek failed, file too short?"; +open OUTFILE, '>:raw', @ARGV[1] or die "cannot open @ARGV[1]"; +read IMGFILE, $waveform, $length; +print OUTFILE $waveform;