/* * Samsung Audio Subsystem Interface * * Copyright (c) 2013 Samsung Electronics Co. Ltd. * Yeongman Seo * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __SOUND_EXYNOS_H #define __SOUND_EXYNOS_H /* Sub IPs of LPASS */ enum { LPASS_IP_DMA = 0, LPASS_IP_MEM, LPASS_IP_TIMER, LPASS_IP_I2S, LPASS_IP_PCM, LPASS_IP_UART, LPASS_IP_SLIMBUS, LPASS_IP_CA5, LPASS_IP_MIXER, LPASS_IP_AMP }; enum { LPASS_OP_RESET = 0, LPASS_OP_NORMAL, }; enum { LPASS_RESET_BIT_UNSET = 0, LPASS_RESET_BIT_SET, }; /* Availability of power mode */ enum { AUD_PWR_SLEEP = 0, AUD_PWR_LPC, AUD_PWR_LPA, AUD_PWR_ALPA, AUD_PWR_AFTR, }; #ifdef CONFIG_SCHED_HMP #define USE_EXYNOS_AUD_SCHED enum { AUD_MODE_DEFAULT = 0, AUD_MODE_NORM, AUD_MODE_UHQA, }; extern void lpass_set_sched(pid_t pid, int mode); #endif #if defined(CONFIG_SCHED_HMP) && defined(CONFIG_EXYNOS5_DYNAMIC_CPU_HOTPLUG) #define USE_EXYNOS_AUD_CPU_HOTPLUG extern void lpass_get_cpu_hotplug(void); extern void lpass_put_cpu_hotplug(void); #endif #ifdef CONFIG_SND_SAMSUNG_AUDSS extern int exynos_check_aud_pwr(void); #else static inline int exynos_check_aud_pwr(void) { return -1; } #endif extern int lpass_register_subip(struct device *ip_dev, const char *ip_name); extern int lpass_set_gpio_cb(struct device *ip_dev, void (*ip_cb)(struct device *dev)); extern void lpass_get_sync(struct device *ip_dev); extern void lpass_put_sync(struct device *ip_dev); extern struct iommu_domain *lpass_get_iommu_domain(void); extern void lpass_add_stream(void); /*flag: true means compress stream else pcm */ extern void lpass_remove_stream(void); extern void lpass_dma_enable(bool on); extern void lpass_reset(int ip, int op); extern void lpass_reset_toggle(int ip); #endif /* __SOUND_EXYNOS_H */