diff options
Diffstat (limited to 'cras/src/server/cras_alsa_ucm.h')
-rw-r--r-- | cras/src/server/cras_alsa_ucm.h | 512 |
1 files changed, 0 insertions, 512 deletions
diff --git a/cras/src/server/cras_alsa_ucm.h b/cras/src/server/cras_alsa_ucm.h deleted file mode 100644 index 55c3cf62..00000000 --- a/cras/src/server/cras_alsa_ucm.h +++ /dev/null @@ -1,512 +0,0 @@ -/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef _CRAS_ALSA_UCM_H -#define _CRAS_ALSA_UCM_H - -#include <alsa/asoundlib.h> - -#include "cras_alsa_mixer_name.h" -#include "cras_alsa_ucm_section.h" -#include "cras_types.h" - -struct cras_use_case_mgr; - -/* Helpers to access UCM configuration for a card if any is provided. - * This configuration can specify how to enable or disable certain inputs and - * outputs on the card. - */ - -/* Creates a cras_use_case_mgr instance for the given card name if there is a - * matching ucm configuration. It there is a matching UCM config, then it will - * be configured to the default state. - * - * Args: - * name - Name of the card to match against the UCM card list. - * Returns: - * A pointer to the use case manager if found, otherwise NULL. The pointer - * must later be freed with ucm_destroy(). - */ -struct cras_use_case_mgr *ucm_create(const char *name); - -/* Destroys a cras_use_case_mgr that was returned from ucm_create. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - */ -void ucm_destroy(struct cras_use_case_mgr *mgr); - -/* Sets the new use case for the given cras_use_case_mgr. - * Args: - * mgr - The cras_use_case_mgr pointer returned from ucm_create. - * use_case - The new use case to be set. - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_set_use_case(struct cras_use_case_mgr *mgr, - enum CRAS_STREAM_TYPE use_case); - -/* Checks if modifier for left right swap mode exists in ucm. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * 1 if it exists, 0 otherwise. - */ -int ucm_swap_mode_exists(struct cras_use_case_mgr *mgr); - -/* Enables or disables swap mode for the given node_name. First checks - * if the modifier is already enabled or disabled. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * node_name - The node name. - * enable - Enable device if non-zero. - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_enable_swap_mode(struct cras_use_case_mgr *mgr, const char *node_name, - int enable); - -/* Checks if modifier of noise cancellation for given node_name exists in ucm. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * node_name - The node name. - * Returns: - * 1 if it exists, 0 otherwise. - */ -int ucm_node_noise_cancellation_exists(struct cras_use_case_mgr *mgr, - const char *node_name); - -/* Enables or disables noise cancellation for the given node_name. First checks - * if the modifier is already enabled or disabled. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * node_name - The node name. - * enable - Enable device if non-zero. - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_enable_node_noise_cancellation(struct cras_use_case_mgr *mgr, - const char *node_name, int enable); - -/* Enables or disables a UCM device. First checks if the device is already - * enabled or disabled. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The ucm device to enable of disable. - * enable - Enable device if non-zero. - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_set_enabled(struct cras_use_case_mgr *mgr, const char *dev, int enable); - -/* Gets the value of given flag name. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * flag_name - The name of the flag. - * Returns: - * A pointer to the allocated string containing the flag value, or - * NULL if the flag is not set. - */ -char *ucm_get_flag(struct cras_use_case_mgr *mgr, const char *flag_name); - -/* Gets the capture control name which associated with given ucm device. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * ucm_dev - The ucm device to get capture control for. - * Returns: - * A pointer to the allocated string containing the name of the capture - * control, or NULL if no capture control is found. - */ -char *ucm_get_cap_control(struct cras_use_case_mgr *mgr, const char *ucm_dev); - -/* Gets the new node type name which user wants to override the old one for - * given ucm device. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * ucm_dev - The ucm device to override node type. - * Returns: - * A pointer to the allocated string containing the new type name, - * or NULL if no override_type_name is found. - */ -const char *ucm_get_override_type_name(struct cras_use_case_mgr *mgr, - const char *ucm_dev); - -/* Gets the name of the ucm device for the given jack name. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * jack - The name of the jack to search for. - * direction - input or output - * Rreturns: - * A pointer to the allocated string containing the name of the device, or - * NULL if no device is found. - */ -char *ucm_get_dev_for_jack(struct cras_use_case_mgr *mgr, const char *jack, - enum CRAS_STREAM_DIRECTION direction); - -/* Gets the name of the ucm device for the given mixer name. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * mixer - The name of the mixer control to search for. - * dir - input or output - * Rreturns: - * A pointer to the allocated string containing the name of the device, or - * NULL if no device is found. - */ -char *ucm_get_dev_for_mixer(struct cras_use_case_mgr *mgr, const char *mixer, - enum CRAS_STREAM_DIRECTION dir); - -/* If there is an EDID file variable specified for dev, return it. The EDID - * file will be used for HDMI devices so supported audio formats can be checked. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for an EDID file. - * Returns: - * A string containing the name of the edid file on Success (Must be freed - * later). NULL if none found. - */ -const char *ucm_get_edid_file_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the dsp name which is associated with the given ucm device. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to get dsp name for. - * Returns: - * A pointer to the allocated string containing the dsp name, or NULL if no - * dsp name is found. - */ -const char *ucm_get_dsp_name_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the minimum buffer level for an output. This level will add latency to - * all streams playing on the output, but can be used to work around an - * unreliable dma residue. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * level - The pointer to the returned value. - * - */ -int ucm_get_min_buffer_level(struct cras_use_case_mgr *mgr, - unsigned int *level); - -/* Gets the flag for disabling software volume. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * 0 on success, -ENOENT on failure. - */ -unsigned int ucm_get_disable_software_volume(struct cras_use_case_mgr *mgr); - -/* Gets the value for default node gain. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for default node gain. - * gain - The pointer to the returned value. - * Returns: - * 0 on success, other error codes on failure. - */ -int ucm_get_default_node_gain(struct cras_use_case_mgr *mgr, const char *dev, - long *gain); - -/* Gets the value for intrinsic sensitivity. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to query for intrinsic volume. - * sensitivity - The pointer to the returned value. - * Returns: - * 0 on success, other error codes on failure. - */ -int ucm_get_intrinsic_sensitivity(struct cras_use_case_mgr *mgr, - const char *dev, long *sensitivity); - -/* Gets the flag if an input device can preempt hotword recording. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for preempt hotword flag. - * Returns: - * Non-zero value means input can preempt hotword recording, otherwise - * return zero. - */ -int ucm_get_preempt_hotword(struct cras_use_case_mgr *mgr, const char *dev); - -/* Gets the ALSA device index on the card for given UCM dev. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The UCM device to check for ALSA device index. - * direction - playback(CRAS_STREAM_OUTPUT) or capture(CRAS_STREAM_INPUT). - * Returns: - * Non-negative integer for the ALSA device index on the card, -1 if not - * found. The ALSA device index is parsed from the PCM name which is - * formatted as "hw:<some-name>,<idx>". - */ -int ucm_get_alsa_dev_idx_for_dev(struct cras_use_case_mgr *mgr, const char *dev, - enum CRAS_STREAM_DIRECTION direction); - -/* Gets the node name of the echo reference device on the card. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check echo reference for. - * Returns: - * String containing the node name of the echo reference to this - * dev, caller is responsible to free it later. NULL if echo reference - * doesn't exist. - */ -const char * -ucm_get_echo_reference_dev_name_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the sample rate at which to run this device. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for sample rate. - * direction - playback(CRAS_STREAM_OUTPUT) or capture(CRAS_STREAM_INPUT). - * Returns: - * The sample rate if specified, or negative error if not. - */ -int ucm_get_sample_rate_for_dev(struct cras_use_case_mgr *mgr, const char *dev, - enum CRAS_STREAM_DIRECTION direction); - -/* Gets the channel count at which to run this device. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for channel count. - * direction - playback(CRAS_STREAM_OUTPUT) or capture(CRAS_STREAM_INPUT). - * channels - The pointer to the returned channel count. - * Returns: - * 0 on success, other error codes on failure. - */ -int ucm_get_channels_for_dev(struct cras_use_case_mgr *mgr, const char *dev, - enum CRAS_STREAM_DIRECTION direction, - size_t *channels); - -/* Gets the capture channel map for this device. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for capture channel map. - * channel_layout - The channel layout to fill. - */ -int ucm_get_capture_chmap_for_dev(struct cras_use_case_mgr *mgr, - const char *dev, int8_t *channel_layout); - -/* Gets the mixer names for the coupled mixer controls of this device - * on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for coupled mixer controls. - * Returns: - * A list of cras_alsa_control. - */ -struct mixer_name *ucm_get_coupled_mixer_names(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets a list of UCM sections - * - * The data includes the represented devices and their controls. - * - * Args: - * mgr - The cras_use_case_mgr pointer return from alsa_ucm_create. - * - * Returns: - * A list of ucm_section or NULL. Free it with ucm_section_free_list(). - */ -struct ucm_section *ucm_get_sections(struct cras_use_case_mgr *mgr); - -/* Gets the list of supported hotword model names. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * String containing comma separated model names, e.g 'en,fr,zh'. Needs - * to be freed by caller. - */ -char *ucm_get_hotword_models(struct cras_use_case_mgr *mgr); - -/* Sets the desired hotword model. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * model - locale for model - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_set_hotword_model(struct cras_use_case_mgr *mgr, const char *model); - -/* Enable previously set hotword modifier - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * 0 on success or negative error code on failure. - */ -int ucm_enable_hotword_model(struct cras_use_case_mgr *mgr); - -/* Disable all hotword model modifiers - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - */ -void ucm_disable_all_hotword_models(struct cras_use_case_mgr *mgr); - -/* Checks if this card has fully specified UCM config. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * 1 if this UCM uses fully specified UCM config. 0 otherwise. - */ -int ucm_has_fully_specified_ucm_flag(struct cras_use_case_mgr *mgr); - -/* Gets the playback mixer name of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for device name - * Returns: - * A pointer to the allocated string containing the mixer name, or NULL - * if no device name is found. - */ -const char *ucm_get_playback_mixer_elem_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the capture mixer name of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for device name - * Returns: - * A pointer to the allocated string containing the mixer name, or NULL - * if no device name is found. - */ -const char *ucm_get_capture_mixer_elem_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the mixer names for the main volume controls on the card. - * - * The main volume controls in the list are considered in series. - * If 3 controls are specified, MainVolumeNames "A,B,C", with dB ranges - * A=-10dB~0dB, B=-20dB~0dB, C=-30dB~0dB, then applying -35dB overall volume - * sets A=-10dB, B=-20dB, C=-5dB. - * The volume control affects all output on this card, e.g. - * speaker and headphone. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * names - A list of mixer_name. - */ -struct mixer_name *ucm_get_main_volume_names(struct cras_use_case_mgr *mgr); - -/* The callback to be provided with a reference to the section name. - * - * Args: - * section_name: The name of a SectionDevice in UCM. - * arg - Argument to pass to this callback. - */ -typedef void (*ucm_list_section_devices_callback)(const char *section_name, - void *arg); - -/* Invokes the provided callback once for each section with matched device name. - * - * Iterate through each SectionDevice in UCM of this card. Invoke callback if - * "PlaybackPCM" for output or "CapturePCM" for input of the section matches - * the specified device_name. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * device_name - A string for device name of format "card_name:device_index". - * cb - Function to call for each section. - * cb_arg - Argument to pass to cb. - * Returns: - * Number of sections listed. - */ -int ucm_list_section_devices_by_device_name( - struct cras_use_case_mgr *mgr, enum CRAS_STREAM_DIRECTION direction, - const char *device_name, ucm_list_section_devices_callback cb, - void *cb_arg); - -/* Gets the jack name of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for jack name. - * Returns: - * A pointer to the allocated string containing the jack name, or NULL - * if no jack name is found. - */ -const char *ucm_get_jack_name_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the jack type of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for jack type. - * Returns: - * A pointer to the allocated string containing the jack type, or NULL - * if no jack type is found or the found jack type is invalid. The valid - * jack types are "hctl" or "gpio". - */ -const char *ucm_get_jack_type_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the jack dev of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for jack name. - * Returns: - * A pointer to the allocated string containing the input jack name, or NULL - * if no jack name is found. - */ -const char *ucm_get_jack_dev_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the jack control of this device on the card. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check for jack type. - * Returns: - * A pointer to the allocated string containing the alsa jack name, or NULL - * if no jack type is found or the found jack type is invalid. - */ -const char *ucm_get_jack_control_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the jack switch number for this device. - * Some sound cards can detect multiple types of connections into the - * audio jack - for example distinguish between line-out and headphones - * by measuring the impedance on the other end. In that case we want each - * jack to have it's own I/O node so that each can have it's own volume - * settings. This allows us to specify the jack used more exactly. - * Valid values are defined in /usr/include/linux/input.h. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check. - * Returns: - * A value >= 0 when the switch is defined, or -1 otherwise. - */ -int ucm_get_jack_switch_for_dev(struct cras_use_case_mgr *mgr, const char *dev); - -/* Gets the DMA period time in microseconds for the given device. - * - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * dev - The device to check. - * Returns: - * A value > 0, or 0 if no period is defined. - */ -unsigned int ucm_get_dma_period_for_dev(struct cras_use_case_mgr *mgr, - const char *dev); - -/* Gets the flag of optimization for no stream state. - * This flag enables no_stream ops in alsa_io. - * Args: - * mgr - The cras_use_case_mgr pointer returned from alsa_ucm_create. - * Returns: - * 1 if the flag is enabled. 0 otherwise. - */ -unsigned int ucm_get_optimize_no_stream_flag(struct cras_use_case_mgr *mgr); - -#endif /* _CRAS_ALSA_UCM_H */ |