]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pwm: pwm-mediatek: Add support for PWM IP V3.0.2 in MT6991/MT8196
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Mon, 23 Jun 2025 12:01:18 +0000 (14:01 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Mon, 7 Jul 2025 06:39:35 +0000 (08:39 +0200)
Add support for the PWM IP version 3.0.2, found in MediaTek's
Dimensity 9400 MT6991 and in the MT8196 Chromebook SoC: this
needs a new register offset array and also a different offset
for the PWM_CK_26M_SEL register.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20250623120118.109170-4-angelogioacchino.delregno@collabora.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
drivers/pwm/pwm-mediatek.c

index 680ab2346c7188b5d8baa25832aab7d4e076b50e..6777c511622aa1a929bd1b00fb366ac11ffb9b48 100644 (file)
@@ -29,6 +29,7 @@
 #define PWM45DWIDTH_FIXUP      0x30
 #define PWMTHRES               0x30
 #define PWM45THRES_FIXUP       0x34
+#define PWM_CK_26M_SEL_V3      0x74
 #define PWM_CK_26M_SEL         0x210
 
 #define PWM_CLK_DIV_MAX                7
@@ -64,6 +65,11 @@ static const unsigned int mtk_pwm_reg_offset_v2[] = {
        0x0080, 0x00c0, 0x0100, 0x0140, 0x0180, 0x01c0, 0x0200, 0x0240
 };
 
+/* PWM IP Version 3.0.2 */
+static const unsigned int mtk_pwm_reg_offset_v3[] = {
+       0x0100, 0x0200, 0x0300, 0x0400, 0x0500, 0x0600, 0x0700, 0x0800
+};
+
 static inline struct pwm_mediatek_chip *
 to_pwm_mediatek_chip(struct pwm_chip *chip)
 {
@@ -369,9 +375,17 @@ static const struct pwm_mediatek_of_data mt8516_pwm_data = {
        .reg_offset = mtk_pwm_reg_offset_v1,
 };
 
+static const struct pwm_mediatek_of_data mt6991_pwm_data = {
+       .num_pwms = 4,
+       .pwm45_fixup = false,
+       .pwm_ck_26m_sel_reg = PWM_CK_26M_SEL_V3,
+       .reg_offset = mtk_pwm_reg_offset_v3,
+};
+
 static const struct of_device_id pwm_mediatek_of_match[] = {
        { .compatible = "mediatek,mt2712-pwm", .data = &mt2712_pwm_data },
        { .compatible = "mediatek,mt6795-pwm", .data = &mt6795_pwm_data },
+       { .compatible = "mediatek,mt6991-pwm", .data = &mt6991_pwm_data },
        { .compatible = "mediatek,mt7622-pwm", .data = &mt7622_pwm_data },
        { .compatible = "mediatek,mt7623-pwm", .data = &mt7623_pwm_data },
        { .compatible = "mediatek,mt7628-pwm", .data = &mt7628_pwm_data },