Skip to main content
AGamb.4
Associate II
April 6, 2022
Solved

Error in stm32_tamp.c driver

  • April 6, 2022
  • 3 replies
  • 1164 views

Hello,

I just wanted to let you know there is an error in the tamper driver written for Tamper configuration in TF-A fork repository.

When enabling an external tamper in passive mode, the configuration is writting the passive mode in the wrong register, disabling the external tamper. This should be written in the atcr1 register but it is being written in the cr1 register.

if ((tamp_ext->mode & TAMP_ACTIVE) == TAMP_ACTIVE)

{

SETBITS(*cr1atcr1, _TAMP_ATCR1_ETAMPAM(id));

}

else

{

CLRBITS(*cr1atcr1, _TAMP_ATCR1_ETAMPAM(id));

}

PS: I am not sure this is the right place to put this kind of messages, where should I contact you if I find any other error/bug?

Best regards

This topic has been closed for replies.
Best answer by Bernard PUEL

Correction will be included in next releases onwards (v3.1.1, w23 and V4.0.0, w25).

Thanks again for your contribution.

3 replies

AGamb.4
AGamb.4Author
Associate II
April 6, 2022

In the same driver I saw something that I do not understand and might be wrong too.

When the masking configuration is being set for the external tampers both branches TAMP_EVT_MASK mode active and not active are applying the same configuration (see code below). I think the correct code might be as follows:

if (id < _TAMP_CR2_ETAMPMSK_MAX_ID) {

/*

* Only external TAMP 1, 2 and 3 can be masked

*/

if ((tamp_ext->mode & TAMP_EVT_MASK) == TAMP_EVT_MASK) {

/*

* ETAMP(id) event generates a trigger event. This ETAMP(id) is masked

* and internally cleared by hardware. The backup registers are not erased.

*/

CLRBITS(*ier, _TAMP_IER_ETAMP(id));

CLRBITSSETBITS(*cr2, _TAMP_CR2_ETAMPMSK(id));

} else {

/*

* normal ETAMP interrupt:

* ETAMP(id) event generates a trigger event and TAMP(id)F must be cleared

* by software to * allow next tamper event detection.

*/

CLRBITS(*cr2, _TAMP_CR2_ETAMPMSK(id));

CLRBITSSETBITS(*ier, _TAMP_IER_ETAMP(id));

}

} else {

/* other than 1,2,3 external TAMP, we want its interruption */ Wrong comment?

CLRBITS(*ier, _TAMP_IER_ETAMP(id)); This is disabling the interrupt, correct?

}

Best regards

Bernard PUEL
ST Technical Moderator
April 21, 2022

Thanks for your contribution. We (ST) are looking at it.

To contribute, you can also use a pull request directly in Github (after validation of the CLA).

Bernard PUEL
Bernard PUELBest answer
ST Technical Moderator
April 22, 2022

Correction will be included in next releases onwards (v3.1.1, w23 and V4.0.0, w25).

Thanks again for your contribution.