summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2021-09-23 22:28:52 +0000
committerCommit Bot <commit-bot@chromium.org>2021-09-27 22:23:36 +0000
commitdcd24535cf751fcdaa7c5f025c2e54705e4053f3 (patch)
tree0e79b571406664ce43d3136353fcb78c52baa6ea
parent0c596a170a880579cef9c5beacaa1679a23c5cf2 (diff)
downloadchrome-ec-dcd24535cf751fcdaa7c5f025c2e54705e4053f3.tar.gz
chip/mt_scp: Declaration needs to come before definition
We are already disabling -Wignored-attributes to work around the declaration and definition order issue: error: attribute declaration must precede definition [-Werror,-Wignored-attributes] However, although there are no compiler errors, the linker (lld) will still fail: ld.lld: error: undefined symbol: clock_control_irq >>> referenced by clock.c:347 (src/platform/ec/chip/mt_scp/mt8183/clock.c:347) >>> lto.tmp:(irq_13_handler) ... ld.lld: error: undefined symbol: clock_fast_wakeup_irq >>> referenced by clock.c:355 (src/platform/ec/chip/mt_scp/mt8183/clock.c:355) >>> lto.tmp:(irq_44_handler) Tested with the compare_build.sh script to validate that the resulting binaries are identical. BRANCH=none BUG=b:172020503 TEST=CC=arm-none-eabi-clang make BOARD=kukui_scp -j TEST=./util/compare_build.sh --boards all -j 50 Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: Ib622fb98784a4c3ad3c199c72ee7604c7f709d6c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3182621 Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r--chip/mt_scp/mt8183/clock.c4
-rw-r--r--chip/mt_scp/mt8183/hrtimer.c4
-rw-r--r--chip/mt_scp/mt8183/ipi.c2
-rw-r--r--chip/mt_scp/mt8183/uart.c4
4 files changed, 7 insertions, 7 deletions
diff --git a/chip/mt_scp/mt8183/clock.c b/chip/mt_scp/mt8183/clock.c
index a6f1883d31..3029a00a01 100644
--- a/chip/mt_scp/mt8183/clock.c
+++ b/chip/mt_scp/mt8183/clock.c
@@ -338,21 +338,21 @@ void scp_enable_clock(void)
AP_CLK_CFG_5_CLR = PWRAP_ULPOSC_CG;
}
+DECLARE_IRQ(SCP_IRQ_CLOCK, clock_control_irq, 3);
void clock_control_irq(void)
{
/* Read ack CLK_IRQ */
(SCP_CLK_IRQ_ACK);
task_clear_pending_irq(SCP_IRQ_CLOCK);
}
-DECLARE_IRQ(SCP_IRQ_CLOCK, clock_control_irq, 3);
+DECLARE_IRQ(SCP_IRQ_CLOCK2, clock_fast_wakeup_irq, 3);
void clock_fast_wakeup_irq(void)
{
/* Ack fast wakeup */
SCP_SLEEP_IRQ2 = 1;
task_clear_pending_irq(SCP_IRQ_CLOCK2);
}
-DECLARE_IRQ(SCP_IRQ_CLOCK2, clock_fast_wakeup_irq, 3);
/* Console command */
int command_ulposc(int argc, char *argv[])
diff --git a/chip/mt_scp/mt8183/hrtimer.c b/chip/mt_scp/mt8183/hrtimer.c
index f970af6eb5..92887af2a7 100644
--- a/chip/mt_scp/mt8183/hrtimer.c
+++ b/chip/mt_scp/mt8183/hrtimer.c
@@ -242,8 +242,8 @@ static void __hw_clock_source_irq(int n)
}
#define DECLARE_TIMER_IRQ(n) \
- void __hw_clock_source_irq_##n(void) { __hw_clock_source_irq(n); } \
- DECLARE_IRQ(IRQ_TIMER(n), __hw_clock_source_irq_##n, 2)
+ DECLARE_IRQ(IRQ_TIMER(n), __hw_clock_source_irq_##n, 2); \
+ void __hw_clock_source_irq_##n(void) { __hw_clock_source_irq(n); }
DECLARE_TIMER_IRQ(0);
DECLARE_TIMER_IRQ(1);
diff --git a/chip/mt_scp/mt8183/ipi.c b/chip/mt_scp/mt8183/ipi.c
index e6a79fca9a..8e13781db3 100644
--- a/chip/mt_scp/mt8183/ipi.c
+++ b/chip/mt_scp/mt8183/ipi.c
@@ -381,6 +381,7 @@ static void ipi_init(void)
}
DECLARE_HOOK(HOOK_INIT, ipi_init, HOOK_PRIO_DEFAULT);
+DECLARE_IRQ(SCP_IRQ_IPC0, ipc_handler, 4);
void ipc_handler(void)
{
/* TODO(b/117917141): We only support IPC_ID(0) for now. */
@@ -391,4 +392,3 @@ void ipc_handler(void)
SCP_GIPC_IN &= (SCP_GPIC_IN_CLEAR_ALL & ~SCP_GIPC_IN_CLEAR_IPCN(0));
}
-DECLARE_IRQ(SCP_IRQ_IPC0, ipc_handler, 4);
diff --git a/chip/mt_scp/mt8183/uart.c b/chip/mt_scp/mt8183/uart.c
index 78ea594c6b..7907f9537d 100644
--- a/chip/mt_scp/mt8183/uart.c
+++ b/chip/mt_scp/mt8183/uart.c
@@ -93,6 +93,7 @@ void uart_process(void)
}
#if (UARTN < SCP_UART_COUNT)
+DECLARE_IRQ(UART_IRQ(UARTN), uart_interrupt, 2);
void uart_interrupt(void)
{
uint8_t ier;
@@ -103,8 +104,8 @@ void uart_interrupt(void)
UART_IER(UARTN) = 0;
UART_IER(UARTN) = ier;
}
-DECLARE_IRQ(UART_IRQ(UARTN), uart_interrupt, 2);
+DECLARE_IRQ(UART_RX_IRQ(UARTN), uart_rx_interrupt, 2);
void uart_rx_interrupt(void)
{
uint8_t ier;
@@ -117,7 +118,6 @@ void uart_rx_interrupt(void)
UART_IER(UARTN) = ier;
SCP_INTC_UART_RX_IRQ |= 1 << UARTN;
}
-DECLARE_IRQ(UART_RX_IRQ(UARTN), uart_rx_interrupt, 2);
#endif
void uart_task(void)