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
d88e485f
"backend/vscode:/vscode.git/clone" did not exist on "b341810e60b46d2cb9cd4fa542509e0cfa188fa4"
Commit
d88e485f
authored
Jul 16, 2020
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Jul 16, 2020
Browse files
Merge "stm32mp1: allow non-secure access to clocks upon periph registration" into integration
parents
ac6b3b28
082c7731
Changes
1
Hide whitespace changes
Inline
Side-by-side
plat/st/stm32mp1/stm32mp1_shared_resources.c
View file @
d88e485f
...
@@ -233,10 +233,83 @@ void stm32mp_register_non_secure_periph(enum stm32mp_shres id)
...
@@ -233,10 +233,83 @@ void stm32mp_register_non_secure_periph(enum stm32mp_shres id)
register_periph
(
id
,
SHRES_NON_SECURE
);
register_periph
(
id
,
SHRES_NON_SECURE
);
}
}
/* Currently allow full access by non-secure to platform clock services */
static
bool
stm32mp_gpio_bank_is_secure
(
unsigned
int
bank
)
{
unsigned
int
secure
=
0U
;
unsigned
int
i
;
lock_registering
();
if
(
bank
!=
GPIO_BANK_Z
)
{
return
false
;
}
for
(
i
=
0U
;
i
<
get_gpioz_nbpin
();
i
++
)
{
if
(
periph_is_secure
(
STM32MP1_SHRES_GPIOZ
(
i
)))
{
secure
++
;
}
}
return
secure
==
get_gpioz_nbpin
();
}
bool
stm32mp_nsec_can_access_clock
(
unsigned
long
clock_id
)
bool
stm32mp_nsec_can_access_clock
(
unsigned
long
clock_id
)
{
{
return
true
;
enum
stm32mp_shres
shres_id
=
STM32MP1_SHRES_COUNT
;
switch
(
clock_id
)
{
case
CK_CSI
:
case
CK_HSE
:
case
CK_HSE_DIV2
:
case
CK_HSI
:
case
CK_LSE
:
case
CK_LSI
:
case
PLL1_P
:
case
PLL1_Q
:
case
PLL1_R
:
case
PLL2_P
:
case
PLL2_Q
:
case
PLL2_R
:
case
PLL3_P
:
case
PLL3_Q
:
case
PLL3_R
:
case
RTCAPB
:
return
true
;
case
GPIOZ
:
/* Allow clock access if at least one pin is non-secure */
return
!
stm32mp_gpio_bank_is_secure
(
GPIO_BANK_Z
);
case
CRYP1
:
shres_id
=
STM32MP1_SHRES_CRYP1
;
break
;
case
HASH1
:
shres_id
=
STM32MP1_SHRES_HASH1
;
break
;
case
I2C4_K
:
shres_id
=
STM32MP1_SHRES_I2C4
;
break
;
case
I2C6_K
:
shres_id
=
STM32MP1_SHRES_I2C6
;
break
;
case
IWDG1
:
shres_id
=
STM32MP1_SHRES_IWDG1
;
break
;
case
RNG1_K
:
shres_id
=
STM32MP1_SHRES_RNG1
;
break
;
case
RTC
:
shres_id
=
STM32MP1_SHRES_RTC
;
break
;
case
SPI6_K
:
shres_id
=
STM32MP1_SHRES_SPI6
;
break
;
case
USART1_K
:
shres_id
=
STM32MP1_SHRES_USART1
;
break
;
default:
return
false
;
}
return
periph_is_non_secure
(
shres_id
);
}
}
/* Currently allow full access by non-secure to platform reset services */
/* Currently allow full access by non-secure to platform reset services */
...
...
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