package Interfaces.RP2040.PIO is type Bit is range 0 .. 1; for Bit'Size use 1; type Bit_32 is mod 2**32; for Bit_32'Size use 32; type Bit_Array is array (Natural range <>) of Bit with Pack; type CTRL_Type is record SM_Enable : Bit_Array (0 .. 3); SM_Restart : Bit_Array (0 .. 3); CLKDIV_Restart : Bit_Array (0 .. 3); Reserved : Bit_Array (0 .. 19); end record with Object_Size => 32, Bit_Order => System.Low_Order_First; for CTRL_Type use record SM_Enable at 0 range 0 .. 3; SM_Restart at 0 range 4 .. 7; CLKDIV_Restart at 0 range 8 .. 11; Reserved at 0 range 12 .. 31; end record; type FSTAT_Type is record RXFULL : Bit_Array (0 .. 3); Reserved_4_7 : Bit_Array (4 .. 7); RXEMPTY : Bit_Array (8 .. 11); Reserved_12_15 : Bit_Array (12 .. 15); TXFULL : Bit_Array (16 .. 19); Reserved_20_23 : Bit_Array (20 .. 23); TXEMPTY : Bit_Array (24 .. 27); Reserved_28_31 : Bit_Array (28 .. 31); end record with Object_Size => 32, Bit_Order => System.Low_Order_First; for FSTAT_Type use record RXFULL at 0 range 0 .. 3; Reserved_4_7 at 0 range 4 .. 7; RXEMPTY at 0 range 8 .. 11; Reserved_12_15 at 0 range 12 .. 15; TXFULL at 0 range 16 .. 19; Reserved_20_23 at 0 range 20 .. 23; TXEMPTY at 0 range 24 .. 27; Reserved_28_31 at 0 range 28 .. 31; end record; type PIO_Type is record CTRL : CTRL_Type; FSTAT : FSTAT_Type; end record; type Direct_PIO_Type is record CTRL : Bit_32; FSTAT : Bit_32; end record; PIO_1 : PIO_Type with Address => PIO_1_Base, Volatile; Direct_PIO_1 : PIO_Type with Address => PIO_1_Base, Volatile; end Interfaces.RP2040.PIO;