1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _DP_AUDIO_H_ 7*4882a593Smuzhiyun #define _DP_AUDIO_H_ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/platform_device.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "dp_panel.h" 12*4882a593Smuzhiyun #include "dp_catalog.h" 13*4882a593Smuzhiyun #include <sound/hdmi-codec.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /** 16*4882a593Smuzhiyun * struct dp_audio 17*4882a593Smuzhiyun * @lane_count: number of lanes configured in current session 18*4882a593Smuzhiyun * @bw_code: link rate's bandwidth code for current session 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun struct dp_audio { 21*4882a593Smuzhiyun u32 lane_count; 22*4882a593Smuzhiyun u32 bw_code; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /** 26*4882a593Smuzhiyun * dp_audio_get() 27*4882a593Smuzhiyun * 28*4882a593Smuzhiyun * Creates and instance of dp audio. 29*4882a593Smuzhiyun * 30*4882a593Smuzhiyun * @pdev: caller's platform device instance. 31*4882a593Smuzhiyun * @panel: an instance of dp_panel module. 32*4882a593Smuzhiyun * @catalog: an instance of dp_catalog module. 33*4882a593Smuzhiyun * 34*4882a593Smuzhiyun * Returns the error code in case of failure, otherwize 35*4882a593Smuzhiyun * an instance of newly created dp_module. 36*4882a593Smuzhiyun */ 37*4882a593Smuzhiyun struct dp_audio *dp_audio_get(struct platform_device *pdev, 38*4882a593Smuzhiyun struct dp_panel *panel, 39*4882a593Smuzhiyun struct dp_catalog *catalog); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /** 42*4882a593Smuzhiyun * dp_register_audio_driver() 43*4882a593Smuzhiyun * 44*4882a593Smuzhiyun * Registers DP device with hdmi_codec interface. 45*4882a593Smuzhiyun * 46*4882a593Smuzhiyun * @dev: DP device instance. 47*4882a593Smuzhiyun * @dp_audio: an instance of dp_audio module. 48*4882a593Smuzhiyun * 49*4882a593Smuzhiyun * 50*4882a593Smuzhiyun * Returns the error code in case of failure, otherwise 51*4882a593Smuzhiyun * zero on success. 52*4882a593Smuzhiyun */ 53*4882a593Smuzhiyun int dp_register_audio_driver(struct device *dev, 54*4882a593Smuzhiyun struct dp_audio *dp_audio); 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /** 57*4882a593Smuzhiyun * dp_audio_put() 58*4882a593Smuzhiyun * 59*4882a593Smuzhiyun * Cleans the dp_audio instance. 60*4882a593Smuzhiyun * 61*4882a593Smuzhiyun * @dp_audio: an instance of dp_audio. 62*4882a593Smuzhiyun */ 63*4882a593Smuzhiyun void dp_audio_put(struct dp_audio *dp_audio); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun int dp_audio_hw_params(struct device *dev, 66*4882a593Smuzhiyun void *data, 67*4882a593Smuzhiyun struct hdmi_codec_daifmt *daifmt, 68*4882a593Smuzhiyun struct hdmi_codec_params *params); 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #endif /* _DP_AUDIO_H_ */ 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun 73