diff --git a/iodelay-autogen.py b/iodelay-autogen.py
index bd477e2109c2acc495752e689ab2b958f810230d..f1a79ebd9af96d80b573d4ac5f53970f7d75ebbf 100755 (executable)
--- a/iodelay-autogen.py
+++ b/iodelay-autogen.py
if (args.interactive == 0):
print "WARN: No delay modes for %s found, skipping" % module
mode = "SKIP"
- sel[module] = mode
return mode
# Display the menu and ask user to select the 'right' mode
elif (choice == 1):
mode = "LEGACY"
break
- elif (choice >=2 and choice <= len(modelist)):
+ elif (choice >=2 and choice <= len(modelist) + 1):
mode = modelist[choice - 2]
break
print "ERROR: Invalid choice"
print "# Works only for the input signals"
gpio_data_addrs = (0, 0x4ae10138, 0x48055138, 0x48057138, 0x48059138, 0x4805b138, 0x4805d138, 0x48051138, 0x48053138)
for i in padconf:
- (pad_name, pin_name, addr, val, delayinfo) = i
+ (pad_name, pin_name, addr, val, mode, delayinfo) = i
offset = addr - 0x4a002000
gpio_name = xml_pad_get_pin(offset, 14)
print "ERR: Format %s not suppported" % args.format
def get_pin_info(val):
+ slew_fast = (val >> 19) & 0x1
inp_en = (val >> 18) & 0x1
pulltype = (val >> 17) & 0x1
pull_dis = (val >> 16) & 0x1
pin += "_PULLUP"
else:
pin += "_PULLDOWN"
+ if (slew_fast):
+ pin += " | SLEWCONTROL"
return pin
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
def uboot_format_pad_regs(padconf, per_padconf):
print "\nconst struct pad_conf_entry dra74x_core_padconf_array[] = {"
for i in padconf:
- (pad_name, pin_name, addr, val, delayinfo) = i
+ (pad_name, pin_name, addr, val, mode, delayinfo) = i
if (re.match("MMC.*", pin_name) != None):
print "WARN: Skipping MMC padconf in uboot"
- continue
muxmode = val & 0xf
(method, data) = delayinfo
print "ERR: Only MMC padconf is recommended in kernel"
continue
- dtsnode = ("%s_pins_default" % per).lower()
+ # Get the mode from the first entry
+ (pad_name, pin_name, addr, val, mode, delayinfo) = per_padconf[per][0]
+
+ dtsnode = ("%s_pins_%s" % (per, mode)).lower()
print ""
print "\t%s: %s {" % (dtsnode, dtsnode)
print "\t\tpinctrl-single,pins = <"
for i in per_padconf[per]:
- (pad_name, pin_name, addr, val, delayinfo) = i
+ (pad_name, pin_name, addr, val, mode, delayinfo) = i
muxmode = val & 0xf
(method, data) = delayinfo
extramode = ""
elif (method == "VIRTUAL"):
delaymode = data
- extramode = " | VIRTUAL_MODE%d" % delaymode
+ extramode = " | MUX_VIRTUAL_MODE%d" % delaymode
elif (method == "MANUAL"):
extramode = " | MANUAL_MODE"
else:
offset = addr - 0x4a003400
comment = (pad_short + "." + pin_name).lower()
- print "\t\t\t0x%03X\t(%s | MUM_MODE%d)\t/* %s */" % (offset, pin_info, muxmode, comment)
+ print "\t\t\t0x%03X\t(%s | MUX_MODE%d)\t/* %s */" % (offset, pin_info, muxmode, comment)
print "\t\t>;"
print "\t};"
print "};\n"
# Generate output in bios format
def bios_format_pad_regs(padconf, per_padconf):
for i in padconf:
- (pad_name, pin_name, addr, val, delayinfo) = i
+ (pad_name, pin_name, addr, val, mode, delayinfo) = i
delaylist = []
(method, data) = delayinfo
mode = select_mode(pad_name, pin_name, module, virt, man, modehelp, sel)
# Remember the selection for that module, for later reuse
- if (args.strict == False):
+ if (args.strict == False and module not in sel.keys()):
sel[module] = mode
if (mode == "SKIP"):
if (args.debug >= 1):
print " => Using mode %s" % mode
- paddata = (pad_name, pin_name, addr, val, delayinfo)
+ paddata = (pad_name, pin_name, addr, val, mode, delayinfo)
if (module not in per_padconf.keys()):
per_padconf[module] = []
padconf.append(paddata)