tolino-shine2hd: new device (MR 2797)

Basic support for the Tolino Shine 2 HD ebook reader.
Waveform handling shares the same oddities as for the Kobo Clara HD
but the file epdc_E060SCM.fw from the IMX6SL BSP from NXP does also work.
The existing waveform from SD card is used.

Preferred way to install is to clone the internal SD, keeping the original
as a backup, install on that clone.

U-Boot is a more recent one than the factory u-boot, so devicetrees are nicely
supported. Kernel is the near mainline kernel also used by the Kobo Clara HD.

About Wifi: Handling of the configuration file for boards with brcmfmac is not
supported yet.

[ci:skip-build] already built successfully in CI
This commit is contained in:
Andreas Kemnade 2021-12-27 22:41:54 +01:00 committed by Clayton Craft
parent 084076cab9
commit 24b152725f
No known key found for this signature in database
GPG key ID: 4A4CED6D7EDF950A
8 changed files with 177 additions and 0 deletions

View file

@ -0,0 +1,45 @@
# Reference: <https://postmarketos.org/devicepkg>
pkgname=device-tolino-shine2hd
pkgdesc="Tolino Shine 2 HD"
pkgver=0.1
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="armv7"
options="!check !archcheck"
depends="
perl
postmarketos-base
u-boot-tolino-shine2hd
u-boot-tools
linux-kobo-clara-mainline
"
makedepends="devicepkg-dev"
install="$pkgname.post-install"
source="
deviceinfo
extract-waveform.initd
extract-waveform.pl
uboot-script.cmd
"
build() {
devicepkg_build $startdir $pkgname
}
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
mkimage -A arm -O linux -T script -n postmarketOS \
-d "$srcdir/uboot-script.cmd" "$srcdir/boot.scr"
install -Dm644 "$srcdir/boot.scr" "$pkgdir/boot/boot.scr"
}
sha512sums="
e4888a03a32e4543cb05b6ff1ecc04ad4ab521c11a39207243166e125a6553b373d19b890c09e3787785bc2929ef07d2434a8cc9b2e6def97b2ced96693a53b1 deviceinfo
c68e4e41d73a1f9d08aeed95743d5a3ae6831d36d0259ba96ceca297479fef01b78c2b569c376c5b24b4ee24ea7d3cb44d6e97730f44d81fd67e9f0586c4911a extract-waveform.initd
34475b314e45135c84e4abdc769d3aba9df56e37814c7f689d5e1aca5af060b2e028c01e871c3863534fede0be7c79aaebe0a1ff4f2bfab2ee974489119005cf extract-waveform.pl
3b5c33ffa9b81d55451fd4fa0c9ed69149304b88fb85752cead4d34b5467112029cc4883a91e7daa38f8cba55d90a814711b2c55a8d462d115b62f752ce311b7 uboot-script.cmd
"

View file

@ -0,0 +1,3 @@
#!/bin/sh
rc-update add extract-waveform default

View file

@ -0,0 +1,31 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell
# scripts.
deviceinfo_format_version="0"
deviceinfo_name="Tolino Shine 2HD"
# tolino was bought by Kobo, "about" pages on device list Kobo
# but to not add too much confusion, simply specify Tolino here
# Mainline kernel uses kobo as vendor-prefix for the model name compatible
deviceinfo_manufacturer="Tolino"
deviceinfo_codename="tolino-shine2hd"
deviceinfo_year="2015"
deviceinfo_arch="armv7"
deviceinfo_dtb="imx6sl-tolino-shine2hd"
# Device related
deviceinfo_chassis="tablet"
deviceinfo_keyboard="false"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1072"
deviceinfo_screen_height="1448"
# Bootloader related
deviceinfo_flash_method="none"
deviceinfo_boot_part_start="49152"
deviceinfo_getty="ttymxc0;115200"
deviceinfo_generate_legacy_uboot_initfs="true"
deviceinfo_no_framebuffer="true"
deviceinfo_sd_embed_firmware_step_size="512"
deviceinfo_sd_embed_firmware="u-boot/tolino-shine2hd/u-boot.imx:2,u-boot/tolino-shine2hd/u-boot-env.bin:1536"

View file

@ -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 $?
}

View file

@ -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;

View file

@ -0,0 +1,14 @@
led tolinoshine2hd:white:on on
setenv bootargs console=ttymxc0,115200
echo Loading kernel
load mmc 0:1 0x80800000 vmlinuz
echo Loading DTB
load mmc 0:1 0x83000000 imx6sl-tolino-shine2hd.dtb
echo Loading initrd
load mmc 0:1 0x85000000 uInitrd
echo Booting kernel
bootz 0x80800000 0x85000000 0x83000000

View file

@ -0,0 +1,37 @@
# Reference: <https://postmarketos.org/devicepkg>
pkgname=u-boot-tolino-shine2hd
pkgver=2020.10
pkgrel=0
pkgdesc="U-Boot for Tolino Shine 2 HD, based on freescale fork"
arch="armv7"
_carch="arm"
license="GPL-2.0"
url="https://github.com/akemnade/u-boot-fslc"
makedepends="$depends_dev bc dtc bison flex"
options="!check"
_repository="u-boot-fslc"
_commit="fcf25705fc8b57cb22c81b2d352e9a06269911be"
source="
$pkgname-$_commit.tar.gz::https://github.com/akemnade/$_repository/archive/$_commit.tar.gz
u-boot-env.txt
"
builddir="$srcdir/$_repository-$_commit"
build() {
make ARCH="$_carch" mx6sltolinoshine3_defconfig
make ARCH="$_carch" DEVICE_TREE=imx6sl-tolino-shine2hd
tools/mkenvimage -p 0 -s 8192 -o u-boot-env.bin "$srcdir/u-boot-env.txt"
}
package() {
install -D -m644 "$builddir/u-boot-dtb.bin" "$pkgdir/usr/share/u-boot/tolino-shine2hd/u-boot.bin"
install -D -m644 "$builddir/u-boot-dtb.imx" "$pkgdir/usr/share/u-boot/tolino-shine2hd/u-boot.imx"
install -D -m644 "$builddir/u-boot-env.bin" "$pkgdir/usr/share/u-boot/tolino-shine2hd/u-boot-env.bin"
}
sha512sums="
6a9c3f5d2ad806ab9529f0c8fc19213098aae620c5bf34e5cc273453bf007266a674489deff18ffa82e8826280192dbc443b024a3f878836021ae6c062be4189 u-boot-tolino-shine2hd-fcf25705fc8b57cb22c81b2d352e9a06269911be.tar.gz
ca8237a86da93dfea62355cfbb8dbe4104c2f3aea71b4c36d5418e6aef6ead32e9d23e4731b8ff64b4a73ca563b0323087384de10d4946afd657dce4cc7c6fee u-boot-env.txt
"

View file

@ -0,0 +1,2 @@
# Load actual boot script from the boot partition
bootcmd=load mmc 0:1 0x80800000 boot.scr ; source 0x80800000