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
"vscode:/vscode.git/clone" did not exist on "573901dd46d657c4c3d14f6e03a85f1522fb299b"
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
Show 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)
...
@@ -233,6 +233,26 @@ void stm32mp_register_non_secure_periph(enum stm32mp_shres id)
register_periph
(
id
,
SHRES_NON_SECURE
);
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
)
static
bool
stm32mp_gpio_bank_is_secure
(
unsigned
int
bank
)
{
{
unsigned
int
secure
=
0U
;
unsigned
int
secure
=
0U
;
...
@@ -312,10 +332,46 @@ bool stm32mp_nsec_can_access_clock(unsigned long clock_id)
...
@@ -312,10 +332,46 @@ bool stm32mp_nsec_can_access_clock(unsigned long clock_id)
return
periph_is_non_secure
(
shres_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
)
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
)
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