1 /* 2 * Copyright (c) 2021 Nuvoton Technology Corporation. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #include <zephyr/device.h> 8 #include <soc.h> 9 10 /* CDCG register structure check */ 11 NPCX_REG_SIZE_CHECK(cdcg_reg, 0x116); 12 NPCX_REG_OFFSET_CHECK(cdcg_reg, HFCBCD, 0x010); 13 NPCX_REG_OFFSET_CHECK(cdcg_reg, HFCBCD2, 0x014); 14 NPCX_REG_OFFSET_CHECK(cdcg_reg, LFCGCTL, 0x100); 15 NPCX_REG_OFFSET_CHECK(cdcg_reg, LFCGCTL2, 0x114); 16 17 /* PMC register structure check */ 18 NPCX_REG_SIZE_CHECK(pmc_reg, 0x025); 19 NPCX_REG_OFFSET_CHECK(pmc_reg, ENIDL_CTL, 0x003); 20 NPCX_REG_OFFSET_CHECK(pmc_reg, PWDWN_CTL1, 0x008); 21 NPCX_REG_OFFSET_CHECK(pmc_reg, PWDWN_CTL7, 0x024); 22 23 /* SCFG register structure check */ 24 NPCX_REG_SIZE_CHECK(scfg_reg, 0x02f); 25 NPCX_REG_OFFSET_CHECK(scfg_reg, DEV_CTL4, 0x006); 26 NPCX_REG_OFFSET_CHECK(scfg_reg, DEVALT0, 0x010); 27 NPCX_REG_OFFSET_CHECK(scfg_reg, LV_GPIO_CTL0, 0x02a); 28 29 /* GLUE register structure check */ 30 NPCX_REG_SIZE_CHECK(glue_reg, 0x028); 31 NPCX_REG_OFFSET_CHECK(glue_reg, SMB_EEN, 0x003); 32 NPCX_REG_OFFSET_CHECK(glue_reg, SDPD0, 0x010); 33 NPCX_REG_OFFSET_CHECK(glue_reg, SMB_SEL, 0x021); 34 NPCX_REG_OFFSET_CHECK(glue_reg, PSL_CTS, 0x027); 35 36 /* UART register structure check */ 37 NPCX_REG_SIZE_CHECK(uart_reg, 0x027); 38 NPCX_REG_OFFSET_CHECK(uart_reg, UPSR, 0x00e); 39 NPCX_REG_OFFSET_CHECK(uart_reg, UFTSTS, 0x020); 40 NPCX_REG_OFFSET_CHECK(uart_reg, UFRCTL, 0x026); 41 42 /* GPIO register structure check */ 43 NPCX_REG_SIZE_CHECK(gpio_reg, 0x008); 44 NPCX_REG_OFFSET_CHECK(gpio_reg, PLOCK_CTL, 0x007); 45 46 /* PWM register structure check */ 47 NPCX_REG_SIZE_CHECK(pwm_reg, 0x00e); 48 NPCX_REG_OFFSET_CHECK(pwm_reg, PWMCTL, 0x004); 49 NPCX_REG_OFFSET_CHECK(pwm_reg, DCR, 0x006); 50 NPCX_REG_OFFSET_CHECK(pwm_reg, PWMCTLEX, 0x00c); 51 52 /* ADC register structure check */ 53 NPCX_REG_SIZE_CHECK(adc_reg, 0x028); 54 NPCX_REG_OFFSET_CHECK(adc_reg, THRCTS, 0x01a); 55 NPCX_REG_OFFSET_CHECK(adc_reg, ADCCNF2, 0x020); 56 NPCX_REG_OFFSET_CHECK(adc_reg, MEAST, 0x026); 57 58 /* TWD register structure check */ 59 NPCX_REG_SIZE_CHECK(twd_reg, 0x012); 60 NPCX_REG_OFFSET_CHECK(twd_reg, T0CSR, 0x006); 61 NPCX_REG_OFFSET_CHECK(twd_reg, TWMWD, 0x00e); 62 NPCX_REG_OFFSET_CHECK(twd_reg, WDCP, 0x010); 63 64 /* ESPI register structure check */ 65 NPCX_REG_SIZE_CHECK(espi_reg, 0x900); 66 NPCX_REG_OFFSET_CHECK(espi_reg, FLASHCFG, 0x034); 67 NPCX_REG_OFFSET_CHECK(espi_reg, NPCX_ONLY_ESPI_REG1, 0x0f0); 68 NPCX_REG_OFFSET_CHECK(espi_reg, VWEVMS, 0x140); 69 NPCX_REG_OFFSET_CHECK(espi_reg, VWGPSM, 0x180); 70 NPCX_REG_OFFSET_CHECK(espi_reg, VWCTL, 0x2fc); 71 NPCX_REG_OFFSET_CHECK(espi_reg, OOBTXBUF, 0x380); 72 NPCX_REG_OFFSET_CHECK(espi_reg, OOBCTL_DIRECT, 0x3fc); 73 NPCX_REG_OFFSET_CHECK(espi_reg, FLASHTXBUF, 0x480); 74 NPCX_REG_OFFSET_CHECK(espi_reg, FLASHCTL_DIRECT, 0x4fc); 75 76 /* MSWC register structure check */ 77 NPCX_REG_SIZE_CHECK(mswc_reg, 0x030); 78 NPCX_REG_OFFSET_CHECK(mswc_reg, HCBAL, 0x008); 79 NPCX_REG_OFFSET_CHECK(mswc_reg, HCBAH, 0x00a); 80 NPCX_REG_OFFSET_CHECK(mswc_reg, SRID_CR, 0x01c); 81 NPCX_REG_OFFSET_CHECK(mswc_reg, SID_CR, 0x020); 82 NPCX_REG_OFFSET_CHECK(mswc_reg, VW_SLPST1, 0x02e); 83 84 /* SHM register structure check */ 85 NPCX_REG_SIZE_CHECK(shm_reg, 0x050); 86 NPCX_REG_OFFSET_CHECK(shm_reg, IMA_WIN_SIZE, 0x005); 87 NPCX_REG_OFFSET_CHECK(shm_reg, WIN_SIZE, 0x007); 88 NPCX_REG_OFFSET_CHECK(shm_reg, IMA_SEM, 0x00b); 89 NPCX_REG_OFFSET_CHECK(shm_reg, SHCFG, 0x00e); 90 NPCX_REG_OFFSET_CHECK(shm_reg, WIN1_WR_PROT, 0x010); 91 NPCX_REG_OFFSET_CHECK(shm_reg, IMA_WR_PROT, 0x016); 92 NPCX_REG_OFFSET_CHECK(shm_reg, WIN_BASE1, 0x020); 93 NPCX_REG_OFFSET_CHECK(shm_reg, WIN_BASE2, 0x024); 94 NPCX_REG_OFFSET_CHECK(shm_reg, RST_CFG, 0x03a); 95 NPCX_REG_OFFSET_CHECK(shm_reg, DP80BUF, 0x040); 96 NPCX_REG_OFFSET_CHECK(shm_reg, DP80CTL, 0x044); 97 NPCX_REG_OFFSET_CHECK(shm_reg, HOFS_STS, 0x048); 98 NPCX_REG_OFFSET_CHECK(shm_reg, COFS1, 0x04c); 99 100 /* KBC register structure check */ 101 NPCX_REG_SIZE_CHECK(kbc_reg, 0x00c); 102 NPCX_REG_OFFSET_CHECK(kbc_reg, HIKMDI, 0x00a); 103 NPCX_REG_OFFSET_CHECK(kbc_reg, SHIKMDI, 0x00b); 104 105 /* PMCH register structure check */ 106 NPCX_REG_SIZE_CHECK(pmch_reg, 0x012); 107 NPCX_REG_OFFSET_CHECK(pmch_reg, HIPMDO, 0x002); 108 NPCX_REG_OFFSET_CHECK(pmch_reg, HIPMDOC, 0x006); 109 NPCX_REG_OFFSET_CHECK(pmch_reg, HIPMDOM, 0x008); 110 NPCX_REG_OFFSET_CHECK(pmch_reg, HIPMDIC, 0x00a); 111 NPCX_REG_OFFSET_CHECK(pmch_reg, HIPMIE, 0x010); 112 113 /* C2H register structure check */ 114 NPCX_REG_SIZE_CHECK(c2h_reg, 0x00c); 115 NPCX_REG_OFFSET_CHECK(c2h_reg, LKSIOHA, 0x004); 116 NPCX_REG_OFFSET_CHECK(c2h_reg, CRSMAE, 0x008); 117 NPCX_REG_OFFSET_CHECK(c2h_reg, SIBCTRL, 0x00a); 118 119 /* SMB register structure check */ 120 NPCX_REG_SIZE_CHECK(smb_reg, 0x020); 121 NPCX_REG_OFFSET_CHECK(smb_reg, SMBCTL1, 0x006); 122 NPCX_REG_OFFSET_CHECK(smb_reg, SMBT_OUT, 0x00f); 123 NPCX_REG_OFFSET_CHECK(smb_reg, SMBADDR6, 0x016); 124 NPCX_REG_OFFSET_CHECK(smb_reg, SMBCST2, 0x018); 125 NPCX_REG_OFFSET_CHECK(smb_reg, SMBTXF_STS, 0x01a); 126 NPCX_REG_OFFSET_CHECK(smb_reg, SMBSCLHT, 0x01e); 127 NPCX_REG_OFFSET_CHECK(smb_reg, SMBRXF_CTL, 0x01e); 128 129 /* ITIM register structure check */ 130 NPCX_REG_SIZE_CHECK(itim32_reg, 0x00c); 131 NPCX_REG_OFFSET_CHECK(itim32_reg, ITPRE32, 0x001); 132 NPCX_REG_OFFSET_CHECK(itim32_reg, ITCTS32, 0x004); 133 NPCX_REG_OFFSET_CHECK(itim32_reg, ITCNT32, 0x008); 134 135 NPCX_REG_SIZE_CHECK(itim64_reg, 0x010); 136 NPCX_REG_OFFSET_CHECK(itim64_reg, ITPRE64, 0x001); 137 NPCX_REG_OFFSET_CHECK(itim64_reg, ITCTS64, 0x004); 138 NPCX_REG_OFFSET_CHECK(itim64_reg, ITCNT64L, 0x008); 139 NPCX_REG_OFFSET_CHECK(itim64_reg, ITCNT64H, 0x00c); 140 141 /* TACH register structure check */ 142 NPCX_REG_SIZE_CHECK(tach_reg, 0x01e); 143 NPCX_REG_OFFSET_CHECK(tach_reg, TPRSC, 0x008); 144 NPCX_REG_OFFSET_CHECK(tach_reg, TECLR, 0x010); 145 NPCX_REG_OFFSET_CHECK(tach_reg, TCPA, 0x014); 146 NPCX_REG_OFFSET_CHECK(tach_reg, TCPCFG, 0x018); 147 NPCX_REG_OFFSET_CHECK(tach_reg, TCFG, 0x01c); 148 149 /* Debug Interface register structure check */ 150 NPCX_REG_SIZE_CHECK(dbg_reg, 0x06); 151 NPCX_REG_OFFSET_CHECK(dbg_reg, DBGCTRL, 0x000); 152 NPCX_REG_OFFSET_CHECK(dbg_reg, DBGFRZEN2, 0x003); 153 NPCX_REG_OFFSET_CHECK(dbg_reg, DBGFRZEN4, 0x005); 154 155 /* PS/2 Interface register structure check */ 156 NPCX_REG_SIZE_CHECK(ps2_reg, 0x00c); 157 NPCX_REG_OFFSET_CHECK(ps2_reg, PSDAT, 0x000); 158 NPCX_REG_OFFSET_CHECK(ps2_reg, PSTAT, 0x002); 159 NPCX_REG_OFFSET_CHECK(ps2_reg, PSCON, 0x004); 160 NPCX_REG_OFFSET_CHECK(ps2_reg, PSOSIG, 0x006); 161 NPCX_REG_OFFSET_CHECK(ps2_reg, PSISIG, 0x008); 162 NPCX_REG_OFFSET_CHECK(ps2_reg, PSIEN, 0x00a); 163 164 /* FIU register structure check */ 165 #if defined(CONFIG_SOC_SERIES_NPCX9) || defined(CONFIG_SOC_SERIES_NPCX4) 166 NPCX_REG_SIZE_CHECK(fiu_reg, 0x040); 167 #else 168 NPCX_REG_SIZE_CHECK(fiu_reg, 0x034); 169 #endif 170 NPCX_REG_OFFSET_CHECK(fiu_reg, BURST_CFG, 0x001); 171 NPCX_REG_OFFSET_CHECK(fiu_reg, SPI_FL_CFG, 0x014); 172 NPCX_REG_OFFSET_CHECK(fiu_reg, UMA_CTS, 0x01e); 173 NPCX_REG_OFFSET_CHECK(fiu_reg, CRCCON, 0x026); 174 NPCX_REG_OFFSET_CHECK(fiu_reg, FIU_RD_CMD, 0x030); 175 NPCX_REG_OFFSET_CHECK(fiu_reg, FIU_EXT_CFG, 0x033); 176 177 /* PECI register structure check */ 178 NPCX_REG_SIZE_CHECK(peci_reg, 0x050); 179 NPCX_REG_OFFSET_CHECK(peci_reg, PECI_ADDR, 0x002); 180 NPCX_REG_OFFSET_CHECK(peci_reg, PECI_WR_LENGTH, 0x007); 181 NPCX_REG_OFFSET_CHECK(peci_reg, PECI_WR_FCS, 0x00b); 182 183 /* KBS register structure check */ 184 NPCX_REG_SIZE_CHECK(kbs_reg, 0x010); 185 NPCX_REG_OFFSET_CHECK(kbs_reg, KBSIN, 0x004); 186 NPCX_REG_OFFSET_CHECK(kbs_reg, KBSOUT0, 0x006); 187 NPCX_REG_OFFSET_CHECK(kbs_reg, KBS_BUF_INDX, 0x00a); 188 189 /* SPIP register structure check */ 190 NPCX_REG_SIZE_CHECK(spip_reg, 0x006); 191 NPCX_REG_OFFSET_CHECK(spip_reg, SPIP_CTL1, 0x002); 192 193 /* SWRST register structure check */ 194 NPCX_REG_SIZE_CHECK(swrst_reg, 0x014); 195 NPCX_REG_OFFSET_CHECK(swrst_reg, SWRST_TRG, 0x000); 196 NPCX_REG_OFFSET_CHECK(swrst_reg, SWRST_CTL[0], 0x004); 197 NPCX_REG_OFFSET_CHECK(swrst_reg, SWRST_CTL[1], 0x008); 198 NPCX_REG_OFFSET_CHECK(swrst_reg, SWRST_CTL[2], 0x00c); 199 NPCX_REG_OFFSET_CHECK(swrst_reg, SWRST_CTL[3], 0x010); 200 201 /* I3C register structure check */ 202 NPCX_REG_SIZE_CHECK(i3c_reg, 0x148); 203 NPCX_REG_OFFSET_CHECK(i3c_reg, MCONFIG, 0x000); /* Controller register */ 204 NPCX_REG_OFFSET_CHECK(i3c_reg, MCTRL, 0x084); 205 NPCX_REG_OFFSET_CHECK(i3c_reg, IBIRULES, 0x08C); 206 NPCX_REG_OFFSET_CHECK(i3c_reg, MINTSET, 0x090); 207 NPCX_REG_OFFSET_CHECK(i3c_reg, MINTCLR, 0x094); 208 NPCX_REG_OFFSET_CHECK(i3c_reg, MINTMASKED, 0x098); 209 NPCX_REG_OFFSET_CHECK(i3c_reg, MERRWARN, 0x09C); 210 NPCX_REG_OFFSET_CHECK(i3c_reg, MDATACTRL, 0x0AC); 211 NPCX_REG_OFFSET_CHECK(i3c_reg, MWDATAB, 0x0B0); 212 NPCX_REG_OFFSET_CHECK(i3c_reg, MWDATABE, 0x0B4); 213 NPCX_REG_OFFSET_CHECK(i3c_reg, MWDATAH, 0x0B8); 214 NPCX_REG_OFFSET_CHECK(i3c_reg, MWDATAHE, 0x0BC); 215 NPCX_REG_OFFSET_CHECK(i3c_reg, MRDATAB, 0x0C0); 216 NPCX_REG_OFFSET_CHECK(i3c_reg, MRDATAH, 0x0C8); 217 NPCX_REG_OFFSET_CHECK(i3c_reg, MWMSG_DDR, 0x0D8); 218 NPCX_REG_OFFSET_CHECK(i3c_reg, MRMSG_DDR, 0x0DC); 219 NPCX_REG_OFFSET_CHECK(i3c_reg, MDYNADDR, 0x0E4); 220 NPCX_REG_OFFSET_CHECK(i3c_reg, CONFIG, 0x004); /* Target register */ 221 NPCX_REG_OFFSET_CHECK(i3c_reg, STATUS, 0x008); 222 NPCX_REG_OFFSET_CHECK(i3c_reg, CTRL, 0x00C); 223 NPCX_REG_OFFSET_CHECK(i3c_reg, INTSET, 0x010); 224 NPCX_REG_OFFSET_CHECK(i3c_reg, INTCLR, 0x014); 225 NPCX_REG_OFFSET_CHECK(i3c_reg, INTMASKED, 0x018); 226 NPCX_REG_OFFSET_CHECK(i3c_reg, ERRWARN, 0x01C); 227 NPCX_REG_OFFSET_CHECK(i3c_reg, DMACTRL, 0x020); 228 NPCX_REG_OFFSET_CHECK(i3c_reg, DATACTRL, 0x02C); 229 NPCX_REG_OFFSET_CHECK(i3c_reg, IBIEXT2, 0x144); 230 231 /* MDMA register structure check */ 232 NPCX_REG_SIZE_CHECK(mdma_reg, 0x03C); 233 NPCX_REG_OFFSET_CHECK(mdma_reg, MDMA_SRCB0, 0x004); 234 NPCX_REG_OFFSET_CHECK(mdma_reg, MDMA_CTCNT0, 0x018); 235 NPCX_REG_OFFSET_CHECK(mdma_reg, MDMA_CTL1, 0x020); 236 NPCX_REG_OFFSET_CHECK(mdma_reg, MDMA_CTCNT1, 0x038); 237