Home
last modified time | relevance | path

Searched full:ipc (Results 1 – 25 of 1166) sorted by relevance

12345678910>>...47

/kernel/linux/linux-5.10/sound/soc/intel/common/
Dsst-ipc.c3 * Intel SST generic IPC Support
24 #include "sst-ipc.h"
26 /* IPC message timeout (msecs) */
32 static struct ipc_message *msg_get_empty(struct sst_generic_ipc *ipc) in msg_get_empty() argument
36 if (!list_empty(&ipc->empty_list)) { in msg_get_empty()
37 msg = list_first_entry(&ipc->empty_list, struct ipc_message, in msg_get_empty()
45 static int tx_wait_done(struct sst_generic_ipc *ipc, in tx_wait_done() argument
55 spin_lock_irqsave(&ipc->dsp->spinlock, flags); in tx_wait_done()
57 if (ipc->ops.shim_dbg != NULL) in tx_wait_done()
58 ipc->ops.shim_dbg(ipc, "message timeout"); in tx_wait_done()
[all …]
/kernel/linux/linux-6.6/sound/soc/intel/common/
Dsst-ipc.c3 * Intel SST generic IPC Support
24 #include "sst-ipc.h"
26 /* IPC message timeout (msecs) */
32 static struct ipc_message *msg_get_empty(struct sst_generic_ipc *ipc) in msg_get_empty() argument
36 if (!list_empty(&ipc->empty_list)) { in msg_get_empty()
37 msg = list_first_entry(&ipc->empty_list, struct ipc_message, in msg_get_empty()
45 static int tx_wait_done(struct sst_generic_ipc *ipc, in tx_wait_done() argument
55 spin_lock_irqsave(&ipc->dsp->spinlock, flags); in tx_wait_done()
57 if (ipc->ops.shim_dbg != NULL) in tx_wait_done()
58 ipc->ops.shim_dbg(ipc, "message timeout"); in tx_wait_done()
[all …]
/kernel/linux/linux-6.6/drivers/net/wireless/quantenna/qtnfmac/
Dshm_ipc.c12 static bool qtnf_shm_ipc_has_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_ipc_has_new_data() argument
14 const u32 flags = readl(&ipc->shm_region->headroom.hdr.flags); in qtnf_shm_ipc_has_new_data()
19 static void qtnf_shm_handle_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_handle_new_data() argument
25 shm_reg_hdr = &ipc->shm_region->headroom.hdr; in qtnf_shm_handle_new_data()
35 ipc->rx_packet_count++; in qtnf_shm_handle_new_data()
36 ipc->rx_callback.fn(ipc->rx_callback.arg, in qtnf_shm_handle_new_data()
37 ipc->shm_region->data, size); in qtnf_shm_handle_new_data()
43 ipc->interrupt.fn(ipc->interrupt.arg); in qtnf_shm_handle_new_data()
48 struct qtnf_shm_ipc *ipc = container_of(work, struct qtnf_shm_ipc, in qtnf_shm_ipc_irq_work() local
51 while (qtnf_shm_ipc_has_new_data(ipc)) in qtnf_shm_ipc_irq_work()
[all …]
/kernel/linux/linux-5.10/drivers/net/wireless/quantenna/qtnfmac/
Dshm_ipc.c12 static bool qtnf_shm_ipc_has_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_ipc_has_new_data() argument
14 const u32 flags = readl(&ipc->shm_region->headroom.hdr.flags); in qtnf_shm_ipc_has_new_data()
19 static void qtnf_shm_handle_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_handle_new_data() argument
25 shm_reg_hdr = &ipc->shm_region->headroom.hdr; in qtnf_shm_handle_new_data()
35 ipc->rx_packet_count++; in qtnf_shm_handle_new_data()
36 ipc->rx_callback.fn(ipc->rx_callback.arg, in qtnf_shm_handle_new_data()
37 ipc->shm_region->data, size); in qtnf_shm_handle_new_data()
43 ipc->interrupt.fn(ipc->interrupt.arg); in qtnf_shm_handle_new_data()
48 struct qtnf_shm_ipc *ipc = container_of(work, struct qtnf_shm_ipc, in qtnf_shm_ipc_irq_work() local
51 while (qtnf_shm_ipc_has_new_data(ipc)) in qtnf_shm_ipc_irq_work()
[all …]
/kernel/linux/linux-6.6/drivers/accel/ivpu/
Divpu_ipc.c23 struct ivpu_ipc_hdr ipc; member
36 ivpu_dbg(vdev, IPC, in ivpu_ipc_msg_dump()
65 struct ivpu_ipc_info *ipc = vdev->ipc; in ivpu_ipc_mem_fini() local
67 ivpu_bo_free_internal(ipc->mem_rx); in ivpu_ipc_mem_fini()
68 ivpu_bo_free_internal(ipc->mem_tx); in ivpu_ipc_mem_fini()
75 struct ivpu_ipc_info *ipc = vdev->ipc; in ivpu_ipc_tx_prepare() local
80 tx_buf_vpu_addr = gen_pool_alloc(ipc->mm_tx, sizeof(*tx_buf)); in ivpu_ipc_tx_prepare()
82 ivpu_err(vdev, "Failed to reserve IPC buffer, size %ld\n", in ivpu_ipc_tx_prepare()
87 tx_buf = ivpu_to_cpu_addr(ipc->mem_tx, tx_buf_vpu_addr); in ivpu_ipc_tx_prepare()
89 gen_pool_free(ipc->mm_tx, tx_buf_vpu_addr, sizeof(*tx_buf)); in ivpu_ipc_tx_prepare()
[all …]
/kernel/linux/linux-6.6/sound/soc/intel/avs/
Dipc.c23 struct avs_ipc *ipc = adev->ipc; in avs_dsp_set_d0ix() local
27 if (ipc->in_d0ix == enable) in avs_dsp_set_d0ix()
32 /* Prevent further d0ix attempts on conscious IPC failure. */ in avs_dsp_set_d0ix()
34 atomic_inc(&ipc->d0ix_disable_depth); in avs_dsp_set_d0ix()
36 ipc->in_d0ix = false; in avs_dsp_set_d0ix()
40 ipc->in_d0ix = enable; in avs_dsp_set_d0ix()
46 if (atomic_read(&adev->ipc->d0ix_disable_depth)) in avs_dsp_schedule_d0ix()
49 mod_delayed_work(system_power_efficient_wq, &adev->ipc->d0ix_work, in avs_dsp_schedule_d0ix()
55 struct avs_ipc *ipc = container_of(work, struct avs_ipc, d0ix_work.work); in avs_dsp_d0ix_work() local
57 avs_dsp_set_d0ix(to_avs_dev(ipc->dev), true); in avs_dsp_d0ix_work()
[all …]
/kernel/linux/linux-6.6/sound/soc/sof/
Dipc.c10 // Generic IPC layer that can work over MMIO and SPI/I2C. PHY layer provided
22 * sof_ipc_send_msg - generic function to prepare and send one IPC message
33 * Note: higher level sdev->ipc->tx_mutex must be held to make sure that
39 struct snd_sof_ipc *ipc = sdev->ipc; in sof_ipc_send_msg() local
43 if (ipc->disable_ipc_tx || sdev->fw_state != SOF_FW_BOOT_COMPLETE) in sof_ipc_send_msg()
53 msg = &ipc->msg; in sof_ipc_send_msg()
74 /* send IPC message from host to DSP */
75 int sof_ipc_tx_message(struct snd_sof_ipc *ipc, void *msg_data, size_t msg_bytes, in sof_ipc_tx_message() argument
78 if (msg_bytes > ipc->max_payload_size || in sof_ipc_tx_message()
79 reply_bytes > ipc->max_payload_size) in sof_ipc_tx_message()
[all …]
/kernel/linux/linux-5.10/sound/soc/intel/catpt/
Dipc.c16 void catpt_ipc_init(struct catpt_ipc *ipc, struct device *dev) in catpt_ipc_init() argument
18 ipc->dev = dev; in catpt_ipc_init()
19 ipc->ready = false; in catpt_ipc_init()
20 ipc->default_timeout = CATPT_IPC_TIMEOUT_MS; in catpt_ipc_init()
21 init_completion(&ipc->done_completion); in catpt_ipc_init()
22 init_completion(&ipc->busy_completion); in catpt_ipc_init()
23 spin_lock_init(&ipc->lock); in catpt_ipc_init()
24 mutex_init(&ipc->mutex); in catpt_ipc_init()
27 static int catpt_ipc_arm(struct catpt_ipc *ipc, struct catpt_fw_ready *config) in catpt_ipc_arm() argument
34 ipc->rx.data = devm_kzalloc(ipc->dev, config->outbox_size, GFP_KERNEL); in catpt_ipc_arm()
[all …]
/kernel/linux/linux-6.6/sound/soc/intel/catpt/
Dipc.c16 void catpt_ipc_init(struct catpt_ipc *ipc, struct device *dev) in catpt_ipc_init() argument
18 ipc->dev = dev; in catpt_ipc_init()
19 ipc->ready = false; in catpt_ipc_init()
20 ipc->default_timeout = CATPT_IPC_TIMEOUT_MS; in catpt_ipc_init()
21 init_completion(&ipc->done_completion); in catpt_ipc_init()
22 init_completion(&ipc->busy_completion); in catpt_ipc_init()
23 spin_lock_init(&ipc->lock); in catpt_ipc_init()
24 mutex_init(&ipc->mutex); in catpt_ipc_init()
27 static int catpt_ipc_arm(struct catpt_ipc *ipc, struct catpt_fw_ready *config) in catpt_ipc_arm() argument
34 ipc->rx.data = devm_kzalloc(ipc->dev, config->outbox_size, GFP_KERNEL); in catpt_ipc_arm()
[all …]
/kernel/linux/linux-5.10/sound/soc/intel/skylake/
Dskl-sst-ipc.c3 * skl-sst-ipc.c - Intel skl IPC Support
13 #include "skl-sst-ipc.h"
177 /* Set D0ix IPC extension register */
296 static void skl_ipc_tx_msg(struct sst_generic_ipc *ipc, struct ipc_message *msg) in skl_ipc_tx_msg() argument
301 sst_dsp_outbox_write(ipc->dsp, msg->tx.data, msg->tx.size); in skl_ipc_tx_msg()
302 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCIE, in skl_ipc_tx_msg()
304 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCI, in skl_ipc_tx_msg()
325 static struct ipc_message *skl_ipc_reply_get_msg(struct sst_generic_ipc *ipc, in skl_ipc_reply_get_msg() argument
331 if (list_empty(&ipc->rx_list)) { in skl_ipc_reply_get_msg()
332 dev_err(ipc->dev, "ipc: rx list is empty but received 0x%x\n", in skl_ipc_reply_get_msg()
[all …]
Dskl-sst-ipc.h3 * Intel SKL IPC Support
12 #include "../common/sst-ipc.h"
110 int skl_ipc_create_pipeline(struct sst_generic_ipc *ipc,
113 int skl_ipc_delete_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
115 int skl_ipc_set_pipeline_state(struct sst_generic_ipc *ipc,
118 int skl_ipc_save_pipeline(struct sst_generic_ipc *ipc,
121 int skl_ipc_restore_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
123 int skl_ipc_init_instance(struct sst_generic_ipc *ipc,
126 int skl_ipc_bind_unbind(struct sst_generic_ipc *ipc,
129 int skl_ipc_load_modules(struct sst_generic_ipc *ipc,
[all …]
/kernel/linux/linux-6.6/sound/soc/intel/skylake/
Dskl-sst-ipc.c3 * skl-sst-ipc.c - Intel skl IPC Support
13 #include "skl-sst-ipc.h"
177 /* Set D0ix IPC extension register */
296 static void skl_ipc_tx_msg(struct sst_generic_ipc *ipc, struct ipc_message *msg) in skl_ipc_tx_msg() argument
301 sst_dsp_outbox_write(ipc->dsp, msg->tx.data, msg->tx.size); in skl_ipc_tx_msg()
302 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCIE, in skl_ipc_tx_msg()
304 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCI, in skl_ipc_tx_msg()
325 static struct ipc_message *skl_ipc_reply_get_msg(struct sst_generic_ipc *ipc, in skl_ipc_reply_get_msg() argument
331 if (list_empty(&ipc->rx_list)) { in skl_ipc_reply_get_msg()
332 dev_err(ipc->dev, "ipc: rx list is empty but received 0x%x\n", in skl_ipc_reply_get_msg()
[all …]
Dskl-sst-ipc.h3 * Intel SKL IPC Support
12 #include "../common/sst-ipc.h"
110 int skl_ipc_create_pipeline(struct sst_generic_ipc *ipc,
113 int skl_ipc_delete_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
115 int skl_ipc_set_pipeline_state(struct sst_generic_ipc *ipc,
118 int skl_ipc_save_pipeline(struct sst_generic_ipc *ipc,
121 int skl_ipc_restore_pipeline(struct sst_generic_ipc *ipc, u8 instance_id);
123 int skl_ipc_init_instance(struct sst_generic_ipc *ipc,
126 int skl_ipc_bind_unbind(struct sst_generic_ipc *ipc,
129 int skl_ipc_load_modules(struct sst_generic_ipc *ipc,
[all …]
/kernel/linux/linux-6.6/ipc/
Dutil.c3 * linux/ipc/util.c
8 * Occurs in several places in the IPC code.
10 * Nov 1999 - ipc helper functions, unified SMP locking
12 * Oct 2002 - One lock per IPC id. RCU ipc_free for lock-free grow_ary().
14 * Mar 2006 - support for audit of ipc object properties
20 * General sysv ipc locking scheme:
22 * obtain the ipc object (kern_ipc_perm) by looking up the id in an idr
28 * acquire the ipc lock (kern_ipc_perm.lock) through
35 * drop the ipc lock, through ipc_unlock_object().
39 * - creating, removing and iterating the existing entries in ipc
[all …]
/kernel/linux/linux-5.10/ipc/
Dutil.c3 * linux/ipc/util.c
8 * Occurs in several places in the IPC code.
10 * Nov 1999 - ipc helper functions, unified SMP locking
12 * Oct 2002 - One lock per IPC id. RCU ipc_free for lock-free grow_ary().
14 * Mar 2006 - support for audit of ipc object properties
20 * General sysv ipc locking scheme:
22 * obtain the ipc object (kern_ipc_perm) by looking up the id in an idr
28 * acquire the ipc lock (kern_ipc_perm.lock) through
35 * drop the ipc lock, through ipc_unlock_object().
39 * - creating, removing and iterating the existing entries in ipc
[all …]
/kernel/linux/linux-6.6/drivers/platform/x86/
Dintel_scu_ipc.c3 * Driver for the Intel SCU IPC mechanism
9 * core through IPC mechanism which in turn messaging between IA core ad SCU.
10 * SCU has two IPC mechanism IPC-1 and IPC-2. IPC-1 is used between IA32 and
11 * SCU where IPC-2 is used between P-Unit and SCU. This driver delas with
12 * IPC-1 Driver provides an API for power control unit registers (e.g. MSIC)
28 /* IPC defines the following message types */
37 * IPC register summary
39 * IPC register blocks are memory mapped at fixed address of PCI BAR 0.
40 * To read or write information to the SCU, driver writes to IPC-1 memory
41 * mapped registers. The following is the IPC mechanism
[all …]
/kernel/linux/linux-5.10/drivers/platform/x86/
Dintel_scu_ipc.c3 * Driver for the Intel SCU IPC mechanism
9 * core through IPC mechanism which in turn messaging between IA core ad SCU.
10 * SCU has two IPC mechanism IPC-1 and IPC-2. IPC-1 is used between IA32 and
11 * SCU where IPC-2 is used between P-Unit and SCU. This driver delas with
12 * IPC-1 Driver provides an API for power control unit registers (e.g. MSIC)
28 /* IPC defines the following message types */
37 * IPC register summary
39 * IPC register blocks are memory mapped at fixed address of PCI BAR 0.
40 * To read or write information to the SCU, driver writes to IPC-1 memory
41 * mapped registers. The following is the IPC mechanism
[all …]
/kernel/linux/linux-5.10/sound/soc/sof/
Dipc.c10 // Generic IPC layer that can work over MMIO and SPI/I2C. PHY layer provided
25 * IPC message Tx/Rx message handling.
28 /* SOF generic IPC data */
34 /* disables further sending of ipc's */
205 /* wait for IPC message reply */
206 static int tx_wait_done(struct snd_sof_ipc *ipc, struct snd_sof_ipc_msg *msg, in tx_wait_done() argument
209 struct snd_sof_dev *sdev = ipc->sdev; in tx_wait_done()
213 /* wait for DSP IPC completion */ in tx_wait_done()
218 dev_err(sdev->dev, "error: ipc timed out for 0x%x size %d\n", in tx_wait_done()
220 snd_sof_handle_fw_exception(ipc->sdev); in tx_wait_done()
[all …]
/kernel/linux/linux-6.6/include/linux/firmware/imx/
Ddsp.h5 * Header file for the DSP IPC implementation
18 struct imx_dsp_ipc *ipc; member
26 void (*handle_reply)(struct imx_dsp_ipc *ipc);
27 void (*handle_request)(struct imx_dsp_ipc *ipc);
38 static inline void imx_dsp_set_data(struct imx_dsp_ipc *ipc, void *data) in imx_dsp_set_data() argument
40 ipc->private_data = data; in imx_dsp_set_data()
43 static inline void *imx_dsp_get_data(struct imx_dsp_ipc *ipc) in imx_dsp_get_data() argument
45 return ipc->private_data; in imx_dsp_get_data()
52 struct mbox_chan *imx_dsp_request_channel(struct imx_dsp_ipc *ipc, int idx);
53 void imx_dsp_free_channel(struct imx_dsp_ipc *ipc, int idx);
[all …]
Dipc.h5 * Header file for the IPC implementation.
39 * This is an function to send an RPC message over an IPC channel.
42 * @param[in] ipc IPC handle
49 int imx_scu_call_rpc(struct imx_sc_ipc *ipc, void *msg, bool have_resp);
52 * This function gets the default ipc handle used by SCU
54 * @param[out] ipc sc ipc handle
58 int imx_scu_get_handle(struct imx_sc_ipc **ipc);
60 static inline int imx_scu_call_rpc(struct imx_sc_ipc *ipc, void *msg, in imx_scu_call_rpc() argument
66 static inline int imx_scu_get_handle(struct imx_sc_ipc **ipc) in imx_scu_get_handle() argument
/kernel/linux/linux-5.10/include/linux/firmware/imx/
Ddsp.h5 * Header file for the DSP IPC implementation
18 struct imx_dsp_ipc *ipc; member
26 void (*handle_reply)(struct imx_dsp_ipc *ipc);
27 void (*handle_request)(struct imx_dsp_ipc *ipc);
38 static inline void imx_dsp_set_data(struct imx_dsp_ipc *ipc, void *data) in imx_dsp_set_data() argument
40 if (!ipc) in imx_dsp_set_data()
43 ipc->private_data = data; in imx_dsp_set_data()
46 static inline void *imx_dsp_get_data(struct imx_dsp_ipc *ipc) in imx_dsp_get_data() argument
48 if (!ipc) in imx_dsp_get_data()
51 return ipc->private_data; in imx_dsp_get_data()
[all …]
/kernel/linux/linux-6.6/drivers/media/platform/st/sti/delta/
Ddelta-ipc.c10 #include "delta-ipc.h"
54 * IPC shared memory (@ipc_buf_size, @ipc_buf_paddr) is sent to copro
55 * at each instance opening. This memory is allocated by IPC client
58 * this IPC shared memory, avoiding de-facto recopies inside delta-ipc.
123 "%s ipc: failed to open, rpmsg is not initialized\n", in delta_ipc_open()
131 "%s ipc: failed to open, no name given\n", in delta_ipc_open()
138 "%s ipc: failed to open, empty parameter\n", in delta_ipc_open()
145 "%s ipc: failed to open, no size given for ipc buffer\n", in delta_ipc_open()
152 "%s ipc: failed to open, too large ipc parameter (%d bytes while max %d expected)\n", in delta_ipc_open()
167 "ipc data buffer", buf); in delta_ipc_open()
[all …]
/kernel/linux/linux-5.10/drivers/media/platform/sti/delta/
Ddelta-ipc.c10 #include "delta-ipc.h"
54 * IPC shared memory (@ipc_buf_size, @ipc_buf_paddr) is sent to copro
55 * at each instance opening. This memory is allocated by IPC client
58 * this IPC shared memory, avoiding de-facto recopies inside delta-ipc.
123 "%s ipc: failed to open, rpmsg is not initialized\n", in delta_ipc_open()
131 "%s ipc: failed to open, no name given\n", in delta_ipc_open()
138 "%s ipc: failed to open, empty parameter\n", in delta_ipc_open()
145 "%s ipc: failed to open, no size given for ipc buffer\n", in delta_ipc_open()
152 "%s ipc: failed to open, too large ipc parameter (%d bytes while max %d expected)\n", in delta_ipc_open()
167 "ipc data buffer", buf); in delta_ipc_open()
[all …]
/kernel/linux/linux-6.6/drivers/firmware/
Dmtk-adsp-ipc.c7 #include <linux/firmware/mediatek/mtk-adsp-ipc.h>
17 * mtk_adsp_ipc_send - send ipc cmd to MTK ADSP
19 * @ipc: ADSP IPC handle
21 * @msg: IPC cmd (reply or request)
26 int mtk_adsp_ipc_send(struct mtk_adsp_ipc *ipc, unsigned int idx, uint32_t msg) in mtk_adsp_ipc_send() argument
34 adsp_chan = &ipc->chans[idx]; in mtk_adsp_ipc_send()
49 * Users of ADSP IPC will need to privde handle_reply and handle_request
59 chan->ipc->ops->handle_reply(chan->ipc); in mtk_adsp_ipc_recv()
62 chan->ipc->ops->handle_request(chan->ipc); in mtk_adsp_ipc_recv()
94 adsp_chan->ipc = adsp_ipc; in mtk_adsp_ipc_probe()
[all …]
/kernel/linux/linux-5.10/net/qrtr/
Daf_qrtr.c159 static void qrtr_port_put(struct qrtr_sock *ipc);
432 struct qrtr_sock *ipc; in qrtr_endpoint_post() local
519 ipc = qrtr_port_lookup(cb->dst_port); in qrtr_endpoint_post()
520 if (!ipc) in qrtr_endpoint_post()
523 if (sock_queue_rcv_skb(&ipc->sk, skb)) { in qrtr_endpoint_post()
524 qrtr_port_put(ipc); in qrtr_endpoint_post()
528 qrtr_port_put(ipc); in qrtr_endpoint_post()
648 struct qrtr_sock *ipc; in qrtr_port_lookup() local
654 ipc = xa_load(&qrtr_ports, port); in qrtr_port_lookup()
655 if (ipc) in qrtr_port_lookup()
[all …]

12345678910>>...47