cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sof-client.h (2367B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2
      3#ifndef __SOC_SOF_CLIENT_H
      4#define __SOC_SOF_CLIENT_H
      5
      6#include <linux/auxiliary_bus.h>
      7#include <linux/device.h>
      8#include <linux/list.h>
      9#include <sound/sof.h>
     10
     11struct sof_ipc_fw_version;
     12struct sof_ipc_cmd_hdr;
     13struct snd_sof_dev;
     14struct dentry;
     15
     16/**
     17 * struct sof_client_dev - SOF client device
     18 * @auxdev:	auxiliary device
     19 * @sdev:	pointer to SOF core device struct
     20 * @list:	item in SOF core client dev list
     21 * @data:	device specific data
     22 */
     23struct sof_client_dev {
     24	struct auxiliary_device auxdev;
     25	struct snd_sof_dev *sdev;
     26	struct list_head list;
     27	void *data;
     28};
     29
     30#define sof_client_dev_to_sof_dev(cdev)		((cdev)->sdev)
     31
     32#define auxiliary_dev_to_sof_client_dev(auxiliary_dev) \
     33	container_of(auxiliary_dev, struct sof_client_dev, auxdev)
     34
     35#define dev_to_sof_client_dev(dev) \
     36	container_of(to_auxiliary_dev(dev), struct sof_client_dev, auxdev)
     37
     38int sof_client_ipc_tx_message(struct sof_client_dev *cdev, void *ipc_msg,
     39			      void *reply_data, size_t reply_bytes);
     40
     41struct dentry *sof_client_get_debugfs_root(struct sof_client_dev *cdev);
     42struct device *sof_client_get_dma_dev(struct sof_client_dev *cdev);
     43const struct sof_ipc_fw_version *sof_client_get_fw_version(struct sof_client_dev *cdev);
     44size_t sof_client_get_ipc_max_payload_size(struct sof_client_dev *cdev);
     45enum sof_ipc_type sof_client_get_ipc_type(struct sof_client_dev *cdev);
     46
     47/* module refcount management of SOF core */
     48int sof_client_core_module_get(struct sof_client_dev *cdev);
     49void sof_client_core_module_put(struct sof_client_dev *cdev);
     50
     51/* IPC notification */
     52typedef void (*sof_client_event_callback)(struct sof_client_dev *cdev, void *msg_buf);
     53
     54int sof_client_register_ipc_rx_handler(struct sof_client_dev *cdev,
     55				       u32 ipc_msg_type,
     56				       sof_client_event_callback callback);
     57void sof_client_unregister_ipc_rx_handler(struct sof_client_dev *cdev,
     58					  u32 ipc_msg_type);
     59
     60/* DSP state notification and query */
     61typedef void (*sof_client_fw_state_callback)(struct sof_client_dev *cdev,
     62					     enum sof_fw_state state);
     63
     64int sof_client_register_fw_state_handler(struct sof_client_dev *cdev,
     65					 sof_client_fw_state_callback callback);
     66void sof_client_unregister_fw_state_handler(struct sof_client_dev *cdev);
     67enum sof_fw_state sof_client_get_fw_state(struct sof_client_dev *cdev);
     68
     69#endif /* __SOC_SOF_CLIENT_H */