/Linux-v5.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);
|
/Linux-v5.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 …]
|
D | shm_ipc.h | 44 void (*irq_handler)(struct qtnf_shm_ipc *ipc); 51 int qtnf_shm_ipc_init(struct qtnf_shm_ipc *ipc, 57 void qtnf_shm_ipc_free(struct qtnf_shm_ipc *ipc); 58 int qtnf_shm_ipc_send(struct qtnf_shm_ipc *ipc, const u8 *buf, size_t size); 60 static inline void qtnf_shm_ipc_irq_handler(struct qtnf_shm_ipc *ipc) in qtnf_shm_ipc_irq_handler() argument 62 ipc->irq_handler(ipc); in qtnf_shm_ipc_irq_handler()
|
/Linux-v5.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 …]
|
/Linux-v5.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" 233 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D0() 260 ret = skl_ipc_set_dx(&cnl->ipc, CNL_INSTANCE_ID, in cnl_set_dsp_D3() 315 struct sst_generic_ipc *ipc = &cnl->ipc; in cnl_dsp_irq_thread_handler() local 320 /* here we handle ipc interrupts only */ in cnl_dsp_irq_thread_handler() 348 dev_dbg(dsp->dev, "IPC irq: Firmware respond primary:%x", in cnl_dsp_irq_thread_handler() 350 dev_dbg(dsp->dev, "IPC irq: Firmware respond extension:%x", in cnl_dsp_irq_thread_handler() 355 skl_ipc_process_reply(ipc, header); in cnl_dsp_irq_thread_handler() 357 dev_dbg(dsp->dev, "IPC irq: Notification from firmware\n"); in cnl_dsp_irq_thread_handler() 358 skl_ipc_process_notification(ipc, header); in cnl_dsp_irq_thread_handler() [all …]
|
D | skl-ssp-clk.c | 77 union skl_clk_ctrl_ipc *ipc; in skl_fill_clk_ipc() local 83 ipc = &rcfg->dma_ctl_ipc; in skl_fill_clk_ipc() 89 ipc->sclk_fs.hdr.size = sizeof(struct skl_dmactrl_sclkfs_cfg) - in skl_fill_clk_ipc() 91 ipc->sclk_fs.sampling_frequency = wfmt->samples_per_sec; in skl_fill_clk_ipc() 92 ipc->sclk_fs.bit_depth = wfmt->bits_per_sample; in skl_fill_clk_ipc() 93 ipc->sclk_fs.valid_bit_depth = in skl_fill_clk_ipc() 95 ipc->sclk_fs.number_of_channels = wfmt->channels; in skl_fill_clk_ipc() 97 ipc->mclk.hdr.type = DMA_CLK_CONTROLS; in skl_fill_clk_ipc() 99 ipc->mclk.hdr.size = sizeof(struct skl_dmactrl_mclk_cfg) - in skl_fill_clk_ipc() 104 /* Sends dma control IPC to turn the clock ON/OFF */ [all …]
|
/Linux-v5.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 …]
|
/Linux-v5.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 …]
|
D | intel_punit_ipc.c | 3 * Driver for the Intel P-Unit Mailbox IPC mechanism 23 /* IPC Mailbox registers */ 111 dev_err(ipcdev->dev, "IPC timed out\n"); in intel_punit_ipc_check_status() 118 dev_err(ipcdev->dev, "IPC timed out\n"); in intel_punit_ipc_check_status() 126 dev_err(ipcdev->dev, "IPC failed: %s, IPC_STS=0x%x\n", in intel_punit_ipc_check_status() 135 * intel_punit_ipc_simple_command() - Simple IPC command 136 * @cmd: IPC command code. 140 * Send a IPC command to P-Unit when there is no data transaction 142 * Return: IPC error code or 0 on success. 168 * intel_punit_ipc_command() - IPC command with data and pointers [all …]
|
/Linux-v5.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 …]
|
/Linux-v5.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);
|
/Linux-v5.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 …]
|
/Linux-v5.10/net/qrtr/ |
D | qrtr.c | 158 static void qrtr_port_put(struct qrtr_sock *ipc); 426 struct qrtr_sock *ipc; in qrtr_endpoint_post() local 500 ipc = qrtr_port_lookup(cb->dst_port); in qrtr_endpoint_post() 501 if (!ipc) in qrtr_endpoint_post() 504 if (sock_queue_rcv_skb(&ipc->sk, skb)) in qrtr_endpoint_post() 507 qrtr_port_put(ipc); in qrtr_endpoint_post() 627 struct qrtr_sock *ipc; in qrtr_port_lookup() local 633 ipc = idr_find(&qrtr_ports, port); in qrtr_port_lookup() 634 if (ipc) in qrtr_port_lookup() 635 sock_hold(&ipc->sk); in qrtr_port_lookup() [all …]
|
D | Kconfig | 2 # Qualcomm IPC Router configuration 6 tristate "Qualcomm IPC Router support" 8 Say Y if you intend to use Qualcomm IPC router protocol. The 18 tristate "SMD IPC Router channels" 22 most common transport for IPC Router. 25 tristate "TUN device for Qualcomm IPC Router" 32 tristate "MHI IPC Router channels"
|
/Linux-v5.10/drivers/firmware/imx/ |
D | imx-dsp.c | 6 * Implementation of the DSP IPC interface (host side) 20 * @dsp: DSP IPC handle 25 int imx_dsp_ring_doorbell(struct imx_dsp_ipc *ipc, unsigned int idx) in imx_dsp_ring_doorbell() argument 33 dsp_chan = &ipc->chans[idx]; in imx_dsp_ring_doorbell() 48 * Users of DSP IPC will need to privde handle_reply and handle_request 56 chan->ipc->ops->handle_reply(chan->ipc); in imx_dsp_handle_rx() 58 chan->ipc->ops->handle_request(chan->ipc); in imx_dsp_handle_rx() 59 imx_dsp_ring_doorbell(chan->ipc, 1); in imx_dsp_handle_rx() 95 dsp_chan->ipc = dsp_ipc; in imx_dsp_probe() 115 dev_info(dev, "NXP i.MX DSP IPC initialized\n"); in imx_dsp_probe() [all …]
|
D | misc.c | 43 * @param[in] ipc IPC handle 51 int imx_sc_misc_set_control(struct imx_sc_ipc *ipc, u32 resource, in imx_sc_misc_set_control() argument 66 return imx_scu_call_rpc(ipc, &msg, true); in imx_sc_misc_set_control() 73 * @param[in] ipc IPC handle 81 int imx_sc_misc_get_control(struct imx_sc_ipc *ipc, u32 resource, in imx_sc_misc_get_control() argument 97 ret = imx_scu_call_rpc(ipc, &msg, true); in imx_sc_misc_get_control() 112 * @param[in] ipc IPC handle 119 int imx_sc_pm_cpu_start(struct imx_sc_ipc *ipc, u32 resource, in imx_sc_pm_cpu_start() argument 135 return imx_scu_call_rpc(ipc, &msg, true); in imx_sc_pm_cpu_start()
|
/Linux-v5.10/drivers/misc/mei/ |
D | hw-txe-regs.h | 39 #define IPC_BASE_ADDR 0x80400 /* SeC IPC Base Address */ 41 /* IPC Input Doorbell Register */ 44 /* IPC Input Status Register 53 /* IPC Host Interrupt Status Register */ 68 /* IPC Host Interrupt Mask Register */ 74 /* IPC Input Payload RAM */ 76 /* IPC Shared Payload RAM */ 102 * that arrive via IPC. 121 /* Host Interrupt Cause Register 0 - SeC IPC Readiness 125 * This register is used by SeC's IPC driver in order [all …]
|
/Linux-v5.10/Documentation/devicetree/bindings/soc/ti/ |
D | wkup_m3_ipc.txt | 1 Wakeup M3 IPC Driver 8 to boot the wkup_m3, it handles communication with the CM3 using IPC registers 14 A wkup_m3_ipc device node is used to represent the IPC registers within an 20 "ti,am3352-wkup-m3-ipc" for AM33xx SoCs 21 "ti,am4372-wkup-m3-ipc" for AM43xx SoCs 22 - reg: Contains the IPC register address space to communicate 26 - ti,rproc: phandle to the wkup_m3 rproc node so the IPC driver 28 - mboxes: phandles used by IPC framework to get correct mbox 48 compatible = "ti,am3352-wkup-m3-ipc";
|
/Linux-v5.10/sound/soc/sof/intel/ |
D | hda-ipc.c | 59 /* send IPC message to DSP */ in hda_dsp_ipc_send_msg() 76 * Sometimes, there is unexpected reply ipc arriving. The reply in hda_dsp_ipc_get_reply() 77 * ipc belongs to none of the ipcs sent from driver. in hda_dsp_ipc_get_reply() 78 * In this case, the driver must ignore the ipc. in hda_dsp_ipc_get_reply() 81 dev_warn(sdev->dev, "unexpected ipc interrupt raised!\n"); in hda_dsp_ipc_get_reply() 89 * memory windows are powered off before sending IPC reply, in hda_dsp_ipc_get_reply() 100 /* get IPC reply from DSP in the mailbox */ in hda_dsp_ipc_get_reply() 128 /* IPC handler thread */ 140 /* read IPC status */ in hda_dsp_ipc_irq_thread() 153 "ipc: firmware response, msg:0x%x, msg_ext:0x%x\n", in hda_dsp_ipc_irq_thread() [all …]
|
/Linux-v5.10/drivers/gpu/drm/i915/selftests/ |
D | i915_sw_fence.c | 514 struct task_ipc *ipc = container_of(work, typeof(*ipc), work); in task_ipc() local 516 complete(&ipc->started); in task_ipc() 518 i915_sw_fence_wait(ipc->in); in task_ipc() 519 smp_store_mb(ipc->value, 1); in task_ipc() 520 i915_sw_fence_commit(ipc->out); in task_ipc() 525 struct task_ipc ipc; in test_ipc() local 529 ipc.in = alloc_fence(); in test_ipc() 530 if (!ipc.in) in test_ipc() 532 ipc.out = alloc_fence(); in test_ipc() 533 if (!ipc.out) { in test_ipc() [all …]
|
/Linux-v5.10/drivers/hid/intel-ish-hid/ |
D | Makefile | 15 obj-$(CONFIG_INTEL_ISH_HID) += intel-ish-ipc.o 16 intel-ish-ipc-objs := ipc/ipc.o 17 intel-ish-ipc-objs += ipc/pci-ish.o
|