Skip to content

Commit 24aef14

Browse files
authored
Merge pull request #44 from tlauda/topic/idc_send_msg
idc: refactor arch_idc_send_msg method
2 parents 0cda98d + 7de74bd commit 24aef14

6 files changed

Lines changed: 17 additions & 13 deletions

File tree

  • src
    • arch/xtensa
    • platform
      • apollolake/include/platform
      • baytrail/include/platform
      • cannonlake/include/platform
      • haswell/include/platform

src/arch/xtensa/smp/include/arch/idc.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ struct idc {
7474
uint32_t done_bit_mask; /**< done interrupt mask */
7575
uint32_t msg_pending; /**< is message pending */
7676
struct idc_msg received_msg; /**< received message */
77-
struct idc_msg msg_to_send; /**< message to be sent */
7877
};
7978

8079
/**
@@ -142,21 +141,20 @@ static void idc_irq_handler(void *arg)
142141

143142
/**
144143
* \brief Sends IDC message.
144+
* \param[in,out] msg Pointer to IDC message.
145145
*/
146-
static inline void arch_idc_send_msg(void)
146+
static inline void arch_idc_send_msg(struct idc_msg *msg)
147147
{
148148
struct idc *idc = *idc_get();
149-
150-
struct idc_msg msg = idc->msg_to_send;
151149
int core = cpu_get_id();
152150
uint32_t flags;
153151

154152
tracev_idc("Msg");
155153

156154
spin_lock_irq(&idc->lock, flags);
157155

158-
idc_write(IPC_IDCIETC(msg.core), core, msg.extension);
159-
idc_write(IPC_IDCITC(msg.core), core, msg.header | IPC_IDCITC_BUSY);
156+
idc_write(IPC_IDCIETC(msg->core), core, msg->extension);
157+
idc_write(IPC_IDCITC(msg->core), core, msg->header | IPC_IDCITC_BUSY);
160158

161159
spin_unlock_irq(&idc->lock, flags);
162160
}

src/arch/xtensa/up/include/arch/idc.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@
3737
#ifndef __ARCH_IDC_H__
3838
#define __ARCH_IDC_H__
3939

40+
struct idc_msg;
41+
4042
/**
4143
* \brief Sends IDC message.
4244
*/
43-
static inline void arch_idc_send_msg(void) { }
45+
static inline void arch_idc_send_msg(struct idc_msg *msg) { }
4446

4547
/**
4648
* \brief Checks for pending IDC messages.

src/platform/apollolake/include/platform/idc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333

3434
#include <arch/idc.h>
3535

36-
static inline void idc_send_msg(void)
36+
static inline void idc_send_msg(struct idc_msg *msg)
3737
{
38-
arch_idc_send_msg();
38+
arch_idc_send_msg(msg);
3939
}
4040

4141
static inline void idc_process_msg_queue(void)

src/platform/baytrail/include/platform/idc.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
#ifndef __INCLUDE_PLATFORM_IDC_H__
3232
#define __INCLUDE_PLATFORM_IDC_H__
3333

34-
static inline void idc_send_msg(void) { }
34+
struct idc_msg;
35+
36+
static inline void idc_send_msg(struct idc_msg *msg) { }
3537

3638
static inline void idc_process_msg_queue(void) { }
3739

src/platform/cannonlake/include/platform/idc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333

3434
#include <arch/idc.h>
3535

36-
static inline void idc_send_msg(void)
36+
static inline void idc_send_msg(struct idc_msg *msg)
3737
{
38-
arch_idc_send_msg();
38+
arch_idc_send_msg(msg);
3939
}
4040

4141
static inline void idc_process_msg_queue(void)

src/platform/haswell/include/platform/idc.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
#ifndef __INCLUDE_PLATFORM_IDC_H__
3232
#define __INCLUDE_PLATFORM_IDC_H__
3333

34-
static inline void idc_send_msg(void) { }
34+
struct idc_msg;
35+
36+
static inline void idc_send_msg(struct idc_msg *msg) { }
3537

3638
static inline void idc_process_msg_queue(void) { }
3739

0 commit comments

Comments
 (0)