diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-09-26 16:41:30 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-09-26 16:41:30 +0200 |
commit | 835d740fca64caa40afb867cef4861ab0f23bee7 (patch) | |
tree | f2d43c4b6031bfc1b51e6e18a58f445eef739c92 | |
parent | f37f3393c997b775d177424d020bd5b16d43618a (diff) | |
download | rockbox-835d740fca64caa40afb867cef4861ab0f23bee7.tar.gz rockbox-835d740fca64caa40afb867cef4861ab0f23bee7.zip |
hwstub: fix lcd drivers for sony NWZ
Change-Id: I8d581ec906ec2bab0d983aacfb0e8479b77d0c57
-rw-r--r-- | utils/hwstub/tools/lua/sonynwze360.lua | 24 | ||||
-rw-r--r-- | utils/hwstub/tools/lua/sonynwze370.lua | 22 | ||||
-rw-r--r-- | utils/hwstub/tools/lua/stmp/lcdif.lua | 2 |
3 files changed, 32 insertions, 16 deletions
diff --git a/utils/hwstub/tools/lua/sonynwze360.lua b/utils/hwstub/tools/lua/sonynwze360.lua index 368cfb498a..669e899f0d 100644 --- a/utils/hwstub/tools/lua/sonynwze360.lua +++ b/utils/hwstub/tools/lua/sonynwze360.lua | |||
@@ -5,6 +5,7 @@ NWZE360 = {} | |||
5 | 5 | ||
6 | function NWZE360.lcd_send(cmd, data) | 6 | function NWZE360.lcd_send(cmd, data) |
7 | STMP.lcdif.set_data_swizzle(0) | 7 | STMP.lcdif.set_data_swizzle(0) |
8 | STMP.lcdif.set_word_length(8) | ||
8 | STMP.lcdif.set_byte_packing_format(0xf) | 9 | STMP.lcdif.set_byte_packing_format(0xf) |
9 | STMP.lcdif.send_pio(false, {cmd}) | 10 | STMP.lcdif.send_pio(false, {cmd}) |
10 | if cmd ~= 0x22 then | 11 | if cmd ~= 0x22 then |
@@ -45,7 +46,6 @@ function NWZE360.lcd_init() | |||
45 | STMP.pinctrl.lcdif.setup_system(8, false) | 46 | STMP.pinctrl.lcdif.setup_system(8, false) |
46 | STMP.lcdif.init() | 47 | STMP.lcdif.init() |
47 | STMP.lcdif.set_databus_width(8) | 48 | STMP.lcdif.set_databus_width(8) |
48 | STMP.lcdif.set_word_length(8) | ||
49 | STMP.lcdif.set_system_timing(1, 1, 1, 1) | 49 | STMP.lcdif.set_system_timing(1, 1, 1, 1) |
50 | STMP.lcdif.set_byte_packing_format(0xf) | 50 | STMP.lcdif.set_byte_packing_format(0xf) |
51 | STMP.lcdif.set_reset(1) | 51 | STMP.lcdif.set_reset(1) |
@@ -118,22 +118,26 @@ function NWZE360.lcd_init() | |||
118 | STMP.digctl.udelay(40000) | 118 | STMP.digctl.udelay(40000) |
119 | NWZE360.lcd_send(0x28, 0x3C) | 119 | NWZE360.lcd_send(0x28, 0x3C) |
120 | 120 | ||
121 | --NWZE360.lcd_send(0x36, 0x0) -- experimental | 121 | --NWZE360.lcd_send(0x36, 0xc0) -- no effect ? |
122 | --NWZE360.lcd_send(0x16, 8 + 0x60) -- redraw with landscape orientation | 122 | --NWZE360.lcd_send(0x16, 8 + 0x60) -- redraw with landscape orientation |
123 | --NWZE360.lcd_send(0x28, 0x34) -- display control | ||
124 | --NWZE360.lcd_send(0x60, 0x8) -- no effect ? | ||
125 | NWZE360.lcd_send(0x16, 0) -- BGR <-> RGB | ||
123 | 126 | ||
124 | NWZE360.set_backlight(100) | 127 | NWZE360.set_backlight(100) |
125 | 128 | ||
126 | NWZE360.lcd_set_update_rect(0, 0, 240, 320) | 129 | NWZE360.lcd_set_update_rect(0, 0, 240, 320) |
127 | STMP.lcdif.set_word_length(8) | 130 | STMP.lcdif.set_word_length(16) |
128 | for i = 0, 240 do | 131 | for i = 0, 319 do |
129 | for j = 0, 320 do | 132 | data = {} |
133 | for j = 0, 239 do | ||
130 | r = 0x1f | 134 | r = 0x1f |
131 | g = 0x3f | 135 | g = 0x0 |
132 | b = 0x1f | 136 | b = 0x0 |
133 | pix = bit32.bor(r, bit32.bor(bit32.lshift(g, 6), bit32.lshift(b, 11))) | 137 | pix = bit32.bor(b, bit32.bor(bit32.lshift(g, 6), bit32.lshift(r, 11))) |
134 | STMP.lcdif.send_pio(true, {bit32.band(pix, 0xff), bit32.rshift(pix, 8)}) | 138 | data[#data + 1] = pix |
135 | --STMP.lcdif.send_pio(true, {pix}) | ||
136 | end | 139 | end |
140 | STMP.lcdif.send_pio(true, data) | ||
137 | end | 141 | end |
138 | end | 142 | end |
139 | 143 | ||
diff --git a/utils/hwstub/tools/lua/sonynwze370.lua b/utils/hwstub/tools/lua/sonynwze370.lua index ef9e8cb4e7..111bf6b6eb 100644 --- a/utils/hwstub/tools/lua/sonynwze370.lua +++ b/utils/hwstub/tools/lua/sonynwze370.lua | |||
@@ -6,6 +6,7 @@ NWZE370 = {} | |||
6 | function NWZE370.lcd_send(cmd, data) | 6 | function NWZE370.lcd_send(cmd, data) |
7 | STMP.lcdif.set_data_swizzle(0) | 7 | STMP.lcdif.set_data_swizzle(0) |
8 | STMP.lcdif.set_byte_packing_format(0xf) | 8 | STMP.lcdif.set_byte_packing_format(0xf) |
9 | STMP.lcdif.set_word_length(8) | ||
9 | STMP.lcdif.send_pio(false, {cmd}) | 10 | STMP.lcdif.send_pio(false, {cmd}) |
10 | if #data ~= 0 then | 11 | if #data ~= 0 then |
11 | STMP.lcdif.send_pio(true, data) | 12 | STMP.lcdif.send_pio(true, data) |
@@ -56,12 +57,21 @@ function NWZE370.lcd_init() | |||
56 | 0x46, 8, 0x21, 0x29, 0x28, 0x2f, 0x3f}) --negative gamma | 57 | 0x46, 8, 0x21, 0x29, 0x28, 0x2f, 0x3f}) --negative gamma |
57 | NWZE370.lcd_send(0x29, {}) -- display on | 58 | NWZE370.lcd_send(0x29, {}) -- display on |
58 | 59 | ||
59 | NWZE370.lcd_set_update_rect(10, 10, 20, 10) | 60 | NWZE370.lcd_set_update_rect(0, 0, 128, 160) |
60 | for i = 0, 19 do | 61 | STMP.lcdif.set_data_swizzle(3) |
61 | for j = 0, 9 do | 62 | STMP.lcdif.set_word_length(8) |
62 | pix = 0xf800 | 63 | for i = 0, 10 do |
63 | STMP.lcdif.send_pio(true, {bit32.band(pix, 0xff), bit32.rshift(pix, 8)}) | 64 | data = {} |
65 | for j = 0, 127 do | ||
66 | r = 0x1f | ||
67 | g = 0x0 | ||
68 | b = 0x0 | ||
69 | pix = bit32.bor(b, bit32.bor(bit32.lshift(g, 6), bit32.lshift(r, 11))) | ||
70 | data[#data + 1] = bit32.band(pix, 0xff) | ||
71 | data[#data + 1] = bit32.rshift(pix, 8) | ||
72 | --data[#data + 1] = pix | ||
64 | end | 73 | end |
74 | STMP.lcdif.send_pio(true, data) | ||
65 | end | 75 | end |
66 | end | 76 | end |
67 | 77 | ||
@@ -72,8 +82,8 @@ function NWZE370.set_backlight(val) | |||
72 | end | 82 | end |
73 | 83 | ||
74 | function NWZE370.init() | 84 | function NWZE370.init() |
75 | NWZE370.lcd_init() | ||
76 | NWZE370.set_backlight(100) | 85 | NWZE370.set_backlight(100) |
86 | NWZE370.lcd_init() | ||
77 | --[[ | 87 | --[[ |
78 | HW.LRADC.CTRL0.SFTRST.clr() | 88 | HW.LRADC.CTRL0.SFTRST.clr() |
79 | HW.LRADC.CTRL0.CLKGATE.clr() | 89 | HW.LRADC.CTRL0.CLKGATE.clr() |
diff --git a/utils/hwstub/tools/lua/stmp/lcdif.lua b/utils/hwstub/tools/lua/stmp/lcdif.lua index 7d22edb937..ba08de23bb 100644 --- a/utils/hwstub/tools/lua/stmp/lcdif.lua +++ b/utils/hwstub/tools/lua/stmp/lcdif.lua | |||
@@ -11,6 +11,8 @@ function STMP.lcdif.setup_clock() | |||
11 | end | 11 | end |
12 | 12 | ||
13 | function STMP.lcdif.init() | 13 | function STMP.lcdif.init() |
14 | HW.LCDIF.CTRL.SFTRST.clr() | ||
15 | HW.LCDIF.CTRL.CLKGATE.clr() | ||
14 | HW.LCDIF.CTRL.SFTRST.set() | 16 | HW.LCDIF.CTRL.SFTRST.set() |
15 | HW.LCDIF.CTRL.SFTRST.clr() | 17 | HW.LCDIF.CTRL.SFTRST.clr() |
16 | HW.LCDIF.CTRL.CLKGATE.clr() | 18 | HW.LCDIF.CTRL.CLKGATE.clr() |