MTK PA 相关 (power amplifier)
来源:互联网 发布:婴儿被子品牌知乎 编辑:程序博客网 时间:2024/05/16 07:47
alps/mediatek/custom/simcom72_wet_jb3/hal/audioflinger/audio/audio_custom_exp.h
alps/mediatek/custom/common/kernel/sound/amp_6323pmic_spk/yusu_android_speaker.c
alps/mediatek/custom/common/kernel/sound/amp_yad/yusu_android_speaker.c
alps/mediatek/custom/common/kernel/sound/amp_aw8733/yusu_android_speaker.c
void Sound_Speaker_Turnon(int channel)
{
PRINTK("Sound_Speaker_Turnon channel = %d\n",channel);
if(gsk_on)
return;
mt_set_gpio_dir(GPIO_SPEAKER_EN_PIN,GPIO_DIR_OUT); // output
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ONE); // high //mode2
udelay(2);
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ZERO); // low //mode2
udelay(2);
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ONE); // high //mode2
msleep(SPK_WARM_UP_TIME);
gsk_on = true;
}
void Sound_Speaker_Turnoff(int channel)
{
PRINTK("Sound_Speaker_Turnoff channel = %d\n",channel);
if(!gsk_on)
return;
mt_set_gpio_dir(GPIO_SPEAKER_EN_PIN,GPIO_DIR_OUT); // output
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ZERO); // high
gsk_on = false;
}
{
PRINTK("Sound_Speaker_Turnon channel = %d\n",channel);
if(gsk_on)
return;
mt_set_gpio_dir(GPIO_SPEAKER_EN_PIN,GPIO_DIR_OUT); // output
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ONE); // high //mode2
udelay(2);
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ZERO); // low //mode2
udelay(2);
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ONE); // high //mode2
msleep(SPK_WARM_UP_TIME);
gsk_on = true;
}
void Sound_Speaker_Turnoff(int channel)
{
PRINTK("Sound_Speaker_Turnoff channel = %d\n",channel);
if(!gsk_on)
return;
mt_set_gpio_dir(GPIO_SPEAKER_EN_PIN,GPIO_DIR_OUT); // output
mt_set_gpio_out(GPIO_SPEAKER_EN_PIN,GPIO_OUT_ZERO); // high
gsk_on = false;
}
======================================
ubuntu@ZZ:alps$ grep -nr yusu_android_speaker.h *
bootable/bootloader/lk/platform/mediatek/mt6572/kernel/drivers/sound/AudDrv_Kernel.c:105:#include "yusu_android_speaker.h"
bootable/bootloader/lk/custom/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
bootable/bootloader/lk/custom/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
kernel/out/mediatek/platform/mt6572/kernel/drivers/sound/.AudDrv_Kernel.o.cmd:720: alps/kernel/../mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h \
Binary file kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/built-in.o matches
Binary file kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.o matches
kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/.yusu_android_speaker.o.cmd:631: alps/kernel/../mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h \
grep: warning: kernel/out/source: recursive directory loop
Binary file kernel/out/.tmp_vmlinux2 matches
kernel/mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c:105:#include "yusu_android_speaker.h"
kernel/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
kernel/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c:105:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_yad/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_aw8733/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_aw8145/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/common/kernel/sound/amp_6323pmic_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6320pmic_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_yad_2_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_tpa2055d3/yusu_android_speaker.c:8:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6329pmic_spk/yusu_android_speaker.c:23:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6329pmic_2in1_spk/yusu_android_speaker.c:23:#include "yusu_android_speaker.h"
mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/banyan_addon/kernel/sound/speaker/yusu_android_speaker.c:26: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/banyan_addon/kernel/sound/speaker/yusu_android_speaker.c:66:#include "yusu_android_speaker.h"
Binary file kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/built-in.o matches
Binary file kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.o matches
kernel/out/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/.yusu_android_speaker.o.cmd:631: alps/kernel/../mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h \
grep: warning: kernel/out/source: recursive directory loop
Binary file kernel/out/.tmp_vmlinux2 matches
kernel/mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c:105:#include "yusu_android_speaker.h"
kernel/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
kernel/mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c:105:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_yad/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_aw8733/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_aw8145/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/common/kernel/sound/amp_6323pmic_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6320pmic_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_yad_2_spk/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_tpa2055d3/yusu_android_speaker.c:8:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6329pmic_spk/yusu_android_speaker.c:23:#include "yusu_android_speaker.h"
mediatek/custom/common/kernel/sound/amp_6329pmic_2in1_spk/yusu_android_speaker.c:23:#include "yusu_android_speaker.h"
mediatek/custom/out/simcom72_wet_jb3/kernel/sound/inc/yusu_android_speaker.h:30: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/out/simcom72_wet_jb3/kernel/sound/yusu_android_speaker.c:22:#include "yusu_android_speaker.h"
mediatek/custom/banyan_addon/kernel/sound/speaker/yusu_android_speaker.c:26: * [ALPS00102848] [Need Patch] [Volunteer Patch] build waring in yusu_android_speaker.h
mediatek/custom/banyan_addon/kernel/sound/speaker/yusu_android_speaker.c:66:#include "yusu_android_speaker.h"
alps/kernel/mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c
alps/kernel/mediatek/platform/mt6572/hardware/audio/aud_drv/很多文件firmware层,这是链接路径
alps/mediatek/platform/mt6572/hardware/audio/aud_drv/很多文件firmware层
alps/bootable/bootloader/lk/platform/mediatek/mt6572/kernel/drivers/sound/AudDrv_Kernel.c调用static long AudDrv_ioctl(struct file *fp, unsigned int cmd, unsigned long arg){}开光喇叭
switch(cmd)
{
{
。。。
case SET_SPEAKER_ON:
PRINTK_AUDDRV("AudDrv SET_SPEAKER_ON arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Sound_Speaker_Turnon((int)arg);
AuddrvSpkStatus = true;
mutex_unlock(&gamp_mutex);
break;
case SET_SPEAKER_OFF:
PRINTK_AUDDRV("AudDrv SET_SPEAKER_OFF arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Sound_Speaker_Turnoff((int)arg);
AuddrvSpkStatus = false;
mutex_unlock(&gamp_mutex);
break;
PRINTK_AUDDRV("AudDrv SET_SPEAKER_ON arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Sound_Speaker_Turnon((int)arg);
AuddrvSpkStatus = true;
mutex_unlock(&gamp_mutex);
break;
case SET_SPEAKER_OFF:
PRINTK_AUDDRV("AudDrv SET_SPEAKER_OFF arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Sound_Speaker_Turnoff((int)arg);
AuddrvSpkStatus = false;
mutex_unlock(&gamp_mutex);
break;
。。。
case SET_HEADPHONE_ON:
PRINTK_AUDDRV("AudDrv SET_HEADPHONE_ON arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Audio_eamp_command(EAMP_HEADPHONE_OPEN,arg,1);
mutex_unlock(&gamp_mutex);
break;
case SET_HEADPHONE_OFF:
PRINTK_AUDDRV("AudDrv SET_HEADPHONE_OFF arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Audio_eamp_command(EAMP_HEADPHONE_CLOSE,arg,1);
mutex_unlock(&gamp_mutex);
break;
PRINTK_AUDDRV("AudDrv SET_HEADPHONE_ON arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Audio_eamp_command(EAMP_HEADPHONE_OPEN,arg,1);
mutex_unlock(&gamp_mutex);
break;
case SET_HEADPHONE_OFF:
PRINTK_AUDDRV("AudDrv SET_HEADPHONE_OFF arg:%lu \n",arg);
mutex_lock(&gamp_mutex);
Audio_eamp_command(EAMP_HEADPHONE_CLOSE,arg,1);
mutex_unlock(&gamp_mutex);
break;
。。。
}
static struct file_operations AudDrv_fops = {
.owner = THIS_MODULE,
.open = AudDrv_open,
.release = AudDrv_release,
.unlocked_ioctl = AudDrv_ioctl,
.write = AudDrv_write,
.read = AudDrv_read,
.flush = AudDrv_flush,
.fasync = AudDrv_fasync,
.mmap = AudDrv_remap_mmap
};
.owner = THIS_MODULE,
.open = AudDrv_open,
.release = AudDrv_release,
.unlocked_ioctl = AudDrv_ioctl,
.write = AudDrv_write,
.read = AudDrv_read,
.flush = AudDrv_flush,
.fasync = AudDrv_fasync,
.mmap = AudDrv_remap_mmap
};
static struct miscdevice AudDrv_audio_device = {
.minor = MISC_DYNAMIC_MINOR,
.name = "eac",
.fops = &AudDrv_fops,
};
.minor = MISC_DYNAMIC_MINOR,
.name = "eac",
.fops = &AudDrv_fops,
};
AudDrv_audio_device.fops.unlocked_ioctl
========================================
bootable/bootloader/lk/platform/mediatek/mt6572/kernel/drivers/sound/AudDrv_Kernel.c :63:#include "AudDrv_ioctl.h"
bootable/bootloader/lk/platform/mediatek/mt6572/kernel/drivers/sound/AudDrv_Kernel.h :6:#include "AudDrv_ioctl.h"
kernel/mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c
:63:#include "AudDrv_ioctl.h"
kernel/mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.h
:6:#include "AudDrv_ioctl.h"
mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.c
:63:#include "AudDrv_ioctl.h"
mediatek/platform/mt6572/kernel/drivers/sound/AudDrv_Kernel.h
alps/kernel/mediatek/platform/mt6572/hardware/audio/aud_drv/AudioMachineDevice.cpp
之前log没打印出来,以为代码没有跑到关PA的地方,其实不是的,log没打出来,是因为打log的宏没有打开;在屏幕时按音量加减,会出现开关PA的log,但不会真正关掉PA,是因为喇叭或是耳机没有任何任务在播放声音,系统默认关和开PA,但当有播音乐的任务时,按音量加减键则是不会在音量最低时关闭PA的,这样就造成了当音量减至零时有很大的底噪,通过下面的修改方法,和上层通信,在音量减至最低时关闭PA来消除底噪,这样是从软件上走了一个捷径,其实硬件上也可以通过改善电流噪声来消除底噪。
==================================================================
修改点:
alps\kernel\mediatek\platform\mt6572\hardware\audio\aud_drv\AudioMTKHardware.cpp
line132
//add0728
#if defined(RG310)
static String8 keyPAEnable = String8("PAEnable");
static String8 keyPADisable = String8("PADisable");
#endif //add0728
line360
//add0728
#if defined(RG310)
//open output device
if (param.getInt(keyPAEnable, value) == NO_ERROR) {
param.remove(keyPAEnable);
const audio_devices_t output_device = (audio_devices_t)mAudioResourceManager->getDlOutputDevice();
if (output_device == AUDIO_DEVICE_OUT_SPEAKER)
mAudioResourceManager->StartOutputDevice();//打开device
goto EXIT_SETPARAMETERS;
}
//close output device
if (param.getInt(keyPADisable, value) == NO_ERROR) { //比如侧键调整成0时 就调用到这个
param.remove(keyPADisable);
const audio_devices_t output_device = (audio_devices_t)mAudioResourceManager->getDlOutputDevice();
if (output_device == AUDIO_DEVICE_OUT_SPEAKER)
mAudioResourceManager->StopOutputDevice();//关闭device
goto EXIT_SETPARAMETERS;
}
#endif
//add0728
line132
//add0728
#if defined(RG310)
static String8 keyPAEnable = String8("PAEnable");
static String8 keyPADisable = String8("PADisable");
#endif //add0728
line360
//add0728
#if defined(RG310)
//open output device
if (param.getInt(keyPAEnable, value) == NO_ERROR) {
param.remove(keyPAEnable);
const audio_devices_t output_device = (audio_devices_t)mAudioResourceManager->getDlOutputDevice();
if (output_device == AUDIO_DEVICE_OUT_SPEAKER)
mAudioResourceManager->StartOutputDevice();//打开device
goto EXIT_SETPARAMETERS;
}
//close output device
if (param.getInt(keyPADisable, value) == NO_ERROR) { //比如侧键调整成0时 就调用到这个
param.remove(keyPADisable);
const audio_devices_t output_device = (audio_devices_t)mAudioResourceManager->getDlOutputDevice();
if (output_device == AUDIO_DEVICE_OUT_SPEAKER)
mAudioResourceManager->StopOutputDevice();//关闭device
goto EXIT_SETPARAMETERS;
}
#endif
//add0728
0 0
- MTK PA 相关 (power amplifier)
- MTK Camera Power
- MTK相关
- pa
- MTK文件读写相关
- MTK文件读写相关
- MTK版本相关
- MTK输入法模块相关
- MTK 状态栏相关(转)
- MTK文件读写相关
- MTK 状态栏相关
- MTK状态栏相关资料
- MTK存储系统相关
- MTK状态栏相关资料
- MTK 状态栏相关(转)
- 转载 MTK存储系统相关
- MTK铃声相关
- MTK字库相关
- 我的学习之路3
- Android LayoutInflater详解
- 程序员(攻城狮)成长之路
- 体力劳动,还是为了人类心智的荣耀?
- Centos下编译安装nginx
- MTK PA 相关 (power amplifier)
- 关于derby创建数据时,数据库存放目录问题
- STL学习记录(十三):排序类算法及基于排序的算法
- 连载《一个程序猿的生命周期》-25.到工业现场学习业务知识引发的思考
- Single Number II
- aircrack-ng判断网卡是否兼容
- java学习基础 Collection容器的区别
- CF_327C_MagicFive
- HDU 1203 01背包