blob: 6ee1fad7c04371bb560ac589f40db2c520b71bbc [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __DRIVERS_INTEL_SOUNDWIRE_H__
#define __DRIVERS_INTEL_SOUNDWIRE_H__
#include <device/soundwire.h>
#include <types.h>
/**
* enum intel_soundwire_quirk - Quirks for controller master links.
* @INTEL_SOUNDWIRE_QUIRK_STATIC_CLOCK: Link clock is fixed.
* @INTEL_SOUNDWIRE_QUIRK_BUS_DISABLE: This link should be disabled.
*/
enum intel_soundwire_quirk {
INTEL_SOUNDWIRE_QUIRK_STATIC_CLOCK = BIT(0),
INTEL_SOUNDWIRE_QUIRK_BUS_DISABLE = BIT(1),
};
/**
* struct intel_soundwire_controller - SoundWire controller configuration for Intel SoC.
* @dev: Device handle for this controller.
* @acpi_address: ACPI address for this controller. This is a custom address that is not
* compatible with either PCI or SoundWire.
* @ip_clock: Frequency of the source clock connected to the controller.
* @quirk_mask: Quirks that can be passed to the kernel drivers.
* @sdw: SoundWire controller properties defined in MIPI SoundWire DisCo Specification.
*/
struct intel_soundwire_controller {
const struct device *dev;
uint64_t acpi_address;
unsigned int ip_clock;
unsigned int quirk_mask;
struct soundwire_controller sdw;
};
/**
* soc_fill_soundwire_controller() - Get SoundWire controller properties from the SoC.
* @controller: Properties to be filled by the SoC.
* Return zero for success, -1 if there was any error filling the properties.
*/
int soc_fill_soundwire_controller(struct intel_soundwire_controller **controller);
#endif /* __DRIVERS_INTEL_SOUNDWIRE_H__ */