mibuild: support pin names in IO extensions
authorYann Sionneau <ys@m-labs.hk>
Wed, 18 Feb 2015 15:32:15 +0000 (08:32 -0700)
committerSebastien Bourdeauducq <sb@m-labs.hk>
Wed, 18 Feb 2015 15:32:31 +0000 (08:32 -0700)
mibuild/generic_platform.py

index b57ba59bf61b1425987a50d4f823cd9b3818edab..9704e5d5dd4d097dcd8cd2547a9d604a2680af56 100644 (file)
@@ -68,10 +68,16 @@ class ConnectorManager:
                for connector in connectors:
                        cit = iter(connector)
                        conn_name = next(cit)
-                       pin_list = []
-                       for pins in cit:
-                               pin_list += pins.split()
-                       pin_list = [None if pin == "None" else pin for pin in pin_list]
+                       if isinstance(connector[1], str):
+                               pin_list = []
+                               for pins in cit:
+                                       pin_list += pins.split()
+                               pin_list = [None if pin == "None" else pin for pin in pin_list]
+                       elif isinstance(connector[1], dict):
+                               pin_list = connector[1]
+                       else:
+                               raise ValueError("Unsupported pin list type {} for connector"
+                                                " {}".format(type(connector[1]), conn_name))
                        if conn_name in self.connector_table:
                                raise ValueError("Connector specified more than once: "+conn_name)
                        self.connector_table[conn_name] = pin_list
@@ -81,7 +87,8 @@ class ConnectorManager:
                for identifier in identifiers:
                        if ":" in identifier:
                                conn, pn = identifier.split(":")
-                               pn = int(pn)
+                               if pn.isdigit():
+                                       pn = int(pn)
                                r.append(self.connector_table[conn][pn])
                        else:
                                r.append(identifier)