| /kernel/linux/linux-4.19/sound/soc/intel/common/ |
| D | sst-ipc.c | 2 * Intel SST generic IPC Support 33 #include "sst-ipc.h" 35 /* IPC message timeout (msecs) */ 41 static struct ipc_message *msg_get_empty(struct sst_generic_ipc *ipc) in msg_get_empty() argument 45 if (!list_empty(&ipc->empty_list)) { in msg_get_empty() 46 msg = list_first_entry(&ipc->empty_list, struct ipc_message, in msg_get_empty() 54 static int tx_wait_done(struct sst_generic_ipc *ipc, in tx_wait_done() argument 64 spin_lock_irqsave(&ipc->dsp->spinlock, flags); in tx_wait_done() 66 if (ipc->ops.shim_dbg != NULL) in tx_wait_done() 67 ipc->ops.shim_dbg(ipc, "message timeout"); in tx_wait_done() [all …]
|
| D | sst-ipc.h | 2 * Intel SST generic IPC Support 57 /* SST generic IPC data */ 62 /* IPC messaging */ 77 int sst_ipc_tx_message_wait(struct sst_generic_ipc *ipc, u64 header, 80 int sst_ipc_tx_message_nowait(struct sst_generic_ipc *ipc, u64 header, 83 int sst_ipc_tx_message_nopm(struct sst_generic_ipc *ipc, u64 header, 86 struct ipc_message *sst_ipc_reply_find_msg(struct sst_generic_ipc *ipc, 89 void sst_ipc_tx_msg_reply_complete(struct sst_generic_ipc *ipc, 92 void sst_ipc_drop_all(struct sst_generic_ipc *ipc); 93 int sst_ipc_init(struct sst_generic_ipc *ipc); [all …]
|
| /kernel/linux/linux-5.10/sound/soc/intel/common/ |
| D | sst-ipc.c | 3 * 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 …]
|
| D | sst-ipc.h | 3 * Intel SST generic IPC Support 48 /* SST generic IPC data */ 53 /* IPC messaging */ 68 int sst_ipc_tx_message_wait(struct sst_generic_ipc *ipc, 71 int sst_ipc_tx_message_nowait(struct sst_generic_ipc *ipc, 74 int sst_ipc_tx_message_nopm(struct sst_generic_ipc *ipc, 77 struct ipc_message *sst_ipc_reply_find_msg(struct sst_generic_ipc *ipc, 80 void sst_ipc_tx_msg_reply_complete(struct sst_generic_ipc *ipc, 83 int sst_ipc_init(struct sst_generic_ipc *ipc); 84 void sst_ipc_fini(struct sst_generic_ipc *ipc);
|
| /kernel/linux/linux-5.10/drivers/net/wireless/quantenna/qtnfmac/ |
| D | shm_ipc.c | 12 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-4.19/drivers/net/wireless/quantenna/qtnfmac/ |
| D | shm_ipc.c | 25 static bool qtnf_shm_ipc_has_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_ipc_has_new_data() argument 27 const u32 flags = readl(&ipc->shm_region->headroom.hdr.flags); in qtnf_shm_ipc_has_new_data() 32 static void qtnf_shm_handle_new_data(struct qtnf_shm_ipc *ipc) in qtnf_shm_handle_new_data() argument 38 shm_reg_hdr = &ipc->shm_region->headroom.hdr; in qtnf_shm_handle_new_data() 46 memcpy_fromio(ipc->rx_data, ipc->shm_region->data, size); in qtnf_shm_handle_new_data() 52 ipc->interrupt.fn(ipc->interrupt.arg); in qtnf_shm_handle_new_data() 55 ipc->rx_packet_count++; in qtnf_shm_handle_new_data() 56 ipc->rx_callback.fn(ipc->rx_callback.arg, ipc->rx_data, size); in qtnf_shm_handle_new_data() 62 struct qtnf_shm_ipc *ipc = container_of(work, struct qtnf_shm_ipc, in qtnf_shm_ipc_irq_work() local 65 while (qtnf_shm_ipc_has_new_data(ipc)) in qtnf_shm_ipc_irq_work() [all …]
|
| /kernel/linux/linux-5.10/sound/soc/intel/catpt/ |
| D | ipc.c | 16 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/ |
| D | skl-sst-ipc.c | 3 * 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 …]
|
| D | skl-sst-ipc.h | 3 * 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 …]
|
| D | cnl-sst.c | 25 #include "../common/sst-ipc.h" 234 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D0() 261 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D3() 316 struct sst_generic_ipc *ipc = &cnl->ipc; in cnl_dsp_irq_thread_handler() local 321 /* here we handle ipc interrupts only */ in cnl_dsp_irq_thread_handler() 349 dev_dbg(dsp->dev, "IPC irq: Firmware respond primary:%x", in cnl_dsp_irq_thread_handler() 351 dev_dbg(dsp->dev, "IPC irq: Firmware respond extension:%x", in cnl_dsp_irq_thread_handler() 356 skl_ipc_process_reply(ipc, header); in cnl_dsp_irq_thread_handler() 358 dev_dbg(dsp->dev, "IPC irq: Notification from firmware\n"); in cnl_dsp_irq_thread_handler() 359 skl_ipc_process_notification(ipc, header); in cnl_dsp_irq_thread_handler() [all …]
|
| /kernel/linux/linux-4.19/sound/soc/intel/skylake/ |
| D | skl-sst-ipc.c | 2 * skl-sst-ipc.c - Intel skl IPC Support 21 #include "skl-sst-ipc.h" 185 /* Set D0ix IPC extension register */ 302 static void skl_ipc_tx_msg(struct sst_generic_ipc *ipc, struct ipc_message *msg) in skl_ipc_tx_msg() argument 307 sst_dsp_outbox_write(ipc->dsp, msg->tx_data, msg->tx_size); in skl_ipc_tx_msg() 308 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCIE, in skl_ipc_tx_msg() 310 sst_dsp_shim_write_unlocked(ipc->dsp, SKL_ADSP_REG_HIPCI, in skl_ipc_tx_msg() 331 static struct ipc_message *skl_ipc_reply_get_msg(struct sst_generic_ipc *ipc, in skl_ipc_reply_get_msg() argument 337 if (list_empty(&ipc->rx_list)) { in skl_ipc_reply_get_msg() 338 dev_err(ipc->dev, "ipc: rx list is empty but received 0x%x\n", in skl_ipc_reply_get_msg() [all …]
|
| D | skl-sst-ipc.h | 2 * Intel SKL IPC Support 20 #include "../common/sst-ipc.h" 91 /* IPC messaging */ 92 struct sst_generic_ipc ipc; member 174 int skl_ipc_save_pipeline(struct sst_generic_ipc *ipc, 177 int skl_ipc_restore_pipeline(struct sst_generic_ipc *ipc, u8 instance_id); 185 int skl_ipc_load_modules(struct sst_generic_ipc *ipc, 188 int skl_ipc_unload_modules(struct sst_generic_ipc *ipc, 191 int skl_ipc_set_dx(struct sst_generic_ipc *ipc, 194 int skl_ipc_set_large_config(struct sst_generic_ipc *ipc, [all …]
|
| D | cnl-sst.c | 33 #include "../common/sst-ipc.h" 36 #include "skl-sst-ipc.h" 221 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D0() 248 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D3() 305 struct sst_generic_ipc *ipc = &cnl->ipc; in cnl_dsp_irq_thread_handler() local 310 /* here we handle ipc interrupts only */ in cnl_dsp_irq_thread_handler() 338 dev_dbg(dsp->dev, "IPC irq: Firmware respond primary:%x", in cnl_dsp_irq_thread_handler() 340 dev_dbg(dsp->dev, "IPC irq: Firmware respond extension:%x", in cnl_dsp_irq_thread_handler() 345 skl_ipc_process_reply(ipc, header); in cnl_dsp_irq_thread_handler() 347 dev_dbg(dsp->dev, "IPC irq: Notification from firmware\n"); in cnl_dsp_irq_thread_handler() [all …]
|
| /kernel/linux/linux-4.19/ipc/ |
| D | util.c | 3 * 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/ |
| D | util.c | 3 * 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/drivers/platform/x86/ |
| D | intel_scu_ipc.c | 3 * 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) 27 /* IPC defines the following message types */ 36 * IPC register summary 38 * IPC register blocks are memory mapped at fixed address of PCI BAR 0. 39 * To read or write information to the SCU, driver writes to IPC-1 memory 40 * mapped registers. The following is the IPC mechanism [all …]
|
| /kernel/linux/linux-5.10/sound/soc/sof/ |
| D | ipc.c | 10 // 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-4.19/sound/soc/intel/baytrail/ |
| D | sst-baytrail-ipc.c | 2 * Intel Baytrail SST IPC Support 30 #include "sst-baytrail-ipc.h" 33 #include "../common/sst-ipc.h" 35 /* IPC message timeout */ 41 /* IPC header bits */ 68 /* IPC messages between host and ADSP */ 167 /* SST Baytrail IPC data */ 180 /* IPC messaging */ 181 struct sst_generic_ipc ipc; member 247 msg = sst_ipc_reply_find_msg(&byt->ipc, header); in sst_byt_process_reply() [all …]
|
| /kernel/linux/linux-5.10/include/linux/firmware/imx/ |
| D | dsp.h | 5 * 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 …]
|
| D | ipc.h | 5 * Header file for the IPC implementation. 38 * This is an function to send an RPC message over an IPC channel. 41 * @param[in] ipc IPC handle 48 int imx_scu_call_rpc(struct imx_sc_ipc *ipc, void *msg, bool have_resp); 51 * This function gets the default ipc handle used by SCU 53 * @param[out] ipc sc ipc handle 57 int imx_scu_get_handle(struct imx_sc_ipc **ipc);
|
| /kernel/linux/linux-4.19/net/qrtr/ |
| D | qrtr.c | 369 static void qrtr_port_put(struct qrtr_sock *ipc); 384 struct qrtr_sock *ipc; in qrtr_node_rx_work() local 397 ipc = qrtr_port_lookup(cb->dst_port); in qrtr_node_rx_work() 398 if (!ipc) { in qrtr_node_rx_work() 401 if (sock_queue_rcv_skb(&ipc->sk, skb)) in qrtr_node_rx_work() 404 qrtr_port_put(ipc); in qrtr_node_rx_work() 494 struct qrtr_sock *ipc; in qrtr_port_lookup() local 500 ipc = idr_find(&qrtr_ports, port); in qrtr_port_lookup() 501 if (ipc) in qrtr_port_lookup() 502 sock_hold(&ipc->sk); in qrtr_port_lookup() [all …]
|
| /kernel/linux/linux-4.19/drivers/media/platform/sti/delta/ |
| D | delta-ipc.c | 10 #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/ |
| D | delta-ipc.c | 10 #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/net/qrtr/ |
| D | qrtr.c | 158 static void qrtr_port_put(struct qrtr_sock *ipc); 429 struct qrtr_sock *ipc; in qrtr_endpoint_post() local 503 ipc = qrtr_port_lookup(cb->dst_port); in qrtr_endpoint_post() 504 if (!ipc) in qrtr_endpoint_post() 507 if (sock_queue_rcv_skb(&ipc->sk, skb)) { in qrtr_endpoint_post() 508 qrtr_port_put(ipc); in qrtr_endpoint_post() 512 qrtr_port_put(ipc); in qrtr_endpoint_post() 632 struct qrtr_sock *ipc; in qrtr_port_lookup() local 638 ipc = idr_find(&qrtr_ports, port); in qrtr_port_lookup() 639 if (ipc) in qrtr_port_lookup() [all …]
|
| /kernel/linux/linux-4.19/drivers/platform/x86/ |
| D | intel_scu_ipc.c | 2 * intel_scu_ipc.c: Driver for the Intel SCU IPC mechanism 13 * core through IPC mechanism which in turn messaging between IA core ad SCU. 14 * SCU has two IPC mechanism IPC-1 and IPC-2. IPC-1 is used between IA32 and 15 * SCU where IPC-2 is used between P-Unit and SCU. This driver delas with 16 * IPC-1 Driver provides an API for power control unit registers (e.g. MSIC) 30 /* IPC defines the following message types */ 43 * IPC register summary 45 * IPC register blocks are memory mapped at fixed address of PCI BAR 0. 46 * To read or write information to the SCU, driver writes to IPC-1 memory 47 * mapped registers. The following is the IPC mechanism [all …]
|