hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv Cov: 100%
1: // Copyright lowRISC contributors.
2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3: // SPDX-License-Identifier: Apache-2.0
4: //
5: // Register Package auto-generated by `reggen` containing data structure
6:
7: package pinmux_reg_pkg;
8:
9: // Param list
10: localparam int NPeriphIn = 32;
11: localparam int NPeriphOut = 32;
12: localparam int NMioPads = 32;
13:
14: ////////////////////////////
15: // Typedefs for registers //
16: ////////////////////////////
17: typedef struct packed {
18: logic [5:0] q;
19: } pinmux_reg2hw_periph_insel_mreg_t;
20:
21: typedef struct packed {
22: logic [5:0] q;
23: } pinmux_reg2hw_mio_outsel_mreg_t;
24:
25:
26:
27: ///////////////////////////////////////
28: // Register to internal design logic //
29: ///////////////////////////////////////
30: typedef struct packed {
31: pinmux_reg2hw_periph_insel_mreg_t [31:0] periph_insel; // [383:192]
32: pinmux_reg2hw_mio_outsel_mreg_t [31:0] mio_outsel; // [191:0]
33: } pinmux_reg2hw_t;
34:
35: ///////////////////////////////////////
36: // Internal design logic to register //
37: ///////////////////////////////////////
38:
39: // Register Address
40: parameter PINMUX_REGEN_OFFSET = 6'h 0;
41: parameter PINMUX_PERIPH_INSEL0_OFFSET = 6'h 4;
42: parameter PINMUX_PERIPH_INSEL1_OFFSET = 6'h 8;
43: parameter PINMUX_PERIPH_INSEL2_OFFSET = 6'h c;
44: parameter PINMUX_PERIPH_INSEL3_OFFSET = 6'h 10;
45: parameter PINMUX_PERIPH_INSEL4_OFFSET = 6'h 14;
46: parameter PINMUX_PERIPH_INSEL5_OFFSET = 6'h 18;
47: parameter PINMUX_PERIPH_INSEL6_OFFSET = 6'h 1c;
48: parameter PINMUX_MIO_OUTSEL0_OFFSET = 6'h 20;
49: parameter PINMUX_MIO_OUTSEL1_OFFSET = 6'h 24;
50: parameter PINMUX_MIO_OUTSEL2_OFFSET = 6'h 28;
51: parameter PINMUX_MIO_OUTSEL3_OFFSET = 6'h 2c;
52: parameter PINMUX_MIO_OUTSEL4_OFFSET = 6'h 30;
53: parameter PINMUX_MIO_OUTSEL5_OFFSET = 6'h 34;
54: parameter PINMUX_MIO_OUTSEL6_OFFSET = 6'h 38;
55:
56:
57: // Register Index
58: typedef enum int {
59: PINMUX_REGEN,
60: PINMUX_PERIPH_INSEL0,
61: PINMUX_PERIPH_INSEL1,
62: PINMUX_PERIPH_INSEL2,
63: PINMUX_PERIPH_INSEL3,
64: PINMUX_PERIPH_INSEL4,
65: PINMUX_PERIPH_INSEL5,
66: PINMUX_PERIPH_INSEL6,
67: PINMUX_MIO_OUTSEL0,
68: PINMUX_MIO_OUTSEL1,
69: PINMUX_MIO_OUTSEL2,
70: PINMUX_MIO_OUTSEL3,
71: PINMUX_MIO_OUTSEL4,
72: PINMUX_MIO_OUTSEL5,
73: PINMUX_MIO_OUTSEL6
74: } pinmux_id_e;
75:
76: // Register width information to check illegal writes
77: localparam logic [3:0] PINMUX_PERMIT [15] = '{
78: 4'b 0001, // index[ 0] PINMUX_REGEN
79: 4'b 1111, // index[ 1] PINMUX_PERIPH_INSEL0
80: 4'b 1111, // index[ 2] PINMUX_PERIPH_INSEL1
81: 4'b 1111, // index[ 3] PINMUX_PERIPH_INSEL2
82: 4'b 1111, // index[ 4] PINMUX_PERIPH_INSEL3
83: 4'b 1111, // index[ 5] PINMUX_PERIPH_INSEL4
84: 4'b 1111, // index[ 6] PINMUX_PERIPH_INSEL5
85: 4'b 0011, // index[ 7] PINMUX_PERIPH_INSEL6
86: 4'b 1111, // index[ 8] PINMUX_MIO_OUTSEL0
87: 4'b 1111, // index[ 9] PINMUX_MIO_OUTSEL1
88: 4'b 1111, // index[10] PINMUX_MIO_OUTSEL2
89: 4'b 1111, // index[11] PINMUX_MIO_OUTSEL3
90: 4'b 1111, // index[12] PINMUX_MIO_OUTSEL4
91: 4'b 1111, // index[13] PINMUX_MIO_OUTSEL5
92: 4'b 0011 // index[14] PINMUX_MIO_OUTSEL6
93: };
94: endpackage
95:
96: