script: Pass selected mode name in pad data
authorNikhil Devshatwar <nikhil.nd@ti.com>
Fri, 20 Nov 2015 11:31:10 +0000 (17:01 +0530)
committerNikhil Devshatwar <nikhil.nd@ti.com>
Mon, 23 Nov 2015 11:50:25 +0000 (17:20 +0530)
For MMC instance, there can be nodes for all the supported
delay modes. These are differentiated by the mode name.
To do this, pass the delay mode in the pad data.

Update the parameter extraction for linux/bios/uboot.
Use the modename to generate unique DTS nodes for MMC pads.

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
iodelay-autogen.py

index 0967eaf5735cb9cd4ebc17cc893cf2a94f9118a4..130a310455a00f4c2ea3c4924ea2aa669a8ad1ef 100755 (executable)
@@ -306,7 +306,6 @@ def select_mode(pad, pin, module, virt, man, modehelp, sel):
        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
@@ -356,7 +355,7 @@ def pad_dump_gpio(padconf, per_padconf):
        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)
@@ -427,7 +426,7 @@ def get_pin_info(val):
 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"
@@ -481,12 +480,15 @@ def linux_format_pad_regs(padconf, per_padconf):
                        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
@@ -538,7 +540,7 @@ def linux_format_delay_regs(delayconf, per_delayconf):
 # 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
@@ -657,7 +659,7 @@ for i in range(0, 260):
        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"):
@@ -674,7 +676,7 @@ for i in range(0, 260):
 
        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)