convert gpio to getput
[shakti-peripherals.git] / src / peripherals / gpio / gpio.bsv
index 3ac83bad392628c266ee6bf203b0b15dcf2da30d..84e54bedfc52bae0b5feddf3ee092924af9efb0b 100644 (file)
@@ -14,6 +14,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 package gpio;
        /*==== Package imports ==== */
        import TriState          ::*;
+    import GetPut            ::*;
        import Vector                            ::*;
        import BUtils::*;
        import ConfigReg                        ::*;
@@ -26,11 +27,11 @@ package gpio;
 
        interface GPIO_func#(numeric type ionum);
                (*always_ready,always_enabled*)
-               method Action gpio_in (Vector#(ionum,Bit#(1)) inp);
+        interface Put#(Vector#(ionum,Bit#(1)) gpio_in;
                (*always_ready*)
-               method Vector#(ionum,Bit#(1))   gpio_out;
+        interface Get#(Vector#(ionum,Bit#(1)) gpio_out;
                (*always_ready*)
-               method Vector#(ionum,Bit#(1))   gpio_out_en;
+        interface Get#(Vector#(ionum,Bit#(1)) gpio_out_en;
   endinterface
        interface GPIO_config#(numeric type ionum);
                (*always_ready*)
@@ -185,17 +186,22 @@ package gpio;
 
                interface axi_slave= s_xactor.axi_side;
     interface func=interface GPIO_func
-       method Action gpio_in (Vector#(ionum,Bit#(1)) inp);
+      interface gpio_in = interface Put#(ionum)
+        method Action put(Vector#(ionum,Bit#(1)) in);
                        for(Integer i=0;i<ionum;i=i+1)
-                               datain_register[i]<=inp[i];
+                               datain_register[i]<=in[i];
                endmethod
-               method Vector#(ionum,Bit#(1))   gpio_out;
+      endinterface;
+      interface gpio_out = interface Get#(ionum)
+               method Vector#(ionum,Bit#(1))  get;
                        Vector#(ionum,Bit#(1)) temp;
                        for(Integer i=0;i<ionum;i=i+1)
                                temp[i]=dataout_register[i];
                        return temp;
                endmethod
-               method Vector#(ionum,Bit#(1))   gpio_out_en;
+      endinterface;
+      interface gpio_out_en = interface Get#(ionum)
+               method Vector#(ionum,Bit#(1))   get;
                        Vector#(ionum,Bit#(1)) temp;
                        for(Integer i=0;i<ionum;i=i+1)
                                temp[i]=pack(direction_reg[i]);