1 /* 2 * Copyright (c) 2021 Microchip Technology Inc. and its subsidiaries. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef _MEC_PECI_H 8 #define _MEC_PECI_H 9 10 #include <stdint.h> 11 #include <stddef.h> 12 13 /* Write Data register */ 14 #define MCHP_PECI_WR_DATA_REG_OFS 0u 15 #define MCHP_PECI_WR_DATA_MASK 0xffu 16 17 /* Read Data register */ 18 #define MCHP_PECI_RD_DATA_REG_OFS 4u 19 #define MCHP_PECI_RD_DATA_MASK 0xffu 20 21 /* Control register */ 22 #define MCHP_PECI_CTRL_REG_OFS 8u 23 #define MCHP_PECI_CTRL_MASK 0xe9u 24 #define MCHP_PECI_CTRL_PD_POS 0 25 #define MCHP_PECI_CTRL_PD BIT(MCHP_PECI_CTRL_PD_POS) 26 #define MCHP_PECI_CTRL_RST_POS 3 27 #define MCHP_PECI_CTRL_RST BIT(MCHP_PECI_CTRL_RST_POS) 28 #define MCHP_PECI_CTRL_FRST_POS 5 29 #define MCHP_PECI_CTRL_FRST BIT(MCHP_PECI_CTRL_FRST_POS) 30 #define MCHP_PECI_CTRL_TXEN_POS 6 31 #define MCHP_PECI_CTRL_TXEN BIT(MCHP_PECI_CTRL_TXEN_POS) 32 #define MCHP_PECI_CTRL_MIEN_POS 7 33 #define MCHP_PECI_CTRL_MIEN BIT(MCHP_PECI_CTRL_MIEN_POS) 34 35 /* Status 1 register. RW1C and read-only bits. */ 36 #define MCHP_PECI_STS1_REG_OFS 0x0cu 37 #define MCHP_PECI_STS1_MASK 0xbfu 38 #define MCHP_PECI_STS1_BOF_POS 0 39 #define MCHP_PECI_STS1_BOF BIT(MCHP_PECI_STS1_BOF_POS) 40 #define MCHP_PECI_STS1_EOF_POS 1 41 #define MCHP_PECI_STS1_EOF BIT(MCHP_PECI_STS1_EOF_POS) 42 /* Error is read-only */ 43 #define MCHP_PECI_STS1_ERR_POS 2 44 #define MCHP_PECI_STS1_ERR BIT(MCHP_PECI_STS1_ERR_POS) 45 /* Ready is read-only */ 46 #define MCHP_PECI_STS1_RDY_POS 3 47 #define MCHP_PECI_STS1_RDY BIT(MCHP_PECI_STS1_RDY_POS) 48 #define MCHP_PECI_STS1_RDYLO_POS 4 49 #define MCHP_PECI_STS1_RDYLO BIT(MCHP_PECI_STS1_RDYLO_POS) 50 #define MCHP_PECI_STS1_RDYHI_POS 5 51 #define MCHP_PECI_STS1_RDYHI BIT(MCHP_PECI_STS1_RDYHI_POS) 52 /* MINT is read-only */ 53 #define MCHP_PECI_STS1_MINT_POS 7 54 #define MCHP_PECI_STS1_MINT BIT(MCHP_PECI_STS1_MINT_POS) 55 56 /* Status 2 register. Read-only bits. */ 57 #define MCHP_PECI_STS2_REG_OFS 0x10u 58 #define MCHP_PECI_STS2_MASK 0x8fu 59 #define MCHP_PECI_STS2_WFF_POS 0 60 #define MCHP_PECI_STS2_WFF BIT(MCHP_PECI_STS2_WFF_POS) 61 #define MCHP_PECI_STS2_WFE_POS 1 62 #define MCHP_PECI_STS2_WFE BIT(MCHP_PECI_STS2_WFE_POS) 63 #define MCHP_PECI_STS2_RFF_POS 2 64 #define MCHP_PECI_STS2_RFF BIT(MCHP_PECI_STS2_RFF_POS) 65 #define MCHP_PECI_STS2_RFE_POS 3 66 #define MCHP_PECI_STS2_RFE BIT(MCHP_PECI_STS2_RFE_POS) 67 #define MCHP_PECI_STS2_IDLE_POS 7 68 #define MCHP_PECI_STS2_IDLE BIT(MCHP_PECI_STS2_IDLE_POS) 69 70 /* Error register. R/W1C bits. */ 71 #define MCHP_PECI_ERR_REG_OFS 0x14u 72 #define MCHP_PECI_ERR_MASK 0xf3u 73 #define MCHP_PECI_ERR_FERR_POS 0 74 #define MCHP_PECI_ERR_FERR BIT(MCHP_PECI_ERR_FERR_POS) 75 #define MCHP_PECI_ERR_BERR_POS 1 76 #define MCHP_PECI_ERR_BERR BIT(MCHP_PECI_ERR_BERR_POS) 77 #define MCHP_PECI_ERR_WROV_POS 4 78 #define MCHP_PECI_ERR_WROV BIT(MCHP_PECI_ERR_WROV_POS) 79 #define MCHP_PECI_ERR_WRUN_POS 5 80 #define MCHP_PECI_ERR_WRUN BIT(MCHP_PECI_ERR_WRUN_POS) 81 #define MCHP_PECI_ERR_RDOV_POS 6 82 #define MCHP_PECI_ERR_RDOV BIT(MCHP_PECI_ERR_RDOV_POS) 83 #define MCHP_PECI_ERR_CLK_POS 7 84 #define MCHP_PECI_ERR_CLK BIT(MCHP_PECI_ERR_CLK_POS) 85 86 /* Interrupt Enable 1 register. */ 87 #define MCHP_PECI_IEN1_REG_OFS 0x18u 88 #define MCHP_PECI_IEN1_MASK 0x37u 89 #define MCHP_PECI_IEN1_BIEN_POS 0 90 #define MCHP_PECI_IEN1_BIEN BIT(MCHP_PECI_IEN1_BIEN_POS) 91 #define MCHP_PECI_IEN1_EIEN_POS 1 92 #define MCHP_PECI_IEN1_EIEN BIT(MCHP_PECI_IEN1_EIEN_POS) 93 #define MCHP_PECI_IEN1_EREN_POS 2 94 #define MCHP_PECI_IEN1_EREN BIT(MCHP_PECI_IEN1_EREN_POS) 95 #define MCHP_PECI_IEN1_RLEN_POS 4 96 #define MCHP_PECI_IEN1_RLEN BIT(MCHP_PECI_IEN1_RLEN_POS) 97 #define MCHP_PECI_IEN1_RHEN_POS 5 98 #define MCHP_PECI_IEN1_RHEN BIT(MCHP_PECI_IEN1_RHEN_POS) 99 100 /* Interrupt Enable 2 register. */ 101 #define MCHP_PECI_IEN2_REG_OFS 0x1cu 102 #define MCHP_PECI_IEN2_MASK 0x06u 103 #define MCHP_PECI_IEN2_ENWFE_POS 1 104 #define MCHP_PECI_IEN2_ENWFE BIT(MCHP_PECI_IEN2_ENWFE_POS) 105 #define MCHP_PECI_IEN2_ENRFF_POS 2 106 #define MCHP_PECI_IEN2_ENRFF BIT(MCHP_PECI_IEN2_ENRFF_POS) 107 108 /* Optimal Bit Time LSB register. */ 109 #define MCHP_PECI_OPT_BT_LSB_REG_OFS 0x20u 110 #define MCHP_PECI_OPT_BT_LSB_MASK 0xffu 111 112 /* Optimal Bit Time MSB register. */ 113 #define MCHP_PECI_OPT_BT_MSB_REG_OFS 0x24u 114 #define MCHP_PECI_OPT_BT_MSB_MASK 0xffu 115 116 /** @brief PECI controller. Size = 76(0x4c) */ 117 struct peci_regs { 118 volatile uint8_t WR_DATA; 119 uint8_t RSVD1[3]; 120 volatile uint8_t RD_DATA; 121 uint8_t RSVD2[3]; 122 volatile uint8_t CONTROL; 123 uint8_t RSVD3[3]; 124 volatile uint8_t STATUS1; 125 uint8_t RSVD4[3]; 126 volatile uint8_t STATUS2; 127 uint8_t RSVD5[3]; 128 volatile uint8_t ERROR; 129 uint8_t RSVD6[3]; 130 volatile uint8_t INT_EN1; 131 uint8_t RSVD7[3]; 132 volatile uint8_t INT_EN2; 133 uint8_t RSVD8[3]; 134 volatile uint8_t OPT_BIT_TIME_LSB; 135 uint8_t RSVD9[3]; 136 volatile uint8_t OPT_BIT_TIME_MSB; 137 uint8_t RSVD10[3]; 138 volatile uint8_t REQ_TMR_LSB; 139 uint8_t RSVD11[3]; 140 volatile uint8_t REQ_TMR_MSB; 141 uint8_t RSVD12[3]; 142 volatile uint8_t BAUD_CTRL; 143 uint8_t RSVD13[3]; 144 uint32_t RSVD14[3]; 145 volatile uint8_t BLK_ID; 146 uint8_t RSVD15[3]; 147 volatile uint8_t BLK_REV; 148 uint8_t RSVD16[3]; 149 volatile uint8_t SST_CTL1; 150 uint8_t RSVD17[3]; 151 }; 152 153 #endif /* #ifndef _MEC_PECI_H */ 154