mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Several of the UMP transactions in the FDL process should timeout if the device does not respond within a certain time, add handling into the UMP helpers and the FDL code to handle this. Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev> Link: https://patch.msgid.link/20251020155512.353774-18-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
51 lines
1.6 KiB
C
51 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* The MIPI SDCA specification is available for public downloads at
|
|
* https://www.mipi.org/mipi-sdca-v1-0-download
|
|
*
|
|
* Copyright (C) 2025 Cirrus Logic, Inc. and
|
|
* Cirrus Logic International Semiconductor Ltd.
|
|
*/
|
|
|
|
#ifndef __SDCA_UMP_H__
|
|
#define __SDCA_UMP_H__
|
|
|
|
struct regmap;
|
|
struct sdca_control;
|
|
struct sdca_entity;
|
|
struct sdca_function_data;
|
|
struct snd_soc_component;
|
|
struct delayed_work;
|
|
|
|
int sdca_ump_get_owner_host(struct device *dev,
|
|
struct regmap *function_regmap,
|
|
struct sdca_function_data *function,
|
|
struct sdca_entity *entity,
|
|
struct sdca_control *control);
|
|
int sdca_ump_set_owner_device(struct device *dev,
|
|
struct regmap *function_regmap,
|
|
struct sdca_function_data *function,
|
|
struct sdca_entity *entity,
|
|
struct sdca_control *control);
|
|
int sdca_ump_read_message(struct device *dev,
|
|
struct regmap *device_regmap,
|
|
struct regmap *function_regmap,
|
|
struct sdca_function_data *function,
|
|
struct sdca_entity *entity,
|
|
unsigned int offset_sel, unsigned int length_sel,
|
|
void **msg);
|
|
int sdca_ump_write_message(struct device *dev,
|
|
struct regmap *device_regmap,
|
|
struct regmap *function_regmap,
|
|
struct sdca_function_data *function,
|
|
struct sdca_entity *entity,
|
|
unsigned int offset_sel, unsigned int msg_offset,
|
|
unsigned int length_sel,
|
|
void *msg, int msg_len);
|
|
|
|
void sdca_ump_cancel_timeout(struct delayed_work *work);
|
|
void sdca_ump_schedule_timeout(struct delayed_work *work,
|
|
unsigned int timeout_us);
|
|
|
|
#endif // __SDCA_UMP_H__
|