from spec.interfaces import Pinouts
from spec.ifaceprint import display, display_fns, check_functions
-from spec.ifaceprint import display_fixed
+from spec.ifaceprint import display_fixed, python_dict_fns
+from collections import OrderedDict
class PinSpec(Pinouts):
def __init__(self, pinbanks, fixedpins, function_names, fast=None):
- self.fastbus = fast or []
- self.pinbanks = pinbanks
+ self.fastbus = fast or {}
+ self.pinbanks = OrderedDict()
+ self.muxwidths = {}
+ for bank, (sz, muxwidth) in pinbanks.items():
+ self.pinbanks[bank] = sz
+ self.muxwidths[bank] = muxwidth
self.fixedpins = fixedpins
self.function_names = function_names
- bankspec = {}
+ bankspec = OrderedDict()
self.offs = 0
- pkeys = sorted(pinbanks.keys())
+ pkeys = self.pinbanks.keys()
+ print (self.pinbanks)
for kn in pkeys:
bankspec[kn] = self.offs
- self.offs += pinbanks[kn]
+ self.offs += self.pinbanks[kn]
self.scenarios = []
self.scenarios.append((name, needed, eint, pwm, descriptions))
+ def pywrite(self, pyf, pinmap):
+ return python_dict_fns(pyf, pinmap, self, self.function_names)
+
def write(self, of):
+
of.write("""# Pinouts (PinMux)
auto-generated by [[pinouts.py]]
[[!toc ]]
""")
- bk = sorted(self.pinbanks.keys())
+ bk = self.pinbanks.keys()
for bank in bk:
of.write(
- "\n## Bank %s (%d pins)\n\n" %
- (bank, self.pinbanks[bank]))
- display(of, self, bank)
+ "\n## Bank %s (%d pins, width %d)\n\n" %
+ (bank, self.pinbanks[bank], self.muxwidths[bank]))
+ display(of, self, bank, muxwidth=self.muxwidths[bank])
of.write("\n# Pinouts (Fixed function)\n\n")
fixedpins = display_fixed(of, self.fixedpins, len(self))
of.write("""# Reference Datasheets
datasheets and pinout links
+
* <http://datasheets.chipdb.org/AMD/8018x/80186/amd-80186.pdf>
* <http://hands.com/~lkcl/eoma/shenzen/frida/FRD144A2701.pdf>
* <http://pinouts.ru/Memory/sdcard_pinout.shtml>