rockbox/utils/hwstub/tools/lua/atj/gpio.lua
Marcin Bukat 9439635aa2 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>
2014-11-28 19:37:14 +01:00

65 lines
2 KiB
Lua

ATJ.gpio = {}
function ATJ.gpio.muxsel(dev)
if type(dev) == "string" then
if dev == "LCM" then dev = 0
elseif dev == "SD" then dev = 1
elseif dev == "NAND" then dev = 2
else error("Invalid mux string " .. dev)
end
end
local mfctl0 = HW.GPIO.MFCTL0.read()
if dev == 0 then
-- LCM (taken from WELCOME.BIN)
mfctl0 = bit32.band(mfctl0, 0xfe3f3f00)
mfctl0 = bit32.bor(mfctl0, 0x00808092)
elseif dev == 1 then
-- SD (taken from CARD.DRV)
mfctl0 = bit32.band(mfctl0, 0xff3ffffc)
mfctl0 = bit32.bor(mfctl0, 0x01300004)
elseif dev == 2 then
-- NAND (taken from BROM dump)
mfctl0 = bit32.band(mfctl0, 0xfe3ff300)
mfctl0 = bit32.bor(mfctl0, 0x00400449)
end
-- enable multifunction mux
HW.GPIO.MFCTL1.write(0x80000000)
-- write multifunction mux selection
HW.GPIO.MFCTL0.write(mfctl0)
end
function ATJ.gpio.outen(port, pin, en)
if type(port) == "string" then
if port == "PORTA" then
HW.GPIO.AOUTEN.write(bit32.replace(HW.GPIO.AOUTEN.read(), en, pin, 1))
elseif port == "PORTB" then
HW.GPIO.BOUTEN.write(bit32.replace(HW.GPIO.BOUTEN.read(), en, pin, 1))
else error("Invalid port string " .. port)
end
end
end
function ATJ.gpio.inen(port, pin)
if type(port) == "string" then
if port == "PORTA" then
HW.GPIO.AINEN.write(bit32.replace(HW.GPIO.AINEN.read(), en, pin, 1))
elseif port == "PORTB" then
HW.GPIO.BINEN.write(bit32.replace(HW.GPIO.BINEN.read(), en, pin, 1))
else error("Invalid port string " .. port)
end
end
end
function ATJ.gpio.set(port, pin, val)
if type(port) == "string" then
if port == "PORTA" then
HW.GPIO.ADAT.write(bit32.replace(HW.GPIO.ADAT.read(), val, pin, 1))
elseif port == "PORTB" then
HW.GPIO.BDAT.write(bit32.replace(HW.GPIO.BDAT.read(), val, pin, 1))
else error("Invalid port string " .. port)
end
end
end