From 71842c64dc6311e3c6aebe6ad957c1907057dda6 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Sat, 30 Jun 2018 22:55:48 -0500 Subject: system/easy-kernel: initial AST fix for Talos 2 --- system/easy-kernel/APKBUILD | 5 ++++- system/easy-kernel/ast-endianness.patch | 38 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 system/easy-kernel/ast-endianness.patch diff --git a/system/easy-kernel/APKBUILD b/system/easy-kernel/APKBUILD index e14479f23..d27b2aff5 100644 --- a/system/easy-kernel/APKBUILD +++ b/system/easy-kernel/APKBUILD @@ -17,6 +17,7 @@ subpackages="$_pkgname-modules-$pkgver-mc$pkgrel:modules $_pkgname-src-$pkgver-mc$pkgrel:src" source="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.tar.xz https://distfiles.adelielinux.org/source/linux-4.14-mc$pkgrel.patch.xz + ast-endianness.patch config-ppc64 config-ppc config-x86_64 @@ -30,6 +31,7 @@ prepare() { cat linux-4.14-mc$pkgrel.patch.xz | unxz -> linux-4.14-mc$pkgrel.patch cd "$builddir" patch -Np1 <../linux-4.14-mc$pkgrel.patch + patch -Np1 <../ast-endianness.patch cd "$srcdir" cp config-$CARCH linux-4.14/.config cp -pr linux-4.14 linux-src @@ -82,7 +84,8 @@ src() { } sha512sums="77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 linux-4.14.tar.xz 3fe2da1714cc83d909ba43d27c7f22ef4f2a6ecfd91ff81e0e141a0dd742ec78ad11392186871762f410615ae7c7f33dd814e0f194c7f7aed1dee2d9fca0252d linux-4.14-mc8.patch.xz -b1937f62167a86791be12065b0326f35d30e35b0ea81307e79b29d9502bab2bd793e171247c797703ea27c23c0254fb44e156fa0fffd7a2288eb7b737c5ebf68 config-ppc64 +e41d9111219342ad13367902242444ecdd847a93575c3f9709d6c6a075bc650f4a15be9db1a8798435fc0a0b56d41705829bfe0d2c2d88f8d1c28931e27ef5be ast-endianness.patch +fab37f0dc317bbacab55171a03c37a55cd39bde167a89455055fd3e0d651783bfb95c72ceabc9d133c36208dd6c682285f6625b9a25d918341d85c720f59ae86 config-ppc64 419dd30c2d2592293e7b6889a397784fed84a1f686c0d2d262177be98bcb022a9eab4f77c930866fbc8651fcec0a06a12fb796b85591b28f0b9852904347e44a config-ppc 438a66561200d570b3bf6ab0481d9725a9f482b1fcf852a90f99c6db5aa4ee02d2b67b57235bb7afc01515a79289407cbe111536340824d7a391ce1a658c9a76 config-x86_64 e8f7749877c5b2574e7e853b757477b8f99d757b43225d4f83d611c20215b8b2690cc85369608c2dc8f7d6a619136a2d7dde4648031e37d2ae4dcc5ba85652c8 config-pmmx diff --git a/system/easy-kernel/ast-endianness.patch b/system/easy-kernel/ast-endianness.patch new file mode 100644 index 000000000..03ee209b8 --- /dev/null +++ b/system/easy-kernel/ast-endianness.patch @@ -0,0 +1,38 @@ +Author: Elizabeth Myers + +I'm certain this fix is wrong fwiw, but it's the best I could come with + +--- linux-4.14/drivers/gpu/drm/ast/ast_fb.c.old 2017-11-12 12:46:13.000000000 -0600 ++++ linux-4.14/drivers/gpu/drm/ast/ast_fb.c 2018-06-30 20:54:43.530000000 -0500 +@@ -109,9 +109,30 @@ + unmap = true; + } + for (i = y; i <= y2; i++) { ++ int copy_width = x2 - x + 1; + /* assume equal stride for now */ + src_offset = dst_offset = i * afbdev->afb.base.pitches[0] + (x * bpp); +- memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, (x2 - x + 1) * bpp); ++ switch (bpp) { ++ case 4: ++ while (copy_width) { ++ iowrite32(*(u32 *)(afbdev->sysram + src_offset), ++ bo->kmap.virtual + src_offset); ++ src_offset += 4; ++ copy_width--; ++ } ++ break; ++ case 2: ++ while (copy_width) { ++ iowrite16(*(u16 *)(afbdev->sysram + src_offset), ++ bo->kmap.virtual + src_offset); ++ src_offset += 2; ++ copy_width--; ++ } ++ break; ++ default: ++ memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, (x2 - x + 1) * bpp); ++ break; ++ } + + } + if (unmap) -- cgit v1.2.3-70-g09d2