pmaports/device/unmaintained/linux-kobo-clara-downstream/fbdev-mxc-epdc-replace-blob-by-source-functions.patch
Andreas Kemnade 3531702772
device-kobo-clara: split out downstream build as unmaintained (MR 4550)
Near-mainline kernel is feature-complete since quite some time, so lets
use that as a default also to simplify boot process, since downstream kernel
depends on various blobs loaded into memory by the bootloader.
Get rid of quirks required in boot process for mainline kernels
also by using a near-mainline u-boot.
Prepare for handling rev b devices.
Keep Downstream kernel to be able to optimize/compare EPD operation
2024-04-18 14:23:32 +02:00

82 lines
2.6 KiB
Diff

From 092b5938363b42831aab1ebd8c2811ff9429d393 Mon Sep 17 00:00:00 2001
From: Andreas Kemnade <andreas@kemnade.info>
Date: Sun, 8 Dec 2019 23:34:36 +0100
Subject: [PATCH] fbdev: mxc: epdc: replace blob by source functions
Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
drivers/video/fbdev/mxc/Makefile | 4 +--
drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c | 35 +++++++++++++++++++++++-
2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/mxc/Makefile b/drivers/video/fbdev/mxc/Makefile
index cb81820c..c4c7fd3a 100644
--- a/drivers/video/fbdev/mxc/Makefile
+++ b/drivers/video/fbdev/mxc/Makefile
@@ -8,8 +8,8 @@ obj-$(CONFIG_FB_MXC_HDMI) += mxc_hdmi.o
obj-$(CONFIG_FB_MXC_EDID) += mxc_edid.o
obj-$(CONFIG_FB_MXC_SYNC_PANEL) += mxc_dispdrv.o mxc_lcdif.o mxc_ipuv3_fb.o
obj-$(CONFIG_FB_MXC_EINK_PANEL) += mxc_epdc_fb.o
-obj-$(CONFIG_FB_MXC_EINK_V2_PANEL) += mxc_epdc_v2_fb.o mxc_epdc_eink.o fake_s1d13522.o epdfb_dc.o
-mxc_epdc_eink-objs := mxc_epdc_eink_module.o lib.a_shipped-imx6sl-noaa
+obj-$(CONFIG_FB_MXC_EINK_V2_PANEL) += mxc_epdc_v2_fb.o fake_s1d13522.o epdfb_dc.o
+#mxc_epdc_eink-objs := mxc_epdc_eink_module.o lib.a_shipped-imx6sl-noaa
obj-$(CONFIG_FB_MXS_SII902X) += mxsfb_sii902x.o
obj-$(CONFIG_FB_MXC_DCIC) += mxc_dcic.o
obj-$(CONFIG_HANNSTAR_CABC) += hannstar_cabc.o
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
index 8f9aca48..d8a5ec03 100644
--- a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
+++ b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
@@ -64,7 +64,6 @@
#include "../../../../arch/arm/mach-imx/hardware.h"
#include "epdc_v2_regs.h"
-#include "eink_processing2.h"
#include "../../../../kernel/ntx/ntx_timestamp.h"
@@ -1139,6 +1138,40 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw,void *context);
// FW_IN_RAM //]
#include "mxc_epdc_fake_s1d13522.c"
+static unsigned mxc_epdc_fb_fetch_wxi_data(uint8_t *xwi_buffer, char *outbuf)
+{
+ unsigned l = xwi_buffer[0];
+ if (outbuf) {
+ u8 chk = 0;
+ unsigned i;
+
+ for (i = 0; i <= l; i++)
+ chk += xwi_buffer[i];
+
+ if (chk != xwi_buffer[i])
+ return 0;
+
+ memcpy(outbuf, xwi_buffer + 1, l);
+ }
+
+ return l;
+}
+
+static int mxc_epdc_fb_fetch_vc_data(u8 *vcd_buffer, u32 waveform_mode, u32 waveform_tempRange, u32 mc, u32 trc, u8 *vcd)
+{
+ u8 *vcd_src = vcd_buffer + 16 * (waveform_mode * trc + waveform_tempRange);
+ int i;
+ u8 chk = 0;
+ for(i = 0 ; i < 15; i++)
+ chk += vcd_src[i];
+
+ if (chk != vcd_src[i])
+ return -EINVAL;
+
+ memcpy(vcd, vcd_src, 16);
+ return 0;
+}
+
#ifdef DEBUG
static void dump_pxp_config(struct mxc_epdc_fb_data *fb_data,
--
2.30.2