Browse Source

drivers: dai: esai: support applying default pin configuration

Add support for applying the default pin configuration.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
pull/92069/head
Laurentiu Mihalcea 2 months ago committed by Benjamin Cabé
parent
commit
de3b598f9f
  1. 3
      drivers/dai/nxp/esai/Kconfig.esai
  2. 9
      drivers/dai/nxp/esai/esai.c
  3. 2
      drivers/dai/nxp/esai/esai.h

3
drivers/dai/nxp/esai/Kconfig.esai

@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
# Copyright 2024 NXP
# Copyright 2024-2025 NXP
# SPDX-License-Identifier: Apache-2.0
config DAI_NXP_ESAI
bool "NXP Enhanced Serial Audio Interface (ESAI) driver"
default y
depends on DT_HAS_NXP_DAI_ESAI_ENABLED
select PINCTRL
help
Select this to enable NXP ESAI driver.

9
drivers/dai/nxp/esai/esai.c

@ -740,6 +740,12 @@ static int esai_init(const struct device *dev) @@ -740,6 +740,12 @@ static int esai_init(const struct device *dev)
}
#endif /* CONFIG_PM_DEVICE_RUNTIME */
/* note: optional operation so -ENOENT is allowed */
ret = pinctrl_apply_state(cfg->pincfg, PINCTRL_STATE_DEFAULT);
if (ret < 0 && ret != -ENOENT) {
return ret;
}
ret = esai_parse_pinmodes(cfg, data);
if (ret < 0) {
return ret;
@ -750,6 +756,8 @@ static int esai_init(const struct device *dev) @@ -750,6 +756,8 @@ static int esai_init(const struct device *dev)
#define ESAI_INIT(inst) \
\
PINCTRL_DT_INST_DEFINE(inst); \
\
BUILD_ASSERT(ESAI_TX_FIFO_WATERMARK(inst) >= 1 && \
ESAI_TX_FIFO_WATERMARK(inst) <= _ESAI_FIFO_DEPTH(inst), \
"invalid TX watermark value"); \
@ -806,6 +814,7 @@ static struct esai_config esai_config_##inst = { \ @@ -806,6 +814,7 @@ static struct esai_config esai_config_##inst = { \
.clock_cfg = clock_cfg_##inst, \
.clock_cfg_size = ARRAY_SIZE(clock_cfg_##inst), \
.clk_data = ESAI_CLOCK_DATA_DECLARE(inst), \
.pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(inst), \
}; \
\
static struct esai_data esai_data_##inst = { \

2
drivers/dai/nxp/esai/esai.h

@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
#include <zephyr/device.h>
#include <zephyr/dt-bindings/dai/esai.h>
#include <zephyr/drivers/clock_control.h>
#include <zephyr/drivers/pinctrl.h>
#include <fsl_esai.h>
@ -218,6 +219,7 @@ struct esai_config { @@ -218,6 +219,7 @@ struct esai_config {
uint32_t *clock_cfg;
uint32_t clock_cfg_size;
struct esai_clock_data clk_data;
const struct pinctrl_dev_config *pincfg;
};
/* this needs to perfectly match SOF's struct sof_ipc_dai_esai_params */

Loading…
Cancel
Save