linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).