From: Luke Kenneth Casson Leighton Date: Fri, 20 Jul 2018 13:00:52 +0000 (+0100) Subject: add gpio rules X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ba2aeee82c3c31e62803013e7604a22267dccb82;p=pinmux.git add gpio rules --- diff --git a/src/bsv/peripheral_gen.py b/src/bsv/peripheral_gen.py index 3c31ca2..9d63f87 100644 --- a/src/bsv/peripheral_gen.py +++ b/src/bsv/peripheral_gen.py @@ -47,7 +47,8 @@ class PBase(object): for p in self.peripheral.pinspecs: typ = p['type'] pname = p['name'] - n = "{0}{1}".format(name, self.mksuffix(name, count)) + #n = "{0}{1}".format(self.name, self.mksuffix(name, count)) + n = name#"{0}{1}".format(self.name, self.mksuffix(name, count)) ret.append(" //%s %s" % (n, str(p))) sname = self.peripheral.pname(pname).format(count) ps = "pinmux.peripheral_side.%s" % sname @@ -294,6 +295,31 @@ class gpio(PBase): cellnum += 1 return ("\n".join(ret), cellnum) + def pinname_out(self, pname): + return "func.gpio_out[{0}]".format(pname[1:]) + + def pinname_outen(self, pname): + return {'sda': 'out.sda_outen', + 'scl': 'out.scl_outen'}.get(pname, '') + + def mk_pincon(self, name, count): + ret = [PBase.mk_pincon(self, name, count)] + # special-case for gpio in, store in a temporary vector + plen = len(self.peripheral.pinspecs) + ret.append(" rule con_%s%d_in" % (name, count)) + ret.append(" Vector#({0},Bit#(1)) temp;".format(plen)) + for p in self.peripheral.pinspecs: + typ = p['type'] + pname = p['name'] + idx = pname[1:] + n = name + sname = self.peripheral.pname(pname).format(count) + ps = "pinmux.peripheral_side.%s_in" % sname + ret.append(" temp[{0}]={1};".format(idx, ps)) + ret.append(" {0}.func.gpio_in(temp);".format(name)) + ret.append(" endrule") + return '\n'.join(ret) + axi_slave_declarations = """\ typedef 0 SlowMaster;