gl-infra-builder-FUjr/patches-siflower-18.x/0105-fix-i2c-func-select.patch
2021-06-21 15:59:46 +08:00

58 lines
2.1 KiB
Diff

From 00c8bf9c940bddb69ac88556f808842b02e6e425 Mon Sep 17 00:00:00 2001
From: "GL.iNet-Xinfa.Deng" <xinfa.deng@gl-inet.com>
Date: Sat, 19 Jun 2021 11:39:46 +0800
Subject: [PATCH] fix: i2c func select
Signed-off-by: GL.iNet-Xinfa.Deng <xinfa.deng@gl-inet.com>
---
.../linux-4.14.90/drivers/pinctrl/pinctrl-sfax8.c | 24 ++++++----------------
1 file changed, 6 insertions(+), 18 deletions(-)
diff --git a/linux-4.14.90-dev/linux-4.14.90/drivers/pinctrl/pinctrl-sfax8.c b/linux-4.14.90-dev/linux-4.14.90/drivers/pinctrl/pinctrl-sfax8.c
index 1a8ca99..ebbcd78 100644
--- a/linux-4.14.90-dev/linux-4.14.90/drivers/pinctrl/pinctrl-sfax8.c
+++ b/linux-4.14.90-dev/linux-4.14.90/drivers/pinctrl/pinctrl-sfax8.c
@@ -265,33 +265,21 @@ static int sfax8_pad_set_func(struct sfax8_pinctrl *info, u32 index, pad_func fu
{
// write 0,0,0 to fmux_sel_reg mode_bit1_reg mode_bit0_reg
case FUNC0:
+ case FUNC1:
+ case FUNC2:
+ case FUNC3:
regmap_read(info->regmap_base, PAD_INDEX_REG1(index), &tmp);
- tmp |=(0x1 << FUNC_SW_SEL_REG);
+ tmp &= ~(0x7 << 0);
+ tmp |= (func << 0) | (0x1 << FUNC_SW_SEL_REG);
regmap_write(info->regmap_base, PAD_INDEX_REG1(index), tmp);
regmap_read(info->regmap_base, PAD_INDEX_REG0(index), &tmp);
- tmp |=(0x1 << SW_IE_REG);
+ tmp &= ~(0x1 << SW_OEN_REG);
regmap_write(info->regmap_base, PAD_INDEX_REG0(index), tmp);
- regmap_read(info->regmap_base, PAD_INDEX_REG1(index), &tmp);
- tmp &= ~(0x7 << 0);
- regmap_write(info->regmap_base, PAD_INDEX_REG1(index), tmp);
- break;
-
- // write 0,0,1 to fmux_sel_reg mode_bit1_reg mode_bit0_reg
- case FUNC1:
- regmap_read(info->regmap_base, PAD_INDEX_REG1(index), &tmp);
- tmp |=(0x1 << FUNC_SW_SEL_REG);
- regmap_write(info->regmap_base, PAD_INDEX_REG1(index), tmp);
-
regmap_read(info->regmap_base, PAD_INDEX_REG0(index), &tmp);
tmp |=(0x1 << SW_IE_REG);
regmap_write(info->regmap_base, PAD_INDEX_REG0(index), tmp);
-
- regmap_read(info->regmap_base, PAD_INDEX_REG1(index), &tmp);
- tmp &= ~(0x3 << 1);
- tmp |=(0x1 << 0);
- regmap_write(info->regmap_base, PAD_INDEX_REG1(index), tmp);
break;
case GPIO_INPUT:
--
2.7.4