driver: i2s: move to new logger

Move drivers to new logger and change samples enabling logging in
prj.conf.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2018-10-08 18:03:38 -04:00
commit a66967b0f2
5 changed files with 71 additions and 79 deletions

View file

@ -20,19 +20,9 @@ config I2S_INIT_PRIORITY
help
Device driver initialization priority.
config SYS_LOG_I2S_LEVEL
int "I2S Driver Log level"
depends on SYS_LOG
default 0
range 0 4
help
Sets log level for I2S drivers.
Levels are:
0 OFF, do not write
1 ERROR, only write SYS_LOG_ERR
2 WARNING, write SYS_LOG_WRN in addition to previous level
3 INFO, write SYS_LOG_INF in addition to previous levels
4 DEBUG, write SYS_LOG_DBG in addition to previous levels
module = I2S
module-str = i2s
source "subsys/logging/Kconfig.template.log_config"
comment "Device Drivers"

View file

@ -23,9 +23,10 @@
#include <soc.h>
#include "i2s_cavs.h"
#define SYS_LOG_DOMAIN "dev/i2s_cavs"
#define SYS_LOG_LEVEL CONFIG_SYS_LOG_I2S_LEVEL
#include <logging/sys_log.h>
#define LOG_DOMAIN dev_i2s_cavs
#define LOG_LEVEL CONFIG_I2S_LOG_LEVEL
#include <logging/log.h>
LOG_MODULE_REGISTER(LOG_DOMAIN);
#ifdef CONFIG_DCACHE_WRITEBACK
#define DCACHE_INVALIDATE(addr, size) \
@ -210,13 +211,13 @@ static int start_dma(struct device *dev_dma, u32_t channel,
ret = dma_config(dev_dma, channel, cfg);
if (ret < 0) {
SYS_LOG_ERR("dma_config failed: %d", ret);
LOG_ERR("dma_config failed: %d", ret);
return ret;
}
ret = dma_start(dev_dma, channel);
if (ret < 0) {
SYS_LOG_ERR("dma_start failed: %d", ret);
LOG_ERR("dma_start failed: %d", ret);
}
return ret;
@ -243,7 +244,7 @@ static void dma_tx_callback(struct device *dev_dma, u32_t channel, int status)
/* Stop transmission if there was an error */
if (strm->state == I2S_STATE_ERROR) {
SYS_LOG_DBG("TX error detected");
LOG_DBG("TX error detected");
goto tx_disable;
}
@ -274,7 +275,7 @@ static void dma_tx_callback(struct device *dev_dma, u32_t channel, int status)
strm->mem_block, (void *)&(ssp->ssd),
mem_block_size);
if (ret < 0) {
SYS_LOG_DBG("Failed to start TX DMA transfer: %d", ret);
LOG_DBG("Failed to start TX DMA transfer: %d", ret);
goto tx_disable;
}
return;
@ -315,13 +316,13 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
if (dir == I2S_DIR_TX) {
strm = &dev_data->tx;
} else {
SYS_LOG_ERR("TX direction must be selected");
LOG_ERR("TX direction must be selected");
return -EINVAL;
}
if (strm->state != I2S_STATE_NOT_READY &&
strm->state != I2S_STATE_READY) {
SYS_LOG_ERR("invalid state");
LOG_ERR("invalid state");
return -EINVAL;
}
@ -334,13 +335,13 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
if (word_size_bits < CAVS_SSP_WORD_SIZE_BITS_MIN ||
word_size_bits > CAVS_SSP_WORD_SIZE_BITS_MAX) {
SYS_LOG_ERR("Unsupported I2S word size");
LOG_ERR("Unsupported I2S word size");
return -EINVAL;
}
if (num_words < CAVS_SSP_WORD_PER_FRAME_MIN ||
num_words > CAVS_SSP_WORD_PER_FRAME_MAX) {
SYS_LOG_ERR("Unsupported words per frame number");
LOG_ERR("Unsupported words per frame number");
return -EINVAL;
}
@ -408,7 +409,7 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
break;
default:
SYS_LOG_ERR("Unsupported Clock format");
LOG_ERR("Unsupported Clock format");
return -EINVAL;
}
@ -417,7 +418,7 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
/* BCLK is generated from MCLK - must be divisible */
if (mclk % bit_clk_freq) {
SYS_LOG_INF("MCLK/BCLK is not an integer, using M/N divider");
LOG_INF("MCLK/BCLK is not an integer, using M/N divider");
/*
* Simplification: Instead of calculating lowest values of
@ -440,7 +441,7 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
/* divisor must be within SCR range */
if (mdiv > (SSCR0_SCR_MASK >> 8)) {
SYS_LOG_ERR("Divisor is not within SCR range");
LOG_ERR("Divisor is not within SCR range");
return -EINVAL;
}
@ -476,7 +477,7 @@ static int i2s_cavs_configure(struct device *dev, enum i2s_dir dir,
case I2S_FMT_DATA_FORMAT_PCM_SHORT:
case I2S_FMT_DATA_FORMAT_PCM_LONG:
default:
SYS_LOG_ERR("Unsupported I2S data format");
LOG_ERR("Unsupported I2S data format");
return -EINVAL;
}
@ -532,7 +533,7 @@ static int tx_stream_start(struct stream *strm,
strm->mem_block, (void *)&(ssp->ssd),
mem_block_size);
if (ret < 0) {
SYS_LOG_ERR("Failed to start TX DMA transfer: %d", ret);
LOG_ERR("Failed to start TX DMA transfer: %d", ret);
return ret;
}
@ -605,14 +606,14 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
if (dir == I2S_DIR_TX) {
strm = &dev_data->tx;
} else {
SYS_LOG_ERR("TX direction must be selected");
LOG_ERR("TX direction must be selected");
return -EINVAL;
}
switch (cmd) {
case I2S_TRIGGER_START:
if (strm->state != I2S_STATE_READY) {
SYS_LOG_DBG("START trigger: invalid state");
LOG_DBG("START trigger: invalid state");
return -EIO;
}
@ -620,7 +621,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
ret = strm->stream_start(strm, ssp, dev_data->dev_dma);
if (ret < 0) {
SYS_LOG_DBG("START trigger failed %d", ret);
LOG_DBG("START trigger failed %d", ret);
return ret;
}
@ -632,7 +633,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
key = irq_lock();
if (strm->state != I2S_STATE_RUNNING) {
irq_unlock(key);
SYS_LOG_DBG("STOP trigger: invalid state");
LOG_DBG("STOP trigger: invalid state");
return -EIO;
}
strm->state = I2S_STATE_STOPPING;
@ -644,7 +645,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
key = irq_lock();
if (strm->state != I2S_STATE_RUNNING) {
irq_unlock(key);
SYS_LOG_DBG("DRAIN trigger: invalid state");
LOG_DBG("DRAIN trigger: invalid state");
return -EIO;
}
strm->state = I2S_STATE_STOPPING;
@ -653,7 +654,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
case I2S_TRIGGER_DROP:
if (strm->state == I2S_STATE_NOT_READY) {
SYS_LOG_DBG("DROP trigger: invalid state");
LOG_DBG("DROP trigger: invalid state");
return -EIO;
}
strm->stream_disable(strm, ssp, dev_data->dev_dma);
@ -663,7 +664,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
case I2S_TRIGGER_PREPARE:
if (strm->state != I2S_STATE_ERROR) {
SYS_LOG_DBG("PREPARE trigger: invalid state");
LOG_DBG("PREPARE trigger: invalid state");
return -EIO;
}
strm->state = I2S_STATE_READY;
@ -671,7 +672,7 @@ static int i2s_cavs_trigger(struct device *dev, enum i2s_dir dir,
break;
default:
SYS_LOG_ERR("Unsupported trigger command");
LOG_ERR("Unsupported trigger command");
return -EINVAL;
}
@ -686,13 +687,13 @@ static int i2s_cavs_write(struct device *dev, void *mem_block, size_t size)
if (dev_data->tx.state != I2S_STATE_RUNNING &&
dev_data->tx.state != I2S_STATE_READY) {
SYS_LOG_ERR("invalid state");
LOG_ERR("invalid state");
return -EIO;
}
ret = k_sem_take(&dev_data->tx.sem, dev_data->tx.cfg.timeout);
if (ret < 0) {
SYS_LOG_ERR("Failure taking sem");
LOG_ERR("Failure taking sem");
return ret;
}
@ -729,14 +730,14 @@ static int i2s1_cavs_initialize(struct device *dev)
dev_data->dev_dma = device_get_binding(CONFIG_I2S_CAVS_DMA_NAME);
if (!dev_data->dev_dma) {
SYS_LOG_ERR("%s device not found", CONFIG_I2S_CAVS_DMA_NAME);
LOG_ERR("%s device not found", CONFIG_I2S_CAVS_DMA_NAME);
return -ENODEV;
}
/* Enable module's IRQ */
irq_enable(dev_cfg->irq_id);
SYS_LOG_INF("Device %s initialized", DEV_NAME(dev));
LOG_INF("Device %s initialized", DEV_NAME(dev));
return 0;
}

View file

@ -27,9 +27,10 @@
#include <i2s.h>
#include <soc.h>
#define SYS_LOG_DOMAIN "dev/i2s_sam_ssc"
#define SYS_LOG_LEVEL CONFIG_SYS_LOG_I2S_LEVEL
#include <logging/sys_log.h>
#define LOG_DOMAIN dev_i2s_sam_ssc
#define LOG_LEVEL CONFIG_I2S_LOG_LEVEL
#include <logging/log.h>
LOG_MODULE_REGISTER(LOG_DOMAIN);
/* FIXME change to
* #if __DCACHE_PRESENT == 1
@ -234,7 +235,7 @@ static void dma_rx_callback(struct device *dev_dma, u32_t channel, int status)
(void *)&(ssc->SSC_RHR), stream->mem_block,
stream->cfg.block_size);
if (ret < 0) {
SYS_LOG_DBG("Failed to start RX DMA transfer: %d", ret);
LOG_DBG("Failed to start RX DMA transfer: %d", ret);
goto rx_disable;
}
@ -263,7 +264,7 @@ static void dma_tx_callback(struct device *dev_dma, u32_t channel, int status)
/* Stop transmission if there was an error */
if (stream->state == I2S_STATE_ERROR) {
SYS_LOG_DBG("TX error detected");
LOG_DBG("TX error detected");
goto tx_disable;
}
@ -293,7 +294,7 @@ static void dma_tx_callback(struct device *dev_dma, u32_t channel, int status)
stream->mem_block, (void *)&(ssc->SSC_THR),
mem_block_size);
if (ret < 0) {
SYS_LOG_DBG("Failed to start TX DMA transfer: %d", ret);
LOG_DBG("Failed to start TX DMA transfer: %d", ret);
goto tx_disable;
}
@ -360,7 +361,7 @@ static int set_rx_data_format(const struct i2s_sam_dev_cfg *const dev_cfg,
break;
default:
SYS_LOG_ERR("Unsupported I2S data format");
LOG_ERR("Unsupported I2S data format");
return -EINVAL;
}
@ -446,7 +447,7 @@ static int set_tx_data_format(const struct i2s_sam_dev_cfg *const dev_cfg,
break;
default:
SYS_LOG_ERR("Unsupported I2S data format");
LOG_ERR("Unsupported I2S data format");
return -EINVAL;
}
@ -497,13 +498,13 @@ static int bit_clock_set(Ssc *const ssc, u32_t bit_clk_freq)
u32_t clk_div = SOC_ATMEL_SAM_MCK_FREQ_HZ / bit_clk_freq / 2;
if (clk_div == 0 || clk_div >= (1 << 12)) {
SYS_LOG_ERR("Invalid bit clock frequency");
LOG_ERR("Invalid bit clock frequency");
return -EINVAL;
}
ssc->SSC_CMR = clk_div;
SYS_LOG_DBG("freq = %d", bit_clk_freq);
LOG_DBG("freq = %d", bit_clk_freq);
return 0;
}
@ -545,13 +546,13 @@ static int i2s_sam_configure(struct device *dev, enum i2s_dir dir,
} else if (dir == I2S_DIR_TX) {
stream = &dev_data->tx;
} else {
SYS_LOG_ERR("Either RX or TX direction must be selected");
LOG_ERR("Either RX or TX direction must be selected");
return -EINVAL;
}
if (stream->state != I2S_STATE_NOT_READY &&
stream->state != I2S_STATE_READY) {
SYS_LOG_ERR("invalid state");
LOG_ERR("invalid state");
return -EINVAL;
}
@ -563,26 +564,26 @@ static int i2s_sam_configure(struct device *dev, enum i2s_dir dir,
}
if (i2s_cfg->format & I2S_FMT_FRAME_CLK_INV) {
SYS_LOG_ERR("Frame clock inversion is not implemented");
SYS_LOG_ERR("Please submit a patch");
LOG_ERR("Frame clock inversion is not implemented");
LOG_ERR("Please submit a patch");
return -EINVAL;
}
if (i2s_cfg->format & I2S_FMT_BIT_CLK_INV) {
SYS_LOG_ERR("Bit clock inversion is not implemented");
SYS_LOG_ERR("Please submit a patch");
LOG_ERR("Bit clock inversion is not implemented");
LOG_ERR("Please submit a patch");
return -EINVAL;
}
if (word_size_bits < SAM_SSC_WORD_SIZE_BITS_MIN ||
word_size_bits > SAM_SSC_WORD_SIZE_BITS_MAX) {
SYS_LOG_ERR("Unsupported I2S word size");
LOG_ERR("Unsupported I2S word size");
return -EINVAL;
}
if (num_words < SAM_SSC_WORD_PER_FRAME_MIN ||
num_words > SAM_SSC_WORD_PER_FRAME_MAX) {
SYS_LOG_ERR("Unsupported words per frame number");
LOG_ERR("Unsupported words per frame number");
return -EINVAL;
}
@ -635,7 +636,7 @@ static int rx_stream_start(struct stream *stream, Ssc *const ssc,
(void *)&(ssc->SSC_RHR), stream->mem_block,
stream->cfg.block_size);
if (ret < 0) {
SYS_LOG_ERR("Failed to start RX DMA transfer: %d", ret);
LOG_ERR("Failed to start RX DMA transfer: %d", ret);
return ret;
}
@ -676,7 +677,7 @@ static int tx_stream_start(struct stream *stream, Ssc *const ssc,
stream->mem_block, (void *)&(ssc->SSC_THR),
mem_block_size);
if (ret < 0) {
SYS_LOG_ERR("Failed to start TX DMA transfer: %d", ret);
LOG_ERR("Failed to start TX DMA transfer: %d", ret);
return ret;
}
@ -757,14 +758,14 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
} else if (dir == I2S_DIR_TX) {
stream = &dev_data->tx;
} else {
SYS_LOG_ERR("Either RX or TX direction must be selected");
LOG_ERR("Either RX or TX direction must be selected");
return -EINVAL;
}
switch (cmd) {
case I2S_TRIGGER_START:
if (stream->state != I2S_STATE_READY) {
SYS_LOG_DBG("START trigger: invalid state");
LOG_DBG("START trigger: invalid state");
return -EIO;
}
@ -772,7 +773,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
ret = stream->stream_start(stream, ssc, dev_data->dev_dma);
if (ret < 0) {
SYS_LOG_DBG("START trigger failed %d", ret);
LOG_DBG("START trigger failed %d", ret);
return ret;
}
@ -784,7 +785,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
key = irq_lock();
if (stream->state != I2S_STATE_RUNNING) {
irq_unlock(key);
SYS_LOG_DBG("STOP trigger: invalid state");
LOG_DBG("STOP trigger: invalid state");
return -EIO;
}
stream->state = I2S_STATE_STOPPING;
@ -796,7 +797,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
key = irq_lock();
if (stream->state != I2S_STATE_RUNNING) {
irq_unlock(key);
SYS_LOG_DBG("DRAIN trigger: invalid state");
LOG_DBG("DRAIN trigger: invalid state");
return -EIO;
}
stream->state = I2S_STATE_STOPPING;
@ -805,7 +806,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
case I2S_TRIGGER_DROP:
if (stream->state == I2S_STATE_NOT_READY) {
SYS_LOG_DBG("DROP trigger: invalid state");
LOG_DBG("DROP trigger: invalid state");
return -EIO;
}
stream->stream_disable(stream, ssc, dev_data->dev_dma);
@ -815,7 +816,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
case I2S_TRIGGER_PREPARE:
if (stream->state != I2S_STATE_ERROR) {
SYS_LOG_DBG("PREPARE trigger: invalid state");
LOG_DBG("PREPARE trigger: invalid state");
return -EIO;
}
stream->state = I2S_STATE_READY;
@ -823,7 +824,7 @@ static int i2s_sam_trigger(struct device *dev, enum i2s_dir dir,
break;
default:
SYS_LOG_ERR("Unsupported trigger command");
LOG_ERR("Unsupported trigger command");
return -EINVAL;
}
@ -836,7 +837,7 @@ static int i2s_sam_read(struct device *dev, void **mem_block, size_t *size)
int ret;
if (dev_data->rx.state == I2S_STATE_NOT_READY) {
SYS_LOG_DBG("invalid state");
LOG_DBG("invalid state");
return -EIO;
}
@ -863,7 +864,7 @@ static int i2s_sam_write(struct device *dev, void *mem_block, size_t size)
if (dev_data->tx.state != I2S_STATE_RUNNING &&
dev_data->tx.state != I2S_STATE_READY) {
SYS_LOG_DBG("invalid state");
LOG_DBG("invalid state");
return -EIO;
}
@ -894,14 +895,14 @@ static void i2s_sam_isr(void *arg)
dev_data->rx.state = I2S_STATE_ERROR;
/* Disable interrupt */
ssc->SSC_IDR = SSC_IDR_OVRUN;
SYS_LOG_DBG("RX buffer overrun error");
LOG_DBG("RX buffer overrun error");
}
/* Check for TX buffer underrun */
if (isr_status & SSC_SR_TXEMPTY) {
dev_data->tx.state = I2S_STATE_ERROR;
/* Disable interrupt */
ssc->SSC_IDR = SSC_IDR_TXEMPTY;
SYS_LOG_DBG("TX buffer underrun error");
LOG_DBG("TX buffer underrun error");
}
}
@ -921,7 +922,7 @@ static int i2s_sam_initialize(struct device *dev)
dev_data->dev_dma = device_get_binding(CONFIG_I2S_SAM_SSC_DMA_NAME);
if (!dev_data->dev_dma) {
SYS_LOG_ERR("%s device not found", CONFIG_I2S_SAM_SSC_DMA_NAME);
LOG_ERR("%s device not found", CONFIG_I2S_SAM_SSC_DMA_NAME);
return -ENODEV;
}
@ -937,7 +938,7 @@ static int i2s_sam_initialize(struct device *dev)
/* Enable module's IRQ */
irq_enable(dev_cfg->irq_id);
SYS_LOG_INF("Device %s initialized", DEV_NAME(dev));
LOG_INF("Device %s initialized", DEV_NAME(dev));
return 0;
}

View file

@ -1,4 +1,4 @@
CONFIG_I2S=y
CONFIG_SYS_LOG=y
CONFIG_SYS_LOG_I2S_LEVEL=3
CONFIG_LOG=y
CONFIG_I2S_LOG_LEVEL_DBG=y
CONFIG_ZTEST=y

View file

@ -1,4 +1,4 @@
CONFIG_I2S=y
CONFIG_SYS_LOG=y
CONFIG_SYS_LOG_I2S_LEVEL=3
CONFIG_LOG=y
CONFIG_I2S_LOG_LEVEL_DBG=y
CONFIG_ZTEST=y