Ethy_Soft/runtime/adainclude/interfaces-rp2040-pio.ads
2025-07-04 21:38:21 +02:00

314 lines
11 KiB
Ada

package Interfaces.RP2040.PIO is
type CTRL_Type is
record
SM_Enable0 : Bit_1;
SM_Enable1 : Bit_1;
SM_Enable2 : Bit_1;
SM_Enable3 : Bit_1;
SM_Restart0 : Bit_1;
SM_Restart1 : Bit_1;
SM_Restart2 : Bit_1;
SM_Restart3 : Bit_1;
CLKDIV_Restart0 : Bit_1;
CLKDIV_Restart1 : Bit_1;
CLKDIV_Restart2 : Bit_1;
CLKDIV_Restart3 : Bit_1;
Reserved : Bit_20;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for CTRL_Type use
record
SM_Enable0 at 0 range 0 .. 0;
SM_Enable1 at 0 range 1 .. 1;
SM_Enable2 at 0 range 2 .. 2;
SM_Enable3 at 0 range 3 .. 3;
SM_Restart0 at 0 range 4 .. 4;
SM_Restart1 at 0 range 5 .. 5;
SM_Restart2 at 0 range 6 .. 6;
SM_Restart3 at 0 range 7 .. 7;
CLKDIV_Restart0 at 0 range 8 .. 8;
CLKDIV_Restart1 at 0 range 9 .. 9;
CLKDIV_Restart2 at 0 range 10 .. 10;
CLKDIV_Restart3 at 0 range 11 .. 11;
Reserved at 0 range 12 .. 31;
end record;
type FSTAT_Type is
record
RXFULL0 : Bit_1;
RXFULL1 : Bit_1;
RXFULL2 : Bit_1;
RXFULL3 : Bit_1;
Reserved_4_7 : Bit_4;
RXEMPTY0 : Bit_1;
RXEMPTY1 : Bit_1;
RXEMPTY2 : Bit_1;
RXEMPTY3 : Bit_1;
Reserved_12_15 : Bit_4;
TXFULL0 : Bit_1;
TXFULL1 : Bit_1;
TXFULL2 : Bit_1;
TXFULL3 : Bit_1;
Reserved_20_23 : Bit_4;
TXEMPTY0 : Bit_1;
TXEMPTY1 : Bit_1;
TXEMPTY2 : Bit_1;
TXEMPTY3 : Bit_1;
Reserved_28_31 : Bit_4;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for FSTAT_Type use
record
RXFULL0 at 0 range 0 .. 0;
RXFULL1 at 0 range 1 .. 1;
RXFULL2 at 0 range 2 .. 2;
RXFULL3 at 0 range 3 .. 3;
Reserved_4_7 at 0 range 4 .. 7;
RXEMPTY0 at 0 range 8 .. 8;
RXEMPTY1 at 0 range 9 .. 9;
RXEMPTY2 at 0 range 10 .. 10;
RXEMPTY3 at 0 range 11 .. 11;
Reserved_12_15 at 0 range 12 .. 15;
TXFULL0 at 0 range 16 .. 16;
TXFULL1 at 0 range 17 .. 17;
TXFULL2 at 0 range 18 .. 18;
TXFULL3 at 0 range 19 .. 19;
Reserved_20_23 at 0 range 20 .. 23;
TXEMPTY0 at 0 range 24 .. 24;
TXEMPTY1 at 0 range 25 .. 25;
TXEMPTY2 at 0 range 26 .. 26;
TXEMPTY3 at 0 range 27 .. 27;
Reserved_28_31 at 0 range 28 .. 31;
end record;
type FDEBUG_Type is
record
RXSTALL0 : Bit_1;
RXSTALL1 : Bit_1;
RXSTALL2 : Bit_1;
RXSTALL3 : Bit_1;
Reserved_4_7 : Bit_4;
RXUNDER0 : Bit_1;
RXUNDER1 : Bit_1;
RXUNDER2 : Bit_1;
RXUNDER3 : Bit_1;
Reserved_12_15 : Bit_4;
TXOVER0 : Bit_1;
TXOVER1 : Bit_1;
TXOVER2 : Bit_1;
TXOVER3 : Bit_1;
Reserved_20_23 : Bit_4;
TXTSTALL0 : Bit_1;
TXTSTALL1 : Bit_1;
TXTSTALL2 : Bit_1;
TXTSTALL3 : Bit_1;
Reserved_28_31 : Bit_4;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for FDEBUG_Type use
record
RXSTALL0 at 0 range 0 .. 0;
RXSTALL1 at 0 range 1 .. 1;
RXSTALL2 at 0 range 2 .. 2;
RXSTALL3 at 0 range 3 .. 3;
Reserved_4_7 at 0 range 4 .. 7;
RXUNDER0 at 0 range 8 .. 8;
RXUNDER1 at 0 range 9 .. 9;
RXUNDER2 at 0 range 10 .. 10;
RXUNDER3 at 0 range 11 .. 11;
Reserved_12_15 at 0 range 12 .. 15;
TXOVER0 at 0 range 16 .. 16;
TXOVER1 at 0 range 17 .. 17;
TXOVER2 at 0 range 18 .. 18;
TXOVER3 at 0 range 19 .. 19;
Reserved_20_23 at 0 range 20 .. 23;
TXTSTALL0 at 0 range 24 .. 24;
TXTSTALL1 at 0 range 25 .. 25;
TXTSTALL2 at 0 range 26 .. 26;
TXTSTALL3 at 0 range 27 .. 27;
Reserved_28_31 at 0 range 28 .. 31;
end record;
type FLEVEL_Type is
record
TX0 : Bit_4;
RX0 : Bit_4;
TX1 : Bit_4;
RX1 : Bit_4;
TX2 : Bit_4;
RX2 : Bit_4;
TX3 : Bit_4;
RX3 : Bit_4;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for FLEVEL_Type use
record
TX0 at 0 range 0 .. 3;
RX0 at 0 range 4 .. 7;
TX1 at 0 range 8 .. 11;
RX1 at 0 range 12 .. 15;
TX2 at 0 range 16 .. 19;
RX2 at 0 range 20 .. 23;
TX3 at 0 range 24 .. 27;
RX3 at 0 range 28 .. 31;
end record;
type IRQ_Type is
record
IRQ0 : Bit_1;
IRQ1 : Bit_1;
IRQ2 : Bit_1;
IRQ3 : Bit_1;
IRQ4 : Bit_1;
IRQ5 : Bit_1;
IRQ6 : Bit_1;
IRQ7 : Bit_1;
Reserved : Bit_24;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for IRQ_Type use
record
IRQ0 at 0 range 0 .. 0;
IRQ1 at 0 range 1 .. 1;
IRQ2 at 0 range 2 .. 2;
IRQ3 at 0 range 3 .. 3;
IRQ4 at 0 range 4 .. 4;
IRQ5 at 0 range 5 .. 5;
IRQ6 at 0 range 6 .. 6;
IRQ7 at 0 range 7 .. 7;
Reserved at 0 range 8 .. 31;
end record;
type DBG_CFGINFO_Type is
record
FIFO_Depth : Bit_6;
Reserved_6_7 : Bit_2;
SM_Count : Bit_4;
Reserved_12_15 : Bit_4;
IMEM_Size : Bit_6;
Reserved_22_31 : Bit_10;
end record
with Object_Size => 32, Bit_Order => System.Low_Order_First,
Volatile, Full_Access_Only;
for DBG_CFGINFO_Type use
record
FIFO_Depth at 0 range 0 .. 5;
Reserved_6_7 at 0 range 6 .. 7;
SM_Count at 0 range 8 .. 11;
Reserved_12_15 at 0 range 12 .. 15;
IMEM_Size at 0 range 16 .. 21;
Reserved_22_31 at 0 range 22 .. 31;
end record;
type INSTR_MEM_Type is
record
Mem : Bit_16;
Reserved : Bit_16;
end record
with Volatile, Full_Access_Only;
for INSTR_MEM_Type use
record
Mem at 0 range 0 .. 15;
Reserved at 0 range 16 .. 31;
end record;
type Array_INSTR_MEM is array (Natural range <>) of INSTR_MEM_Type
with Component_Size => 32;
type SM_CLKDIV_Type is
record
Reserved : Bit_8;
Frac : Bit_8;
Int : Bit_16;
end record
with Volatile, Full_Access_Only;
for SM_CLKDIV_Type use
record
Reserved at 0 range 0 .. 7;
Frac at 0 range 8 .. 15;
Int at 0 range 16 .. 31;
end record;
type Array_SM_CLKDIV is array (Natural range <>) of SM_CLKDIV_Type
with Component_Size => 32;
type SM_EXECCTRL_Type is
record
STATUS_N : Bit_4;
STATUS_SEL : Bit_1;
Reserved_5_6 : Bit_2;
Wrap_Bottom : Bit_5;
Wrap_Top : Bit_5;
Out_Sticky : Bit_1;
Inline_Out_En : Bit_1;
Out_EN_SEL : Bit_5;
JMP_Pin : Bit_5;
Side_Pindir : Bit_1;
Side_EN : Bit_1;
EXEC_Stalled : Bit_1;
end record
with Volatile, Full_Access_Only;
for SM_EXECCTRL_Type use
record
STATUS_N at 0 range 0 .. 3;
STATUS_SEL at 0 range 4 .. 4;
Reserved_5_6 at 0 range 5 .. 6;
Wrap_Bottom at 0 range 7 .. 11;
Wrap_Top at 0 range 12 .. 16;
Out_Sticky at 0 range 17 .. 17;
Inline_Out_En at 0 range 18 .. 18;
Out_EN_SEL at 0 range 19 .. 23;
JMP_Pin at 0 range 24 .. 28;
Side_Pindir at 0 range 29 .. 29;
Side_EN at 0 range 30 .. 30;
EXEC_Stalled at 0 range 31 .. 31;
end record;
type Array_SM_EXECCTRL is array (Natural range <>) of SM_EXECCTRL_Type
with Component_Size => 32;
type PIO_Type is
record
CTRL : CTRL_Type;
FSTAT : FSTAT_Type;
FDEBUG : FDEBUG_Type;
FLEVEL : FLEVEL_Type;
TXF : Array_Bit_32 (0 .. 3);
RXF : Array_Bit_32 (0 .. 3);
IRQ : IRQ_Type;
IRQ_Force : IRQ_Type;
Input_Sync_Bypass : Array_Bit_1 (0 .. 31)
with Volatile, Full_Access_Only;
DBG_PADOUT : Array_Bit_1 (0 .. 31)
with Volatile, Full_Access_Only;
DBG_PADOE : Array_Bit_1 (0 .. 31)
with Volatile, Full_Access_Only;
DBG_CFGINFO : DBG_CFGINFO_Type;
INSTR_MEM : Array_INSTR_MEM (0 .. 31);
SM_CLKDIV : Array_SM_CLKDIV (0 .. 3);
SM_EXECCTRL : Array_SM_EXECCTRL (0 .. 3);
end record;
PIO_0 : PIO_Type
with Volatile, Address => PIO_0_Base;
PIO_1 : PIO_Type
with Volatile, Address => PIO_1_Base;
end Interfaces.RP2040.PIO;