From: Eero Nurkkala <eero.nurkkala@xxxxxxxxxx> Instead of having a large broadcast_event() - function, split it with a sub function msm_fill_evt_payload() that fills the structures. This makes the broadcast_event() more readable. Signed-off-by: Eero Nurkkala <eero.nurkkala@xxxxxxxxxx> --- branch: android-msm-2.6.35 .../mach-msm/include/mach/qdsp6v2/audio_dev_ctl.h | 2 + arch/arm/mach-msm/qdsp6v2/audio_dev_ctl.c | 149 +++++++++++--------- 2 files changed, 82 insertions(+), 69 deletions(-) diff --git a/arch/arm/mach-msm/include/mach/qdsp6v2/audio_dev_ctl.h b/arch/arm/mach-msm/include/mach/qdsp6v2/audio_dev_ctl.h index 39039a1..4ef22d6 100644 --- a/arch/arm/mach-msm/include/mach/qdsp6v2/audio_dev_ctl.h +++ b/arch/arm/mach-msm/include/mach/qdsp6v2/audio_dev_ctl.h @@ -179,6 +179,8 @@ struct message_header { #define AUDDEV_EVT_VOICE_STATE_CHG 0x200 /* Change in voice state */ #define AUDDEV_CLNT_VOC 0x1 /*Vocoder clients*/ +#define AUDDEV_CLNT_VOC_S1 0x11 /* subtypes for msm_fill_evt_payload() */ +#define AUDDEV_CLNT_VOC_S2 0x12 #define AUDDEV_CLNT_DEC 0x2 /*Decoder clients*/ #define AUDDEV_CLNT_ENC 0x3 /* Encoder clients */ #define AUDDEV_CLNT_AUDIOCAL 0x4 /* AudioCalibration client */ diff --git a/arch/arm/mach-msm/qdsp6v2/audio_dev_ctl.c b/arch/arm/mach-msm/qdsp6v2/audio_dev_ctl.c index b414f3e..6b81197 100644 --- a/arch/arm/mach-msm/qdsp6v2/audio_dev_ctl.c +++ b/arch/arm/mach-msm/qdsp6v2/audio_dev_ctl.c @@ -995,6 +995,71 @@ struct miscdevice audio_dev_ctrl_misc = { .fops = &audio_dev_ctrl_fops, }; +static void msm_fill_evt_payload(struct msm_snddev_info *dev_info, + union auddev_evt_data *evt_payload, + uint32_t clnt_type) +{ + int i; + + switch (clnt_type) { + case AUDDEV_CLNT_VOC: + evt_payload->voc_vm_info.acdb_dev_id = + dev_info->acdb_id; + if (dev_info->capability & SNDDEV_CAP_TX) { + evt_payload->voc_vm_info.dev_type = SNDDEV_CAP_TX; + evt_payload->voc_vm_info.dev_vm_val.mute = + routing_info.tx_mute; + } else { + evt_payload->voc_vm_info.dev_type = SNDDEV_CAP_RX; + evt_payload->voc_vm_info.dev_vm_val.vol = + routing_info.voice_rx_vol; + } + break; + + case AUDDEV_CLNT_VOC_S2: + evt_payload->voc_devinfo.dev_type = (dev_info->capability & + SNDDEV_CAP_TX) ? SNDDEV_CAP_TX : SNDDEV_CAP_RX; + evt_payload->voc_devinfo.acdb_dev_id = dev_info->acdb_id; + evt_payload->voc_devinfo.dev_port_id = dev_info->copp_id; + evt_payload->voc_devinfo.dev_sample = + dev_info->set_sample_rate ? + dev_info->set_sample_rate : + dev_info->sample_rate; + if (dev_info->capability & SNDDEV_CAP_RX) { + for (i = 0; i < VOC_RX_VOL_ARRAY_NUM; i++) { + evt_payload->voc_devinfo.max_rx_vol[i] = + dev_info->max_voc_rx_vol[i]; + evt_payload->voc_devinfo.min_rx_vol[i] = + dev_info->min_voc_rx_vol[i]; + } + } + break; + + case AUDDEV_CLNT_VOC_S1: + case AUDDEV_CLNT_DEC: + case AUDDEV_CLNT_ENC: + evt_payload->freq_info.sample_rate = dev_info->set_sample_rate; + evt_payload->freq_info.dev_type = dev_info->capability; + evt_payload->freq_info.acdb_dev_id = dev_info->acdb_id; + break; + + case AUDDEV_CLNT_AUDIOCAL: + evt_payload->audcal_info.dev_id = dev_info->copp_id; + evt_payload->audcal_info.acdb_id = dev_info->acdb_id; + evt_payload->audcal_info.dev_type = (dev_info->capability & + SNDDEV_CAP_TX) ? SNDDEV_CAP_TX : SNDDEV_CAP_RX; + evt_payload->audcal_info.sample_rate = + dev_info->set_sample_rate ? + dev_info->set_sample_rate : + dev_info->sample_rate; + break; + + default: + pr_err("%s: Unknown case.\n", __func__); + break; + } +} + /* session id is 64 bit routing mask per device * 0-15 for voice clients * 16-31 for Decoder clients @@ -1003,7 +1068,7 @@ struct miscdevice audio_dev_ctrl_misc = { */ void broadcast_event(u32 evt_id, u32 dev_id, u64 session_id) { - int clnt_id = 0, i; + int clnt_id = 0; union auddev_evt_data *evt_payload; struct msm_snd_evt_listner *callback; struct msm_snddev_info *dev_info = NULL; @@ -1088,12 +1153,8 @@ volume_strm: == dev_info->set_sample_rate) goto sent_dec; else { - evt_payload->freq_info.sample_rate - = dev_info->set_sample_rate; - evt_payload->freq_info.dev_type - = dev_info->capability; - evt_payload->freq_info.acdb_dev_id - = dev_info->acdb_id; + msm_fill_evt_payload(dev_info, + evt_payload, AUDDEV_CLNT_DEC); } } else if (evt_id == AUDDEV_EVT_VOICE_STATE_CHG) evt_payload->voice_state = @@ -1119,12 +1180,8 @@ sent_dec: = 0; goto sent_enc; } else { - evt_payload->freq_info.sample_rate - = dev_info->set_sample_rate; - evt_payload->freq_info.dev_type - = dev_info->capability; - evt_payload->freq_info.acdb_dev_id - = dev_info->acdb_id; + msm_fill_evt_payload(dev_info, + evt_payload, AUDDEV_CLNT_ENC); } } else if (evt_id == AUDDEV_EVT_VOICE_STATE_CHG) evt_payload->voice_state = @@ -1147,17 +1204,9 @@ aud_cal: else if (!dev_info->sessions) goto sent_aud_cal; else { - evt_payload->audcal_info.dev_id = - dev_info->copp_id; - evt_payload->audcal_info.acdb_id = - dev_info->acdb_id; - evt_payload->audcal_info.dev_type = - (dev_info->capability & SNDDEV_CAP_TX) ? - SNDDEV_CAP_TX : SNDDEV_CAP_RX; - evt_payload->audcal_info.sample_rate = - dev_info->set_sample_rate ? - dev_info->set_sample_rate : - dev_info->sample_rate; + msm_fill_evt_payload(dev_info, + evt_payload, + AUDDEV_CLNT_AUDIOCAL); } callback->auddev_evt_listener( evt_id, @@ -1181,23 +1230,8 @@ voc_events: pending_sent = 1; if (evt_id == AUDDEV_EVT_DEVICE_VOL_MUTE_CHG) { - if (dev_info->capability & SNDDEV_CAP_TX) { - evt_payload->voc_vm_info.dev_type = - SNDDEV_CAP_TX; - evt_payload->voc_vm_info.acdb_dev_id = - dev_info->acdb_id; - evt_payload-> - voc_vm_info.dev_vm_val.mute = - routing_info.tx_mute; - } else { - evt_payload->voc_vm_info.dev_type = - SNDDEV_CAP_RX; - evt_payload->voc_vm_info.acdb_dev_id = - dev_info->acdb_id; - evt_payload-> - voc_vm_info.dev_vm_val.vol = - routing_info.voice_rx_vol; - } + msm_fill_evt_payload(dev_info, + evt_payload, AUDDEV_CLNT_VOC); } else if ((evt_id == AUDDEV_EVT_START_VOICE) || (evt_id == AUDDEV_EVT_END_VOICE)) memset(evt_payload, 0, @@ -1207,41 +1241,18 @@ voc_events: != dev_info->set_sample_rate) { routing_info.voice_tx_sample_rate = dev_info->set_sample_rate; - evt_payload->freq_info.sample_rate - = dev_info->set_sample_rate; - evt_payload->freq_info.dev_type - = dev_info->capability; - evt_payload->freq_info.acdb_dev_id - = dev_info->acdb_id; + msm_fill_evt_payload(dev_info, + evt_payload, + AUDDEV_CLNT_VOC_S1); } else goto sent_voc; } else if (evt_id == AUDDEV_EVT_VOICE_STATE_CHG) evt_payload->voice_state = routing_info.voice_state; else { - evt_payload->voc_devinfo.dev_type = - (dev_info->capability & SNDDEV_CAP_TX) ? - SNDDEV_CAP_TX : SNDDEV_CAP_RX; - evt_payload->voc_devinfo.acdb_dev_id = - dev_info->acdb_id; - evt_payload->voc_devinfo.dev_port_id = - dev_info->copp_id; - evt_payload->voc_devinfo.dev_sample = - dev_info->set_sample_rate ? - dev_info->set_sample_rate : - dev_info->sample_rate; + msm_fill_evt_payload(dev_info, evt_payload, + AUDDEV_CLNT_VOC_S2); evt_payload->voc_devinfo.dev_id = dev_id; - if (dev_info->capability & SNDDEV_CAP_RX) { - for (i = 0; i < VOC_RX_VOL_ARRAY_NUM; - i++) { - evt_payload-> - voc_devinfo.max_rx_vol[i] = - dev_info->max_voc_rx_vol[i]; - evt_payload - ->voc_devinfo.min_rx_vol[i] = - dev_info->min_voc_rx_vol[i]; - } - } } callback->auddev_evt_listener( evt_id, -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html