3 from copy
import deepcopy
7 print "| Pin | Mux0 | Mux1 | Mux2 | Mux3 |"
8 print "| --- | ----------- | ----------- | ----------- | ----------- |"
9 pinidx
= sorted(pins
.keys())
17 name
, bank
= pdata
[mux
]
18 res
+= " %s %-9s |" % (bank
, name
)
25 if not f
.startswith('FB_'):
29 return f2
[0], int(f2
[1])
32 while f
and not f
[0].isdigit():
35 return a
, int(f
) if f
else None
47 def find_fn(fname
, names
):
49 if fname
.startswith(n
):
53 def display_fns(bankspec
, pins
, function_names
):
54 fn_names
= function_names
.keys()
56 for (pin
, pdata
) in pins
.items():
57 for mux
in range(1, 4): # skip GPIO for now
60 name
, bank
= pdata
[mux
]
61 assert name
is not None, str(bank
)
64 fns
[name
].append((pin
- bankspec
[bank
], mux
, bank
))
70 fnbase
= find_fn(fname
, fn_names
)
71 #print "name", fname, fnbase
72 if fnbase
!= current_fn
:
73 if current_fn
is not None:
75 print "## %s" % fnbase
77 print function_names
[fnbase
]
80 print "* %-9s :" % fname
,
81 for (pin
, mux
, bank
) in fns
[fname
]:
82 print "%s%d/%d" % (bank
, pin
, mux
),
88 def check_functions(title
, bankspec
, fns
, pins
, required
, eint
, pwm
,
92 if descriptions
is None:
95 print "# Pinmap for %s" % title
101 if descriptions
and name
in descriptions
:
102 print descriptions
[name
]
105 name
= name
.split(':')
107 findbank
= name
[0][0]
108 findmux
= int(name
[0][1:])
114 name
= name
.split('/')
125 if not fname
.startswith(name
):
127 for pin
, mux
, bank
in fns
[fname
]:
128 if findbank
is not None:
133 pin_
= pin
+ bankspec
[bank
]
135 pinfound
[pin_
] = (fname
, pin_
, bank
, pin
, mux
)
137 pinidx
= sorted(pinfound
.keys())
140 fname
, pin_
, bank
, pin
, mux
= pinfound
[pin_
]
144 if len(found
) > count
:
147 print "* %s %d %s%d/%d" % (fname
, pin_
, bank
, pin
, mux
)
153 for name
in descriptions
.keys():
154 if not name
.startswith('GPIO'):
169 if descriptions
and fname
in descriptions
:
170 desc
= ': %s' % descriptions
[fname
]
173 pin_
= pin
+ bankspec
[bank
]
178 print "* %-8s %d %s%-2d %s" % (fname
, pin_
, bank
, pin
, desc
)
182 display_group(bankspec
, "EINT", eint
, fns
, pins
, descriptions
)
184 display_group(bankspec
, "PWM", pwm
, fns
, pins
, descriptions
)
186 print "## Unused Pinouts (spare as GPIO) for '%s'" % title
188 if descriptions
and 'GPIO' in descriptions
:
189 print descriptions
['GPIO']
197 def display_group(bankspec
, title
, todisplay
, fns
, pins
, descriptions
):
198 print "## %s" % title
202 for fname
in todisplay
:
204 if descriptions
and fname
in descriptions
:
205 desc
= ': %s' % descriptions
[fname
]
206 fname
= fname
.split(':')
208 findbank
= fname
[0][0]
209 findmux
= int(fname
[0][1:])
215 for (pin
, mux
, bank
) in fns
[fname
]:
216 if findbank
is not None:
223 pin_
= pin
+ bankspec
[bank
]
228 print "* %s %d %s%d/%d %s" % (fname
, pin_
, bank
, pin
, mux
, desc
)
232 def display_fixed(fixed
, offs
):
234 fkeys
= sorted(fixed
.keys())
237 for pin
, k
in enumerate(fkeys
):
242 for name
in fixed
[k
]:
246 if prevname
[:2] == name
[:2] and linecount
!= 0:
252 print "* %d: %d %s" % (pin_
, pin
, name
),
254 res
.append((pin_
, name
))