Initialize Transfer_Rings.State
authorAdrian-Ken Rueegsegger <ken@codelabs.ch>
Wed, 18 Oct 2017 12:25:10 +0000 (14:25 +0200)
committerAdrian-Ken Rueegsegger <ken@codelabs.ch>
Fri, 27 Oct 2017 10:43:14 +0000 (12:43 +0200)
Signed-off-by: Adrian-Ken Rueegsegger <ken@codelabs.ch>
src/hw-dbc-transfer_rings.adb
src/hw-dbc-transfer_rings.ads

index 8f6f657..3f3a726 100644 (file)
@@ -38,7 +38,7 @@ is
       Address => System'To_Address (DMA_Buffers.Transfer_Rings_Base);
 
    type PCS_Array is array (Endpoint_Range) of Bit;
-   PCS : PCS_Array;
+   PCS : PCS_Array := (others => 0);
 
    type Transfer_Pointers is record
       Enqueue  : TRBs.Ring_Range;
@@ -47,6 +47,7 @@ is
       Toggle   : TRBs.Ring_Range;
       Overrun  : Boolean;
    end record;
+
    Null_TP : constant Transfer_Pointers
      := (Enqueue => TRBs.Ring_Range'First,
          Dequeue => TRBs.Ring_Range'First,
@@ -55,7 +56,7 @@ is
          Overrun => False);
 
    type Transfer_Pointers_Array is array (Endpoint_Range) of Transfer_Pointers;
-   Pointers : Transfer_Pointers_Array;
+   Pointers : Transfer_Pointers_Array := (others => Null_TP);
 
    --  Returns the physical address of the transfer ring specified by given EP.
    function Get_Ring_Address (EP : Endpoint_Range) return Word64;
index c8e7311..a801622 100644 (file)
@@ -16,7 +16,8 @@ private package HW.DbC.Transfer_Rings
 with
    Abstract_State => ((State with Part_Of  => HW.DbC.State),
                       (DMA   with Part_Of  => HW.DbC.DMA,
-                                  External => (Async_Readers, Async_Writers)))
+                       External            => (Async_Readers, Async_Writers))),
+   Initializes    => State
 is
 
    function Physical (EP : Endpoint_Range) return Word64;