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"
        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
                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:
        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)
 
                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:
 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"
 
                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
 
                        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]:
                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
 
                        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:
 # 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
 
                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
        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"):
                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
 
        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)
        if (module not in per_padconf.keys()):
                per_padconf[module] = []
        padconf.append(paddata)