From a283246ef779b6d47e10d4946f924fcf7de601d6 Mon Sep 17 00:00:00 2001 From: Yidi Lin Date: Mon, 2 Jun 2025 13:21:45 +0800 Subject: [PATCH] soc/mediatek/common: Refactor auxadc driver to support new platform The method for reading AUXDAC on mt8189 differs from previous methods. To enhance code modularity and maintain compatibility, the differing parts are moved to auxad_v1.h to supports legacy platforms. BUG=b:379008996 BRANCH=none TEST=emerge-geralt coreboot -j Change-Id: Ib4bf0f593cab0480b7c78df7916f721f2e0833c7 Signed-off-by: Yidi Lin Reviewed-on: https://review.coreboot.org/c/coreboot/+/87919 Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu --- src/soc/mediatek/common/auxadc.c | 8 ++------ src/soc/mediatek/common/include/soc/auxadc_v1.h | 15 +++++++++++++++ src/soc/mediatek/mt8183/include/soc/auxadc.h | 1 + src/soc/mediatek/mt8186/include/soc/auxadc.h | 1 + src/soc/mediatek/mt8188/include/soc/auxadc.h | 1 + src/soc/mediatek/mt8192/include/soc/auxadc.h | 1 + src/soc/mediatek/mt8195/include/soc/auxadc.h | 1 + 7 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/soc/mediatek/common/include/soc/auxadc_v1.h diff --git a/src/soc/mediatek/common/auxadc.c b/src/soc/mediatek/common/auxadc.c index 6dbf12bbe9..7e296e3e59 100644 --- a/src/soc/mediatek/common/auxadc.c +++ b/src/soc/mediatek/common/auxadc.c @@ -10,10 +10,6 @@ static struct mtk_auxadc_regs *const mtk_auxadc = (void *)AUXADC_BASE; -#define ADC_GE_A_SHIFT 10 -#define ADC_GE_A_MASK (0x3ff << ADC_GE_A_SHIFT) -#define ADC_OE_A_SHIFT 0 -#define ADC_OE_A_MASK (0x3ff << ADC_OE_A_SHIFT) #define ADC_CALI_EN_A_SHIFT 20 #define ADC_CALI_EN_A_MASK (0x1 << ADC_CALI_EN_A_SHIFT) @@ -38,7 +34,7 @@ static void mt_auxadc_update_cali(void) static uint32_t auxadc_get_rawdata(int channel) { - setbits32(&mtk_infracfg->module_sw_cg_1_clr, 1 << 10); + setbits32(&AUXADC_SWCG_CLR_REG, BIT(AUXADC_SWCG_EN_BIT)); assert(wait_ms(300, !(read32(&mtk_auxadc->con2) & 0x1))); clrbits32(&mtk_auxadc->con1, 1 << channel); @@ -50,7 +46,7 @@ static uint32_t auxadc_get_rawdata(int channel) uint32_t value = read32(&mtk_auxadc->data[channel]) & 0x0FFF; - setbits32(&mtk_infracfg->module_sw_cg_1_set, 1 << 10); + setbits32(&AUXADC_SWCG_SET_REG, BIT(AUXADC_SWCG_EN_BIT)); return value; } diff --git a/src/soc/mediatek/common/include/soc/auxadc_v1.h b/src/soc/mediatek/common/include/soc/auxadc_v1.h new file mode 100644 index 0000000000..f6cbc7b693 --- /dev/null +++ b/src/soc/mediatek/common/include/soc/auxadc_v1.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __SOC_MEDIATEK_COMMON_INCLUDE_SOC_AUXADC_V1_H__ +#define __SOC_MEDIATEK_COMMON_INCLUDE_SOC_AUXADC_V1_H__ + +#define ADC_GE_A_SHIFT 10 +#define ADC_GE_A_MASK (0x3ff << ADC_GE_A_SHIFT) +#define ADC_OE_A_SHIFT 0 +#define ADC_OE_A_MASK (0x3ff << ADC_OE_A_SHIFT) + +#define AUXADC_SWCG_CLR_REG (mtk_infracfg->module_sw_cg_1_clr) +#define AUXADC_SWCG_SET_REG (mtk_infracfg->module_sw_cg_1_set) +#define AUXADC_SWCG_EN_BIT 10 + +#endif diff --git a/src/soc/mediatek/mt8183/include/soc/auxadc.h b/src/soc/mediatek/mt8183/include/soc/auxadc.h index 326261af32..1f2a0e5f32 100644 --- a/src/soc/mediatek/mt8183/include/soc/auxadc.h +++ b/src/soc/mediatek/mt8183/include/soc/auxadc.h @@ -4,6 +4,7 @@ #define _MTK_ADC_H #include +#include #include #include diff --git a/src/soc/mediatek/mt8186/include/soc/auxadc.h b/src/soc/mediatek/mt8186/include/soc/auxadc.h index d5f41a6b7c..faa0f035c2 100644 --- a/src/soc/mediatek/mt8186/include/soc/auxadc.h +++ b/src/soc/mediatek/mt8186/include/soc/auxadc.h @@ -9,6 +9,7 @@ #define SOC_MEDIATEK_MT8186_AUXADC_H #include +#include #include #include diff --git a/src/soc/mediatek/mt8188/include/soc/auxadc.h b/src/soc/mediatek/mt8188/include/soc/auxadc.h index d332873a21..8c173630d8 100644 --- a/src/soc/mediatek/mt8188/include/soc/auxadc.h +++ b/src/soc/mediatek/mt8188/include/soc/auxadc.h @@ -9,6 +9,7 @@ #define SOC_MEDIATEK_MT8188_AUXADC_H #include +#include #include #include diff --git a/src/soc/mediatek/mt8192/include/soc/auxadc.h b/src/soc/mediatek/mt8192/include/soc/auxadc.h index 94702bd141..d4ec7d957e 100644 --- a/src/soc/mediatek/mt8192/include/soc/auxadc.h +++ b/src/soc/mediatek/mt8192/include/soc/auxadc.h @@ -4,6 +4,7 @@ #define _MTK_ADC_H #include +#include #include #include diff --git a/src/soc/mediatek/mt8195/include/soc/auxadc.h b/src/soc/mediatek/mt8195/include/soc/auxadc.h index 326b3722fd..c0b2f1e734 100644 --- a/src/soc/mediatek/mt8195/include/soc/auxadc.h +++ b/src/soc/mediatek/mt8195/include/soc/auxadc.h @@ -4,6 +4,7 @@ #define SOC_MEDIATEK_MT8195_AUXADC_H #include +#include #include #include