diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2014-11-24 18:29:04 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-11-28 19:37:14 +0100 |
commit | 9439635aa27e7604d01dddb30a505a3402f3b4df (patch) | |
tree | 063ff6e137fbc0a326f8f2f7f9f5f0d73d803756 /utils/hwstub/tools/lua/atj | |
parent | 19f4e396fddff8e7445908700a8345c7d5c57fc6 (diff) | |
download | rockbox-9439635aa27e7604d01dddb30a505a3402f3b4df.tar.gz rockbox-9439635aa27e7604d01dddb30a505a3402f3b4df.zip |
hwstub: lua functions for atj213x/irivere150
Change-Id: I3ab32996b4b6603fd7d66eee5b3bfd795b79eee1
Reviewed-on: http://gerrit.rockbox.org/1049
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Tested: Marcin Bukat <marcin.bukat@gmail.com>
Diffstat (limited to 'utils/hwstub/tools/lua/atj')
-rw-r--r-- | utils/hwstub/tools/lua/atj/gpio.lua | 65 | ||||
-rw-r--r-- | utils/hwstub/tools/lua/atj/lcm.lua | 31 |
2 files changed, 96 insertions, 0 deletions
diff --git a/utils/hwstub/tools/lua/atj/gpio.lua b/utils/hwstub/tools/lua/atj/gpio.lua new file mode 100644 index 0000000000..970d271187 --- /dev/null +++ b/utils/hwstub/tools/lua/atj/gpio.lua | |||
@@ -0,0 +1,65 @@ | |||
1 | ATJ.gpio = {} | ||
2 | |||
3 | function ATJ.gpio.muxsel(dev) | ||
4 | if type(dev) == "string" then | ||
5 | if dev == "LCM" then dev = 0 | ||
6 | elseif dev == "SD" then dev = 1 | ||
7 | elseif dev == "NAND" then dev = 2 | ||
8 | else error("Invalid mux string " .. dev) | ||
9 | end | ||
10 | end | ||
11 | |||
12 | local mfctl0 = HW.GPIO.MFCTL0.read() | ||
13 | if dev == 0 then | ||
14 | -- LCM (taken from WELCOME.BIN) | ||
15 | mfctl0 = bit32.band(mfctl0, 0xfe3f3f00) | ||
16 | mfctl0 = bit32.bor(mfctl0, 0x00808092) | ||
17 | elseif dev == 1 then | ||
18 | -- SD (taken from CARD.DRV) | ||
19 | mfctl0 = bit32.band(mfctl0, 0xff3ffffc) | ||
20 | mfctl0 = bit32.bor(mfctl0, 0x01300004) | ||
21 | elseif dev == 2 then | ||
22 | -- NAND (taken from BROM dump) | ||
23 | mfctl0 = bit32.band(mfctl0, 0xfe3ff300) | ||
24 | mfctl0 = bit32.bor(mfctl0, 0x00400449) | ||
25 | end | ||
26 | |||
27 | -- enable multifunction mux | ||
28 | HW.GPIO.MFCTL1.write(0x80000000) | ||
29 | |||
30 | -- write multifunction mux selection | ||
31 | HW.GPIO.MFCTL0.write(mfctl0) | ||
32 | end | ||
33 | |||
34 | function ATJ.gpio.outen(port, pin, en) | ||
35 | if type(port) == "string" then | ||
36 | if port == "PORTA" then | ||
37 | HW.GPIO.AOUTEN.write(bit32.replace(HW.GPIO.AOUTEN.read(), en, pin, 1)) | ||
38 | elseif port == "PORTB" then | ||
39 | HW.GPIO.BOUTEN.write(bit32.replace(HW.GPIO.BOUTEN.read(), en, pin, 1)) | ||
40 | else error("Invalid port string " .. port) | ||
41 | end | ||
42 | end | ||
43 | end | ||
44 | |||
45 | function ATJ.gpio.inen(port, pin) | ||
46 | if type(port) == "string" then | ||
47 | if port == "PORTA" then | ||
48 | HW.GPIO.AINEN.write(bit32.replace(HW.GPIO.AINEN.read(), en, pin, 1)) | ||
49 | elseif port == "PORTB" then | ||
50 | HW.GPIO.BINEN.write(bit32.replace(HW.GPIO.BINEN.read(), en, pin, 1)) | ||
51 | else error("Invalid port string " .. port) | ||
52 | end | ||
53 | end | ||
54 | end | ||
55 | |||
56 | function ATJ.gpio.set(port, pin, val) | ||
57 | if type(port) == "string" then | ||
58 | if port == "PORTA" then | ||
59 | HW.GPIO.ADAT.write(bit32.replace(HW.GPIO.ADAT.read(), val, pin, 1)) | ||
60 | elseif port == "PORTB" then | ||
61 | HW.GPIO.BDAT.write(bit32.replace(HW.GPIO.BDAT.read(), val, pin, 1)) | ||
62 | else error("Invalid port string " .. port) | ||
63 | end | ||
64 | end | ||
65 | end | ||
diff --git a/utils/hwstub/tools/lua/atj/lcm.lua b/utils/hwstub/tools/lua/atj/lcm.lua new file mode 100644 index 0000000000..feaa8b7158 --- /dev/null +++ b/utils/hwstub/tools/lua/atj/lcm.lua | |||
@@ -0,0 +1,31 @@ | |||
1 | ATJ.lcm = {} | ||
2 | |||
3 | function ATJ.lcm.wait_fifo_empty() | ||
4 | while (bit32.band(HW.YUV2RGB.CTL.read(), 0x04) == 0) do | ||
5 | end | ||
6 | end | ||
7 | |||
8 | function ATJ.lcm.rs_command() | ||
9 | ATJ.lcm.wait_fifo_empty() | ||
10 | HW.YUV2RGB.CTL.write(0x802ae) | ||
11 | end | ||
12 | |||
13 | function ATJ.lcm.rs_data() | ||
14 | ATJ.lcm.wait_fifo_empty() | ||
15 | HW.YUV2RGB.CTL.write(0x902ae) | ||
16 | end | ||
17 | |||
18 | function ATJ.lcm.fb_data() | ||
19 | ATJ.lcm.rs_command() | ||
20 | HW.YUV2RGB.FIFODATA.write(0x22) | ||
21 | HW.YUV2RGB.CTL.write(0xa02ae) | ||
22 | end | ||
23 | |||
24 | function ATJ.lcm.init() | ||
25 | HW.CMU.DEVCLKEN.write(bit32.bor(HW.CMU.DEVCLKEN.read(), 0x102)) | ||
26 | ATJ.gpio.muxsel("LCM") | ||
27 | hwstub.udelay(1) | ||
28 | ATJ.lcm.rs_command() | ||
29 | HW.YUV2RGB.CLKCTL.write(0x102) | ||
30 | end | ||
31 | |||