3 from copy
import deepcopy
7 print "| Pin | Mux0 | Mux1 | Mux2 | Mux3 |"
8 print "| --- | ----------- | ----------- | ----------- | ----------- |"
15 if not pdata
.has_key(mux
):
18 name
, bank
= pdata
[mux
]
19 res
+= " %s %-9s |" % (bank
, name
)
26 if not f
.startswith('FB_'):
30 return f2
[0], int(f2
[1])
33 while f
and not f
[0].isdigit():
36 return a
, int(f
) if f
else None
48 def find_fn(fname
, names
):
50 if fname
.startswith(n
):
54 def display_fns(bankspec
, pins
, function_names
):
55 fn_names
= function_names
.keys()
57 for (pin
, pdata
) in pins
.items():
58 for mux
in range(1, 4): # skip GPIO for now
59 if not pdata
.has_key(mux
):
61 name
, bank
= pdata
[mux
]
62 assert name
!= None, str(bank
)
63 if not fns
.has_key(name
):
65 fns
[name
].append((pin
-bankspec
[bank
], mux
, bank
))
71 fnbase
= find_fn(fname
, fn_names
)
72 #print "name", fname, fnbase
73 if fnbase
!= current_fn
:
74 if current_fn
is not None:
76 print "## %s" % fnbase
78 print function_names
[fnbase
]
81 print "* %-9s :" % fname
,
82 for (pin
, mux
, bank
) in fns
[fname
]:
83 print "%s%d/%d" % (bank
, pin
, mux
),
89 def check_functions(title
, bankspec
, fns
, pins
, required
, eint
, pwm
,
93 if descriptions
is None:
96 print "# Pinmap for %s" % title
102 if descriptions
and descriptions
.has_key(name
):
103 print descriptions
[name
]
106 name
= name
.split(':')
108 findbank
= name
[0][0]
109 findmux
= int(name
[0][1:])
115 name
= name
.split('/')
126 if not fname
.startswith(name
):
128 for pin
, mux
, bank
in fns
[fname
]:
129 if findbank
is not None:
134 pin_
= pin
+ bankspec
[bank
]
135 if pins
.has_key(pin_
):
136 pinfound
[pin_
] = (fname
, pin_
, bank
, pin
, mux
)
138 pinidx
= pinfound
.keys()
142 fname
, pin_
, bank
, pin
, mux
= pinfound
[pin_
]
146 if len(found
) > count
:
149 print "* %s %d %s%d/%d" % (fname
, pin_
, bank
, pin
, mux
)
155 for name
in descriptions
.keys():
156 if not name
.startswith('GPIO'):
171 if descriptions
and descriptions
.has_key(fname
):
172 desc
= ': %s' % descriptions
[fname
]
175 pin_
= pin
+ bankspec
[bank
]
176 if not pins
.has_key(pin_
):
180 print "* %-8s %d %s%-2d %s" % (fname
, pin_
, bank
, pin
, desc
)
184 display_group(bankspec
, "EINT", eint
, fns
, pins
, descriptions
)
186 display_group(bankspec
, "PWM", pwm
, fns
, pins
, descriptions
)
188 print "## Unused Pinouts (spare as GPIO) for '%s'" % title
190 if descriptions
and descriptions
.has_key('GPIO'):
191 print descriptions
['GPIO']
199 def display_group(bankspec
, title
, todisplay
, fns
, pins
, descriptions
):
200 print "## %s" % title
204 for fname
in todisplay
:
206 if descriptions
and descriptions
.has_key(fname
):
207 desc
= ': %s' % descriptions
[fname
]
208 fname
= fname
.split(':')
210 findbank
= fname
[0][0]
211 findmux
= int(fname
[0][1:])
217 for (pin
, mux
, bank
) in fns
[fname
]:
218 if findbank
is not None:
225 pin_
= pin
+ bankspec
[bank
]
226 if not pins
.has_key(pin_
):
230 print "* %s %d %s%d/%d %s" % (fname
, pin_
, bank
, pin
, mux
, desc
)
234 def display_fixed(fixed
, offs
):
239 for pin
, k
in enumerate(fkeys
):
244 for name
in fixed
[k
]:
248 if prevname
[:2] == name
[:2] and linecount
!= 0:
254 print "* %d: %d %s" % (pin_
, pin
, name
),