| /linux/drivers/net/wireless/quantenna/qtnfmac/ |
| H A 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 …]
|
| H A 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/sound/soc/sof/ |
| H A D | ipc.c | 10 // 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() 72 /* send IPC message from host to DSP */ in sof_ipc_send_msg() 73 int sof_ipc_tx_message(struct snd_sof_ipc *ipc, void *msg_data, size_t msg_bytes, 76 if (msg_bytes > ipc in sof_ipc_tx_message() 75 sof_ipc_tx_message(struct snd_sof_ipc * ipc,void * msg_data,size_t msg_bytes,void * reply_data,size_t reply_bytes) sof_ipc_tx_message() argument 88 sof_ipc_set_get_data(struct snd_sof_ipc * ipc,void * msg_data,size_t msg_bytes,bool set) sof_ipc_set_get_data() argument 100 sof_ipc_tx_message_no_pm(struct snd_sof_ipc * ipc,void * msg_data,size_t msg_bytes,void * reply_data,size_t reply_bytes) sof_ipc_tx_message_no_pm() argument 149 struct snd_sof_ipc *ipc; snd_sof_ipc_init() local 222 struct snd_sof_ipc *ipc = sdev->ipc; snd_sof_ipc_free() local [all...] |
| H A D | Kconfig | 130 bool "SOF allow fallback to newer IPC version" 132 This option will allow the kernel to try to 'fallback' to a newer IPC 133 version if there are missing firmware files to satisfy the default IPC 135 IPC version fallback to older versions is not affected by this option, 184 bool "SOF verbose IPC logs" 186 This option enables more verbose IPC logs, with command types in 188 if you are trying to debug IPC with the DSP firmware. 192 bool "SOF force to use IPC for position update on SKL+" 197 On platforms (e.g. Intel SKL-) where position update IPC is the only 222 tristate "SOF enable IPC flood test" [all …]
|
| H A D | Makefile | 3 snd-sof-y := core.o ops.o loader.o ipc.o pcm.o pm.o debug.o topology.o\ 4 control.o trace.o iomem-utils.o sof-audio.o stream-ipc.o\ 7 # IPC implementations 28 snd-sof-ipc-flood-test-y := sof-client-ipc-flood-test.o 29 snd-sof-ipc-msg-injector-y := sof-client-ipc-msg-injector.o 30 snd-sof-ipc-kernel-injector-y := sof-client-ipc-kernel-injector.o 52 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST) += snd-sof-ipc-flood-test.o 53 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR) += snd-sof-ipc-msg-injector.o 54 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_KERNEL_INJECTOR) += snd-sof-ipc-kernel-injector.o
|
| H A D | ipc4.c | 29 {3, "Not enough space in the IPC reply buffer to complete the request"}, 31 {5, "Replaced ADSP IPC PENDING (unused)"}, 384 sof_ipc4_log_header(sdev->dev, "ipc tx reply", ipc4_reply, false); in ipc4_tx_msg_unlocked() 402 /* wait for IPC message reply */ in sof_ipc4_tx_msg() 403 static int ipc4_wait_tx_done(struct snd_sof_ipc *ipc, void *reply_data) in sof_ipc4_tx_msg() 405 struct snd_sof_ipc_msg *msg = &ipc->msg; in sof_ipc4_tx_msg() 407 struct snd_sof_dev *sdev = ipc->sdev; in sof_ipc4_tx_msg() 410 /* wait for DSP IPC completion */ in sof_ipc4_tx_msg() 414 dev_err(sdev->dev, "ipc timed out for %#x|%#x\n", in sof_ipc4_tx_msg() 416 snd_sof_handle_fw_exception(ipc in sof_ipc4_tx_msg() 319 ipc4_wait_tx_done(struct snd_sof_ipc * ipc,void * reply_data) ipc4_wait_tx_done() argument 368 ipc4_tx_msg_unlocked(struct snd_sof_ipc * ipc,void * msg_data,size_t msg_bytes,void * reply_data,size_t reply_bytes) ipc4_tx_msg_unlocked() argument 396 struct snd_sof_ipc *ipc = sdev->ipc; sof_ipc4_tx_msg() local [all...] |
| H A D | ipc4-topology.h | 92 * Use LARGE_CONFIG_SET to initialize timestamp event. Ipc mailbox must 97 * Use LARGE_CONFIG_SET to initialize copier sink. Ipc mailbox must contain 103 * event. Ipc mailbox must contain properly built DataSegmentEnabled struct. 170 * struct ipc4_pipeline_set_state_data - multi pipeline trigger IPC data 212 * struct sof_copier_gateway_cfg - IPC gateway configuration 226 * struct sof_ipc4_copier_data - IPC data for copier 326 * @data: IPC copier data 363 * struct sof_ipc4_control_data - IPC data for kcontrol IO 384 * struct sof_ipc4_control_msg_payload - IPC payload for kcontrol parameters 402 * struct sof_ipc4_gain_params - IPC gai [all...] |
| H A D | sof-client-ipc-flood-test.c | 74 /* configure test IPC */ in sof_debug_ipc_flood_test() 82 /* send test IPC's */ in sof_debug_ipc_flood_test() 111 dev_err(dev, "ipc flood test failed at %d iterations\n", i); in sof_debug_ipc_flood_test() 113 /* return if the first IPC fails */ in sof_debug_ipc_flood_test() 124 dev_dbg(dev, "IPC Flood test duration: %lums\n", ipc_duration_ms); in sof_debug_ipc_flood_test() 126 "IPC Flood test duration: %lums\n", ipc_duration_ms); in sof_debug_ipc_flood_test() 129 dev_dbg(dev, "IPC Flood count: %d, Avg response time: %lluns\n", in sof_debug_ipc_flood_test() 137 "IPC Flood count: %d\nAvg response time: %lluns\n", in sof_debug_ipc_flood_test() 149 * Writing to the debugfs entry initiates the IPC flood test based on 150 * the IPC count or the duration specified by the user. [all …]
|
| /linux/sound/soc/intel/catpt/ |
| H A D | ipc.c | 17 void catpt_ipc_init(struct catpt_ipc *ipc, struct device *dev) in catpt_ipc_init() 19 ipc->dev = dev; in catpt_ipc_init() 20 ipc->ready = false; in catpt_ipc_init() 21 ipc->default_timeout = CATPT_IPC_TIMEOUT_MS; in catpt_ipc_init() 22 init_completion(&ipc->done_completion); in catpt_ipc_init() 23 init_completion(&ipc->busy_completion); in catpt_ipc_init() 24 spin_lock_init(&ipc->lock); in catpt_ipc_init() 25 mutex_init(&ipc->mutex); in catpt_ipc_init() 28 static int catpt_ipc_arm(struct catpt_ipc *ipc, struct catpt_fw_ready *config) in catpt_ipc_arm() 35 ipc in catpt_ipc_arm() 16 catpt_ipc_init(struct catpt_ipc * ipc,struct device * dev) catpt_ipc_init() argument 27 catpt_ipc_arm(struct catpt_ipc * ipc,struct catpt_fw_ready * config) catpt_ipc_arm() argument 44 catpt_ipc_msg_init(struct catpt_ipc * ipc,struct catpt_ipc_msg * reply) catpt_ipc_msg_init() argument 69 struct catpt_ipc *ipc = &cdev->ipc; catpt_wait_msg_completion() local 89 struct catpt_ipc *ipc = &cdev->ipc; catpt_dsp_do_send_msg() local 128 struct catpt_ipc *ipc = &cdev->ipc; catpt_dsp_send_msg_timeout() local 185 struct catpt_ipc *ipc = &cdev->ipc; catpt_dsp_copy_rx() local 198 struct catpt_ipc *ipc = &cdev->ipc; catpt_dsp_process_response() local [all...] |
| /linux/drivers/mailbox/ |
| H A D | mailbox-mchp-ipc-sbi.c | 3 * Microchip Inter-Processor communication (IPC) driver 21 #include <linux/mailbox/mchp-ipc.h> 44 * struct mchp_ipc_mbox_info - IPC probe message format 46 * @hw_type: IPC implementation available in the hardware 47 * @num_channels: number of IPC channels available in the hardware 49 * Used to retrieve information on the IPC implementation 58 * struct mchp_ipc_init - IPC channel init message format 70 * struct mchp_ipc_status - IPC status message format 85 * struct mchp_ipc_sbi_msg - IPC SBI payload message 93 * the IPC. [all …]
|
| /linux/ipc/ |
| H A 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/drivers/platform/x86/ |
| H A 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) 29 /* IPC defines the following message types */ 38 * IPC register summary 40 * IPC register blocks are memory mapped at fixed address of PCI BAR 0. 41 * To read or write information to the SCU, driver writes to IPC-1 memory 42 * mapped registers. The following is the IPC mechanism [all …]
|
| /linux/include/linux/firmware/imx/ |
| H A 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 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 …]
|
| H A D | ipc.h | 5 * 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
|
| /linux/drivers/media/platform/st/sti/delta/ |
| H A 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/drivers/media/pci/intel/ipu6/ |
| H A D | ipu6-buttress.c | 64 struct ipu6_buttress_ipc *ipc) in ipu6_buttress_ipc_reset() argument 71 dev_dbg(&isp->pdev->dev, "Skip IPC reset for non-secure mode"); in ipu6_buttress_ipc_reset() 78 val = readl(isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset() 79 writel(val, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset() 82 writel(ENTRY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset() 97 val = readl(isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset() 108 writel(ENTRY | EXIT, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset() 109 writel(QUERY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset() 120 writel(ENTRY | QUERY, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset() 121 writel(ENTRY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset() [all …]
|
| /linux/net/qrtr/ |
| H A D | af_qrtr.c | 167 static void qrtr_port_put(struct qrtr_sock *ipc); 457 struct qrtr_sock *ipc; in qrtr_endpoint_post() 547 ipc = qrtr_port_lookup(cb->dst_port); 548 if (!ipc) 551 if (sock_queue_rcv_skb(&ipc->sk, skb)) { 552 qrtr_port_put(ipc); 556 qrtr_port_put(ipc); 723 struct qrtr_sock *ipc; 729 ipc = xa_load(&qrtr_ports, port); in qrtr_port_assign() argument 730 if (ipc) in qrtr_port_assign() 436 struct qrtr_sock *ipc; qrtr_endpoint_post() local 664 struct qrtr_sock *ipc; qrtr_port_lookup() local 679 qrtr_port_put(struct qrtr_sock * ipc) qrtr_port_put() argument 685 qrtr_port_remove(struct qrtr_sock * ipc) qrtr_port_remove() argument 757 struct qrtr_sock *ipc; qrtr_reset_ports() local 777 struct qrtr_sock *ipc = qrtr_sk(sock->sk); __qrtr_bind() local 825 struct qrtr_sock *ipc = qrtr_sk(sock->sk); qrtr_bind() local 847 struct qrtr_sock *ipc; qrtr_local_enqueue() local 901 struct qrtr_sock *ipc = qrtr_sk(sock->sk); qrtr_sendmsg() local 1088 struct qrtr_sock *ipc = qrtr_sk(sock->sk); qrtr_connect() local 1118 struct qrtr_sock *ipc = qrtr_sk(sock->sk); qrtr_getname() local 1145 struct qrtr_sock *ipc = qrtr_sk(sock->sk); qrtr_ioctl() local 1205 struct qrtr_sock *ipc; qrtr_release() local 1260 struct qrtr_sock *ipc; qrtr_create() local [all...] |
| H A 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/tools/perf/tests/shell/ |
| H A D | stat+shadow_stat.sh | 19 while read num evt _ ipc rest 39 if [ "$ipc" != "$res" ]; then 41 diff=`echo $ipc $res $THRESHOLD | \ 45 echo "IPC is different: $res != $ipc ($num / $cyc)" 49 echo "Warning: Difference of IPC is under the threshold" 58 while read cpu num evt _ ipc rest 81 if [ "$ipc" != "$res" ]; then 83 diff=`echo $ipc $res $THRESHOLD | \ 87 echo "IPC is different: $res != $ipc ($num / $cyc)" 91 echo "Warning: Difference of IPC is under the threshold"
|
| /linux/drivers/misc/mei/ |
| H A 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/drivers/firmware/imx/ |
| H A 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()
|
| H A D | rm.c | 19 * @param[in] ipc IPC handle 24 bool imx_sc_rm_is_resource_owned(struct imx_sc_ipc *ipc, u16 resource) in imx_sc_rm_is_resource_owned() argument 41 imx_scu_call_rpc(ipc, &msg, true); in imx_sc_rm_is_resource_owned() 62 * @param[in] ipc IPC handle 68 int imx_sc_rm_get_resource_owner(struct imx_sc_ipc *ipc, u16 resource, u8 *pt) in imx_sc_rm_get_resource_owner() argument 81 ret = imx_scu_call_rpc(ipc, &msg, true); in imx_sc_rm_get_resource_owner()
|
| /linux/include/linux/firmware/mediatek/ |
| H A D | mtk-adsp-ipc.h | 28 void (*handle_reply)(struct mtk_adsp_ipc *ipc); 29 void (*handle_request)(struct mtk_adsp_ipc *ipc); 33 struct mtk_adsp_ipc *ipc; member 47 static inline void mtk_adsp_ipc_set_data(struct mtk_adsp_ipc *ipc, void *data) in mtk_adsp_ipc_set_data() argument 49 ipc->private_data = data; in mtk_adsp_ipc_set_data() 52 static inline void *mtk_adsp_ipc_get_data(struct mtk_adsp_ipc *ipc) in mtk_adsp_ipc_get_data() argument 54 return ipc->private_data; in mtk_adsp_ipc_get_data() 57 int mtk_adsp_ipc_send(struct mtk_adsp_ipc *ipc, unsigned int idx, uint32_t op);
|
| /linux/sound/soc/sof/intel/ |
| H A D | hda-ipc.c | 67 /* send IPC message to DSP */ in hda_dsp_ipc_send_msg() 95 /* Schedule a delayed work for d0i3 entry after sending non-pm ipc msg */ in hda_dsp_ipc4_schedule_d0i3_work() 138 * Sometimes, there is unexpected reply ipc arriving. The reply in hda_dsp_ipc_get_reply() 139 * ipc belongs to none of the ipcs sent from driver. in hda_dsp_ipc_get_reply() 140 * In this case, the driver must ignore the ipc. in hda_dsp_ipc_get_reply() 143 dev_warn(sdev->dev, "unexpected ipc interrupt raised!\n"); in hda_dsp_ipc_get_reply() 151 * memory windows are powered off before sending IPC reply, in hda_dsp_ipc_get_reply() 202 struct sof_ipc4_msg *data = sdev->ipc->msg.reply_data; in hda_dsp_ipc4_irq_thread() 213 "IPC reply before FW_READY: %#x|%#x\n", in hda_dsp_ipc4_irq_thread() 221 sdev->ipc in hda_dsp_ipc4_irq_thread() [all...] |
| /linux/Documentation/devicetree/bindings/soc/ti/ |
| H A D | wkup-m3-ipc.yaml | 4 $id: http://devicetree.org/schemas/soc/ti/wkup-m3-ipc.yaml# 7 title: Wakeup M3 IPC device 18 to boot the wkup_m3, it handles communication with the CM3 using IPC registers 24 A wkup_m3_ipc device node is used to represent the IPC registers within an 52 - ti,am3352-wkup-m3-ipc # for AM33xx SoCs 53 - ti,am4372-wkup-m3-ipc # for AM43xx SoCs 57 The IPC register address space to communicate with the Wakeup M3 processor 67 phandle to the wkup_m3 rproc node so the IPC driver can boot it 71 phandles used by IPC framework to get correct mbox 98 const: ti,am4372-wkup-m3-ipc [all …]
|