From: eero.nurkkala@offcode.fi
To: linux-arm-msm@vger.kernel.org
Cc: Eero Nurkkala <eero.nurkkala@offcode.fi>
Subject: [PATCH/RFC 4/4] msm: audio: qdsp6v2: simplify broadcast_event()
Date: Tue, 15 Feb 2011 14:08:41 +0200 [thread overview]
Message-ID: <1297771721-17574-4-git-send-email-eero.nurkkala@offcode.fi> (raw)
In-Reply-To: <1297771721-17574-1-git-send-email-eero.nurkkala@offcode.fi>
From: Eero Nurkkala <eero.nurkkala@offcode.fi>
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@offcode.fi>
---
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
next prev parent reply other threads:[~2011-02-15 12:05 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-15 12:08 [PATCH 1/4] msm: audio: qdsp6v2: simplify linked lists eero.nurkkala
2011-02-15 12:08 ` [PATCH 2/4] msm: audio: qdsp6v2: remove unused mixer_post_event() eero.nurkkala
2011-02-15 12:08 ` [PATCH 3/4] msm: audio: qdsp6v2: fix potential memory corruption eero.nurkkala
2011-02-15 12:08 ` eero.nurkkala [this message]
2011-02-16 23:58 ` [PATCH/RFC 4/4] msm: audio: qdsp6v2: simplify broadcast_event() Patrick Lai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1297771721-17574-4-git-send-email-eero.nurkkala@offcode.fi \
--to=eero.nurkkala@offcode.fi \
--cc=linux-arm-msm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).