projects
/
pinmux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update m_class to emmc naming
[pinmux.git]
/
src
/
spec
/
ifaceprint.py
diff --git
a/src/spec/ifaceprint.py
b/src/spec/ifaceprint.py
index 642e8a8fcd4ddf317e78b5da0a10a7aa6cb37c1d..55b820d2bf376c5d9d908204177845b4d7f3e3ef 100644
(file)
--- a/
src/spec/ifaceprint.py
+++ b/
src/spec/ifaceprint.py
@@
-3,21
+3,32
@@
from copy import deepcopy
from copy import deepcopy
-def display(pins):
- print "| Pin | Mux0 | Mux1 | Mux2 | Mux3 |"
- print "| --- | ----------- | ----------- | ----------- | ----------- |"
- pinidx = pins.keys()
- pinidx.sort()
+def display(of, pins, banksel=None, muxwidth=4):
+ of.write("""\
+| Pin | Mux0 | Mux1 | Mux2 | Mux3 |
+| --- | ----------- | ----------- | ----------- | ----------- |
+""")
+ pinidx = sorted(pins.keys())
for pin in pinidx:
pdata = pins.get(pin)
for pin in pinidx:
pdata = pins.get(pin)
+ if banksel:
+ skip = False
+ for mux in range(muxwidth):
+ if mux not in pdata:
+ continue
+ name, bank = pdata[mux]
+ if banksel != bank:
+ skip = True
+ if skip:
+ continue
res = '| %3d |' % pin
res = '| %3d |' % pin
- for mux in range(
4
):
- if
not pdata.has_key(mux)
:
+ for mux in range(
muxwidth
):
+ if
mux not in pdata
:
res += " |"
continue
name, bank = pdata[mux]
res += " %s %-9s |" % (bank, name)
res += " |"
continue
name, bank = pdata[mux]
res += " %s %-9s |" % (bank, name)
- print res
+ of.write("%s\n" % res)
def fnsplit(f):
def fnsplit(f):
@@
-51,57
+62,57
@@
def find_fn(fname, names):
return n
return n
-def display_fns(bankspec, pins, function_names):
+def display_fns(
of,
bankspec, pins, function_names):
fn_names = function_names.keys()
fns = {}
for (pin, pdata) in pins.items():
for mux in range(1, 4): # skip GPIO for now
fn_names = function_names.keys()
fns = {}
for (pin, pdata) in pins.items():
for mux in range(1, 4): # skip GPIO for now
- if
not pdata.has_key(mux)
:
+ if
mux not in pdata
:
continue
name, bank = pdata[mux]
continue
name, bank = pdata[mux]
- assert name
!=
None, str(bank)
- if n
ot fns.has_key(name)
:
+ assert name
is not
None, str(bank)
+ if n
ame not in fns
:
fns[name] = []
fns[name] = []
- fns[name].append((pin
-
bankspec[bank], mux, bank))
+ fns[name].append((pin
-
bankspec[bank], mux, bank))
- fnidx =
fns.keys(
)
- fnidx.sort(
fnsor
t)
+ fnidx =
list(fns.keys()
)
+ fnidx.sort(
key=fnspli
t)
current_fn = None
for fname in fnidx:
fnbase = find_fn(fname, fn_names)
current_fn = None
for fname in fnidx:
fnbase = find_fn(fname, fn_names)
+ assert fnbase in function_names, "fn %s not in descriptions %s" % \
+ (fname, str(function_names.keys()))
#print "name", fname, fnbase
if fnbase != current_fn:
if current_fn is not None:
#print "name", fname, fnbase
if fnbase != current_fn:
if current_fn is not None:
- print
- print "## %s" % fnbase
- print
- print function_names[fnbase]
- print
+ of.write('\n')
+ of.write("## %s\n\n%s\n\n" % (fnbase, function_names[fnbase]))
current_fn = fnbase
current_fn = fnbase
- print "* %-9s :" % fname,
+ of.write("* %-9s :" % fname)
for (pin, mux, bank) in fns[fname]:
for (pin, mux, bank) in fns[fname]:
- print "%s%d/%d" % (bank, pin, mux),
- print
+ of.write(" %s%d/%d" % (bank, pin, mux))
+ of.write('\n')
return fns
return fns
-def check_functions(title, bankspec, fns, pins, required, eint, pwm,
+def check_functions(
of,
title, bankspec, fns, pins, required, eint, pwm,
descriptions=None):
fns = deepcopy(fns)
pins = deepcopy(pins)
if descriptions is None:
descriptions = {}
descriptions=None):
fns = deepcopy(fns)
pins = deepcopy(pins)
if descriptions is None:
descriptions = {}
+ fnidx = fns.keys()
- print "# Pinmap for %s" % title
- print
+ #print dir(fns)
+ #print dir(pins)
+
+ of.write("# Pinmap for %s\n\n" % title)
for name in required:
for name in required:
- print "## %s" % name
- print
- if descriptions and descriptions.has_key(name):
- print descriptions[name]
- print
+ of.write("## %s\n\n" % name)
+ if descriptions and name in descriptions:
+ of.write("%s\n\n" % descriptions[name])
name = name.split(':')
if len(name) == 2:
name = name.split(':')
if len(name) == 2:
@@
-118,13
+129,21
@@
def check_functions(title, bankspec, fns, pins, required, eint, pwm,
else:
count = 100000
name = name[0]
else:
count = 100000
name = name[0]
+ #print name
found = set()
found = set()
- fnidx = fns.keys()
- # fnidx.sort(fnsort)
pinfound = {}
pinfound = {}
+ located = set()
for fname in fnidx:
if not fname.startswith(name):
continue
for fname in fnidx:
if not fname.startswith(name):
continue
+ for k in pins.fnspec.keys():
+ if fname.startswith(k):
+ fk = list(pins.fnspec[k].keys())
+ fn = pins.fnspec[k]
+ fn = fn[fk[0]]
+ #print fname, fn, dir(fn)
+ if count == 100000:
+ count = len(fn.pingroup)
for pin, mux, bank in fns[fname]:
if findbank is not None:
if findbank != bank:
for pin, mux, bank in fns[fname]:
if findbank is not None:
if findbank != bank:
@@
-132,12
+151,12
@@
def check_functions(title, bankspec, fns, pins, required, eint, pwm,
if findmux != mux:
continue
pin_ = pin + bankspec[bank]
if findmux != mux:
continue
pin_ = pin + bankspec[bank]
- if pin
s.has_key(pin_)
:
+ if pin
_ in pins
:
pinfound[pin_] = (fname, pin_, bank, pin, mux)
pinfound[pin_] = (fname, pin_, bank, pin, mux)
- pinidx = pinfound.keys()
- pinidx.sort()
+ pinidx = sorted(pinfound.keys())
+ removedcount = 0
for pin_ in pinidx:
fname, pin_, bank, pin, mux = pinfound[pin_]
if fname in found:
for pin_ in pinidx:
fname, pin_, bank, pin, mux = pinfound[pin_]
if fname in found:
@@
-146,9
+165,16
@@
def check_functions(title, bankspec, fns, pins, required, eint, pwm,
if len(found) > count:
continue
del pins[pin_]
if len(found) > count:
continue
del pins[pin_]
- print "* %s %d %s%d/%d" % (fname, pin_, bank, pin, mux)
+ removedcount += 1
+ of.write("* %s %d %s%d/%d\n" % (fname, pin_, bank, pin, mux))
- print
+ if removedcount != count:
+ print ("not all found", name, removedcount, count, title, found,
+ fns[fname])
+ print ("pins found", pinfound)
+
+ # fnidx.sort(fnsort)
+ of.write('\n')
# gpios
gpios = []
# gpios
gpios = []
@@
-161,49
+187,45
@@
def check_functions(title, bankspec, fns, pins, required, eint, pwm,
gpios.sort()
if gpios:
gpios.sort()
if gpios:
- print "## GPIO"
- print
+ of.write("## GPIO\n\n")
for fname in gpios:
if fname in found:
continue
desc = ''
for fname in gpios:
if fname in found:
continue
desc = ''
- if descriptions and
descriptions.has_key(fname)
:
+ if descriptions and
fname in descriptions
:
desc = ': %s' % descriptions[fname]
bank = fname[4]
pin = int(fname[7:])
pin_ = pin + bankspec[bank]
desc = ': %s' % descriptions[fname]
bank = fname[4]
pin = int(fname[7:])
pin_ = pin + bankspec[bank]
- if
not pins.has_key(pin_)
:
+ if
pin_ not in pins
:
continue
del pins[pin_]
found.add(fname)
continue
del pins[pin_]
found.add(fname)
-
print "* %-8s %d %s%-2d %s" % (fname, pin_, bank, pin, desc
)
- print
+
of.write("* %-8s %d %s%-2d %s\n" % (fname, pin_, bank, pin, desc)
)
+ of.write('\n')
if eint:
if eint:
- display_group(bankspec, "EINT", eint, fns, pins, descriptions)
+ display_group(
of,
bankspec, "EINT", eint, fns, pins, descriptions)
if pwm:
if pwm:
- display_group(bankspec, "PWM", pwm, fns, pins, descriptions)
+ display_group(
of,
bankspec, "PWM", pwm, fns, pins, descriptions)
- print "## Unused Pinouts (spare as GPIO) for '%s'" % title
- print
- if descriptions and descriptions.has_key('GPIO'):
- print descriptions['GPIO']
- print
- display(pins)
- print
+ of.write("## Unused Pinouts (spare as GPIO) for '%s'\n\n" % title)
+ if descriptions and 'GPIO' in descriptions:
+ of.write("%s\n\n" % descriptions['GPIO'])
+ display(of, pins)
+ of.write('\n')
return pins # unused
return pins # unused
-def display_group(bankspec, title, todisplay, fns, pins, descriptions):
- print "## %s" % title
- print
+def display_group(of, bankspec, title, todisplay, fns, pins, descriptions):
+ of.write("## %s\n\n" % title)
found = set()
for fname in todisplay:
desc = ''
found = set()
for fname in todisplay:
desc = ''
- if descriptions and
descriptions.has_key(fname)
:
+ if descriptions and
fname in descriptions
:
desc = ': %s' % descriptions[fname]
fname = fname.split(':')
if len(fname) == 2:
desc = ': %s' % descriptions[fname]
fname = fname.split(':')
if len(fname) == 2:
@@
-223,43
+245,42
@@
def display_group(bankspec, title, todisplay, fns, pins, descriptions):
if fname in found:
continue
pin_ = pin + bankspec[bank]
if fname in found:
continue
pin_ = pin + bankspec[bank]
- if
not pins.has_key(pin_)
:
+ if
pin_ not in pins
:
continue
del pins[pin_]
found.add(fname)
continue
del pins[pin_]
found.add(fname)
- print "* %s %d %s%d/%d %s" % (fname, pin_, bank, pin, mux, desc)
- print
+ of.write("* %s %d %s%d/%d %s\n" %
+ (fname, pin_, bank, pin, mux, desc))
+ of.write('\n')
-def display_fixed(fixed, offs):
+def display_fixed(
of,
fixed, offs):
- fkeys = fixed.keys()
- fkeys.sort()
+ fkeys = sorted(fixed.keys())
pin_ = offs
res = []
for pin, k in enumerate(fkeys):
pin_ = offs
res = []
for pin, k in enumerate(fkeys):
- print "## %s" % k
- print
+ of.write("## %s\n\n" % k)
prevname = ''
linecount = 0
for name in fixed[k]:
if linecount == 4:
linecount = 0
prevname = ''
linecount = 0
for name in fixed[k]:
if linecount == 4:
linecount = 0
- print
+ of.write('\n')
if prevname[:2] == name[:2] and linecount != 0:
if prevname[:2] == name[:2] and linecount != 0:
- print name,
+ of.write(" %s" % name)
linecount += 1
else:
if linecount != 0:
linecount += 1
else:
if linecount != 0:
- print
- print "* %d: %d %s" % (pin_, pin, name),
+ of.write('\n')
+ of.write("* %d: %d %s" % (pin_, pin, name))
linecount = 1
res.append((pin_, name))
prevname = name
pin_ += 1
if linecount != 0:
linecount = 1
res.append((pin_, name))
prevname = name
pin_ += 1
if linecount != 0:
- print
- print
+ of.write('\n')
+ of.write('\n')
return res
return res