From 1dc91b4560fb296509cdda81ab32276c7d653ecd Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Tue, 24 Dec 2013 01:10:15 +0100 Subject: hwstub: add ZEN X-Fi Style code (preliminary) Change-Id: I535d54bc3fb2263c174b7ae983ea4f5ed68e6390 --- utils/hwstub/tools/lua/zenxfistyle.lua | 187 +++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 utils/hwstub/tools/lua/zenxfistyle.lua (limited to 'utils/hwstub') 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 @@ +-- +-- ZEN X-Fi Style +-- +ZENXFISTYLE = {} + +function ZENXFISTYLE.lcd_encode(data) + return bit32.bor( + bit32.lshift(bit32.band(data, 0xff00), 2), + bit32.lshift(bit32.band(data, 0xff), 1)) +end + +function ZENXFISTYLE.lcd_write(reg, data) + STMP.lcdif.send_pio(false, {ZENXFISTYLE.lcd_encode(reg)}) + if reg ~= 0x22 then + STMP.lcdif.send_pio(true, {ZENXFISTYLE.lcd_encode(data)}) + end +end + +function ZENXFISTYLE.lcd_init() + STMP.lcdif.setup_clock() + STMP.pinctrl.lcdif.setup_system(18, false) + STMP.lcdif.init() + STMP.lcdif.set_word_length(18) + STMP.lcdif.set_databus_width(18) + STMP.lcdif.set_system_timing(2, 2, 3, 3) + STMP.lcdif.set_reset(1) + STMP.lcdif.set_reset(0) + STMP.lcdif.set_reset(1) + STMP.lcdif.set_byte_packing_format(0xf) + + STMP.pinctrl.pin(2, 8).muxsel('GPIO') + STMP.pinctrl.pin(2, 8).disable() + ZENXFISTYLE.lcd_model = STMP.pinctrl.pin(2, 8).read() + print(string.format("LCD model: %d", ZENXFISTYLE.lcd_model)) + + if ZENXFISTYLE.lcd_model == 0 then + ZENXFISTYLE.lcd_write(0xe3, 0x3008) + ZENXFISTYLE.lcd_write(0xe7, 0x12) + ZENXFISTYLE.lcd_write(0xef, 0x1231) + ZENXFISTYLE.lcd_write(0x01, 0x100) + ZENXFISTYLE.lcd_write(0x02, 0x700) + ZENXFISTYLE.lcd_write(0x03, 0x1028) + ZENXFISTYLE.lcd_write(0x04, 0) + ZENXFISTYLE.lcd_write(0x08, 0x207) + ZENXFISTYLE.lcd_write(0x09, 0) + ZENXFISTYLE.lcd_write(0x0a, 0) + ZENXFISTYLE.lcd_write(0x0c, 0) + ZENXFISTYLE.lcd_write(0x0d, 0) + ZENXFISTYLE.lcd_write(0x0f, 0) + ZENXFISTYLE.lcd_write(0x10, 0) + ZENXFISTYLE.lcd_write(0x11, 7) + ZENXFISTYLE.lcd_write(0x12, 0) + ZENXFISTYLE.lcd_write(0x13, 0) + -- mdelay(200) + ZENXFISTYLE.lcd_write(0x10, 0x1490) + ZENXFISTYLE.lcd_write(0x11, 0x227) + -- mdelay(50) + ZENXFISTYLE.lcd_write(0x12, 0x9c) + -- mdelay(50) + ZENXFISTYLE.lcd_write(0x13, 0xc00) + ZENXFISTYLE.lcd_write(0x29, 5) + ZENXFISTYLE.lcd_write(0x2b, 0xc) + ZENXFISTYLE.lcd_write(0x20, 0xef) + ZENXFISTYLE.lcd_write(0x21, 0) + ZENXFISTYLE.lcd_write(0x30, 6) + ZENXFISTYLE.lcd_write(0x31, 0x703) + ZENXFISTYLE.lcd_write(0x32, 0x206) + ZENXFISTYLE.lcd_write(0x35, 4) + ZENXFISTYLE.lcd_write(0x36, 0x1a05) + ZENXFISTYLE.lcd_write(0x37, 0x600) + ZENXFISTYLE.lcd_write(0x38, 0x307) + ZENXFISTYLE.lcd_write(0x39, 0x707) + ZENXFISTYLE.lcd_write(0x3c, 0x400) + ZENXFISTYLE.lcd_write(0x3d, 0x50f) + ZENXFISTYLE.lcd_write(0x50, 0) + ZENXFISTYLE.lcd_write(0x51, 0xef) + ZENXFISTYLE.lcd_write(0x52, 0) + ZENXFISTYLE.lcd_write(0x53, 0x13f) + ZENXFISTYLE.lcd_write(0x60, 0xa700) + ZENXFISTYLE.lcd_write(0x61, 1) + ZENXFISTYLE.lcd_write(0x6a, 0) + ZENXFISTYLE.lcd_write(0x80, 0) + ZENXFISTYLE.lcd_write(0x81, 0) + ZENXFISTYLE.lcd_write(0x82, 0) + ZENXFISTYLE.lcd_write(0x83, 0) + ZENXFISTYLE.lcd_write(0x84, 0) + ZENXFISTYLE.lcd_write(0x85, 0) + ZENXFISTYLE.lcd_write(0x90, 0x10) + ZENXFISTYLE.lcd_write(0x92, 0x600) + ZENXFISTYLE.lcd_write(0x07, 0x133) + ZENXFISTYLE.lcd_write(0x22, 0) + else + ZENXFISTYLE.lcd_write(0x01, 0x100) + ZENXFISTYLE.lcd_write(0x02, 0x700) + ZENXFISTYLE.lcd_write(0x03, 0x1028) + ZENXFISTYLE.lcd_write(0x04, 0) + ZENXFISTYLE.lcd_write(0x08, 0x207) + ZENXFISTYLE.lcd_write(0x09, 0) + ZENXFISTYLE.lcd_write(0x0a, 0) + ZENXFISTYLE.lcd_write(0x0c, 0) + ZENXFISTYLE.lcd_write(0x0d, 0) + ZENXFISTYLE.lcd_write(0x0f, 0) + ZENXFISTYLE.lcd_write(0x10, 0) + ZENXFISTYLE.lcd_write(0x11, 7) + ZENXFISTYLE.lcd_write(0x12, 0) + ZENXFISTYLE.lcd_write(0x13, 0) + -- mdelay(200) + ZENXFISTYLE.lcd_write(0x10, 0x1290) + ZENXFISTYLE.lcd_write(0x11, 0x227) + -- mdelay(50) + ZENXFISTYLE.lcd_write(0x12, 0x9c) + -- mdelay(50) + ZENXFISTYLE.lcd_write(0x13, 0x1f00) + ZENXFISTYLE.lcd_write(0x29, 0x30) + ZENXFISTYLE.lcd_write(0x2b, 0xd) + ZENXFISTYLE.lcd_write(0x20, 0xef) + ZENXFISTYLE.lcd_write(0x21, 0) + ZENXFISTYLE.lcd_write(0x30, 0x404) + ZENXFISTYLE.lcd_write(0x31, 0x404) + ZENXFISTYLE.lcd_write(0x32, 0x404) + ZENXFISTYLE.lcd_write(0x37, 0x303) + ZENXFISTYLE.lcd_write(0x38, 0x303) + ZENXFISTYLE.lcd_write(0x39, 0x303) + ZENXFISTYLE.lcd_write(0x35, 0x103) + ZENXFISTYLE.lcd_write(0x3c, 0x301) + ZENXFISTYLE.lcd_write(0x36, 0x1e00) + ZENXFISTYLE.lcd_write(0x3d, 0xf) + ZENXFISTYLE.lcd_write(0x50, 0) + ZENXFISTYLE.lcd_write(0x51, 0xef) + ZENXFISTYLE.lcd_write(0x52, 0) + ZENXFISTYLE.lcd_write(0x53, 0x13f) + ZENXFISTYLE.lcd_write(0x60, 0xa700) + ZENXFISTYLE.lcd_write(0x61, 0) + ZENXFISTYLE.lcd_write(0x6a, 0) + ZENXFISTYLE.lcd_write(0x80, 0) + ZENXFISTYLE.lcd_write(0x81, 0) + ZENXFISTYLE.lcd_write(0x82, 0) + ZENXFISTYLE.lcd_write(0x83, 0) + ZENXFISTYLE.lcd_write(0x84, 0) + ZENXFISTYLE.lcd_write(0x85, 0) + ZENXFISTYLE.lcd_write(0x2b, 0xd) + -- mdelay(50) + ZENXFISTYLE.lcd_write(0x90, 0x17) + ZENXFISTYLE.lcd_write(0x92, 0) + ZENXFISTYLE.lcd_write(0x93, 3) + ZENXFISTYLE.lcd_write(0x95, 0x110) + ZENXFISTYLE.lcd_write(0x97, 0) + ZENXFISTYLE.lcd_write(0x98, 0) + ZENXFISTYLE.lcd_write(0x07, 0x133) + ZENXFISTYLE.lcd_write(0x22, 0) + end + + local pix = {} + for i=0,239 do + for j=0,319 do + local r = bit32.rshift(0, 3) + local g = bit32.rshift(0, 2) + local b = bit32.rshift(0xff, 3) + local px = bit32.lshift(r, 11) + bit32.lshift(g, 5) + b + px = bit32.lshift(1, i) + --table.insert(pix, px) + STMP.lcdif.send_pio(true, {px}) + end + end + STMP.lcdif.send_pio(true, pix) +end + +function ZENXFISTYLE.backlight_init() + STMP.pinctrl.pin(1, 30).muxsel('GPIO') + STMP.pinctrl.pin(1, 30).enable() +end + +function ZENXFISTYLE.set_backlight(val) + if val == 0 then + STMP.pinctrl.pin(1, 30).clr() + else + STMP.pinctrl.pin(1, 30).set() + end +end + +function ZENXFISTYLE.init() + ZENXFISTYLE.lcd_init() + ZENXFISTYLE.backlight_init() + ZENXFISTYLE.set_backlight(50) +end + + -- cgit v1.2.3