summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-09-26 16:41:30 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-09-26 16:41:30 +0200
commit835d740fca64caa40afb867cef4861ab0f23bee7 (patch)
treef2d43c4b6031bfc1b51e6e18a58f445eef739c92
parentf37f3393c997b775d177424d020bd5b16d43618a (diff)
downloadrockbox-835d740fca64caa40afb867cef4861ab0f23bee7.tar.gz
rockbox-835d740fca64caa40afb867cef4861ab0f23bee7.zip
hwstub: fix lcd drivers for sony NWZ
Change-Id: I8d581ec906ec2bab0d983aacfb0e8479b77d0c57
-rw-r--r--utils/hwstub/tools/lua/sonynwze360.lua24
-rw-r--r--utils/hwstub/tools/lua/sonynwze370.lua22
-rw-r--r--utils/hwstub/tools/lua/stmp/lcdif.lua2
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
6function NWZE360.lcd_send(cmd, data) 6function 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
138end 142end
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 = {}
6function NWZE370.lcd_send(cmd, data) 6function 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
66end 76end
67 77
@@ -72,8 +82,8 @@ function NWZE370.set_backlight(val)
72end 82end
73 83
74function NWZE370.init() 84function 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()
11end 11end
12 12
13function STMP.lcdif.init() 13function 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()