diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-12-24 01:10:15 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-12-24 12:39:58 +0100 |
commit | 1dc91b4560fb296509cdda81ab32276c7d653ecd (patch) | |
tree | b184d6d252ba941ade64e2f812f8e4805f0054b8 /utils/hwstub | |
parent | 84f1a0af3b62c3c10d838fe387035a8145c35ca3 (diff) | |
download | rockbox-1dc91b4560fb296509cdda81ab32276c7d653ecd.tar.gz rockbox-1dc91b4560fb296509cdda81ab32276c7d653ecd.zip |
hwstub: add ZEN X-Fi Style code (preliminary)
Change-Id: I535d54bc3fb2263c174b7ae983ea4f5ed68e6390
Diffstat (limited to 'utils/hwstub')
-rw-r--r-- | utils/hwstub/tools/lua/zenxfistyle.lua | 187 |
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 | -- | ||
4 | ZENXFISTYLE = {} | ||
5 | |||
6 | function ZENXFISTYLE.lcd_encode(data) | ||
7 | return bit32.bor( | ||
8 | bit32.lshift(bit32.band(data, 0xff00), 2), | ||
9 | bit32.lshift(bit32.band(data, 0xff), 1)) | ||
10 | end | ||
11 | |||
12 | function 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 | ||
17 | end | ||
18 | |||
19 | function 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) | ||
166 | end | ||
167 | |||
168 | function ZENXFISTYLE.backlight_init() | ||
169 | STMP.pinctrl.pin(1, 30).muxsel('GPIO') | ||
170 | STMP.pinctrl.pin(1, 30).enable() | ||
171 | end | ||
172 | |||
173 | function 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 | ||
179 | end | ||
180 | |||
181 | function ZENXFISTYLE.init() | ||
182 | ZENXFISTYLE.lcd_init() | ||
183 | ZENXFISTYLE.backlight_init() | ||
184 | ZENXFISTYLE.set_backlight(50) | ||
185 | end | ||
186 | |||
187 | |||