Skip to content

Commit 6c02e00

Browse files
committed
drivers/sf32lb52: Use lookup tables for 222<->332 byte conversion
Signed-off-by: Joshua Jun <joshuajun@proton.me>
1 parent 87aac08 commit 6c02e00

1 file changed

Lines changed: 41 additions & 2 deletions

File tree

src/fw/drivers/sf32lb52/display_jdi.c

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,47 @@
2323
#include "bf0_hal_lptim.h"
2424
#include "bf0_hal_rtc.h"
2525

26-
#define BYTE_222_TO_332(data) ((((data) & 0x30) << 2) | (((data) & 0x0c) << 1) | ((data) & 0x03))
27-
#define BYTE_332_TO_222(data) ((((data) & 0xC0) >> 2) | (((data) & 0x18) >> 1) | ((data) & 0x03))
26+
const uint8_t s_222_to_332_lut[256] = {
27+
0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1a, 0x1b,
28+
0x40, 0x41, 0x42, 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5a, 0x5b,
29+
0x80, 0x81, 0x82, 0x83, 0x88, 0x89, 0x8a, 0x8b, 0x90, 0x91, 0x92, 0x93, 0x98, 0x99, 0x9a, 0x9b,
30+
0xc0, 0xc1, 0xc2, 0xc3, 0xc8, 0xc9, 0xca, 0xcb, 0xd0, 0xd1, 0xd2, 0xd3, 0xd8, 0xd9, 0xda, 0xdb,
31+
0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1a, 0x1b,
32+
0x40, 0x41, 0x42, 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5a, 0x5b,
33+
0x80, 0x81, 0x82, 0x83, 0x88, 0x89, 0x8a, 0x8b, 0x90, 0x91, 0x92, 0x93, 0x98, 0x99, 0x9a, 0x9b,
34+
0xc0, 0xc1, 0xc2, 0xc3, 0xc8, 0xc9, 0xca, 0xcb, 0xd0, 0xd1, 0xd2, 0xd3, 0xd8, 0xd9, 0xda, 0xdb,
35+
0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1a, 0x1b,
36+
0x40, 0x41, 0x42, 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5a, 0x5b,
37+
0x80, 0x81, 0x82, 0x83, 0x88, 0x89, 0x8a, 0x8b, 0x90, 0x91, 0x92, 0x93, 0x98, 0x99, 0x9a, 0x9b,
38+
0xc0, 0xc1, 0xc2, 0xc3, 0xc8, 0xc9, 0xca, 0xcb, 0xd0, 0xd1, 0xd2, 0xd3, 0xd8, 0xd9, 0xda, 0xdb,
39+
0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1a, 0x1b,
40+
0x40, 0x41, 0x42, 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5a, 0x5b,
41+
0x80, 0x81, 0x82, 0x83, 0x88, 0x89, 0x8a, 0x8b, 0x90, 0x91, 0x92, 0x93, 0x98, 0x99, 0x9a, 0x9b,
42+
0xc0, 0xc1, 0xc2, 0xc3, 0xc8, 0xc9, 0xca, 0xcb, 0xd0, 0xd1, 0xd2, 0xd3, 0xd8, 0xd9, 0xda, 0xdb
43+
};
44+
45+
const uint8_t s_332_to_222_lut[256] = {
46+
0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03,
47+
0x08, 0x09, 0x0a, 0x0b, 0x08, 0x09, 0x0a, 0x0b, 0x08, 0x09, 0x0a, 0x0b, 0x08, 0x09, 0x0a, 0x0b,
48+
0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13,
49+
0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b,
50+
0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13,
51+
0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b,
52+
0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13, 0x10, 0x11, 0x12, 0x13,
53+
0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b, 0x18, 0x19, 0x1a, 0x1b,
54+
0x20, 0x21, 0x22, 0x23, 0x20, 0x21, 0x22, 0x23, 0x20, 0x21, 0x22, 0x23, 0x20, 0x21, 0x22, 0x23,
55+
0x28, 0x29, 0x2a, 0x2b, 0x28, 0x29, 0x2a, 0x2b, 0x28, 0x29, 0x2a, 0x2b, 0x28, 0x29, 0x2a, 0x2b,
56+
0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33,
57+
0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b,
58+
0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33,
59+
0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b,
60+
0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33, 0x30, 0x31, 0x32, 0x33,
61+
0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b, 0x38, 0x39, 0x3a, 0x3b
62+
};
63+
64+
#define BYTE_222_TO_332(data) (s_222_to_332_lut[(data)])
65+
#define BYTE_332_TO_222(data) (s_332_to_222_lut[(data)])
66+
2867
#define POWER_SEQ_DELAY_TIME (11)
2968
#define POWER_RESET_CYCLE_DELAY_TIME (500)
3069

0 commit comments

Comments
 (0)