/openbmc/linux/sound/soc/intel/common/ |
H A 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 …]
|
H A 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);
|
/openbmc/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 …]
|
/openbmc/linux/drivers/accel/ivpu/ |
H A D | ivpu_ipc.c | 23 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 …]
|
/openbmc/linux/sound/soc/intel/avs/ |
H A D | ipc.c | 23 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 …]
|
/openbmc/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() 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 …]
|
H A D | Makefile | 3 snd-sof-objs := 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 6 # IPC implementations 27 snd-sof-ipc-flood-test-objs := sof-client-ipc-flood-test.o 28 snd-sof-ipc-msg-injector-objs := sof-client-ipc-msg-injector.o 29 snd-sof-ipc-kernel-injector-objs := sof-client-ipc-kernel-injector.o 51 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST) += snd-sof-ipc-flood-test.o 52 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR) += snd-sof-ipc-msg-injector.o 53 obj-$(CONFIG_SND_SOC_SOF_DEBUG_IPC_KERNEL_INJECTOR) += snd-sof-ipc-kernel-injector.o
|
H A D | Kconfig | 173 bool "SOF verbose IPC logs" 175 This option enables more verbose IPC logs, with command types in 177 if you are trying to debug IPC with the DSP firmware. 181 bool "SOF force to use IPC for position update on SKL+" 186 On platforms (e.g. Intel SKL-) where position update IPC is the only 211 tristate "SOF enable IPC flood test" 215 This option enables a separate client device for IPC flood test 218 Say Y if you want to enable IPC flood test. 222 int "Number of IPC flood test clients" 227 Select the number of IPC flood test clients to be created. [all …]
|
H A D | ipc4.c | 27 {3, "Not enough space in the IPC reply buffer to complete the request"}, 29 {5, "Replaced ADSP IPC PENDING (unused)"}, 266 sof_ipc4_log_header(sdev->dev, "ipc tx reply", ipc4_reply, false); in sof_ipc4_get_reply() 284 /* wait for IPC message reply */ 285 static int ipc4_wait_tx_done(struct snd_sof_ipc *ipc, void *reply_data) in ipc4_wait_tx_done() argument 287 struct snd_sof_ipc_msg *msg = &ipc->msg; in ipc4_wait_tx_done() 289 struct snd_sof_dev *sdev = ipc->sdev; in ipc4_wait_tx_done() 292 /* wait for DSP IPC completion */ in ipc4_wait_tx_done() 296 dev_err(sdev->dev, "ipc timed out for %#x|%#x\n", in ipc4_wait_tx_done() 298 snd_sof_handle_fw_exception(ipc->sdev, "IPC timeout"); in ipc4_wait_tx_done() [all …]
|
/openbmc/linux/sound/soc/intel/catpt/ |
H A 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 …]
|
/openbmc/linux/sound/soc/intel/skylake/ |
H A 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 …]
|
H A 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 …]
|
H A 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 …]
|
/openbmc/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 …]
|
/openbmc/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) 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 …]
|
/openbmc/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
|
/openbmc/u-boot/arch/arm/include/asm/arch-imx8/sci/ |
H A D | sci.h | 59 int sc_pm_set_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource, 61 int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk, 63 int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk, 65 int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk, 67 int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk, 69 int sc_pm_clock_enable(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk, 73 int sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl, 75 void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *boot_dev); 76 void sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status); 77 void sc_misc_build_info(sc_ipc_t ipc, u32 *build, u32 *commit); [all …]
|
/openbmc/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 …]
|
/openbmc/linux/drivers/firmware/ |
H A D | mtk-adsp-ipc.c | 7 #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 …]
|
/openbmc/linux/net/qrtr/ |
H A D | af_qrtr.c | 161 static void qrtr_port_put(struct qrtr_sock *ipc); 440 struct qrtr_sock *ipc; in qrtr_endpoint_post() local 530 ipc = qrtr_port_lookup(cb->dst_port); in qrtr_endpoint_post() 531 if (!ipc) in qrtr_endpoint_post() 534 if (sock_queue_rcv_skb(&ipc->sk, skb)) { in qrtr_endpoint_post() 535 qrtr_port_put(ipc); in qrtr_endpoint_post() 539 qrtr_port_put(ipc); in qrtr_endpoint_post() 669 struct qrtr_sock *ipc; in qrtr_port_lookup() local 675 ipc = xa_load(&qrtr_ports, port); in qrtr_port_lookup() 676 if (ipc) in qrtr_port_lookup() [all …]
|
/openbmc/linux/fs/smb/server/ |
H A D | ksmbd_netlink.h | 14 * This is a userspace ABI to communicate data between ksmbd and user IPC 19 * This event is to check whether user IPC daemon is alive. If user IPC 25 * server from the user IPC daemon and to start the server. The global 33 * This event is to get user account info to user IPC daemon. 42 * This event is to send tree disconnect info to user IPC daemon. 45 * This event is to send logout request to user IPC daemon. 64 * IPC heartbeat frame to check whether user IPC daemon is alive. 81 * IPC request for ksmbd server startup 119 * IPC request to shutdown ksmbd server. 126 * IPC user login request. [all …]
|
/openbmc/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()
|
/openbmc/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 …]
|
/openbmc/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);
|