pep8 cleanup
[pinmux.git] / src / bsv / peripheral_gen / gpio.py
1 from bsv.peripheral_gen.base import PBase
2
3
4 class gpio(PBase):
5
6 def slowimport(self):
7 return " import pinmux::*;\n" + \
8 " import mux::*;\n" + \
9 " import gpio::*;\n"
10
11 def slowifdeclmux(self):
12 size = len(self.peripheral.pinspecs)
13 return " interface GPIO_config#(%d) pad_config{0};" % size
14
15 def num_axi_regs32(self):
16 return 2
17
18 def axi_slave_idx(self, idx, name, ifacenum):
19 """ generates AXI slave number definition, except
20 GPIO also has a muxer per bank
21 """
22 name = name.upper()
23 mname = 'mux' + name[4:]
24 mname = mname.upper()
25 print "AXIslavenum", name, mname
26 (ret, x) = PBase.axi_slave_idx(self, idx, name, ifacenum)
27 (ret2, x) = PBase.axi_slave_idx(self, idx + 1, mname, ifacenum)
28 return ("%s\n%s" % (ret, ret2), 2)
29
30 def mkslow_peripheral(self, size=0):
31 print "gpioslow", self.peripheral, dir(self.peripheral)
32 size = len(self.peripheral.pinspecs)
33 return " MUX#(%d) mux{0} <- mkmux();\n" % size + \
34 " GPIO#(%d) gpio{0} <- mkgpio();" % size
35
36 def mk_connection(self, count):
37 print "GPIO mk_conn", self.name, count
38 res = []
39 dname = self.mksuffix(self.name, count)
40 for i, n in enumerate(['gpio' + dname, 'mux' + dname]):
41 res.append(PBase.mk_connection(self, count, n))
42 return '\n'.join(res)
43
44 def _mk_connection(self, name=None, count=0):
45 n = self.mksuffix(name, count)
46 if name.startswith('gpio'):
47 return "gpio{0}.axi_slave".format(n)
48 if name.startswith('mux'):
49 return "mux{0}.axi_slave".format(n)
50
51 def mksuffix(self, name, i):
52 if name.startswith('mux'):
53 return name[3:]
54 return name[4:]
55
56 def mk_cellconn(self, cellnum, name, count):
57 ret = []
58 bank = self.mksuffix(name, count)
59 txt = " pinmux.mux_lines.cell{0}_mux(mux{1}.mux_config.mux[{2}]);"
60 for p in self.peripheral.pinspecs:
61 ret.append(txt.format(cellnum, bank, p['name'][1:]))
62 cellnum += 1
63 return ("\n".join(ret), cellnum)
64
65 def pinname_out(self, pname):
66 return "func.gpio_out[{0}]".format(pname[1:])
67
68 def pinname_outen(self, pname):
69 return "func.gpio_out_en[{0}]".format(pname[1:])
70
71 def mk_pincon(self, name, count):
72 #ret = [PBase.mk_pincon(self, name, count)]
73 # special-case for gpio in, store in a temporary vector
74 ret = []
75 plen = len(self.peripheral.pinspecs)
76 template = " mkConnection({0}.{1},\n\t\t\t{2}_{1});"
77 ps = "pinmux.peripheral_side.%s" % name
78 n = "{0}.func.gpio".format(name)
79 for ptype in ['out', 'out_en', 'in']:
80 ret.append(template.format(ps, ptype, n))
81 return '\n'.join(ret)