You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.6 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* ROCKCDSI (Rockchip Commercial Display System Interface)
*
* -- Audio module
*
* Copyright (C) 2024 Rockchip Electronics Co., Ltd.
*
*/
#ifndef ANDROID_INCLUDE_AUDIO_HAL_H
#define ANDROID_INCLUDE_AUDIO_HAL_H
#include <stdbool.h>
#include <stdint.h>
#include <sys/cdefs.h>
#include <sys/types.h>
#include <hardware/hardware.h>
__BEGIN_DECLS
#define AUDIO_HAL_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
/*
* The id ot this module
*/
#define AUDIO_HAL_HARDWARE_MODULE_ID "rockcdsi_audio_hal"
typedef enum EnumAudioOutputDeviceType {
DEVICE_OUTPUT_AUTO,
DEVICE_OUTPUT_SPEAKER,
DEVICE_OUTPUT_HDMI,
DEVICE_OUTPUT_HEASET,
DEVICE_OUTPUT_COUNT_MAX
} enumaudiooutputdevicetype;
typedef struct audio_hal_module {
struct hw_module_t common;
int (*get_speakerout_volume)(struct audio_hal_module *module);
void (*set_speakerout_volume)(struct audio_hal_module *module, int value);
int (*get_speakerout_mute)(struct audio_hal_module *module);
void (*set_speakerout_mute)(struct audio_hal_module *module, int value);
bool (*set_force_use_outputdevice)(struct audio_hal_module *module,
enumaudiooutputdevicetype outputDevice);
enumaudiooutputdevicetype (*get_force_use_outputdevice)(struct audio_hal_module *module);
int (*get_audio_amp_mute)(struct audio_hal_module *module, int amptype);
bool (*set_audio_amp_mute)(struct audio_hal_module *module, int amptype, int status);
bool (*get_headphone_mute)(struct audio_hal_module *module);
bool (*set_headphone_mute)(struct audio_hal_module *module, bool status);
bool (*get_drc_enable)(struct audio_hal_module *module);
bool (*set_drc_enable)(struct audio_hal_module *module, bool enable);
bool (*get_eq_enable)(struct audio_hal_module *module);
bool (*set_eq_enable)(struct audio_hal_module *module, bool enable);
int (*get_balance)(struct audio_hal_module *module);
bool (*set_balance)(struct audio_hal_module *module, int balance);
int (*get_treble)(struct audio_hal_module *module);
bool (*set_treble)(struct audio_hal_module *module, int treble);
int (*get_bass)(struct audio_hal_module *module);
bool (*set_bass)(struct audio_hal_module *module, int bass);
int (*get_audio_out_Mode)(struct audio_hal_module *module);
bool (*set_audio_out_mode)(struct audio_hal_module *module, int mode);
int (*get_sound_mode)(struct audio_hal_module *module);
bool (*set_sound_mode)(struct audio_hal_module *module, int mode);
void (*set_auto_matic_echo_cancel)(struct audio_hal_module *module, bool enable);
bool (*get_auto_matic_echo_cancel)(struct audio_hal_module *module);
bool (*get_lineout_fix_output)(struct audio_hal_module *module);
bool (*set_lineout_fix_output)(struct audio_hal_module *module, int fix);
int (*get_audio_delay)(struct audio_hal_module *module, int channel);
bool (*set_audio_delay)(struct audio_hal_module *module, int channel, int ms);
int* (*get_geq)(struct audio_hal_module *module);
int (*set_geq)(struct audio_hal_module *module, int band, int value);
bool (*get_peq_enable)(struct audio_hal_module *module);
bool (*set_peq_enable)(struct audio_hal_module *module, bool enable);
int* (*get_band_peq)(struct audio_hal_module *module, int band);
int (*set_band_peq)(struct audio_hal_module *module, int band, int size, int peqvalue[]);
int* (*get_band_drc)(struct audio_hal_module *module, int band);
int (*set_band_drc)(struct audio_hal_module *module, int band, int size, int drcvalue[]);
int (*get_prescale)(struct audio_hal_module *module);
bool (*set_prescale)(struct audio_hal_module *module, int value);
} audio_hal_module_t;
__END_DECLS
#endif /* ANDROID_INCLUDE_AUDIO_HAL_H */