[Sound-open-firmware] [RFC PATCH v2 19/29] Change macro definition and trace calling for dai.

yan.wang at linux.intel.com yan.wang at linux.intel.com
Thu May 10 13:31:59 CEST 2018


From: Yan Wang <yan.wang at linux.intel.com>

It will use DAI trace class and component DMA trace API.
For trace calling of dai_new(), NULL will be passed into trace
API because comp_dev hasn't been initialized.

Signed-off-by: Yan Wang <yan.wang at linux.intel.com>
---
Test with:
CNL nocodec
SOF master: c1f2682c210201bbbc96fce7b382b25b90d19775
SOF-Tool master: 86fe688a2b4f68a1ce87e0951686be12a00f1a3c
https://github.com/plbossart/sound/tree/topic/sof-v4.14:
d09db67c5a9d6dfc85f700669fa2e43c678c8d51
---
 src/audio/dai.c | 80 +++++++++++++++++++++++++++++++--------------------------
 1 file changed, 44 insertions(+), 36 deletions(-)

diff --git a/src/audio/dai.c b/src/audio/dai.c
index 1eeecd2..2ebff6a 100644
--- a/src/audio/dai.c
+++ b/src/audio/dai.c
@@ -49,10 +49,18 @@
 #define DAI_CAPTURE_STREAM	1
 
 /* tracing */
-#define trace_dai(__e) trace_event(TRACE_CLASS_DAI, __e)
-#define trace_dai_error(__e)   trace_error(TRACE_CLASS_DAI, __e)
-#define tracev_dai(__e)        tracev_event(TRACE_CLASS_DAI, __e)
-
+#define trace_dai(cd, __e) \
+	trace_comp_event(cd, NORMAL_LEVEL, TRACE_CLASS_DAI, __e)
+#define tracev_dai(cd, __e) \
+	trace_comp_event(cd, VERBOSE_LEVEL, TRACE_CLASS_DAI, __e)
+#define trace_dai_error(cd, __e) \
+	trace_comp_event_atomic(cd, ERROR_LEVEL, TRACE_CLASS_DAI, __e)
+#define trace_dai_value(cd, x) \
+	trace_comp_value(cd, NORMAL_LEVEL, x)
+#define tracev_dai_value(cd, x) \
+	trace_comp_value(cd, VERBOSE_LEVEL, x)
+#define trace_dai_error_value(cd, x) \
+	trace_comp_value_atomic(cd, ERROR_LEVEL, x)
 
 struct dai_data {
 	/* local DMA config */
@@ -80,7 +88,7 @@ static void dai_dma_cb(void *data, uint32_t type, struct dma_sg_elem *next)
 	struct comp_buffer *dma_buffer;
 	uint32_t copied_size;
 
-	tracev_dai("irq");
+	tracev_dai(dev, "irq");
 
 	/* stop dma copy for pause/stop/xrun */
 	if (dev->state != COMP_STATE_ACTIVE || dd->xrun) {
@@ -136,7 +144,7 @@ static void dai_dma_cb(void *data, uint32_t type, struct dma_sg_elem *next)
 
 		/* make sure there is availble bytes for next period */
 		if (dma_buffer->avail < dd->period_bytes) {
-			trace_dai_error("xru");
+			trace_dai_error(dev, "xru");
 			comp_underrun(dev, dma_buffer, copied_size, 0);
 		}
 
@@ -160,7 +168,7 @@ static void dai_dma_cb(void *data, uint32_t type, struct dma_sg_elem *next)
 
 		/* make sure there is free bytes for next period */
 		if (dma_buffer->free < dd->period_bytes) {
-			trace_dai_error("xro");
+			trace_dai_error(dev, "xro");
 			comp_overrun(dev, dma_buffer, dd->period_bytes, 0);
 		}
 	}
@@ -177,7 +185,7 @@ static struct comp_dev *dai_new(struct sof_ipc_comp *comp)
 	struct sof_ipc_comp_dai *ipc_dai = (struct sof_ipc_comp_dai *)comp;
 	struct dai_data *dd;
 
-	trace_dai("new");
+	trace_dai(NULL, "new");
 
 	dev = rzalloc(RZONE_RUNTIME, SOF_MEM_CAPS_RAM,
 		COMP_SIZE(struct sof_ipc_comp_dai));
@@ -197,13 +205,13 @@ static struct comp_dev *dai_new(struct sof_ipc_comp *comp)
 
 	dd->dai = dai_get(dai->type, dai->index);
 	if (dd->dai == NULL) {
-		trace_dai_error("eDg");
+		trace_dai_error(NULL, "eDg");
 		goto error;
 	}
 
 	dd->dma = dma_get(ipc_dai->dmac_id);
 	if (dd->dma == NULL) {
-		trace_dai_error("eDd");
+		trace_dai_error(NULL, "eDd");
 		goto error;
 	}
 
@@ -216,7 +224,7 @@ static struct comp_dev *dai_new(struct sof_ipc_comp *comp)
 	/* get DMA channel from DMAC1 */
 	dd->chan = dma_channel_get(dd->dma, 0);
 	if (dd->chan < 0){
-		trace_dai_error("eDc");
+		trace_dai_error(dev, "eDc");
 		goto error;
 	}
 
@@ -272,11 +280,11 @@ static int dai_playback_params(struct comp_dev *dev)
 	/* resize the buffer if space is available to align with period size */
 	err = buffer_set_size(dma_buffer, buffer_size);
 	if (err < 0) {
-		trace_dai_error("ep1");
-		trace_error_value(source_config->periods_sink);
-		trace_error_value(dd->period_bytes);
-		trace_error_value(buffer_size);
-		trace_error_value(dma_buffer->alloc_size);
+		trace_dai_error(dev, "ep1");
+		trace_dai_error_value(dev, source_config->periods_sink);
+		trace_dai_error_value(dev, dd->period_bytes);
+		trace_dai_error_value(dev, buffer_size);
+		trace_dai_error_value(dev, dma_buffer->alloc_size);
 		return err;
 	}
 
@@ -302,7 +310,7 @@ static int dai_playback_params(struct comp_dev *dev)
 	return 0;
 
 err_unwind:
-	trace_dai_error("ep3");
+	trace_dai_error(dev, "ep3");
 	list_for_item_safe(elist, tlist, &config->elem_list) {
 		elem = container_of(elist, struct dma_sg_elem, list);
 		list_item_del(&elem->list);
@@ -340,11 +348,11 @@ static int dai_capture_params(struct comp_dev *dev)
 	/* resize the buffer if space is available to align with period size */
 	err = buffer_set_size(dma_buffer, buffer_size);
 	if (err < 0) {
-		trace_dai_error("ec1");
-		trace_error_value(sink_config->periods_sink);
-		trace_error_value(dd->period_bytes);
-		trace_error_value(buffer_size);
-		trace_error_value(dma_buffer->alloc_size);
+		trace_dai_error(dev, "ec1");
+		trace_dai_error_value(dev, sink_config->periods_sink);
+		trace_dai_error_value(dev, dd->period_bytes);
+		trace_dai_error_value(dev, buffer_size);
+		trace_dai_error_value(dev, dma_buffer->alloc_size);
 		return err;
 	}
 
@@ -368,7 +376,7 @@ static int dai_capture_params(struct comp_dev *dev)
 	return 0;
 
 err_unwind:
-	trace_dai_error("ec3");
+	trace_dai_error(dev, "ec3");
 	list_for_item_safe(elist, tlist, &config->elem_list) {
 		elem = container_of(elist, struct dma_sg_elem, list);
 		list_item_del(&elem->list);
@@ -383,11 +391,11 @@ static int dai_params(struct comp_dev *dev)
 	struct comp_buffer *dma_buffer;
 	struct sof_ipc_comp_config *dconfig = COMP_GET_CONFIG(dev);
 
-	trace_dai("par");
+	trace_dai(dev, "par");
 
 	/* can set params on only init state */
 	if (dev->state != COMP_STATE_READY) {
-		trace_dai_error("wdp");
+		trace_dai_error(dev, "wdp");
 		return -EINVAL;
 	}
 
@@ -397,13 +405,13 @@ static int dai_params(struct comp_dev *dev)
 	/* calculate period size based on config */
 	dev->frame_bytes = comp_frame_bytes(dev);
 	if (dev->frame_bytes == 0) {
-		trace_dai_error("ed1");
+		trace_dai_error(dev, "ed1");
 		return -EINVAL;
 	}
 
 	dd->period_bytes = dev->frames * dev->frame_bytes;
 	if (dd->period_bytes == 0) {
-		trace_dai_error("ed2");
+		trace_dai_error(dev, "ed2");
 		return -EINVAL;
 	}
 
@@ -428,7 +436,7 @@ static int dai_prepare(struct comp_dev *dev)
 	struct comp_buffer *dma_buffer;
 	int ret = 0;
 
-	trace_dai("pre");
+	trace_dai(dev, "pre");
 
 	ret = comp_set_state(dev, COMP_TRIGGER_PREPARE);
 	if (ret < 0)
@@ -437,7 +445,7 @@ static int dai_prepare(struct comp_dev *dev)
 	dev->position = 0;
 
 	if (list_is_empty(&dd->config.elem_list)) {
-		trace_dai_error("wdm");
+		trace_dai_error(dev, "wdm");
 		comp_set_state(dev, COMP_TRIGGER_RESET);
 		return -EINVAL;
 	}
@@ -474,7 +482,7 @@ static int dai_reset(struct comp_dev *dev)
 	struct list_item *tlist;
 	struct dma_sg_elem *elem;
 
-	trace_dai("res");
+	trace_dai(dev, "res");
 
 	list_for_item_safe(elist, tlist, &config->elem_list) {
 		elem = container_of(elist, struct dma_sg_elem, list);
@@ -532,8 +540,8 @@ static int dai_comp_trigger(struct comp_dev *dev, int cmd)
 	struct dai_data *dd = comp_get_drvdata(dev);
 	int ret;
 
-	trace_dai("trg");
-	tracev_value(cmd);
+	trace_dai(dev, "trg");
+	tracev_dai_value(dev, cmd);
 
 	wait_init(&dd->complete);
 
@@ -588,8 +596,8 @@ static int dai_comp_trigger(struct comp_dev *dev, int cmd)
 		dd->complete.timeout = dev->pipeline->ipc_pipe.deadline;
 		ret = wait_for_completion_timeout(&dd->complete);
 		if (ret < 0) {
-			trace_dai_error("ed0");
-			trace_error_value(cmd);
+			trace_dai_error(dev, "ed0");
+			trace_dai_error_value(dev, cmd);
 		}
 		break;
 	default:
@@ -646,12 +654,12 @@ static int dai_config(struct comp_dev *dev, struct sof_ipc_dai_config *config)
 		break;
 	default:
 		/* other types of DAIs not handled for now */
-		trace_dai_error("de2");
+		trace_dai_error(dev, "de2");
 		break;
 	}
 
 	if (dev->frame_bytes == 0) {
-		trace_dai_error("de1");
+		trace_dai_error(dev, "de1");
 		return -EINVAL;
 	}
 
-- 
2.14.3



More information about the Sound-open-firmware mailing list