From 0436801cf951d92a9c100db923016a935ae4ad34 Mon Sep 17 00:00:00 2001 From: Neil Chen Date: Mon, 25 Nov 2024 14:21:02 +0800 Subject: [PATCH] drivers: adc: mcux_lpadc: support IP instances without side B channel Updating the LPADC driver to support IP without a side B channel. The MCXA156 is an example with this instantiation of the IP. Signed-off-by: Neil Chen --- drivers/adc/adc_mcux_lpadc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/adc/adc_mcux_lpadc.c b/drivers/adc/adc_mcux_lpadc.c index 9b0fbd475f6..7804bdec94b 100644 --- a/drivers/adc/adc_mcux_lpadc.c +++ b/drivers/adc/adc_mcux_lpadc.c @@ -157,6 +157,8 @@ static int mcux_lpadc_channel_setup(const struct device *dev, return -EINVAL; } +#if !(defined(FSL_FEATURE_LPADC_HAS_B_SIDE_CHANNELS) && \ + (FSL_FEATURE_LPADC_HAS_B_SIDE_CHANNELS == 0U)) if (channel_cfg->differential) { /* Channel pairs must match in differential mode */ if ((ADC_CMDL_ADCH(channel_cfg->input_positive)) != @@ -183,6 +185,7 @@ static int mcux_lpadc_channel_setup(const struct device *dev, } else { /* Default value for sampleChannelMode is SideA */ } +#endif #if defined(FSL_FEATURE_LPADC_HAS_CMDL_CSCALE) && FSL_FEATURE_LPADC_HAS_CMDL_CSCALE /* * The true scaling factor used by the LPADC is 30/64, instead of @@ -435,6 +438,8 @@ static void mcux_lpadc_isr(const struct device *dev) conv_mode = data->cmd_config[channel].sampleChannelMode; if (data->ctx.sequence.resolution < 15) { result = ((conv_result.convValue >> 3) & 0xFFF); +#if !(defined(FSL_FEATURE_LPADC_HAS_B_SIDE_CHANNELS) && \ + (FSL_FEATURE_LPADC_HAS_B_SIDE_CHANNELS == 0U)) #if defined(FSL_FEATURE_LPADC_HAS_CMDL_DIFF) && FSL_FEATURE_LPADC_HAS_CMDL_DIFF if (conv_mode == kLPADC_SampleChannelDiffBothSideAB || conv_mode == kLPADC_SampleChannelDiffBothSideBA) { @@ -447,6 +452,7 @@ static void mcux_lpadc_isr(const struct device *dev) } } *data->buffer++ = result; +#endif } else { *data->buffer++ = conv_result.convValue; }