From f9cb5de58020936812653c578c79c79a13bc626c Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Thu, 13 Jun 2013 02:12:01 +0200 Subject: hwstub: introduce lua code for the STMP and Creative ZEN V/Mozaic Change-Id: Ice5f509a2e0d2114436d4760f338b9203ef96691 --- utils/hwstub/tools/lua/zenmozaic.lua | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 utils/hwstub/tools/lua/zenmozaic.lua (limited to 'utils/hwstub/tools/lua/zenmozaic.lua') 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 @@ +-- +-- ZEN MOZAIC +-- +ZENMOZAIC = {} + +function ZENMOZAIC.lcd_send(cmd, data) + STMP.lcdif.set_data_swizzle(3) + STMP.lcdif.send_pio(false, {bit32.band(cmd, 0xff), bit32.rshift(cmd, 8)}) + if cmd ~= 0x22 then + STMP.lcdif.send_pio(true, {bit32.band(data, 0xff), bit32.rshift(data, 8)}) + end +end + +function ZENMOZAIC.lcd_init() + STMP.pinctrl.lcdif.setup_system(8, false) + STMP.lcdif.init() + STMP.lcdif.set_word_length(8) + STMP.lcdif.set_system_timing(2, 2, 2, 2) + STMP.lcdif.set_reset(1) + STMP.lcdif.set_reset(0) + STMP.lcdif.set_reset(1) + STMP.lcdif.set_byte_packing_format(0xf) + + ZENMOZAIC.lcd_send(0, 1) + ZENMOZAIC.lcd_send(3, 0) + + ZENMOZAIC.lcd_send(3, 0x510) + ZENMOZAIC.lcd_send(9, 8) + ZENMOZAIC.lcd_send(0xc, 0) + ZENMOZAIC.lcd_send(0xd, 0) + ZENMOZAIC.lcd_send(0xe, 0) + ZENMOZAIC.lcd_send(0x5b, 4) + ZENMOZAIC.lcd_send(0xd, 0x10) + ZENMOZAIC.lcd_send(9, 0) + ZENMOZAIC.lcd_send(3, 0x10) + ZENMOZAIC.lcd_send(0xd, 0x14) + ZENMOZAIC.lcd_send(0xe, 0x2b12) + ZENMOZAIC.lcd_send(1, 0x21f) + ZENMOZAIC.lcd_send(2, 0x700) + ZENMOZAIC.lcd_send(5, 0x30) + ZENMOZAIC.lcd_send(6, 0) + ZENMOZAIC.lcd_send(8, 0x202) + ZENMOZAIC.lcd_send(0xa, 0xc003) + ZENMOZAIC.lcd_send(0xb, 0) + ZENMOZAIC.lcd_send(0xf, 0) + ZENMOZAIC.lcd_send(0x10, 0) + ZENMOZAIC.lcd_send(0x11, 0) + ZENMOZAIC.lcd_send(0x14, 0x9f00) + ZENMOZAIC.lcd_send(0x15, 0x9f00) + ZENMOZAIC.lcd_send(0x16, 0x7f00) + ZENMOZAIC.lcd_send(0x17, 0x9f00) + ZENMOZAIC.lcd_send(0x20, 0) + ZENMOZAIC.lcd_send(0x21, 0) + ZENMOZAIC.lcd_send(0x23, 0) + ZENMOZAIC.lcd_send(0x24, 0) + ZENMOZAIC.lcd_send(0x25, 0) + ZENMOZAIC.lcd_send(0x26, 0) + ZENMOZAIC.lcd_send(0x30, 0x707) + ZENMOZAIC.lcd_send(0x31, 0x504) + ZENMOZAIC.lcd_send(0x32, 7) + ZENMOZAIC.lcd_send(0x33, 0x307) + ZENMOZAIC.lcd_send(0x34, 7) + ZENMOZAIC.lcd_send(0x35, 0x400) + ZENMOZAIC.lcd_send(0x36, 0x607) + ZENMOZAIC.lcd_send(0x37, 0x703) + ZENMOZAIC.lcd_send(0x3a, 0x1a0d) + ZENMOZAIC.lcd_send(0x3b, 0x1309) + + ZENMOZAIC.lcd_send(9, 4) + ZENMOZAIC.lcd_send(7, 5) + ZENMOZAIC.lcd_send(7, 0x25) + ZENMOZAIC.lcd_send(7, 0x27) + ZENMOZAIC.lcd_send(0x5b, 0) + ZENMOZAIC.lcd_send(7, 0x37) + + ZENMOZAIC.lcd_send(0x22, 0) + for i=0,128 do + STMP.lcdif.send_pio(true, {0xff, 0}) + end +end + +function ZENMOZAIC.set_backlight(val) + local v = math.floor((val + 200) * val / 1000) + for i=4,0,-1 do + if bit32.btest(v,bit32.lshift(1,i)) then + HW.UARTDBG.DR.write(0xff) + else + HW.UARTDBG.DR.write(0xf8) + end + while HW.UARTDBG.FR.TXFF.read() == 1 do end + end + HW.UARTDBG.DR.write(0) +end + +function ZENMOZAIC.init() + ZENMOZAIC.lcd_init() +end + -- cgit v1.2.3