mirror of https://github.com/wolfSSL/wolfTPM.git
Fixes for SPI CS auto-detection on Infineon SLB9670. I was able to reproduce issue on Pi 3b+. First run detects on `/dev/spidev0.1` then finds on `/dev/spidev0.0` afterwards (odd).
parent
6d46b26bde
commit
ee3dc75d3e
|
@ -262,20 +262,24 @@
|
||||||
#ifdef WOLFTPM_DEBUG_TIMEOUT
|
#ifdef WOLFTPM_DEBUG_TIMEOUT
|
||||||
printf("SPI Ready Timeout %d\n", TPM_SPI_WAIT_RETRY - timeout);
|
printf("SPI Ready Timeout %d\n", TPM_SPI_WAIT_RETRY - timeout);
|
||||||
#endif
|
#endif
|
||||||
if (size != 1 || timeout <= 0) {
|
if (size == 1 && timeout > 0) {
|
||||||
close(spiDev);
|
ret = TPM_RC_SUCCESS;
|
||||||
return TPM_RC_FAILURE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
/* Remainder of message */
|
|
||||||
spi.tx_buf = (unsigned long)&txBuf[TPM_TIS_HEADER_SZ];
|
|
||||||
spi.rx_buf = (unsigned long)&rxBuf[TPM_TIS_HEADER_SZ];
|
|
||||||
spi.len = xferSz - TPM_TIS_HEADER_SZ;
|
|
||||||
size = ioctl(spiDev, SPI_IOC_MESSAGE(1), &spi);
|
|
||||||
|
|
||||||
if (size == (size_t)xferSz - TPM_TIS_HEADER_SZ)
|
|
||||||
ret = TPM_RC_SUCCESS;
|
ret = TPM_RC_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == TPM_RC_SUCCESS) {
|
||||||
|
/* Remainder of message */
|
||||||
|
spi.tx_buf = (unsigned long)&txBuf[TPM_TIS_HEADER_SZ];
|
||||||
|
spi.rx_buf = (unsigned long)&rxBuf[TPM_TIS_HEADER_SZ];
|
||||||
|
spi.len = xferSz - TPM_TIS_HEADER_SZ;
|
||||||
|
size = ioctl(spiDev, SPI_IOC_MESSAGE(1), &spi);
|
||||||
|
|
||||||
|
if (size == (size_t)xferSz - TPM_TIS_HEADER_SZ)
|
||||||
|
ret = TPM_RC_SUCCESS;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
/* Send Entire Message - no wait states */
|
/* Send Entire Message - no wait states */
|
||||||
spi.tx_buf = (unsigned long)txBuf;
|
spi.tx_buf = (unsigned long)txBuf;
|
||||||
|
@ -292,7 +296,7 @@
|
||||||
#ifdef WOLFTPM_AUTODETECT
|
#ifdef WOLFTPM_AUTODETECT
|
||||||
/* if response is not 0xFF then we "found" something */
|
/* if response is not 0xFF then we "found" something */
|
||||||
if (!foundSpiDev) {
|
if (!foundSpiDev) {
|
||||||
if (rxBuf[0] != 0xFF) {
|
if (ret == TPM_RC_SUCCESS && rxBuf[0] != 0xFF) {
|
||||||
#ifdef DEBUG_WOLFTPM
|
#ifdef DEBUG_WOLFTPM
|
||||||
printf("Found TPM @ %s\n", TPM2_SPI_DEV);
|
printf("Found TPM @ %s\n", TPM2_SPI_DEV);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue