drivers: dac: add checks for internal channel config
Return -ENOTSUP if these flags are specified but not supported. Signed-off-by: Corey Wharton <xodus7@cwharton.com>
This commit is contained in:
parent
2b9ed72f9e
commit
d80174fadf
17 changed files with 84 additions and 3 deletions
|
@ -43,6 +43,11 @@ static int dac_ad559x_channel_setup(const struct device *dev,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
data->dac_conf |= BIT(channel_cfg->channel_id);
|
||||
|
||||
return mfd_ad559x_write_reg(config->mfd_dev, AD559X_REG_LDAC_EN, data->dac_conf);
|
||||
|
|
|
@ -77,6 +77,11 @@ static int ad569x_channel_setup(const struct device *dev, const struct dac_chann
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -94,6 +94,11 @@ static int ad56xx_channel_setup(const struct device *dev, const struct dac_chann
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,11 @@ static int dacx0501_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -163,6 +163,11 @@ static int dacx0508_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
data->configured |= BIT(channel_cfg->channel_id);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -102,6 +102,11 @@ static int dacx3608_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (data->configured & BIT(channel_cfg->channel_id)) {
|
||||
LOG_DBG("Channel %d already configured", channel_cfg->channel_id);
|
||||
return 0;
|
||||
|
|
|
@ -44,6 +44,11 @@ static int dac_esp32_channel_setup(const struct device *dev,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
dac_output_enable(channel_cfg->channel_id);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -115,6 +115,11 @@ static int dac_gd32_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
data->resolutions[dacx] = channel_cfg->resolution;
|
||||
|
||||
dac_gd32_disable(dacx);
|
||||
|
|
|
@ -66,6 +66,11 @@ static int ltc166x_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -76,6 +76,10 @@ static int mcp4725_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,10 @@ static int mcp4728_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,11 @@ static int mcux_dac_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
DAC_GetDefaultConfig(&dac_config);
|
||||
dac_config.enableLowPowerMode = config->low_power;
|
||||
dac_config.referenceVoltageSource = config->reference;
|
||||
|
|
|
@ -44,6 +44,11 @@ static int mcux_dac32_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
DAC32_GetDefaultConfig(&dac32_config);
|
||||
dac32_config.enableLowPowerMode = config->low_power;
|
||||
dac32_config.referenceVoltageSource = config->reference;
|
||||
|
|
|
@ -38,20 +38,25 @@ static int nxp_gau_dac_channel_setup(const struct device *dev,
|
|||
{
|
||||
const struct nxp_gau_dac_config *config = dev->config;
|
||||
dac_channel_config_t dac_channel_config = {0};
|
||||
bool use_internal = true;
|
||||
|
||||
if (channel_cfg->resolution != 10) {
|
||||
LOG_ERR("DAC only support 10 bit resolution");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channel_cfg->buffered) {
|
||||
if (channel_cfg->internal && channel_cfg->buffered) {
|
||||
LOG_ERR("DAC output can not be buffered and internal");
|
||||
return -EINVAL;
|
||||
} else if (channel_cfg->buffered) {
|
||||
/* External and internal output are mutually exclusive */
|
||||
LOG_WRN("Note: buffering DAC output to pad disconnects internal output");
|
||||
use_internal = false;
|
||||
}
|
||||
|
||||
dac_channel_config.waveType = kDAC_WaveNormal;
|
||||
dac_channel_config.outMode = channel_cfg->buffered ?
|
||||
kDAC_ChannelOutputPAD : kDAC_ChannelOutputInternal;
|
||||
dac_channel_config.outMode =
|
||||
use_internal ? kDAC_ChannelOutputInternal : kDAC_ChannelOutputPAD;
|
||||
dac_channel_config.timingMode = kDAC_NonTimingCorrelated;
|
||||
dac_channel_config.enableTrigger = false;
|
||||
dac_channel_config.enableDMA = false;
|
||||
|
|
|
@ -41,6 +41,11 @@ static int mcux_lpdac_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
LOG_ERR("Internal channels not supported");
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
DAC_GetDefaultConfig(&dac_config);
|
||||
dac_config.referenceVoltageSource = config->ref_voltage;
|
||||
#if defined(FSL_FEATURE_LPDAC_HAS_GCR_BUF_SPD_CTRL) && FSL_FEATURE_LPDAC_HAS_GCR_BUF_SPD_CTRL
|
||||
|
|
|
@ -85,6 +85,10 @@ static int dac_sam_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
/* Enable Channel */
|
||||
dac->DACC_CHER = DACC_CHER_CH0 << channel_cfg->channel_id;
|
||||
|
||||
|
|
|
@ -63,6 +63,10 @@ static int dac_sam0_channel_setup(const struct device *dev,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (channel_cfg->internal) {
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue