Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
0002 //
0003 // This file is provided under a dual BSD/GPLv2 license.  When using or
0004 // redistributing this file, you may do so under either license.
0005 //
0006 // Copyright(c) 2022 Intel Corporation. All rights reserved.
0007 //
0008 
0009 /*
0010  * common ops for SKL+ HDAudio platforms
0011  */
0012 
0013 #include "../sof-priv.h"
0014 #include "hda.h"
0015 #include "../sof-audio.h"
0016 
0017 struct snd_sof_dsp_ops sof_hda_common_ops = {
0018     /* probe/remove/shutdown */
0019     .probe      = hda_dsp_probe,
0020     .remove     = hda_dsp_remove,
0021 
0022     /* Register IO */
0023     .write      = sof_io_write,
0024     .read       = sof_io_read,
0025     .write64    = sof_io_write64,
0026     .read64     = sof_io_read64,
0027 
0028     /* Block IO */
0029     .block_read = sof_block_read,
0030     .block_write    = sof_block_write,
0031 
0032     /* Mailbox IO */
0033     .mailbox_read   = sof_mailbox_read,
0034     .mailbox_write  = sof_mailbox_write,
0035 
0036     /* ipc */
0037     .get_mailbox_offset = hda_dsp_ipc_get_mailbox_offset,
0038     .get_window_offset = hda_dsp_ipc_get_window_offset,
0039 
0040     .ipc_msg_data   = hda_ipc_msg_data,
0041     .set_stream_data_offset = hda_set_stream_data_offset,
0042 
0043     /* machine driver */
0044     .machine_select = hda_machine_select,
0045     .machine_register = sof_machine_register,
0046     .machine_unregister = sof_machine_unregister,
0047     .set_mach_params = hda_set_mach_params,
0048 
0049     /* debug */
0050     .dbg_dump   = hda_dsp_dump,
0051     .debugfs_add_region_item = snd_sof_debugfs_add_region_item_iomem,
0052 
0053     /* stream callbacks */
0054     .pcm_open   = hda_dsp_pcm_open,
0055     .pcm_close  = hda_dsp_pcm_close,
0056     .pcm_hw_params  = hda_dsp_pcm_hw_params,
0057     .pcm_hw_free    = hda_dsp_stream_hw_free,
0058     .pcm_trigger    = hda_dsp_pcm_trigger,
0059     .pcm_pointer    = hda_dsp_pcm_pointer,
0060     .pcm_ack    = hda_dsp_pcm_ack,
0061 
0062     /* firmware loading */
0063     .load_firmware = snd_sof_load_firmware_raw,
0064 
0065     /* pre/post fw run */
0066     .pre_fw_run = hda_dsp_pre_fw_run,
0067 
0068     /* firmware run */
0069     .run = hda_dsp_cl_boot_firmware,
0070 
0071     /* parse platform specific extended manifest */
0072     .parse_platform_ext_manifest = hda_dsp_ext_man_get_cavs_config_data,
0073 
0074     /* dsp core get/put */
0075 
0076     /* trace callback */
0077     .trace_init = hda_dsp_trace_init,
0078     .trace_release = hda_dsp_trace_release,
0079     .trace_trigger = hda_dsp_trace_trigger,
0080 
0081     /* client ops */
0082     .register_ipc_clients = hda_register_clients,
0083     .unregister_ipc_clients = hda_unregister_clients,
0084 
0085     /* DAI drivers */
0086     .drv        = skl_dai,
0087     .num_drv    = SOF_SKL_NUM_DAIS,
0088 
0089     /* PM */
0090     .suspend        = hda_dsp_suspend,
0091     .resume         = hda_dsp_resume,
0092     .runtime_suspend    = hda_dsp_runtime_suspend,
0093     .runtime_resume     = hda_dsp_runtime_resume,
0094     .runtime_idle       = hda_dsp_runtime_idle,
0095     .set_hw_params_upon_resume = hda_dsp_set_hw_params_upon_resume,
0096     .set_power_state    = hda_dsp_set_power_state,
0097 
0098     /* ALSA HW info flags */
0099     .hw_info =  SNDRV_PCM_INFO_MMAP |
0100             SNDRV_PCM_INFO_MMAP_VALID |
0101             SNDRV_PCM_INFO_INTERLEAVED |
0102             SNDRV_PCM_INFO_PAUSE |
0103             SNDRV_PCM_INFO_NO_PERIOD_WAKEUP,
0104 
0105     .dsp_arch_ops = &sof_xtensa_arch_ops,
0106 };