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
1be2f666
Unverified
Commit
1be2f666
authored
Jul 12, 2018
by
Dimitris Papastamos
Committed by
GitHub
Jul 12, 2018
Browse files
Merge pull request #1464 from antonio-nino-diaz-arm/an/rpi3-ints
rpi3: Implement simple interrupt routing
parents
fa7e2e69
d35de55e
Changes
2
Hide whitespace changes
Inline
Side-by-side
docs/plat/rpi3.rst
View file @
1be2f666
...
...
@@ -243,6 +243,12 @@ The following build options are supported:
BL32_EXTRA1=tee-pager_v2.bin BL32_EXTRA2=tee-pageable_v2.bin``
to put the binaries into the FIP.
Note: If OP-TEE is used it may be needed to add the following options to the
Linux command line so that the USB driver doesn't use FIQs:
``dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0``.
This will unfortunately reduce the performance of the USB driver. It is needed
when using Raspbian, for example.
- ``TRUSTED_BOARD_BOOT``: This port supports TBB. Set this option
``TRUSTED_BOARD_BOOT=1`` to enable it. In order to use TBB, you might
want to set ``GENERATE_COT=1`` to let the contents of the FIP automatically
...
...
plat/rpi3/rpi3_common.c
View file @
1be2f666
...
...
@@ -5,6 +5,7 @@
*/
#include <arch_helpers.h>
#include <assert.h>
#include <bl_common.h>
#include <console.h>
#include <debug.h>
...
...
@@ -198,15 +199,21 @@ unsigned int plat_get_syscnt_freq2(void)
uint32_t
plat_ic_get_pending_interrupt_type
(
void
)
{
ERROR
(
"rpi3: Interrupt routed to EL3.
\n
"
);
return
INTR_TYPE_INVAL
;
}
uint32_t
plat_interrupt_type_to_line
(
uint32_t
type
,
uint32_t
security_state
)
uint32_t
plat_interrupt_type_to_line
(
uint32_t
type
,
uint32_t
security_state
)
{
/* It is not expected to receive an interrupt route to EL3.
* Hence panic() to flag error.
*/
ERROR
(
"Interrupt not expected to be routed to EL3"
);
panic
();
assert
((
type
==
INTR_TYPE_S_EL1
)
||
(
type
==
INTR_TYPE_EL3
)
||
(
type
==
INTR_TYPE_NS
));
assert
(
sec_state_is_valid
(
security_state
));
/* Non-secure interrupts are signalled on the IRQ line always. */
if
(
type
==
INTR_TYPE_NS
)
return
__builtin_ctz
(
SCR_IRQ_BIT
);
/* Secure interrupts are signalled on the FIQ line always. */
return
__builtin_ctz
(
SCR_FIQ_BIT
);
}
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