summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/hwstub/tools/lua/zenxfistyle.lua187
1 files changed, 187 insertions, 0 deletions
diff --git a/utils/hwstub/tools/lua/zenxfistyle.lua b/utils/hwstub/tools/lua/zenxfistyle.lua
new file mode 100644
index 0000000000..d4f3ffe162
--- /dev/null
+++ b/utils/hwstub/tools/lua/zenxfistyle.lua
@@ -0,0 +1,187 @@
1--
2-- ZEN X-Fi Style
3--
4ZENXFISTYLE = {}
5
6function ZENXFISTYLE.lcd_encode(data)
7 return bit32.bor(
8 bit32.lshift(bit32.band(data, 0xff00), 2),
9 bit32.lshift(bit32.band(data, 0xff), 1))
10end
11
12function ZENXFISTYLE.lcd_write(reg, data)
13 STMP.lcdif.send_pio(false, {ZENXFISTYLE.lcd_encode(reg)})
14 if reg ~= 0x22 then
15 STMP.lcdif.send_pio(true, {ZENXFISTYLE.lcd_encode(data)})
16 end
17end
18
19function ZENXFISTYLE.lcd_init()
20 STMP.lcdif.setup_clock()
21 STMP.pinctrl.lcdif.setup_system(18, false)
22 STMP.lcdif.init()
23 STMP.lcdif.set_word_length(18)
24 STMP.lcdif.set_databus_width(18)
25 STMP.lcdif.set_system_timing(2, 2, 3, 3)
26 STMP.lcdif.set_reset(1)
27 STMP.lcdif.set_reset(0)
28 STMP.lcdif.set_reset(1)
29 STMP.lcdif.set_byte_packing_format(0xf)
30
31 STMP.pinctrl.pin(2, 8).muxsel('GPIO')
32 STMP.pinctrl.pin(2, 8).disable()
33 ZENXFISTYLE.lcd_model = STMP.pinctrl.pin(2, 8).read()
34 print(string.format("LCD model: %d", ZENXFISTYLE.lcd_model))
35
36 if ZENXFISTYLE.lcd_model == 0 then
37 ZENXFISTYLE.lcd_write(0xe3, 0x3008)
38 ZENXFISTYLE.lcd_write(0xe7, 0x12)
39 ZENXFISTYLE.lcd_write(0xef, 0x1231)
40 ZENXFISTYLE.lcd_write(0x01, 0x100)
41 ZENXFISTYLE.lcd_write(0x02, 0x700)
42 ZENXFISTYLE.lcd_write(0x03, 0x1028)
43 ZENXFISTYLE.lcd_write(0x04, 0)
44 ZENXFISTYLE.lcd_write(0x08, 0x207)
45 ZENXFISTYLE.lcd_write(0x09, 0)
46 ZENXFISTYLE.lcd_write(0x0a, 0)
47 ZENXFISTYLE.lcd_write(0x0c, 0)
48 ZENXFISTYLE.lcd_write(0x0d, 0)
49 ZENXFISTYLE.lcd_write(0x0f, 0)
50 ZENXFISTYLE.lcd_write(0x10, 0)
51 ZENXFISTYLE.lcd_write(0x11, 7)
52 ZENXFISTYLE.lcd_write(0x12, 0)
53 ZENXFISTYLE.lcd_write(0x13, 0)
54 -- mdelay(200)
55 ZENXFISTYLE.lcd_write(0x10, 0x1490)
56 ZENXFISTYLE.lcd_write(0x11, 0x227)
57 -- mdelay(50)
58 ZENXFISTYLE.lcd_write(0x12, 0x9c)
59 -- mdelay(50)
60 ZENXFISTYLE.lcd_write(0x13, 0xc00)
61 ZENXFISTYLE.lcd_write(0x29, 5)
62 ZENXFISTYLE.lcd_write(0x2b, 0xc)
63 ZENXFISTYLE.lcd_write(0x20, 0xef)
64 ZENXFISTYLE.lcd_write(0x21, 0)
65 ZENXFISTYLE.lcd_write(0x30, 6)
66 ZENXFISTYLE.lcd_write(0x31, 0x703)
67 ZENXFISTYLE.lcd_write(0x32, 0x206)
68 ZENXFISTYLE.lcd_write(0x35, 4)
69 ZENXFISTYLE.lcd_write(0x36, 0x1a05)
70 ZENXFISTYLE.lcd_write(0x37, 0x600)
71 ZENXFISTYLE.lcd_write(0x38, 0x307)
72 ZENXFISTYLE.lcd_write(0x39, 0x707)
73 ZENXFISTYLE.lcd_write(0x3c, 0x400)
74 ZENXFISTYLE.lcd_write(0x3d, 0x50f)
75 ZENXFISTYLE.lcd_write(0x50, 0)
76 ZENXFISTYLE.lcd_write(0x51, 0xef)
77 ZENXFISTYLE.lcd_write(0x52, 0)
78 ZENXFISTYLE.lcd_write(0x53, 0x13f)
79 ZENXFISTYLE.lcd_write(0x60, 0xa700)
80 ZENXFISTYLE.lcd_write(0x61, 1)
81 ZENXFISTYLE.lcd_write(0x6a, 0)
82 ZENXFISTYLE.lcd_write(0x80, 0)
83 ZENXFISTYLE.lcd_write(0x81, 0)
84 ZENXFISTYLE.lcd_write(0x82, 0)
85 ZENXFISTYLE.lcd_write(0x83, 0)
86 ZENXFISTYLE.lcd_write(0x84, 0)
87 ZENXFISTYLE.lcd_write(0x85, 0)
88 ZENXFISTYLE.lcd_write(0x90, 0x10)
89 ZENXFISTYLE.lcd_write(0x92, 0x600)
90 ZENXFISTYLE.lcd_write(0x07, 0x133)
91 ZENXFISTYLE.lcd_write(0x22, 0)
92 else
93 ZENXFISTYLE.lcd_write(0x01, 0x100)
94 ZENXFISTYLE.lcd_write(0x02, 0x700)
95 ZENXFISTYLE.lcd_write(0x03, 0x1028)
96 ZENXFISTYLE.lcd_write(0x04, 0)
97 ZENXFISTYLE.lcd_write(0x08, 0x207)
98 ZENXFISTYLE.lcd_write(0x09, 0)
99 ZENXFISTYLE.lcd_write(0x0a, 0)
100 ZENXFISTYLE.lcd_write(0x0c, 0)
101 ZENXFISTYLE.lcd_write(0x0d, 0)
102 ZENXFISTYLE.lcd_write(0x0f, 0)
103 ZENXFISTYLE.lcd_write(0x10, 0)
104 ZENXFISTYLE.lcd_write(0x11, 7)
105 ZENXFISTYLE.lcd_write(0x12, 0)
106 ZENXFISTYLE.lcd_write(0x13, 0)
107 -- mdelay(200)
108 ZENXFISTYLE.lcd_write(0x10, 0x1290)
109 ZENXFISTYLE.lcd_write(0x11, 0x227)
110 -- mdelay(50)
111 ZENXFISTYLE.lcd_write(0x12, 0x9c)
112 -- mdelay(50)
113 ZENXFISTYLE.lcd_write(0x13, 0x1f00)
114 ZENXFISTYLE.lcd_write(0x29, 0x30)
115 ZENXFISTYLE.lcd_write(0x2b, 0xd)
116 ZENXFISTYLE.lcd_write(0x20, 0xef)
117 ZENXFISTYLE.lcd_write(0x21, 0)
118 ZENXFISTYLE.lcd_write(0x30, 0x404)
119 ZENXFISTYLE.lcd_write(0x31, 0x404)
120 ZENXFISTYLE.lcd_write(0x32, 0x404)
121 ZENXFISTYLE.lcd_write(0x37, 0x303)
122 ZENXFISTYLE.lcd_write(0x38, 0x303)
123 ZENXFISTYLE.lcd_write(0x39, 0x303)
124 ZENXFISTYLE.lcd_write(0x35, 0x103)
125 ZENXFISTYLE.lcd_write(0x3c, 0x301)
126 ZENXFISTYLE.lcd_write(0x36, 0x1e00)
127 ZENXFISTYLE.lcd_write(0x3d, 0xf)
128 ZENXFISTYLE.lcd_write(0x50, 0)
129 ZENXFISTYLE.lcd_write(0x51, 0xef)
130 ZENXFISTYLE.lcd_write(0x52, 0)
131 ZENXFISTYLE.lcd_write(0x53, 0x13f)
132 ZENXFISTYLE.lcd_write(0x60, 0xa700)
133 ZENXFISTYLE.lcd_write(0x61, 0)
134 ZENXFISTYLE.lcd_write(0x6a, 0)
135 ZENXFISTYLE.lcd_write(0x80, 0)
136 ZENXFISTYLE.lcd_write(0x81, 0)
137 ZENXFISTYLE.lcd_write(0x82, 0)
138 ZENXFISTYLE.lcd_write(0x83, 0)
139 ZENXFISTYLE.lcd_write(0x84, 0)
140 ZENXFISTYLE.lcd_write(0x85, 0)
141 ZENXFISTYLE.lcd_write(0x2b, 0xd)
142 -- mdelay(50)
143 ZENXFISTYLE.lcd_write(0x90, 0x17)
144 ZENXFISTYLE.lcd_write(0x92, 0)
145 ZENXFISTYLE.lcd_write(0x93, 3)
146 ZENXFISTYLE.lcd_write(0x95, 0x110)
147 ZENXFISTYLE.lcd_write(0x97, 0)
148 ZENXFISTYLE.lcd_write(0x98, 0)
149 ZENXFISTYLE.lcd_write(0x07, 0x133)
150 ZENXFISTYLE.lcd_write(0x22, 0)
151 end
152
153 local pix = {}
154 for i=0,239 do
155 for j=0,319 do
156 local r = bit32.rshift(0, 3)
157 local g = bit32.rshift(0, 2)
158 local b = bit32.rshift(0xff, 3)
159 local px = bit32.lshift(r, 11) + bit32.lshift(g, 5) + b
160 px = bit32.lshift(1, i)
161 --table.insert(pix, px)
162 STMP.lcdif.send_pio(true, {px})
163 end
164 end
165 STMP.lcdif.send_pio(true, pix)
166end
167
168function ZENXFISTYLE.backlight_init()
169 STMP.pinctrl.pin(1, 30).muxsel('GPIO')
170 STMP.pinctrl.pin(1, 30).enable()
171end
172
173function ZENXFISTYLE.set_backlight(val)
174 if val == 0 then
175 STMP.pinctrl.pin(1, 30).clr()
176 else
177 STMP.pinctrl.pin(1, 30).set()
178 end
179end
180
181function ZENXFISTYLE.init()
182 ZENXFISTYLE.lcd_init()
183 ZENXFISTYLE.backlight_init()
184 ZENXFISTYLE.set_backlight(50)
185end
186
187