2023-04-04 13:41:14 +03:00
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
/*
* This file is provided under a dual BSD / GPLv2 license . When using or
* redistributing this file , you may do so under either license .
*
* Copyright ( c ) 2022 - 2023 Intel Corporation . All rights reserved .
*/
struct hdac_bus ;
2023-04-04 13:41:25 +03:00
struct hdac_ext_link ;
2023-04-04 13:41:14 +03:00
# if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_MLINK)
2023-04-04 13:41:15 +03:00
int hda_bus_ml_init ( struct hdac_bus * bus ) ;
2023-04-04 13:41:14 +03:00
void hda_bus_ml_free ( struct hdac_bus * bus ) ;
2023-04-04 13:41:17 +03:00
2023-04-04 13:41:19 +03:00
int hdac_bus_eml_get_count ( struct hdac_bus * bus , bool alt , int elid ) ;
2023-04-04 13:41:20 +03:00
void hdac_bus_eml_enable_interrupt ( struct hdac_bus * bus , bool alt , int elid , bool enable ) ;
bool hdac_bus_eml_check_interrupt ( struct hdac_bus * bus , bool alt , int elid ) ;
2023-04-04 13:41:19 +03:00
2023-04-04 13:41:21 +03:00
int hdac_bus_eml_set_syncprd_unlocked ( struct hdac_bus * bus , bool alt , int elid , u32 syncprd ) ;
int hdac_bus_eml_sdw_set_syncprd_unlocked ( struct hdac_bus * bus , u32 syncprd ) ;
int hdac_bus_eml_wait_syncpu_unlocked ( struct hdac_bus * bus , bool alt , int elid ) ;
int hdac_bus_eml_sdw_wait_syncpu_unlocked ( struct hdac_bus * bus ) ;
2023-04-04 13:41:22 +03:00
void hdac_bus_eml_sync_arm_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink ) ;
void hdac_bus_eml_sdw_sync_arm_unlocked ( struct hdac_bus * bus , int sublink ) ;
int hdac_bus_eml_sync_go_unlocked ( struct hdac_bus * bus , bool alt , int elid ) ;
int hdac_bus_eml_sdw_sync_go_unlocked ( struct hdac_bus * bus ) ;
2023-04-04 13:41:23 +03:00
bool hdac_bus_eml_check_cmdsync_unlocked ( struct hdac_bus * bus , bool alt , int elid ) ;
bool hdac_bus_eml_sdw_check_cmdsync_unlocked ( struct hdac_bus * bus ) ;
2023-04-04 13:41:17 +03:00
int hdac_bus_eml_power_up ( struct hdac_bus * bus , bool alt , int elid , int sublink ) ;
int hdac_bus_eml_power_up_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink ) ;
int hdac_bus_eml_power_down ( struct hdac_bus * bus , bool alt , int elid , int sublink ) ;
int hdac_bus_eml_power_down_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink ) ;
2023-04-04 13:41:18 +03:00
int hdac_bus_eml_sdw_power_up_unlocked ( struct hdac_bus * bus , int sublink ) ;
int hdac_bus_eml_sdw_power_down_unlocked ( struct hdac_bus * bus , int sublink ) ;
2023-08-07 16:09:56 -05:00
int hdac_bus_eml_sdw_get_lsdiid_unlocked ( struct hdac_bus * bus , int sublink , u16 * lsdiid ) ;
2023-04-04 13:41:24 +03:00
int hdac_bus_eml_sdw_set_lsdiid ( struct hdac_bus * bus , int sublink , int dev_num ) ;
2023-05-12 12:46:11 -05:00
int hdac_bus_eml_sdw_map_stream_ch ( struct hdac_bus * bus , int sublink , int y ,
int channel_mask , int stream_id , int dir ) ;
2023-04-04 13:41:14 +03:00
void hda_bus_ml_put_all ( struct hdac_bus * bus ) ;
void hda_bus_ml_reset_losidv ( struct hdac_bus * bus ) ;
int hda_bus_ml_resume ( struct hdac_bus * bus ) ;
int hda_bus_ml_suspend ( struct hdac_bus * bus ) ;
2023-04-04 13:41:25 +03:00
struct hdac_ext_link * hdac_bus_eml_ssp_get_hlink ( struct hdac_bus * bus ) ;
struct hdac_ext_link * hdac_bus_eml_dmic_get_hlink ( struct hdac_bus * bus ) ;
2023-05-12 12:46:07 -05:00
struct hdac_ext_link * hdac_bus_eml_sdw_get_hlink ( struct hdac_bus * bus ) ;
2023-04-04 13:41:25 +03:00
2023-04-04 13:41:27 +03:00
struct mutex * hdac_bus_eml_get_mutex ( struct hdac_bus * bus , bool alt , int elid ) ;
2023-04-04 13:41:26 +03:00
int hdac_bus_eml_enable_offload ( struct hdac_bus * bus , bool alt , int elid , bool enable ) ;
2023-04-04 13:41:14 +03:00
# else
static inline int
2023-04-04 13:41:15 +03:00
hda_bus_ml_init ( struct hdac_bus * bus ) { return 0 ; }
2023-04-04 13:41:14 +03:00
static inline void hda_bus_ml_free ( struct hdac_bus * bus ) { }
2023-04-04 13:41:17 +03:00
2023-04-04 13:41:19 +03:00
static inline int
hdac_bus_eml_get_count ( struct hdac_bus * bus , bool alt , int elid ) { return 0 ; }
2023-04-04 13:41:20 +03:00
static inline void
hdac_bus_eml_enable_interrupt ( struct hdac_bus * bus , bool alt , int elid , bool enable ) { }
static inline bool
hdac_bus_eml_check_interrupt ( struct hdac_bus * bus , bool alt , int elid ) { return false ; }
2023-04-04 13:41:21 +03:00
static inline int
hdac_bus_eml_set_syncprd_unlocked ( struct hdac_bus * bus , bool alt , int elid , u32 syncprd )
{
return 0 ;
}
static inline int
hdac_bus_eml_sdw_set_syncprd_unlocked ( struct hdac_bus * bus , u32 syncprd )
{
return 0 ;
}
static inline int
hdac_bus_eml_wait_syncpu_unlocked ( struct hdac_bus * bus , bool alt , int elid )
{
return 0 ;
}
static inline int
hdac_bus_eml_sdw_wait_syncpu_unlocked ( struct hdac_bus * bus ) { return 0 ; }
2023-04-04 13:41:22 +03:00
static inline void
hdac_bus_eml_sync_arm_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink ) { }
static inline void
hdac_bus_eml_sdw_sync_arm_unlocked ( struct hdac_bus * bus , int sublink ) { }
static inline int
hdac_bus_eml_sync_go_unlocked ( struct hdac_bus * bus , bool alt , int elid ) { return 0 ; }
static inline int
hdac_bus_eml_sdw_sync_go_unlocked ( struct hdac_bus * bus ) { return 0 ; }
2023-04-04 13:41:21 +03:00
2023-04-04 13:41:23 +03:00
static inline bool
hdac_bus_eml_check_cmdsync_unlocked ( struct hdac_bus * bus , bool alt , int elid ) { return false ; }
static inline bool
hdac_bus_eml_sdw_check_cmdsync_unlocked ( struct hdac_bus * bus ) { return false ; }
2023-04-04 13:41:17 +03:00
static inline int
hdac_bus_eml_power_up ( struct hdac_bus * bus , bool alt , int elid , int sublink )
{
return 0 ;
}
static inline int
hdac_bus_eml_power_up_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink )
{
return 0 ;
}
static inline int
hdac_bus_eml_power_down ( struct hdac_bus * bus , bool alt , int elid , int sublink )
{
return 0 ;
}
static inline int
hdac_bus_eml_power_down_unlocked ( struct hdac_bus * bus , bool alt , int elid , int sublink )
{
return 0 ;
}
2023-04-04 13:41:18 +03:00
static inline int
hdac_bus_eml_sdw_power_up_unlocked ( struct hdac_bus * bus , int sublink ) { return 0 ; }
static inline int
hdac_bus_eml_sdw_power_down_unlocked ( struct hdac_bus * bus , int sublink ) { return 0 ; }
2023-08-07 16:09:56 -05:00
static inline int
hdac_bus_eml_sdw_get_lsdiid_unlocked ( struct hdac_bus * bus , int sublink , u16 * lsdiid ) { return 0 ; }
2023-04-04 13:41:24 +03:00
static inline int
hdac_bus_eml_sdw_set_lsdiid ( struct hdac_bus * bus , int sublink , int dev_num ) { return 0 ; }
2023-05-12 12:46:11 -05:00
static inline int
hdac_bus_eml_sdw_map_stream_ch ( struct hdac_bus * bus , int sublink , int y ,
int channel_mask , int stream_id , int dir )
{
return 0 ;
}
2023-04-04 13:41:14 +03:00
static inline void hda_bus_ml_put_all ( struct hdac_bus * bus ) { }
static inline void hda_bus_ml_reset_losidv ( struct hdac_bus * bus ) { }
static inline int hda_bus_ml_resume ( struct hdac_bus * bus ) { return 0 ; }
static inline int hda_bus_ml_suspend ( struct hdac_bus * bus ) { return 0 ; }
2023-04-04 13:41:25 +03:00
static inline struct hdac_ext_link *
hdac_bus_eml_ssp_get_hlink ( struct hdac_bus * bus ) { return NULL ; }
static inline struct hdac_ext_link *
hdac_bus_eml_dmic_get_hlink ( struct hdac_bus * bus ) { return NULL ; }
2023-05-12 12:46:07 -05:00
static inline struct hdac_ext_link *
hdac_bus_eml_sdw_get_hlink ( struct hdac_bus * bus ) { return NULL ; }
2023-04-04 13:41:27 +03:00
static inline struct mutex *
hdac_bus_eml_get_mutex ( struct hdac_bus * bus , bool alt , int elid ) { return NULL ; }
2023-04-04 13:41:26 +03:00
static inline int
hdac_bus_eml_enable_offload ( struct hdac_bus * bus , bool alt , int elid , bool enable )
{
return 0 ;
}
2023-04-04 13:41:14 +03:00
# endif /* CONFIG_SND_SOC_SOF_HDA */