c4a6764920c5c704ac5b7ca81563ffe4f6165dde
[pinmux.git] / src / bsv / peripheral_gen / qspi.py
1 from bsv.peripheral_gen.base import PBase
2
3
4 class qspi(PBase):
5
6 def slowimport(self):
7 return " import qspi :: *;"
8
9 def slowifdecl(self):
10 return " interface QSPI_out qspi{0}_out;\n" + \
11 " method Bit#(1) qspi{0}_isint;"
12
13 def num_axi_regs32(self):
14 return 13
15
16 def mkslow_peripheral(self, size=0):
17 return " Ifc_qspi qspi{0} <- mkqspi();"
18
19 def _mk_connection(self, name=None, count=0):
20 return "qspi{0}.slave"
21
22 def pinname_out(self, pname):
23 return {'ck': 'out.clk_o',
24 'nss': 'out.ncs_o',
25 }.get(pname, '')
26
27 def pinname_outen(self, pname):
28 return {'ck': 1,
29 'nss': 1,
30 }.get(pname, '')
31
32 def mk_pincon(self, name, count):
33 ret = [PBase.mk_pincon(self, name, count)]
34 # special-case for gpio in, store in a temporary vector
35 ret = []
36 plen = len(self.peripheral.pinspecs)
37 template = " mkConnection({0}.{1},\n\t\t\t{2}.{1});"
38 ps = "pinmux.peripheral_side.%s" % name
39 name = self.get_iname(count)
40 n = "{0}.out".format(name)
41 for ptype in ['io_out', 'io_out_en', 'io_in']:
42 ret.append(template.format(ps, ptype, n))
43 return '\n'.join(ret)
44
45 def num_irqs(self):
46 return 6
47
48 def plic_object(self, pname, idx):
49 return "{0}.interrupts()[{1}]".format(pname, idx)
50
51 def mk_ext_ifacedef(self, iname, inum):
52 name = self.get_iname(inum)
53 return " method {0}_isint = {0}.interrupts[5];".format(name)
54
55 def slowifdeclmux(self):
56 return " method Bit#(1) {1}{0}_isint;"