<<<<<<< HEAD
#if 0//def CONFIG_SND_SOC_DEBUSSY_MODULE
/* zfl
* mode: 00b : Intercom Headset
* mode: 01b : Receiver
* mode: 10b : Speaker
* mode: 11b : Bypass
* mode: 4: Suspend
* mode: 5: Resume
*/
void aw87xxx_set_ig1600_mode (struct aw87xxx *aw87xxx, int mode)
{
#if 0//def CONFIG_SND_SOC_DEBUSSY_MODULE
AW_DEV_LOGI(aw87xxx->dev, "*** Skip for Updating !!! *** set mode = %d\n", mode);
return;
#else
AW_DEV_LOGI(aw87xxx->dev, "set mode = %d\n", mode);
#endif
switch (mode) {
case 0: // DMR Intercom Headset
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p8_dai3_rxdata_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p5_dai3_bclk_gpio set failed");
}
break;
case 1: // Receiver
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p8_dai3_rxdata_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p5_dai3_bclk_gpio set failed");
}
break;
case 2: // Speaker
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p8_dai3_rxdata_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p5_dai3_bclk_gpio set failed");
}
break;
case 3: // Bypass
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p8_dai3_rxdata_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p5_dai3_bclk_gpio set failed");
}
break;
case 4: // Suspend
if (gpio_is_valid(aw87xxx->aw_dev.ig_rst_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_rst_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_rst_gpio set failed");
}
#if 0
if (gpio_is_valid(aw87xxx->aw_dev.ig_3V3_en_gpio)) { //xiong
gpio_set_value(aw87xxx->aw_dev.ig_3V3_en_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_3V3_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_gpio_nr_en_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_gpio_nr_en_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_gpio_nr_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_ldo_en_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_ldo_en_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_ldo_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.mic_sen_gpio)) {
gpio_set_value(aw87xxx->aw_dev.mic_sen_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "mic_sen_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_nr_i2c_en)) {
gpio_set_value(aw87xxx->aw_dev.ig_nr_i2c_en, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_nr_i2c_en set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p8_dai3_rxdata_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p8_dai3_rxdata_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_mode_p5_dai3_bclk_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_mode_p5_dai3_bclk_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s5_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s5_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s5_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s3_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s3_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s4_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s4_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio set failed");
}
#endif
break;
case 5: // Resume
if (gpio_is_valid(aw87xxx->aw_dev.ig_rst_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_rst_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_rst_gpio set failed");
}
#if 0
if (gpio_is_valid(aw87xxx->aw_dev.ig_ldo_en_gpio)) { //xiong
gpio_set_value(aw87xxx->aw_dev.ig_ldo_en_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_ldo_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_gpio_nr_en_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_gpio_nr_en_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_gpio_nr_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_3V3_en_gpio)) {
gpio_set_value(aw87xxx->aw_dev.ig_3V3_en_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_3V3_en_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.mic_sen_gpio)) {
gpio_set_value(aw87xxx->aw_dev.mic_sen_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "mic_sen_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.ig_nr_i2c_en)) {
gpio_set_value(aw87xxx->aw_dev.ig_nr_i2c_en, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "ig_nr_i2c_en set failed");
}
#endif
break;
default:
AW_DEV_LOGE(aw87xxx->dev, "Not support mode!");
break;
}
}
// Mic Path HandFree
void aw87xxx_set_mic_path_receiver (struct aw87xxx *aw87xxx)
{
AW_DEV_LOGI(aw87xxx->dev, "Enter\n");
if (gpio_is_valid(aw87xxx->aw_dev.mic_sen_gpio)) {
gpio_set_value(aw87xxx->aw_dev.mic_sen_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "mic_sen_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s5_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s5_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s5_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s3_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s3_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s4_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s4_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio set failed");
}
}
void aw87xxx_set_mic_path_handfree (struct aw87xxx *aw87xxx)
{
AW_DEV_LOGI(aw87xxx->dev, "Enter\n");
if (gpio_is_valid(aw87xxx->aw_dev.mic_sen_gpio)) {
gpio_set_value(aw87xxx->aw_dev.mic_sen_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "mic_sen_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s5_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s5_gpio, 0);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s5_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s3_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s3_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s4_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s4_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio set failed");
}
}
void aw87xxx_set_mic_path_headset (struct aw87xxx *aw87xxx)
{
AW_DEV_LOGI(aw87xxx->dev, "Enter\n");
if (gpio_is_valid(aw87xxx->aw_dev.mic_sen_gpio)) {
gpio_set_value(aw87xxx->aw_dev.mic_sen_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "mic_sen_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s5_gpio)) {
gpio_set_value(aw87xxx->aw_dev.aec_s5_gpio, 1);
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s5_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s3_gpio)) {
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio %d", gpio_get_value(aw87xxx->aw_dev.aec_s3_gpio));
gpio_set_value(aw87xxx->aw_dev.aec_s3_gpio, 0);
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio %d", gpio_get_value(aw87xxx->aw_dev.aec_s3_gpio));
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s3_gpio set failed");
}
if (gpio_is_valid(aw87xxx->aw_dev.aec_s4_gpio)) {
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio %d", gpio_get_value(aw87xxx->aw_dev.aec_s4_gpio));
gpio_set_value(aw87xxx->aw_dev.aec_s4_gpio, 0);
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio %d", gpio_get_value(aw87xxx->aw_dev.aec_s4_gpio));
} else {
AW_DEV_LOGE(aw87xxx->dev, "aec_s4_gpio set failed");
}
}
int aw87xxx_set_noise_mic_mode(int dev_index, int mode)
{
struct list_head *pos = NULL;
struct aw87xxx *aw87xxx = NULL;
list_for_each(pos, &g_aw87xxx_list) {
aw87xxx = list_entry(pos, struct aw87xxx, list);
AW_DEV_LOGI(aw87xxx->dev, "list aw87xxx->dev_index = %d", aw87xxx->dev_index);
// Only get gpios from dev0
if (0 == aw87xxx->dev_index) {
AW_DEV_LOGI(aw87xxx->dev, "set dev_index = %d, mode = %d",
dev_index, mode);
switch (dev_index) {
case 0: // Main Smart PA Speaker and Receiver
switch (mode) {
case 0: // DMR Intercom Headset
aw87xxx_set_ig1600_mode(aw87xxx, 0);
aw87xxx_set_mic_path_receiver(aw87xxx);
break;
case 1: // Receiver
aw87xxx_set_ig1600_mode(aw87xxx, 1);
aw87xxx_set_mic_path_receiver(aw87xxx);
break;
case 2: // Speaker
aw87xxx_set_ig1600_mode(aw87xxx, 2);
aw87xxx_set_mic_path_handfree(aw87xxx);
break;
case 3: // Bypass
aw87xxx_set_ig1600_mode(aw87xxx, 3);
aw87xxx_set_mic_path_receiver(aw87xxx);
break;
case 4: // Suspend
aw87xxx_set_ig1600_mode(aw87xxx, 4);
break;
case 5: // Resume
aw87xxx_set_ig1600_mode(aw87xxx, 5);
break;
default:
AW_DEV_LOGE(aw87xxx->dev, "Not support mode!");
return -EINVAL;
break;
}
return 0;
break;
case 1: // Sub Smart PA for Headset
switch (mode) {
case 0:
case 1:
case 2:
AW_DEV_LOGI(aw87xxx->dev, "Default Receiver mode!");
// Receiver
aw87xxx_set_ig1600_mode(aw87xxx, 1);
aw87xxx_set_mic_path_headset(aw87xxx);
break;
case 3: // Bypass
aw87xxx_set_ig1600_mode(aw87xxx, 3);
aw87xxx_set_mic_path_receiver(aw87xxx);
break;
case 4: // Suspend
aw87xxx_set_ig1600_mode(aw87xxx, 4);
break;
case 5: // Resume
aw87xxx_set_ig1600_mode(aw87xxx, 5);
break;
default:
AW_DEV_LOGE(aw87xxx->dev, "Not support mode!");
return -EINVAL;
break;
}
return 0;
break;
default:
AW_DEV_LOGE(aw87xxx->dev, "Not support mode!");
return -EINVAL;
break;
}
return 0;
}
}
AW_DEV_LOGE(aw87xxx->dev, "Not found device!");
return -ENODEV;
}
EXPORT_SYMBOL(aw87xxx_set_noise_mic_mode);
#endif
=======
>>>>>>> origin/master
最新发布