@@ -140,7 +140,7 @@ endif()
140140set (WOLFTPM_INTERFACE "auto" CACHE STRING
141141 "Select interface to TPM" )
142142set_property (CACHE WOLFTPM_INTERFACE
143- PROPERTY STRINGS "auto;SWTPM;WINAPI;DEVTPM" )
143+ PROPERTY STRINGS "auto;SWTPM;WINAPI;DEVTPM;SPI;I2C;MMIO " )
144144
145145# automatically set
146146message ("INTERFACE ${WOLFTPM_INTERFACE} " )
@@ -173,12 +173,24 @@ elseif("${WOLFTPM_INTERFACE}" STREQUAL "DEVTPM")
173173elseif ("${WOLFTPM_INTERFACE} " STREQUAL "WINAPI" )
174174 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_WINAPI" )
175175 target_link_libraries (wolftpm PRIVATE tbs )
176+
177+ elseif ("${WOLFTPM_INTERFACE} " STREQUAL "SPI" )
178+ # SPI interface
179+
180+ elseif ("${WOLFTPM_INTERFACE} " STREQUAL "I2C" )
181+ # I2C interface - requires I2C (ADV_IO will be enabled automatically in ADV_IO section)
182+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_I2C" )
183+
184+ elseif ("${WOLFTPM_INTERFACE} " STREQUAL "MMIO" )
185+ # MMIO interface - requires MMIO (ADV_IO will be enabled automatically in ADV_IO section)
186+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_MMIO" )
187+
176188else ()
177189 get_property (INTERFACE_OPTS CACHE WOLFTPM_INTERFACE
178190 PROPERTY STRINGS )
179191 message (FATAL_ERROR "\" ${WOLFTPM_INTERFACE} \" is not known WOLFTPM_INTERFACE:"
180192 " ${INTERFACE_OPTS} " )
181- endif (" ${WOLFTPM_INTERFACE} " STREQUAL "SWTPM" )
193+ endif ()
182194
183195# TPM Module Selection
184196set (WOLFTPM_MODULE "auto" CACHE STRING
@@ -221,21 +233,28 @@ if(NOT WOLFTPM_WRAPPER)
221233 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM2_NO_WRAPPER" )
222234endif ()
223235
224- # I2C Support
236+ # I2C Support (for backward compatibility - use WOLFTPM_INTERFACE=I2C for new code)
225237set (WOLFTPM_I2C "no" CACHE STRING
226- "Enable I2C TPM Support (default: disabled)" )
238+ "Enable I2C TPM Support (default: disabled, use WOLFTPM_INTERFACE=I2C for new code )" )
227239set_property (CACHE WOLFTPM_I2C
228240 PROPERTY STRINGS "yes;no" )
229- if (WOLFTPM_I2C)
241+
242+ # Handle I2C option for backward compatibility
243+ # If interface is not SPI or I2C, and I2C is explicitly enabled, set interface to I2C
244+ if (WOLFTPM_I2C OR "${WOLFTPM_INTERFACE} " STREQUAL "I2C" )
245+ # Backward compatibility: if I2C is enabled and interface is not SPI/I2C, enable I2C definition
230246 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_I2C" )
247+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_ADV_IO" )
231248endif ()
232249
233- # MMIO Support
250+ # MMIO Support (deprecated - use WOLFTPM_INTERFACE=MMIO for new code)
234251set (WOLFTPM_MMIO "no" CACHE STRING
235- "Enable built-in MMIO callbacks (default: disabled )" )
252+ "Enable built-in MMIO callbacks (deprecated: use WOLFTPM_INTERFACE=MMIO for new code )" )
236253set_property (CACHE WOLFTPM_MMIO
237254 PROPERTY STRINGS "yes;no" )
238- if (WOLFTPM_MMIO)
255+ # Handle MMIO option for backward compatibility
256+ # If interface is MMIO or MMIO is explicitly enabled, set MMIO definition
257+ if (WOLFTPM_MMIO OR "${WOLFTPM_INTERFACE} " STREQUAL "MMIO" )
239258 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_MMIO" )
240259endif ()
241260
@@ -244,7 +263,10 @@ set(WOLFTPM_ADVIO "no" CACHE STRING
244263 "Enable Advanced IO (default: disabled)" )
245264set_property (CACHE WOLFTPM_ADVIO
246265 PROPERTY STRINGS "yes;no" )
247- if (WOLFTPM_ADVIO OR WOLFTPM_I2C OR WOLFTPM_MMIO)
266+ # ADV_IO is automatically enabled for I2C or MMIO interfaces
267+ if (WOLFTPM_ADVIO OR WOLFTPM_I2C OR WOLFTPM_MMIO OR
268+ "${WOLFTPM_INTERFACE} " STREQUAL "I2C" OR
269+ "${WOLFTPM_INTERFACE} " STREQUAL "MMIO" )
248270 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_ADV_IO" )
249271endif ()
250272
@@ -253,15 +275,12 @@ set(WOLFTPM_CHECK_WAIT_STATE "auto" CACHE STRING
253275 "Enable TIS / SPI Check Wait State support (default: auto - depends on chip)" )
254276set_property (CACHE WOLFTPM_CHECK_WAIT_STATE
255277 PROPERTY STRINGS "yes;no;auto" )
256- # Auto-enable for certain modules
278+ # Check wait state is required for all TPM except Infineon
257279if ("${WOLFTPM_CHECK_WAIT_STATE} " STREQUAL "auto" )
258- if ("${WOLFTPM_MODULE} " STREQUAL "auto" OR
259- "${WOLFTPM_MODULE} " STREQUAL "microchip" OR
260- "${WOLFTPM_MODULE} " STREQUAL "attpm20" OR
261- "${WOLFTPM_MODULE} " STREQUAL "mchp" OR
262- "${WOLFTPM_MODULE} " STREQUAL "st33" OR
263- "${WOLFTPM_MODULE} " STREQUAL "nuvoton" OR
264- "${WOLFTPM_MODULE} " STREQUAL "npct75x" )
280+ if (NOT "${WOLFTPM_MODULE} " STREQUAL "infineon" AND
281+ NOT "${WOLFTPM_MODULE} " STREQUAL "slb9670" AND
282+ NOT "${WOLFTPM_MODULE} " STREQUAL "slb9672" AND
283+ NOT "${WOLFTPM_MODULE} " STREQUAL "slb9673" )
265284 set (WOLFTPM_CHECK_WAIT_STATE_ENABLED ON )
266285 else ()
267286 set (WOLFTPM_CHECK_WAIT_STATE_ENABLED OFF )
@@ -305,7 +324,7 @@ set(WOLFTPM_HAL "yes" CACHE STRING
305324 "Enable example HAL interfaces (default: enabled)" )
306325set_property (CACHE WOLFTPM_HAL
307326 PROPERTY STRINGS "yes;no" )
308- if (WOLFTPM_HAL OR WOLFTPM_MMIO)
327+ if (WOLFTPM_HAL OR WOLFTPM_MMIO OR " ${WOLFTPM_INTERFACE} " STREQUAL "MMIO" )
309328 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_EXAMPLE_HAL" )
310329endif ()
311330
0 commit comments