1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Profpatsch <mail@profpatsch.de>
Subject: [PATCH 18/21] disp: no JD9930 fallback
disp falls back to a second e-ink PMIC, the JD9930, wherever the
SY7636 (or TPS65185) driver has not registered or answers with an
error: power operations, VCOM get/set, temperature. The tolino has an
SY7636 only, so those calls never ran. They are now behind DISP_JD9930,
which the Makefile leaves undefined; disp.ko no longer imports the four
jd9930_* functions.
The kernel keeps CONFIG_JD9930_VCOM: the stock disp.ko imports the
JD9930 driver, and the 4.9.56 kernel must still load that, which
kernel-check enforces.
---
drivers/video/fbdev/sunxi/disp2/disp/Makefile | 6 ++++++
.../fbdev/sunxi/disp2/disp/de/disp_eink_manager.c | 10 +++++-----
.../video/fbdev/sunxi/disp2/disp/lcd/default_eink.c | 4 ++--
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/drivers/video/fbdev/sunxi/disp2/disp/Makefile b/drivers/video/fbdev/sunxi/disp2/disp/Makefile
index 518539e1..5bfc98df 100755
--- a/drivers/video/fbdev/sunxi/disp2/disp/Makefile
+++ b/drivers/video/fbdev/sunxi/disp2/disp/Makefile
@@ -2,6 +2,12 @@ include $(obj)/de/Makefile
obj-$(CONFIG_DISP2_SUNXI) += disp.o
+# JD9930: a second e-ink PMIC disp falls back to when no SY7636 (or
+# TPS65185) driver registered. The tolino has an SY7636 only, so disp is
+# built without the fallback (-DDISP_JD9930 brings it back). The kernel
+# keeps the JD9930 driver: the stock disp.ko imports it, and the 4.9.56
+# kernel must still load that.
+
disp-objs := dev_disp.o dev_fb.o dev_disp_debugfs.o
disp-objs += disp_sys_intf.o
disp-$(CONFIG_DISP2_SUNXI_COMPOSER) += dev_composer.o
diff --git a/drivers/video/fbdev/sunxi/disp2/disp/de/disp_eink_manager.c b/drivers/video/fbdev/sunxi/disp2/disp/de/disp_eink_manager.c
index d4cb3b42..3c5e3478 100644
--- a/drivers/video/fbdev/sunxi/disp2/disp/de/disp_eink_manager.c
+++ b/drivers/video/fbdev/sunxi/disp2/disp/de/disp_eink_manager.c
@@ -30,7 +30,7 @@ extern int tps65185_vcom_set(int vcom_mv);
extern int tps65185_vcom_get(int *vcom);
//extern int sy7636_power_on(void);
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
extern int jd9930_vcom_set(int vcom_mv);
extern int jd9930_vcom_get(int *vcom);
#endif
@@ -795,7 +795,7 @@ static int eink_set_vcom_voltage(int vcom)
defined(CONFIG_JD9930_VCOM)
ret = tps65185_vcom_set(vcom); //unit is mv
if (0 != ret) {
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
ret = jd9930_vcom_set(vcom);
if (0 != ret) {
__wrn("%s: set vcom fail, ret=%d\n", __func__, ret);
@@ -817,7 +817,7 @@ ssize_t get_waveform_vcom(struct device *dev, struct device_attribute *attr, cha
#if defined(CONFIG_TPS65185_VCOM) || defined(CONFIG_TPS65185_VCOM_MODULE) || defined(CONFIG_SY7636_VCOM) || \
defined(CONFIG_JD9930_VCOM)
ret = tps65185_vcom_get(&vcom);
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
if (0 != ret) {
ret = jd9930_vcom_get(&vcom);
if (0 != ret) {
@@ -2873,7 +2873,7 @@ static int eink_get_temperature_thread(void *parg)
tps65185_temperature_get(&temperature);
if(temperature == -1) {
//__debug("%s: get temperature=%d fail from tps65185\n", __func__, temperature);
- #if defined(CONFIG_JD9930_VCOM)
+ #if defined(DISP_JD9930)
jd9930_temperature_get(&temperature);
if (temperature == -1) {
//__debug("%s: get temperature=%d fail from tps65185\n", __func__, temperature);
@@ -3634,7 +3634,7 @@ unsigned int eink_get_temperature(struct disp_eink_manager *manager)
__debug("No need to get pmic temperture.\n");
} else {
ret = tps65185_temperature_get(&gTemperature);
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
if (ret == -1)
jd9930_temperature_get(&gTemperature);
#endif
diff --git a/drivers/video/fbdev/sunxi/disp2/disp/lcd/default_eink.c b/drivers/video/fbdev/sunxi/disp2/disp/lcd/default_eink.c
index 9781bec2..fdffcce4 100755
--- a/drivers/video/fbdev/sunxi/disp2/disp/lcd/default_eink.c
+++ b/drivers/video/fbdev/sunxi/disp2/disp/lcd/default_eink.c
@@ -18,7 +18,7 @@
struct ebc_pwr_ops g_tps65185_ops;
extern int register_ebc_pwr_ops(struct ebc_pwr_ops *ops);
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
extern int register_ebc_jd9930_pwr_ops(struct ebc_pwr_ops *ops);
#endif
@@ -370,7 +370,7 @@ static void Eink_int_panel(u32 sel)
if (!pmic_register_ops) {
ret = register_ebc_pwr_ops(&g_tps65185_ops);
-#if defined(CONFIG_JD9930_VCOM)
+#if defined(DISP_JD9930)
if (ret)
ret = register_ebc_jd9930_pwr_ops(&g_tps65185_ops);
#endif
|