18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef _DP_AUDIO_H_ 78c2ecf20Sopenharmony_ci#define _DP_AUDIO_H_ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include "dp_panel.h" 128c2ecf20Sopenharmony_ci#include "dp_catalog.h" 138c2ecf20Sopenharmony_ci#include <sound/hdmi-codec.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci/** 168c2ecf20Sopenharmony_ci * struct dp_audio 178c2ecf20Sopenharmony_ci * @lane_count: number of lanes configured in current session 188c2ecf20Sopenharmony_ci * @bw_code: link rate's bandwidth code for current session 198c2ecf20Sopenharmony_ci */ 208c2ecf20Sopenharmony_cistruct dp_audio { 218c2ecf20Sopenharmony_ci u32 lane_count; 228c2ecf20Sopenharmony_ci u32 bw_code; 238c2ecf20Sopenharmony_ci}; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci/** 268c2ecf20Sopenharmony_ci * dp_audio_get() 278c2ecf20Sopenharmony_ci * 288c2ecf20Sopenharmony_ci * Creates and instance of dp audio. 298c2ecf20Sopenharmony_ci * 308c2ecf20Sopenharmony_ci * @pdev: caller's platform device instance. 318c2ecf20Sopenharmony_ci * @panel: an instance of dp_panel module. 328c2ecf20Sopenharmony_ci * @catalog: an instance of dp_catalog module. 338c2ecf20Sopenharmony_ci * 348c2ecf20Sopenharmony_ci * Returns the error code in case of failure, otherwize 358c2ecf20Sopenharmony_ci * an instance of newly created dp_module. 368c2ecf20Sopenharmony_ci */ 378c2ecf20Sopenharmony_cistruct dp_audio *dp_audio_get(struct platform_device *pdev, 388c2ecf20Sopenharmony_ci struct dp_panel *panel, 398c2ecf20Sopenharmony_ci struct dp_catalog *catalog); 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci/** 428c2ecf20Sopenharmony_ci * dp_register_audio_driver() 438c2ecf20Sopenharmony_ci * 448c2ecf20Sopenharmony_ci * Registers DP device with hdmi_codec interface. 458c2ecf20Sopenharmony_ci * 468c2ecf20Sopenharmony_ci * @dev: DP device instance. 478c2ecf20Sopenharmony_ci * @dp_audio: an instance of dp_audio module. 488c2ecf20Sopenharmony_ci * 498c2ecf20Sopenharmony_ci * 508c2ecf20Sopenharmony_ci * Returns the error code in case of failure, otherwise 518c2ecf20Sopenharmony_ci * zero on success. 528c2ecf20Sopenharmony_ci */ 538c2ecf20Sopenharmony_ciint dp_register_audio_driver(struct device *dev, 548c2ecf20Sopenharmony_ci struct dp_audio *dp_audio); 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_civoid dp_unregister_audio_driver(struct device *dev, struct dp_audio *dp_audio); 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci/** 598c2ecf20Sopenharmony_ci * dp_audio_put() 608c2ecf20Sopenharmony_ci * 618c2ecf20Sopenharmony_ci * Cleans the dp_audio instance. 628c2ecf20Sopenharmony_ci * 638c2ecf20Sopenharmony_ci * @dp_audio: an instance of dp_audio. 648c2ecf20Sopenharmony_ci */ 658c2ecf20Sopenharmony_civoid dp_audio_put(struct dp_audio *dp_audio); 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ciint dp_audio_hw_params(struct device *dev, 688c2ecf20Sopenharmony_ci void *data, 698c2ecf20Sopenharmony_ci struct hdmi_codec_daifmt *daifmt, 708c2ecf20Sopenharmony_ci struct hdmi_codec_params *params); 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci#endif /* _DP_AUDIO_H_ */ 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci 75