testing/device-samsung-a51: New device (MR 5887)
Successfully built and booted postmarketOS on Samsung Galaxy A51. It's based on Exynos 9611 SoC. Currently, these are tested working: - Boots from internal storage - Display (DECON driver needs to be patched. Included in the kernel package) - Framebuffer (additionally with msm-fb-refresher to refresh the screen) - Touchscreen - USB Networking (RNDIS) - Wi-Fi Tested UI environments: XFCE 4 & Console. Wiki: https://wiki.postmarketos.org/wiki/Samsung_Galaxy_A51_(samsung-a51)
This commit is contained in:
parent
e9643f19db
commit
6a01b409c3
13 changed files with 6801 additions and 0 deletions
|
|
@ -38,6 +38,7 @@ device/*/*-qcom-sm6350/ @z3ntu
|
|||
device/*/*-qcom-sm8250/ @jianhua
|
||||
device/*/*-samsung-a3/ @Mis012 @TravMurav @Minecrell
|
||||
device/*/*-samsung-a5/ @Minecrell @minlexx
|
||||
device/*/*-samsung-a51/ @manoedinata
|
||||
device/*/*-samsung-e7/ @wonderfulShrineMaidenOfParadise
|
||||
device/*/*-samsung-espresso10/ @MightyM17
|
||||
device/*/*-samsung-espresso7/ @MightyM17 @antoni.aloytorrens
|
||||
|
|
|
|||
46
device/testing/device-samsung-a51/APKBUILD
Normal file
46
device/testing/device-samsung-a51/APKBUILD
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Maintainer: Hendra Manudinata <hendra@manoedinata.com>
|
||||
# Reference: <https://postmarketos.org/devicepkg>
|
||||
pkgname=device-samsung-a51
|
||||
pkgdesc="Samsung Galaxy A51"
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
url="https://postmarketos.org"
|
||||
license="MIT"
|
||||
arch="aarch64"
|
||||
options="!check !archcheck"
|
||||
depends="
|
||||
linux-samsung-a51
|
||||
mkbootimg
|
||||
postmarketos-base
|
||||
postmarketos-base-downstream
|
||||
make-dynpart-mappings
|
||||
msm-fb-refresher
|
||||
"
|
||||
makedepends="devicepkg-dev"
|
||||
source="
|
||||
deviceinfo
|
||||
NetworkManager-conf.d-swlan0-p2p0-unmanaged.conf
|
||||
"
|
||||
subpackages="$pkgname-nonfree-firmware:nonfree_firmware"
|
||||
|
||||
build() {
|
||||
devicepkg_build $startdir $pkgname
|
||||
}
|
||||
|
||||
package() {
|
||||
devicepkg_package $startdir $pkgname
|
||||
|
||||
# Disable swlan0 (additionally x0wlan0) & p2p0 management
|
||||
install -Dm644 NetworkManager-conf.d-swlan0-p2p0-unmanaged.conf "$pkgdir"/usr/lib/NetworkManager/conf.d/swlan0-p2p0-unmanaged.conf
|
||||
}
|
||||
|
||||
nonfree_firmware() {
|
||||
pkgdesc="Non-free firmware for Samsung Galaxy A51 (a51)"
|
||||
depends="firmware-samsung-a51"
|
||||
mkdir "$subpkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d593b87411e15546609646daae6d9192368046dde5ee5f1e15833ce2062bd310b6305943e52f1a0804d8276088df9342bf4f026dc418cbf44db630389954f54f deviceinfo
|
||||
10dc120045062a47b11ab4762dcb4425b2a521b2bcede4e4d3b691f9f2cf2ced77bdff059992ff55cd11af59663802ecb8e750ca02ee70cfa8950b9a090b5dfb NetworkManager-conf.d-swlan0-p2p0-unmanaged.conf
|
||||
"
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[main]
|
||||
plugins=keyfile
|
||||
|
||||
[keyfile]
|
||||
unmanaged-devices=interface-name:swlan0;interface-name:x0wlan0;interface-name:p2p0
|
||||
41
device/testing/device-samsung-a51/deviceinfo
Normal file
41
device/testing/device-samsung-a51/deviceinfo
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# Reference: <https://postmarketos.org/deviceinfo>
|
||||
# Please use double quotes only. You can source this file in shell
|
||||
# scripts.
|
||||
|
||||
deviceinfo_format_version="0"
|
||||
deviceinfo_name="Samsung Galaxy A51"
|
||||
deviceinfo_manufacturer="Samsung"
|
||||
deviceinfo_codename="samsung-a51"
|
||||
deviceinfo_year="2019"
|
||||
deviceinfo_dtb="exynos9610"
|
||||
deviceinfo_arch="aarch64"
|
||||
|
||||
# Device related
|
||||
deviceinfo_chassis="handset"
|
||||
deviceinfo_external_storage="true"
|
||||
deviceinfo_screen_width="1080"
|
||||
deviceinfo_screen_height="2400"
|
||||
|
||||
# Bootloader related
|
||||
deviceinfo_flash_method="heimdall-bootimg"
|
||||
deviceinfo_kernel_cmdline="androidboot.selinux=permissive androidboot.selinux=permissive loop.max_part=7"
|
||||
deviceinfo_generate_bootimg="true"
|
||||
deviceinfo_flash_pagesize="2048"
|
||||
deviceinfo_header_version="2"
|
||||
deviceinfo_append_dtb="false"
|
||||
deviceinfo_bootimg_qcdt="false"
|
||||
deviceinfo_flash_offset_dtb="0x00000000"
|
||||
deviceinfo_flash_offset_base="0x10000000"
|
||||
deviceinfo_flash_offset_kernel="0x00008000"
|
||||
deviceinfo_flash_offset_ramdisk="0x01000000"
|
||||
deviceinfo_flash_offset_second="0xf0000000"
|
||||
deviceinfo_flash_offset_tags="0x00000100"
|
||||
deviceinfo_flash_heimdall_partition_kernel="boot"
|
||||
deviceinfo_flash_heimdall_partition_rootfs="super"
|
||||
|
||||
# Dynamic partition (super)
|
||||
deviceinfo_super_partitions="/dev/sda25 /dev/sda25"
|
||||
|
||||
# USB
|
||||
deviceinfo_usb_idProduct="0x685d"
|
||||
deviceinfo_usb_idVendor="0x04e8"
|
||||
39
device/testing/firmware-samsung-a51/APKBUILD
Normal file
39
device/testing/firmware-samsung-a51/APKBUILD
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# Maintainer: Hendra Manudinata <hendra@manoedinata.com>
|
||||
pkgname=firmware-samsung-a51
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
pkgdesc="Proprietary firmware for Samsung Galaxy A51 (a51)"
|
||||
url="https://dumps.tadiphone.dev/dumps/samsung/a51"
|
||||
arch="aarch64"
|
||||
license="proprietary"
|
||||
options="!check !archcheck !tracedeps pmb:cross-native"
|
||||
|
||||
_commit="4c72faa15ca0875510fde40a4b0686d4c161d0b4"
|
||||
_repo="$url/-/raw/$_commit"
|
||||
|
||||
_files_wifi="
|
||||
mx
|
||||
mx140.bin
|
||||
mx140_wlan.hcf
|
||||
mx140_wlan_sw.hcf
|
||||
"
|
||||
|
||||
for _file in $_files_wifi; do
|
||||
source="$source $pkgname-$_commit-$_file::$_repo/vendor/etc/wifi/$_file"
|
||||
done
|
||||
|
||||
package() {
|
||||
local file
|
||||
for file in $_files_wifi; do
|
||||
install -Dm644 "$srcdir/$pkgname-$_commit-$file" \
|
||||
"$pkgdir/lib/firmware/postmarketos/mx140/$file"
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e firmware-samsung-a51-4c72faa15ca0875510fde40a4b0686d4c161d0b4-mx
|
||||
2a94883cab2b623eee67a0cf6f38d6a35264d01b03b69efc2292bf18dfa6d1280370e486c2021fb6ba3ddfd5e79dce8fd0febe754e8b1d39d30b412ec4fd4a3f firmware-samsung-a51-4c72faa15ca0875510fde40a4b0686d4c161d0b4-mx140.bin
|
||||
31d2097a5b3acf88f63cb3d99cb10ac6329ee7d2ef32ca8312777dbcf452d709eb82f22737024a5cd7f3849a3498b73e377d1f0683d0b49e4d01da9c9b59bb0b firmware-samsung-a51-4c72faa15ca0875510fde40a4b0686d4c161d0b4-mx140_wlan.hcf
|
||||
58a2ea8e2834f4115c704503b18851c18389f11f8b1f657804689b8c09b20b7b8c1f4c4cc677eaa21a4013cdd667715a358df4b4d0bb7ce2b13010845e4deb05 firmware-samsung-a51-4c72faa15ca0875510fde40a4b0686d4c161d0b4-mx140_wlan_sw.hcf
|
||||
"
|
||||
|
|
@ -0,0 +1,370 @@
|
|||
From c3d6d0c97001f907bbdefb71b9dca6d9cd903998 Mon Sep 17 00:00:00 2001
|
||||
From: map220v <map220v300@gmail.com>
|
||||
Date: Sat, 16 Jan 2021 14:56:07 +0300
|
||||
Subject: [PATCH] [SQUASH] [HACK] DECON & framebuffer fixes for Linux
|
||||
|
||||
This commit contains (a little bit hacky) patches to fix framebuffer
|
||||
behaving weird in native Linux system.
|
||||
|
||||
The said patches are:
|
||||
* A hacky way to force DECON refresh. Now we don't need msm-fb-refresher
|
||||
[1] anymore. [2]
|
||||
* Fix fbcon and mismatched color [3]
|
||||
* Keep `fb0` enabled [4]
|
||||
* `decon_pan_display` downgrade to fix Samsung's DECON [5]
|
||||
|
||||
[1] https://pkgs.postmarketos.org/package/master/postmarketos/aarch64/msm-fb-refresher
|
||||
[2] https://github.com/map220v/kernel_samsung_a51-linux/commit/8f88827bf29b4508ed2ea67110de93776a044e74
|
||||
[3] https://github.com/map220v/kernel_samsung_a51-linux/commit/83656dabd2b5db98c04c5b02a2eca7b78152bc18
|
||||
[4] https://github.com/map220v/kernel_samsung_a51-linux/commit/974f3e70d07021a9d7b42f08720b0b425003745f
|
||||
[5] https://github.com/map220v/kernel_samsung_a51-linux/commit/ebfe69da8c0e0c4fcf8fc22970f9e38280d5224f
|
||||
|
||||
Signed-off-by: Hendra Manudinata <manoedinata@gmail.com>
|
||||
---
|
||||
drivers/video/fbdev/exynos/dpu20/decon_core.c | 57 ++++++++----
|
||||
drivers/video/fbdev/exynos/dpu20/decon_dsi.c | 88 ++++++++-----------
|
||||
2 files changed, 81 insertions(+), 64 deletions(-)
|
||||
|
||||
diff --git a/drivers/video/fbdev/exynos/dpu20/decon_core.c b/drivers/video/fbdev/exynos/dpu20/decon_core.c
|
||||
index 20a52c044d..e77c9e7018 100644
|
||||
--- a/drivers/video/fbdev/exynos/dpu20/decon_core.c
|
||||
+++ b/drivers/video/fbdev/exynos/dpu20/decon_core.c
|
||||
@@ -47,6 +47,9 @@
|
||||
#if defined(CONFIG_SOC_EXYNOS9610)
|
||||
#include <dt-bindings/clock/exynos9610.h>
|
||||
#endif
|
||||
+#ifdef CONFIG_STATE_NOTIFIER
|
||||
+#include <linux/state_notifier.h>
|
||||
+#endif
|
||||
|
||||
#include "decon.h"
|
||||
#include "dsim.h"
|
||||
@@ -58,13 +61,13 @@
|
||||
#include "displayport.h"
|
||||
#endif
|
||||
|
||||
-int decon_log_level = 6;
|
||||
+int decon_log_level = 0;
|
||||
module_param(decon_log_level, int, 0644);
|
||||
-int dpu_bts_log_level = 6;
|
||||
+int dpu_bts_log_level = 0;
|
||||
module_param(dpu_bts_log_level, int, 0644);
|
||||
-int win_update_log_level = 6;
|
||||
+int win_update_log_level = 0;
|
||||
module_param(win_update_log_level, int, 0644);
|
||||
-int dpu_mres_log_level = 6;
|
||||
+int dpu_mres_log_level = 0;
|
||||
module_param(dpu_mres_log_level, int, 0644);
|
||||
int decon_systrace_enable;
|
||||
void decon_wait_for_vstatus(struct decon_device *decon, u32 timeout);
|
||||
@@ -1004,11 +1007,15 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+int decon_set_vsync_int(struct fb_info *info, bool active);
|
||||
+extern int needs_pan;
|
||||
+
|
||||
static int decon_blank(int blank_mode, struct fb_info *info)
|
||||
{
|
||||
struct decon_win *win = info->par;
|
||||
struct decon_device *decon = win->decon;
|
||||
int ret = 0;
|
||||
+ struct fb_info *fb_info;
|
||||
|
||||
decon_info("%s + blank_mode: %d, decon-%d %s mode: %d type (0: DSI, 1: eDP, 2:DP, 3: WB)\n",
|
||||
__func__, blank_mode, decon->id,
|
||||
@@ -1034,6 +1041,9 @@ static int decon_blank(int blank_mode, struct fb_info *info)
|
||||
goto blank_exit;
|
||||
}
|
||||
atomic_set(&decon->ffu_flag, 2);
|
||||
+ #ifdef CONFIG_STATE_NOTIFIER
|
||||
+ state_suspend();
|
||||
+ #endif
|
||||
break;
|
||||
case FB_BLANK_UNBLANK:
|
||||
DPU_EVENT_LOG(DPU_EVT_UNBLANK, &decon->sd, ktime_set(0, 0));
|
||||
@@ -1043,10 +1053,16 @@ static int decon_blank(int blank_mode, struct fb_info *info)
|
||||
goto blank_exit;
|
||||
}
|
||||
atomic_set(&decon->ffu_flag, 2);
|
||||
+ #ifdef CONFIG_STATE_NOTIFIER
|
||||
+ state_suspend();
|
||||
+ #endif
|
||||
#if defined(CONFIG_EXYNOS_READ_ESD_SOLUTION)
|
||||
if (decon->esd.thread)
|
||||
wake_up_process(decon->esd.thread);
|
||||
#endif
|
||||
+ needs_pan = true;
|
||||
+ fb_info = decon->win[decon->dt.dft_win]->fbinfo;
|
||||
+ decon_set_vsync_int(fb_info, true);
|
||||
break;
|
||||
case FB_BLANK_VSYNC_SUSPEND:
|
||||
case FB_BLANK_HSYNC_SUSPEND:
|
||||
@@ -3146,7 +3162,7 @@ static int decon_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static ssize_t decon_fb_read(struct fb_info *info, char __user *buf,
|
||||
+/*static ssize_t decon_fb_read(struct fb_info *info, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
return 0;
|
||||
@@ -3156,7 +3172,7 @@ static ssize_t decon_fb_write(struct fb_info *info, const char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
return 0;
|
||||
-}
|
||||
+}*/
|
||||
|
||||
int decon_release(struct fb_info *info, int user)
|
||||
{
|
||||
@@ -3164,6 +3180,7 @@ int decon_release(struct fb_info *info, int user)
|
||||
struct decon_device *decon = win->decon;
|
||||
int fb_count = atomic_read(&info->count);
|
||||
|
||||
+ return 0;
|
||||
decon_info("%s + : %d\n", __func__, decon->id);
|
||||
|
||||
if (decon->id && decon->dt.out_type == DECON_OUT_DSI) {
|
||||
@@ -3216,12 +3233,14 @@ static struct fb_ops decon_fb_ops = {
|
||||
.fb_blank = decon_blank,
|
||||
.fb_setcolreg = decon_setcolreg,
|
||||
.fb_fillrect = cfb_fillrect,
|
||||
+ .fb_copyarea = cfb_copyarea,
|
||||
+ .fb_imageblit = cfb_imageblit,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.fb_compat_ioctl = decon_compat_ioctl,
|
||||
#endif
|
||||
.fb_ioctl = decon_ioctl,
|
||||
- .fb_read = decon_fb_read,
|
||||
- .fb_write = decon_fb_write,
|
||||
+// .fb_read = decon_fb_read,
|
||||
+// .fb_write = decon_fb_write,
|
||||
.fb_pan_display = decon_pan_display,
|
||||
.fb_mmap = decon_mmap,
|
||||
.fb_release = decon_release,
|
||||
@@ -3456,15 +3475,15 @@ static int decon_fb_alloc_memory(struct decon_device *decon, struct decon_win *w
|
||||
}
|
||||
#endif
|
||||
|
||||
- memset(vaddr, 0x00, size);
|
||||
+ //memset(vaddr, 0x00, size);
|
||||
|
||||
fbi->screen_base = vaddr;
|
||||
|
||||
#if !defined(CONFIG_SUPPORT_LEGACY_ION)
|
||||
- dma_buf_vunmap(buf, vaddr);
|
||||
+ //dma_buf_vunmap(buf, vaddr);
|
||||
#endif
|
||||
|
||||
- fbi->screen_base = NULL;
|
||||
+ //fbi->screen_base = NULL;
|
||||
|
||||
win->dma_buf_data[1].fence = NULL;
|
||||
win->dma_buf_data[2].fence = NULL;
|
||||
@@ -3637,6 +3656,7 @@ static int decon_acquire_window(struct decon_device *decon, int idx)
|
||||
}
|
||||
|
||||
fbinfo->fix.type = FB_TYPE_PACKED_PIXELS;
|
||||
+ fbinfo->fix.visual = FB_VISUAL_TRUECOLOR,
|
||||
fbinfo->fix.accel = FB_ACCEL_NONE;
|
||||
fbinfo->var.activate = FB_ACTIVATE_NOW;
|
||||
fbinfo->var.vmode = FB_VMODE_NONINTERLACED;
|
||||
@@ -3964,8 +3984,8 @@ static int decon_initial_display(struct decon_device *decon, bool is_colormap)
|
||||
}
|
||||
|
||||
decon_to_init_param(decon, &p);
|
||||
- if (decon_reg_init(decon->id, decon->dt.out_idx[0], &p) < 0)
|
||||
- goto decon_init_done;
|
||||
+ //if (decon_reg_init(decon->id, decon->dt.out_idx[0], &p) < 0)
|
||||
+ // goto decon_init_done;
|
||||
|
||||
memset(&win_regs, 0, sizeof(struct decon_window_regs));
|
||||
win_regs.wincon = wincon(0x8, 0xFF, 0xFF, 0xFF, DECON_BLENDING_NONE,
|
||||
@@ -3991,7 +4011,7 @@ static int decon_initial_display(struct decon_device *decon, bool is_colormap)
|
||||
set_bit(dpp_id, &decon->prev_used_dpp);
|
||||
memset(&config, 0, sizeof(struct decon_win_config));
|
||||
config.dpp_parm.addr[0] = fbinfo->fix.smem_start;
|
||||
- config.format = DECON_PIXEL_FORMAT_BGRA_8888;
|
||||
+ config.format = DECON_PIXEL_FORMAT_ARGB_8888;
|
||||
config.src.w = fbinfo->var.xres;
|
||||
config.src.h = fbinfo->var.yres;
|
||||
config.src.f_w = fbinfo->var.xres;
|
||||
@@ -4030,14 +4050,21 @@ static int decon_initial_display(struct decon_device *decon, bool is_colormap)
|
||||
decon_reg_set_int(decon->id, &psr, 1);
|
||||
call_panel_ops(dsim, displayon, dsim);
|
||||
decon_wait_for_vsync(decon, VSYNC_TIMEOUT_MSEC);
|
||||
+ decon_set_vsync_int(fbinfo, true);
|
||||
if (decon_reg_wait_update_done_and_mask(decon->id, &psr,
|
||||
SHADOW_UPDATE_TIMEOUT) < 0)
|
||||
decon_err("%s: wait_for_update_timeout\n", __func__);
|
||||
|
||||
-decon_init_done:
|
||||
+//decon_init_done:
|
||||
|
||||
decon->state = DECON_STATE_INIT;
|
||||
|
||||
+ // Try to unblank decon0
|
||||
+ if(decon->id == 0)
|
||||
+ {
|
||||
+ decon_blank(FB_BLANK_UNBLANK, fbinfo);
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/video/fbdev/exynos/dpu20/decon_dsi.c b/drivers/video/fbdev/exynos/dpu20/decon_dsi.c
|
||||
index 0b0b0a96e1..1189735567 100644
|
||||
--- a/drivers/video/fbdev/exynos/dpu20/decon_dsi.c
|
||||
+++ b/drivers/video/fbdev/exynos/dpu20/decon_dsi.c
|
||||
@@ -322,6 +322,8 @@ static ssize_t decon_show_vsync(struct device *dev,
|
||||
}
|
||||
static DEVICE_ATTR(vsync, S_IRUGO, decon_show_vsync, NULL);
|
||||
|
||||
+int needs_pan = false;
|
||||
+
|
||||
static int decon_vsync_thread(void *data)
|
||||
{
|
||||
struct decon_device *decon = data;
|
||||
@@ -336,6 +338,19 @@ static int decon_vsync_thread(void *data)
|
||||
int ret = wait_event_interruptible(decon->vsync.wait,
|
||||
(timestamp != decon->vsync.timestamp) &&
|
||||
decon->vsync.active);
|
||||
+
|
||||
+ struct decon_mode_info psr;
|
||||
+ if (needs_pan) {
|
||||
+ // TODO: This is dirty hack.
|
||||
+ // Implement a better solution
|
||||
+ struct fb_info *fb_info = decon->win[decon->dt.dft_win]->fbinfo;
|
||||
+ struct fb_var_screeninfo *var = &fb_info->var;
|
||||
+ usleep_range(200000, 201000);
|
||||
+ decon_pan_display(var, fb_info);
|
||||
+ needs_pan = false;
|
||||
+ }
|
||||
+ decon_to_psr_info(decon, &psr);
|
||||
+ decon_reg_start(decon->id, &psr);
|
||||
#endif
|
||||
if (!ret)
|
||||
sysfs_notify(&decon->dev->kobj, NULL, "vsync");
|
||||
@@ -835,87 +850,61 @@ int decon_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||
struct v4l2_subdev *sd = NULL;
|
||||
struct decon_win_config config;
|
||||
int ret = 0;
|
||||
+ int shift = 0;
|
||||
struct decon_mode_info psr;
|
||||
- int dpp_id = DPU_DMA2CH(decon->dt.dft_idma);
|
||||
-
|
||||
- if (decon->dt.out_type != DECON_OUT_DSI) {
|
||||
- decon_warn("%s: decon%d unspported on out_type(%d)\n",
|
||||
- __func__, decon->id, decon->dt.out_type);
|
||||
- return 0;
|
||||
- }
|
||||
|
||||
- if ((!IS_DECON_HIBER_STATE(decon) && IS_DECON_OFF_STATE(decon)) ||
|
||||
- decon->state == DECON_STATE_INIT) {
|
||||
+ if ((decon->dt.out_type == DECON_OUT_DSI &&
|
||||
+ decon->state == DECON_STATE_INIT) ||
|
||||
+ decon->state == DECON_STATE_OFF) {
|
||||
decon_warn("%s: decon%d state(%d), UNBLANK missed\n",
|
||||
__func__, decon->id, decon->state);
|
||||
return 0;
|
||||
}
|
||||
|
||||
- decon_info("%s: [%d %d %d %d %d %d]\n", __func__,
|
||||
- var->xoffset, var->yoffset,
|
||||
- var->xres, var->yres,
|
||||
- var->xres_virtual, var->yres_virtual);
|
||||
+ decon_set_par(info);
|
||||
+
|
||||
+ decon_hiber_block_exit(decon);
|
||||
|
||||
+ set_bit(decon->dt.dft_idma, &decon->cur_using_dpp);
|
||||
+ set_bit(decon->dt.dft_idma, &decon->prev_used_dpp);
|
||||
memset(&config, 0, sizeof(struct decon_win_config));
|
||||
switch (var->bits_per_pixel) {
|
||||
case 16:
|
||||
config.format = DECON_PIXEL_FORMAT_RGB_565;
|
||||
+ shift = 2;
|
||||
break;
|
||||
case 24:
|
||||
case 32:
|
||||
- config.format = DECON_PIXEL_FORMAT_ABGR_8888; /* DECON_PIXEL_FORMAT_BGRA_8888; */
|
||||
+ config.format = DECON_PIXEL_FORMAT_ARGB_8888;
|
||||
+ shift = 4;
|
||||
break;
|
||||
default:
|
||||
- decon_err("%s: Not supported bpp %d\n", __func__,
|
||||
- var->bits_per_pixel);
|
||||
- return -EINVAL;
|
||||
+ decon_err("%s: bits_per_pixel %d\n", __func__, var->bits_per_pixel);
|
||||
}
|
||||
|
||||
config.dpp_parm.addr[0] = info->fix.smem_start;
|
||||
- config.src.x = var->xoffset;
|
||||
+ config.src.x = var->xoffset >> shift;
|
||||
config.src.y = var->yoffset;
|
||||
config.src.w = var->xres;
|
||||
config.src.h = var->yres;
|
||||
- config.src.f_w = var->xres_virtual;
|
||||
- config.src.f_h = var->yres_virtual;
|
||||
+ config.src.f_w = var->xres;
|
||||
+ config.src.f_h = var->yres;
|
||||
config.dst.w = config.src.w;
|
||||
config.dst.h = config.src.h;
|
||||
- config.dst.f_w = decon->lcd_info->xres;
|
||||
- config.dst.f_h = decon->lcd_info->yres;
|
||||
- if (decon_check_limitation(decon, decon->dt.dft_win, &config) < 0)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- decon_hiber_block_exit(decon);
|
||||
-
|
||||
- decon_to_psr_info(decon, &psr);
|
||||
-
|
||||
- /*
|
||||
- * info->var is old parameters and var is new requested parameters.
|
||||
- * var must be copied to info->var before decon_set_par function
|
||||
- * is called.
|
||||
- *
|
||||
- * If not, old parameters are set to window configuration
|
||||
- * and new parameters are set to DMA and DPP configuration.
|
||||
- */
|
||||
- memcpy(&info->var, var, sizeof(struct fb_var_screeninfo));
|
||||
+ config.dst.f_w = config.src.f_w;
|
||||
+ config.dst.f_h = config.src.f_h;
|
||||
+ sd = decon->dpp_sd[decon->dt.dft_idma];
|
||||
|
||||
- set_bit(dpp_id, &decon->cur_using_dpp);
|
||||
- set_bit(dpp_id, &decon->prev_used_dpp);
|
||||
- sd = decon->dpp_sd[dpp_id];
|
||||
if (v4l2_subdev_call(sd, core, ioctl, DPP_WIN_CONFIG, &config)) {
|
||||
decon_err("%s: Failed to config DPP-%d\n", __func__, win->dpp_id);
|
||||
- decon_reg_win_enable_and_update(decon->id, decon->dt.dft_win, false);
|
||||
- clear_bit(dpp_id, &decon->cur_using_dpp);
|
||||
- set_bit(dpp_id, &decon->dpp_err_stat);
|
||||
- goto err;
|
||||
+ clear_bit(win->dpp_id, &decon->cur_using_dpp);
|
||||
+ set_bit(win->dpp_id, &decon->dpp_err_stat);
|
||||
}
|
||||
|
||||
decon_reg_update_req_window(decon->id, win->idx);
|
||||
-#if 0
|
||||
- decon_set_par(info);
|
||||
-#endif
|
||||
+
|
||||
+ decon_to_psr_info(decon, &psr);
|
||||
decon_reg_start(decon->id, &psr);
|
||||
-err:
|
||||
decon_wait_for_vsync(decon, VSYNC_TIMEOUT_MSEC);
|
||||
|
||||
if (decon_reg_wait_update_done_and_mask(decon->id, &psr, SHADOW_UPDATE_TIMEOUT)
|
||||
@@ -923,6 +912,7 @@ err:
|
||||
decon_err("%s: wait_for_update_timeout\n", __func__);
|
||||
|
||||
decon_hiber_unblock(decon);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(decon_pan_display);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
From ddf630c03f250c23478afe638a62777a564f674c Mon Sep 17 00:00:00 2001
|
||||
From: John Vincent Corcega <kamusta@tenseventyseven.xyz>
|
||||
Date: Mon, 2 Dec 2024 17:46:42 +0000
|
||||
Subject: [PATCH] drivers: soc: cal-if: Prevent optimization of structs on
|
||||
fvmap_copy_from_sram
|
||||
|
||||
Newer versions of Clang tend to apply heavier optimizations than GCC, especially if -mcpu is set. Because we are applying optimizations to the LITTLE core (see b92e1e70898f515646142736df8d72c43e97e251) kernel panics during boot, citing inability to access memory regions on fvmap_init.
|
||||
|
||||
<6>[ 0.664609] [0: swapper/0: 1] fvmap_init:fvmap initialize 0000000000000000
|
||||
<0>[ 0.664625] [0: swapper/0: 1] Unable to handle kernel paging request at virtual address ffffff800b2f2402
|
||||
<2>[ 0.664640] [0: swapper/0: 1] sec_debug_set_extra_info_fault = KERN / 0xffffff800b2f2402
|
||||
<6>[ 0.664657] [0: swapper/0: 1] search_item_by_key: (FTYPE) extra_info is not ready
|
||||
<2>[ 0.664666] [0: swapper/0: 1] set_item_val: fail to find FTYPE
|
||||
<6>[ 0.664680] [0: swapper/0: 1] search_item_by_key: (FAULT) extra_info is not ready
|
||||
<2>[ 0.664688] [0: swapper/0: 1] set_item_val: fail to find FAULT
|
||||
<6>[ 0.664702] [0: swapper/0: 1] search_item_by_key: (PC) extra_info is not ready
|
||||
<2>[ 0.664710] [0: swapper/0: 1] set_item_val: fail to find PC
|
||||
<6>[ 0.664724] [0: swapper/0: 1] search_item_by_key: (LR) extra_info is not ready
|
||||
<2>[ 0.664732] [0: swapper/0: 1] set_item_val: fail to find LR
|
||||
<1>[ 0.664746] [0: swapper/0: 1] Mem abort info:
|
||||
<1>[ 0.664760] [0: swapper/0: 1] Exception class = DABT (current EL), IL = 32 bits
|
||||
<1>[ 0.664774] [0: swapper/0: 1] SET = 0, FnV = 0
|
||||
<1>[ 0.664787] [0: swapper/0: 1] EA = 0, S1PTW = 0
|
||||
<1>[ 0.664799] [0: swapper/0: 1] Data abort info:
|
||||
<1>[ 0.664814] [0: swapper/0: 1] ISV = 0, ISS = 0x00000021
|
||||
<1>[ 0.664828] [0: swapper/0: 1] CM = 0, WnR = 0
|
||||
<1>[ 0.664842] [0: swapper/0: 1] swapper pgtable: 4k pages, 39-bit VAs, pgd = ffffff800a739000
|
||||
<1>[ 0.664856] [0: swapper/0: 1] [ffffff800b2f2402] *pgd=000000097cdfe003, *pud=000000097cdfe003, *pmd=00000009742a9003, *pte=00e800000204b707
|
||||
<0>[ 0.664884] [0: swapper/0: 1] Internal error: Oops: 96000021 [#1] PREEMPT SMP
|
||||
<4>[ 0.664899] [0: swapper/0: 1] Modules linked in:
|
||||
<0>[ 0.664916] [0: swapper/0: 1] Process swapper/0 (pid: 1, stack limit = 0xffffff80081a8000)
|
||||
<0>[ 0.664936] [0: swapper/0: 1] debug-snapshot: core register saved(CPU:0)
|
||||
<0>[ 0.664950] [0: swapper/0: 1] L2ECTLR_EL1: 0000000000000007
|
||||
<0>[ 0.664959] [0: swapper/0: 1] L2ECTLR_EL1 valid_bit(30) is NOT set (0x0)
|
||||
<0>[ 0.664978] [0: swapper/0: 1] CPUMERRSR: 0000000008000001, L2MERRSR: 0000000010200c00
|
||||
<0>[ 0.664992] [0: swapper/0: 1] CPUMERRSR valid_bit(31) is NOT set (0x0)
|
||||
<0>[ 0.665006] [0: swapper/0: 1] L2MERRSR valid_bit(31) is NOT set (0x0)
|
||||
<0>[ 0.665020] [0: swapper/0: 1] debug-snapshot: context saved(CPU:0)
|
||||
<6>[ 0.665088] [0: swapper/0: 1] debug-snapshot: item - log_kevents is disabled
|
||||
<6>[ 0.665112] [0: swapper/0: 1] TIF_FOREIGN_FPSTATE: 0, FP/SIMD depth 0, cpu: 0
|
||||
<4>[ 0.665130] [0: swapper/0: 1] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.113 - Fresh Core-user #1
|
||||
<4>[ 0.665144] [0: swapper/0: 1] Hardware name: Samsung A50 LTN OPEN rev04 board based on Exynos9610 (DT)
|
||||
<4>[ 0.665160] [0: swapper/0: 1] task: ffffffc8f4ce8000 task.stack: ffffff80081a8000
|
||||
<4>[ 0.665180] [0: swapper/0: 1] PC is at fvmap_init+0xac/0x2c8
|
||||
<4>[ 0.665195] [0: swapper/0: 1] LR is at fvmap_init+0x70/0x2c8
|
||||
<4>[ 0.665211] [0: swapper/0: 1] pc : [<ffffff80085e12b8>] lr : [<ffffff80085e127c>] pstate: 20400145
|
||||
<4>[ 0.665225] [0: swapper/0: 1] sp : ffffff80081abb80
|
||||
<4>[ 0.665238] [0: swapper/0: 1] x29: ffffff80081abbb0 x28: 0000000000000000
|
||||
<4>[ 0.665256] [0: swapper/0: 1] x27: ffffff8009efc000 x26: 0000000000000000
|
||||
<4>[ 0.665273] [0: swapper/0: 1] x25: ffffff800b2e5970 x24: ffffff8008fa7222
|
||||
<4>[ 0.665291] [0: swapper/0: 1] x23: ffffff800b2e5a60 x22: ffffff8009efb000
|
||||
<4>[ 0.665307] [0: swapper/0: 1] x21: ffffffc8f3480000 x20: ffffff800b2e0000
|
||||
<4>[ 0.665324] [0: swapper/0: 1] x19: ffffff800b2f2400 x18: 0000000000000000
|
||||
<4>[ 0.665341] [0: swapper/0: 1] x17: ffffff8009bff23c x16: 0000000000000000
|
||||
<4>[ 0.665358] [0: swapper/0: 1] x15: 00000000000000c6 x14: 0000000000000054
|
||||
<4>[ 0.665375] [0: swapper/0: 1] x13: 000000000000d7b8 x12: 0000000000000000
|
||||
<4>[ 0.665392] [0: swapper/0: 1] x11: 0000000000000000 x10: ffffffc8f3480000
|
||||
<4>[ 0.665409] [0: swapper/0: 1] x9 : ffffff800b2f2400 x8 : 0000000000000000
|
||||
<4>[ 0.665426] [0: swapper/0: 1] x7 : 5b20205d39303634 x6 : ffffffc0117d09b7
|
||||
<4>[ 0.665443] [0: swapper/0: 1] x5 : 0000000000000001 x4 : 000000000000000c
|
||||
<4>[ 0.665459] [0: swapper/0: 1] x3 : 0000000000000a30 x2 : ffffffffffffffce
|
||||
<4>[ 0.665476] [0: swapper/0: 1] x1 : 000000000b040000 x0 : 000000000000000a
|
||||
|
||||
Since we need these optimizations for performance reasons, the only way to resolve this is to solve the issue. Samsung already did something similar to cal-if before.
|
||||
|
||||
We only needed to make fvmap_header/header volatile and has been tested to work.
|
||||
|
||||
Signed-off-by: John Vincent <git@tensevntysevn.cf>
|
||||
Change-Id: Ic419135d4a80cbe15f0fa71dc59cc6efa73d6141
|
||||
---
|
||||
drivers/soc/samsung/cal-if/fvmap.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/soc/samsung/cal-if/fvmap.c b/drivers/soc/samsung/cal-if/fvmap.c
|
||||
index a7bedd15eb..770d500e84 100644
|
||||
--- a/drivers/soc/samsung/cal-if/fvmap.c
|
||||
+++ b/drivers/soc/samsung/cal-if/fvmap.c
|
||||
@@ -268,7 +268,7 @@ static void check_percent_margin(struct rate_volt_header *head, unsigned int num
|
||||
|
||||
static void fvmap_copy_from_sram(void __iomem *map_base, void __iomem *sram_base)
|
||||
{
|
||||
- struct fvmap_header *fvmap_header, *header;
|
||||
+ volatile struct fvmap_header *fvmap_header, *header;
|
||||
struct rate_volt_header *old, *new;
|
||||
struct clocks *clks;
|
||||
struct pll_header *plls;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 6aeec5b9d57036a00984e45daa89630628e7e3a3 Mon Sep 17 00:00:00 2001
|
||||
From: map220v <map220v300@gmail.com>
|
||||
Date: Sat, 16 Jan 2021 16:21:16 +0300
|
||||
Subject: [PATCH] fbdev: exynos: dpu20: Remove one of samsung debug log
|
||||
|
||||
This seems to fix, or at least reduce, random kernel panic.
|
||||
|
||||
[hm: Reword commit message]
|
||||
Signed-off-by: Hendra Manudinata <manoedinata@gmail.com>
|
||||
---
|
||||
drivers/video/fbdev/exynos/dpu20/dpp_drv.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/video/fbdev/exynos/dpu20/dpp_drv.c b/drivers/video/fbdev/exynos/dpu20/dpp_drv.c
|
||||
index 1ded5e85cb..40a1cf8464 100644
|
||||
--- a/drivers/video/fbdev/exynos/dpu20/dpp_drv.c
|
||||
+++ b/drivers/video/fbdev/exynos/dpu20/dpp_drv.c
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "dpp.h"
|
||||
#include "decon.h"
|
||||
|
||||
-int dpp_log_level = 6;
|
||||
+int dpp_log_level = 0;
|
||||
|
||||
struct dpp_device *dpp_drvdata[MAX_DPP_CNT];
|
||||
|
||||
@@ -40,10 +40,10 @@ void dpp_op_timer_handler(unsigned long arg)
|
||||
|
||||
dpp_dump(dpp);
|
||||
|
||||
- if (dpp->dpp_config->config.compression)
|
||||
- dpp_info("Compression Source is %s of DPP[%d]\n",
|
||||
- dpp->dpp_config->config.dpp_parm.comp_src == DPP_COMP_SRC_G2D ?
|
||||
- "G2D" : "GPU", dpp->id);
|
||||
+ //if (dpp->dpp_config->config.compression)
|
||||
+ // dpp_info("Compression Source is %s of DPP[%d]\n",
|
||||
+ // dpp->dpp_config->config.dpp_parm.comp_src == DPP_COMP_SRC_G2D ?
|
||||
+ // "G2D" : "GPU", dpp->id);
|
||||
|
||||
dpp_info("DPP[%d] irq hasn't been occured", dpp->id);
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
From 28dbfef394c8e4c0b14a1e208de3126aba6cd2ab Mon Sep 17 00:00:00 2001
|
||||
From: Hendra Manudinata <manoedinata@gmail.com>
|
||||
Date: Sat, 7 Dec 2024 09:26:26 +0700
|
||||
Subject: [PATCH] usb: u_ether: Force setting random MAC address
|
||||
|
||||
Signed-off-by: Hendra Manudinata <manoedinata@gmail.com>
|
||||
---
|
||||
drivers/usb/gadget/function/u_ether.c | 13 ++++---------
|
||||
1 file changed, 4 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c
|
||||
index 6f71453bda..49942924e1 100644
|
||||
--- a/drivers/usb/gadget/function/u_ether.c
|
||||
+++ b/drivers/usb/gadget/function/u_ether.c
|
||||
@@ -1084,9 +1084,8 @@ static int eth_stop(struct net_device *net)
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
-#ifndef CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE
|
||||
static u8 host_ethaddr[ETH_ALEN];
|
||||
-#endif
|
||||
+
|
||||
static int get_ether_addr(const char *str, u8 *dev_addr)
|
||||
{
|
||||
if (str) {
|
||||
@@ -1116,7 +1115,7 @@ static int get_ether_addr_str(u8 dev_addr[ETH_ALEN], char *str, int len)
|
||||
snprintf(str, len, "%pM", dev_addr);
|
||||
return 18;
|
||||
}
|
||||
-#ifndef CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE
|
||||
+
|
||||
static int get_host_ether_addr(u8 *str, u8 *dev_addr)
|
||||
{
|
||||
memcpy(dev_addr, str, ETH_ALEN);
|
||||
@@ -1127,7 +1126,6 @@ static int get_host_ether_addr(u8 *str, u8 *dev_addr)
|
||||
memcpy(str, dev_addr, ETH_ALEN);
|
||||
return 1;
|
||||
}
|
||||
-#endif
|
||||
|
||||
static const struct net_device_ops eth_netdev_ops = {
|
||||
.ndo_open = eth_open,
|
||||
@@ -1186,10 +1184,7 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g,
|
||||
if (get_ether_addr(dev_addr, net->dev_addr))
|
||||
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");
|
||||
-#else
|
||||
+
|
||||
if (get_host_ether_addr(host_ethaddr, dev->host_mac))
|
||||
dev_warn(&g->dev, "using random %s ethernet address\n", "host");
|
||||
else
|
||||
@@ -1197,7 +1192,7 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g,
|
||||
|
||||
if (ethaddr)
|
||||
memcpy(ethaddr, dev->host_mac, ETH_ALEN);
|
||||
-#endif
|
||||
+
|
||||
net->netdev_ops = ð_netdev_ops;
|
||||
|
||||
net->ethtool_ops = &ops;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
107
device/testing/linux-samsung-a51/APKBUILD
Normal file
107
device/testing/linux-samsung-a51/APKBUILD
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# Maintainer: Hendra Manudinata <hendra@manoedinata.com>
|
||||
# Reference: <https://postmarketos.org/vendorkernel>
|
||||
# Kernel config based on: arch/arm64/configs/exynos9610-a51xx_defconfig
|
||||
|
||||
pkgname=linux-samsung-a51
|
||||
pkgver=4.14.113
|
||||
pkgrel=0
|
||||
pkgdesc="Samsung Galaxy A51 kernel fork"
|
||||
arch="aarch64"
|
||||
_carch="arm64"
|
||||
_flavor="samsung-a51"
|
||||
url="https://kernel.org"
|
||||
license="GPL-2.0-only"
|
||||
options="!strip !check !tracedeps pmb:cross-native"
|
||||
makedepends="
|
||||
android-tools
|
||||
bash
|
||||
bc
|
||||
bison
|
||||
clang
|
||||
devicepkg-dev
|
||||
findutils
|
||||
flex
|
||||
linux-headers
|
||||
openssl-dev
|
||||
perl
|
||||
"
|
||||
|
||||
# Compiler: clang
|
||||
export CC="clang"
|
||||
export HOSTCC="clang"
|
||||
|
||||
# Source
|
||||
_repository="android_kernel_samsung_a51"
|
||||
_commit="c8dd4c096e0ba7b7cbdb6eb2ea6c7affd006198b"
|
||||
_config="config-$_flavor.$arch"
|
||||
source="
|
||||
$pkgname-$_commit.tar.gz::https://github.com/manoedinata/$_repository/archive/$_commit.tar.gz
|
||||
$_config
|
||||
0001-SQUASH-HACK-DECON-framebuffer-fixes-for-Linux.patch
|
||||
0001-fbdev-exynos-dpu20-Remove-one-of-samsung-debug-log.patch
|
||||
0001-drivers-soc-cal-if-Prevent-optimization-of-structs-o.patch
|
||||
0001-usb-u_ether-Force-setting-random-MAC-address.patch
|
||||
exynos9611.cfg
|
||||
a51.cfg
|
||||
"
|
||||
builddir="$srcdir/$_repository-$_commit"
|
||||
_outdir="out"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
REPLACE_GCCH=0 . downstreamkernel_prepare
|
||||
|
||||
# Remove -Werror from all makefiles
|
||||
local i
|
||||
local makefiles="$(find . -type f -name Makefile)
|
||||
$(find . -type f -name Kbuild)"
|
||||
for i in $makefiles; do
|
||||
sed -i 's/-Werror-/-W/g' "$i"
|
||||
sed -i 's/-Werror//g' "$i"
|
||||
done
|
||||
}
|
||||
|
||||
build() {
|
||||
unset LDFLAGS
|
||||
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \
|
||||
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
|
||||
}
|
||||
|
||||
package() {
|
||||
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" \
|
||||
"$_flavor" "$_outdir"
|
||||
|
||||
make dtbs_install O="$_outdir" ARCH="$_carch" \
|
||||
INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs
|
||||
|
||||
# Generate DTB & DTBO
|
||||
## DTB (apply configuration)
|
||||
dtbdir="$_outdir"/arch/$_carch/boot/dts/exynos
|
||||
mkdtboimg cfg_create \
|
||||
"$pkgdir"/boot/dtbs/exynos9610.dtb \
|
||||
"$srcdir"/exynos9611.cfg \
|
||||
-d "$dtbdir"
|
||||
|
||||
## DTBO (create an image and apply configuration)
|
||||
dtbodir="$_outdir"/arch/$_carch/boot/dts/samsung
|
||||
mkdtboimg create "$pkgdir"/boot/dtbo.img --page_size=4096 \
|
||||
"$dtbodir"/exynos9611-a51_eur_open_00.dtbo \
|
||||
"$dtbodir"/exynos9611-a51_eur_open_01.dtbo \
|
||||
"$dtbodir"/exynos9611-a51_eur_open_03.dtbo \
|
||||
"$dtbodir"/exynos9611-a51_eur_open_07.dtbo
|
||||
mkdtboimg cfg_create \
|
||||
"$pkgdir"/boot/dtbo.img \
|
||||
"$srcdir"/a51.cfg \
|
||||
-d "$dtbodir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
0a3d794884411d0aca00672c6e7f8c1ba6e028d4e49cfea80cff552679651c5e3bf7e667f59c572fa406e6c704ad683762a7f656366084b0ea7cbc92cc422cdc linux-samsung-a51-c8dd4c096e0ba7b7cbdb6eb2ea6c7affd006198b.tar.gz
|
||||
47d5e65a9a79f4b3d74975a42f1191247914c2aa8876e30fbc3725cd40a58c09fa2466eb2ba0fd3896c42032e090d952a6b7bdeb63d8e9cd57170182a5e40e55 config-samsung-a51.aarch64
|
||||
ba1bf397e6ae63ff53aad715940d664fcbd0273ddbd9554c01171133f07627eadab2f174c408ebe4f25b92fcf66f1a3292b9928643e8599e7b1c28decbbed323 0001-SQUASH-HACK-DECON-framebuffer-fixes-for-Linux.patch
|
||||
93d43ca0d218729e60bd3256585a13ed6057881654147c2b84cab0423a5f8969c9566367b89226ddd153e7efa8f29878d0b7fc7c438ff02893bac15de1d41418 0001-fbdev-exynos-dpu20-Remove-one-of-samsung-debug-log.patch
|
||||
95b1d4d44eac376df3bc4bdb324035dae0c982c5938caaa4c3915aa78429898efd2b53b3e781cccb37b47dd2240bd0ce0b4ccf3c81a92e7c684790c68336d3a2 0001-drivers-soc-cal-if-Prevent-optimization-of-structs-o.patch
|
||||
8bb1aeeb094e6d0c7d1393ebf95f0f88642a164cb37fa75bc8098133000f5cd978844c28f5ba519ae31dcb89680426d18938e12e3f2137f5d55a9c6428f2ddba 0001-usb-u_ether-Force-setting-random-MAC-address.patch
|
||||
b9919a1010caf6cce9dbee0d3afa8e0b3c0794299d29d778d1ed822b6719a11c2b3ed08808ec5a641fe4a44a635370c0d85451fafdc62396a562fcaf02e5a9b6 exynos9611.cfg
|
||||
d1894ffd3c53d0e84678c4d566a833360525d916241cb69f35f9e8e195c0ff163ad2441562f092088726209e1533cb19f23e642e64fd89f31372a742c7d7d5b3 a51.cfg
|
||||
"
|
||||
15
device/testing/linux-samsung-a51/a51.cfg
Normal file
15
device/testing/linux-samsung-a51/a51.cfg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
exynos9611-a51_eur_open_00.dtbo
|
||||
custom0=0x00000000
|
||||
custom1=0x00000000
|
||||
|
||||
exynos9611-a51_eur_open_01.dtbo
|
||||
custom0=0x00000001
|
||||
custom1=0x00000002
|
||||
|
||||
exynos9611-a51_eur_open_03.dtbo
|
||||
custom0=0x00000003
|
||||
custom1=0x00000006
|
||||
|
||||
exynos9611-a51_eur_open_07.dtbo
|
||||
custom0=0x00000007
|
||||
custom1=0x000000ff
|
||||
5975
device/testing/linux-samsung-a51/config-samsung-a51.aarch64
Normal file
5975
device/testing/linux-samsung-a51/config-samsung-a51.aarch64
Normal file
File diff suppressed because it is too large
Load diff
3
device/testing/linux-samsung-a51/exynos9611.cfg
Normal file
3
device/testing/linux-samsung-a51/exynos9611.cfg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
exynos9610.dtb
|
||||
custom0=0x00000000
|
||||
custom1=0x000000ff
|
||||
Loading…
Add table
Add a link
Reference in a new issue