summaryrefslogtreecommitdiff
path: root/utils/hwstub/tools/lua/zenmozaic.lua
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hwstub/tools/lua/zenmozaic.lua')
-rw-r--r--utils/hwstub/tools/lua/zenmozaic.lua98
1 files changed, 98 insertions, 0 deletions
diff --git a/utils/hwstub/tools/lua/zenmozaic.lua b/utils/hwstub/tools/lua/zenmozaic.lua
new file mode 100644
index 0000000000..a4135c25c5
--- /dev/null
+++ b/utils/hwstub/tools/lua/zenmozaic.lua
@@ -0,0 +1,98 @@
1--
2-- ZEN MOZAIC
3--
4ZENMOZAIC = {}
5
6function ZENMOZAIC.lcd_send(cmd, data)
7 STMP.lcdif.set_data_swizzle(3)
8 STMP.lcdif.send_pio(false, {bit32.band(cmd, 0xff), bit32.rshift(cmd, 8)})
9 if cmd ~= 0x22 then
10 STMP.lcdif.send_pio(true, {bit32.band(data, 0xff), bit32.rshift(data, 8)})
11 end
12end
13
14function ZENMOZAIC.lcd_init()
15 STMP.pinctrl.lcdif.setup_system(8, false)
16 STMP.lcdif.init()
17 STMP.lcdif.set_word_length(8)
18 STMP.lcdif.set_system_timing(2, 2, 2, 2)
19 STMP.lcdif.set_reset(1)
20 STMP.lcdif.set_reset(0)
21 STMP.lcdif.set_reset(1)
22 STMP.lcdif.set_byte_packing_format(0xf)
23
24 ZENMOZAIC.lcd_send(0, 1)
25 ZENMOZAIC.lcd_send(3, 0)
26
27 ZENMOZAIC.lcd_send(3, 0x510)
28 ZENMOZAIC.lcd_send(9, 8)
29 ZENMOZAIC.lcd_send(0xc, 0)
30 ZENMOZAIC.lcd_send(0xd, 0)
31 ZENMOZAIC.lcd_send(0xe, 0)
32 ZENMOZAIC.lcd_send(0x5b, 4)
33 ZENMOZAIC.lcd_send(0xd, 0x10)
34 ZENMOZAIC.lcd_send(9, 0)
35 ZENMOZAIC.lcd_send(3, 0x10)
36 ZENMOZAIC.lcd_send(0xd, 0x14)
37 ZENMOZAIC.lcd_send(0xe, 0x2b12)
38 ZENMOZAIC.lcd_send(1, 0x21f)
39 ZENMOZAIC.lcd_send(2, 0x700)
40 ZENMOZAIC.lcd_send(5, 0x30)
41 ZENMOZAIC.lcd_send(6, 0)
42 ZENMOZAIC.lcd_send(8, 0x202)
43 ZENMOZAIC.lcd_send(0xa, 0xc003)
44 ZENMOZAIC.lcd_send(0xb, 0)
45 ZENMOZAIC.lcd_send(0xf, 0)
46 ZENMOZAIC.lcd_send(0x10, 0)
47 ZENMOZAIC.lcd_send(0x11, 0)
48 ZENMOZAIC.lcd_send(0x14, 0x9f00)
49 ZENMOZAIC.lcd_send(0x15, 0x9f00)
50 ZENMOZAIC.lcd_send(0x16, 0x7f00)
51 ZENMOZAIC.lcd_send(0x17, 0x9f00)
52 ZENMOZAIC.lcd_send(0x20, 0)
53 ZENMOZAIC.lcd_send(0x21, 0)
54 ZENMOZAIC.lcd_send(0x23, 0)
55 ZENMOZAIC.lcd_send(0x24, 0)
56 ZENMOZAIC.lcd_send(0x25, 0)
57 ZENMOZAIC.lcd_send(0x26, 0)
58 ZENMOZAIC.lcd_send(0x30, 0x707)
59 ZENMOZAIC.lcd_send(0x31, 0x504)
60 ZENMOZAIC.lcd_send(0x32, 7)
61 ZENMOZAIC.lcd_send(0x33, 0x307)
62 ZENMOZAIC.lcd_send(0x34, 7)
63 ZENMOZAIC.lcd_send(0x35, 0x400)
64 ZENMOZAIC.lcd_send(0x36, 0x607)
65 ZENMOZAIC.lcd_send(0x37, 0x703)
66 ZENMOZAIC.lcd_send(0x3a, 0x1a0d)
67 ZENMOZAIC.lcd_send(0x3b, 0x1309)
68
69 ZENMOZAIC.lcd_send(9, 4)
70 ZENMOZAIC.lcd_send(7, 5)
71 ZENMOZAIC.lcd_send(7, 0x25)
72 ZENMOZAIC.lcd_send(7, 0x27)
73 ZENMOZAIC.lcd_send(0x5b, 0)
74 ZENMOZAIC.lcd_send(7, 0x37)
75
76 ZENMOZAIC.lcd_send(0x22, 0)
77 for i=0,128 do
78 STMP.lcdif.send_pio(true, {0xff, 0})
79 end
80end
81
82function ZENMOZAIC.set_backlight(val)
83 local v = math.floor((val + 200) * val / 1000)
84 for i=4,0,-1 do
85 if bit32.btest(v,bit32.lshift(1,i)) then
86 HW.UARTDBG.DR.write(0xff)
87 else
88 HW.UARTDBG.DR.write(0xf8)
89 end
90 while HW.UARTDBG.FR.TXFF.read() == 1 do end
91 end
92 HW.UARTDBG.DR.write(0)
93end
94
95function ZENMOZAIC.init()
96 ZENMOZAIC.lcd_init()
97end
98