3 from copy
import deepcopy
6 print "| Pin | Mux0 | Mux1 | Mux2 | Mux3 |"
7 print "| --- | ----------- | ----------- | ----------- | ----------- |"
14 if not pdata
.has_key(mux
):
17 name
, bank
= pdata
[mux
]
18 res
+= " %s %-9s |" % (bank
, name
)
24 if not f
.startswith('FB_'):
28 return f2
[0], int(f2
[1])
31 while f
and not f
[0].isdigit():
34 return a
, int(f
) if f
else None
44 def find_fn(fname
, names
):
46 if fname
.startswith(n
):
49 def display_fns(bankspec
, pins
, function_names
):
50 fn_names
= function_names
.keys()
52 for (pin
, pdata
) in pins
.items():
53 for mux
in range(1,4): # skip GPIO for now
54 if not pdata
.has_key(mux
):
56 name
, bank
= pdata
[mux
]
57 assert name
!= None, str(bank
)
58 if not fns
.has_key(name
):
60 fns
[name
].append((pin
-bankspec
[bank
], mux
, bank
))
66 fnbase
= find_fn(fname
, fn_names
)
67 #print "name", fname, fnbase
68 if fnbase
!= current_fn
:
69 if current_fn
is not None:
71 print "## %s" % fnbase
73 print function_names
[fnbase
]
76 print "* %-9s :" % fname
,
77 for (pin
, mux
, bank
) in fns
[fname
]:
78 print "%s%d/%d" % (bank
, pin
, mux
),
83 def check_functions(title
, bankspec
, fns
, pins
, required
, eint
, pwm
,
87 if descriptions
is None:
90 print "# Pinmap for %s" % title
97 if descriptions
and descriptions
.has_key(name
):
98 print descriptions
[name
]
101 name
= name
.split(':')
103 findbank
= name
[0][0]
104 findmux
= int(name
[0][1:])
110 name
= name
.split('/')
121 if not fname
.startswith(name
):
123 for pin
, mux
, bank
in fns
[fname
]:
124 if findbank
is not None:
129 pin_
= pin
+ bankspec
[bank
]
130 if pins
.has_key(pin_
):
131 pinfound
[pin_
] = (fname
, pin_
, bank
, pin
, mux
)
133 pinidx
= pinfound
.keys()
137 fname
, pin_
, bank
, pin
, mux
= pinfound
[pin_
]
141 if len(found
) > count
:
144 print "* %s %d %s%d/%d" % (fname
, pin_
, bank
, pin
, mux
)
150 for name
in descriptions
.keys():
151 if not name
.startswith('GPIO'):
166 if descriptions
and descriptions
.has_key(fname
):
167 desc
= ': %s' % descriptions
[fname
]
170 pin_
= pin
+ bankspec
[bank
]
171 if not pins
.has_key(pin_
):
175 print "* %-8s %d %s%-2d %s" % (fname
, pin_
, bank
, pin
, desc
)
179 display_group(bankspec
, "EINT", eint
, fns
, pins
, descriptions
)
181 display_group(bankspec
, "PWM", pwm
, fns
, pins
, descriptions
)
183 print "## Unused Pinouts (spare as GPIO) for '%s'" % title
185 if descriptions
and descriptions
.has_key('GPIO'):
186 print descriptions
['GPIO']
193 def display_group(bankspec
, title
, todisplay
, fns
, pins
, descriptions
):
194 print "## %s" % title
198 for fname
in todisplay
:
200 if descriptions
and descriptions
.has_key(fname
):
201 desc
= ': %s' % descriptions
[fname
]
202 fname
= fname
.split(':')
204 findbank
= fname
[0][0]
205 findmux
= int(fname
[0][1:])
211 for (pin
, mux
, bank
) in fns
[fname
]:
212 if findbank
is not None:
219 pin_
= pin
+ bankspec
[bank
]
220 if not pins
.has_key(pin_
):
224 print "* %s %d %s%d/%d %s" % (fname
, pin_
, bank
, pin
, mux
, desc
)
227 def display_fixed(fixed
, offs
):
232 for pin
, k
in enumerate(fkeys
):
237 for name
in fixed
[k
]:
241 if prevname
[:2] == name
[:2] and linecount
!= 0:
247 print "* %d: %d %s" % (pin_
, pin
, name
),