Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
9eed56e8
Commit
9eed56e8
authored
Jul 16, 2020
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Jul 16, 2020
Browse files
Merge "stm32mp1: allow non-secure access to reset upon periph registration" into integration
parents
d88e485f
b2707a69
Changes
1
Hide whitespace changes
Inline
Side-by-side
plat/st/stm32mp1/stm32mp1_shared_resources.c
View file @
9eed56e8
...
...
@@ -233,6 +233,26 @@ void stm32mp_register_non_secure_periph(enum stm32mp_shres id)
register_periph
(
id
,
SHRES_NON_SECURE
);
}
static
bool
stm32mp_gpio_bank_is_non_secure
(
unsigned
int
bank
)
{
unsigned
int
non_secure
=
0U
;
unsigned
int
i
;
lock_registering
();
if
(
bank
!=
GPIO_BANK_Z
)
{
return
true
;
}
for
(
i
=
0U
;
i
<
get_gpioz_nbpin
();
i
++
)
{
if
(
periph_is_non_secure
(
STM32MP1_SHRES_GPIOZ
(
i
)))
{
non_secure
++
;
}
}
return
non_secure
==
get_gpioz_nbpin
();
}
static
bool
stm32mp_gpio_bank_is_secure
(
unsigned
int
bank
)
{
unsigned
int
secure
=
0U
;
...
...
@@ -312,10 +332,46 @@ bool stm32mp_nsec_can_access_clock(unsigned long clock_id)
return
periph_is_non_secure
(
shres_id
);
}
/* Currently allow full access by non-secure to platform reset services */
bool
stm32mp_nsec_can_access_reset
(
unsigned
int
reset_id
)
{
return
true
;
enum
stm32mp_shres
shres_id
=
STM32MP1_SHRES_COUNT
;
switch
(
reset_id
)
{
case
CRYP1_R
:
shres_id
=
STM32MP1_SHRES_CRYP1
;
break
;
case
GPIOZ_R
:
/* GPIOZ reset mandates all pins are non-secure */
return
stm32mp_gpio_bank_is_non_secure
(
GPIO_BANK_Z
);
case
HASH1_R
:
shres_id
=
STM32MP1_SHRES_HASH1
;
break
;
case
I2C4_R
:
shres_id
=
STM32MP1_SHRES_I2C4
;
break
;
case
I2C6_R
:
shres_id
=
STM32MP1_SHRES_I2C6
;
break
;
case
MCU_R
:
shres_id
=
STM32MP1_SHRES_MCU
;
break
;
case
MDMA_R
:
shres_id
=
STM32MP1_SHRES_MDMA
;
break
;
case
RNG1_R
:
shres_id
=
STM32MP1_SHRES_RNG1
;
break
;
case
SPI6_R
:
shres_id
=
STM32MP1_SHRES_SPI6
;
break
;
case
USART1_R
:
shres_id
=
STM32MP1_SHRES_USART1
;
break
;
default:
return
false
;
}
return
periph_is_non_secure
(
shres_id
);
}
static
bool
mckprot_protects_periph
(
enum
stm32mp_shres
id
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment