2020-07-02 12:59:45

by Hanks Chen

[permalink] [raw]
Subject: [PATCH v7] Add basic SoC Support for Mediatek MT6779 SoC

Change since v7:
Commit "dt-bindings: pinctrl: add bindings for MediaTek"
-- fix typo and change order of patch
Commit "clk: mediatek: add UART0 clock support"
-- add fixes tag and real name
Commit "arm64: dts: add dts nodes for MT6779"
-- expose all three UARTs in the dtsi


Change since v6:
Commit "dt-bindings: pinctrl: add bindings for MediaTek"
-- fix format of bindings and add interrupt definition.
Commit "pinctrl: mediatek: update pinmux definitions for"
-- use the standard include path
Commit "pinctrl: mediatek: avoid virtual gpio trying to set"
-- remove unnecessary error handler
Commit "pinctrl: mediatek: add pinctrl support for MT6779 SoC"
-- add some useful help text in kconfig
Commit "clk: mediatek: add UART0 clock support"
-- add UART0 clock support
Commit "arm64: dts: add dts nodes for MT6779"
-- add "baud" and "bus" clocks for uart
-- add new approach for mmsys


Change since v5:
1. remove unnecessary string in commit message


Change since v4:
1. fix format of pinctrl bindings


Change since v3:
1. add bindings for "mediatek,mt6779-pinctrl"
2. add some comments into the code (e.g. virtual gpio ...)
3. add Acked-by tags
4. add pmu node into dts
5. support ppi partition and fix base address in gic node of dts


Change since v2:
1. add Reviewed-by tags
2. fix checkpatch warnings with strict level


Change since v1:
first patchset



Andy Teng (1):
dt-bindings: pinctrl: add bindings for MediaTek MT6779 SoC

Hanks Chen (6):
pinctrl: mediatek: update pinmux definitions for mt6779
pinctrl: mediatek: avoid virtual gpio trying to set reg
pinctrl: mediatek: add pinctrl support for MT6779 SoC
pinctrl: mediatek: add mt6779 eint support
clk: mediatek: add UART0 clock support
arm64: dts: add dts nodes for MT6779

.../bindings/pinctrl/mediatek,mt6779-pinctrl.yaml | 210 ++
arch/arm64/boot/dts/mediatek/Makefile | 1 +
arch/arm64/boot/dts/mediatek/mt6779-evb.dts | 31 +
arch/arm64/boot/dts/mediatek/mt6779.dtsi | 271 +++
drivers/clk/mediatek/clk-mt6779.c | 2 +
drivers/pinctrl/mediatek/Kconfig | 12 +
drivers/pinctrl/mediatek/Makefile | 1 +
drivers/pinctrl/mediatek/pinctrl-mt6779.c | 783 ++++++++
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 25 +
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | 1 +
drivers/pinctrl/mediatek/pinctrl-mtk-mt6779.h | 2085 ++++++++++++++++++++
drivers/pinctrl/mediatek/pinctrl-paris.c | 7 +
include/dt-bindings/pinctrl/mt6779-pinfunc.h | 1242 ++++++++++++
13 files changed, 4671 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
create mode 100644 arch/arm64/boot/dts/mediatek/mt6779-evb.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt6779.dtsi
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt6779.c
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-mt6779.h
create mode 100644 include/dt-bindings/pinctrl/mt6779-pinfunc.h


2020-07-02 13:00:08

by Hanks Chen

[permalink] [raw]
Subject: [PATCH v7 5/7] pinctrl: mediatek: add mt6779 eint support

add driver setting to support mt6779 eint

Acked-by: Sean Wang <[email protected]>
Signed-off-by: Mars Cheng <[email protected]>
Signed-off-by: Hanks Chen <[email protected]>
---
drivers/pinctrl/mediatek/pinctrl-mt6779.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6779.c b/drivers/pinctrl/mediatek/pinctrl-mt6779.c
index 145bf22..3282260 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt6779.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt6779.c
@@ -731,11 +731,19 @@
"iocfg_rt", "iocfg_lt", "iocfg_tl",
};

+static const struct mtk_eint_hw mt6779_eint_hw = {
+ .port_mask = 7,
+ .ports = 6,
+ .ap_num = 195,
+ .db_cnt = 13,
+};
+
static const struct mtk_pin_soc mt6779_data = {
.reg_cal = mt6779_reg_cals,
.pins = mtk_pins_mt6779,
.npins = ARRAY_SIZE(mtk_pins_mt6779),
.ngrps = ARRAY_SIZE(mtk_pins_mt6779),
+ .eint_hw = &mt6779_eint_hw,
.gpio_m = 0,
.ies_present = true,
.base_names = mt6779_pinctrl_register_base_names,
--
1.7.9.5

2020-07-02 13:00:30

by Hanks Chen

[permalink] [raw]
Subject: [PATCH v7 3/7] pinctrl: mediatek: avoid virtual gpio trying to set reg

for virtual gpios, they should not do reg setting and
should behave as expected for eint function.

Signed-off-by: Mars Cheng <[email protected]>
Signed-off-by: Hanks Chen <[email protected]>
---
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 25 ++++++++++++++++++++++
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | 1 +
drivers/pinctrl/mediatek/pinctrl-paris.c | 7 ++++++
3 files changed, 33 insertions(+)

diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
index b77b18f..c53e2c3 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
@@ -243,6 +243,28 @@ static int mtk_xt_find_eint_num(struct mtk_pinctrl *hw, unsigned long eint_n)
return EINT_NA;
}

+/*
+ * Virtual GPIO only used inside SOC and not being exported to outside SOC.
+ * Some modules use virtual GPIO as eint (e.g. pmif or usb).
+ * In MTK platform, external interrupt (EINT) and GPIO is 1-1 mapping
+ * and we can set GPIO as eint.
+ * But some modules use specific eint which doesn't have real GPIO pin.
+ * So we use virtual GPIO to map it.
+ */
+
+bool mtk_is_virt_gpio(struct mtk_pinctrl *hw, unsigned int gpio_n)
+{
+ const struct mtk_pin_desc *desc;
+ bool virt_gpio = false;
+
+ desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];
+
+ if (desc->funcs && !desc->funcs[desc->eint.eint_m].name)
+ virt_gpio = true;
+
+ return virt_gpio;
+}
+
static int mtk_xt_get_gpio_n(void *data, unsigned long eint_n,
unsigned int *gpio_n,
struct gpio_chip **gpio_chip)
@@ -295,6 +317,9 @@ static int mtk_xt_set_gpio_as_eint(void *data, unsigned long eint_n)
if (err)
return err;

+ if (mtk_is_virt_gpio(hw, gpio_n))
+ return 0;
+
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];

err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
index 27df087..bd079f4f 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
@@ -315,4 +315,5 @@ int mtk_pinconf_adv_drive_set(struct mtk_pinctrl *hw,
int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw,
const struct mtk_pin_desc *desc, u32 *val);

+bool mtk_is_virt_gpio(struct mtk_pinctrl *hw, unsigned int gpio_n);
#endif /* __PINCTRL_MTK_COMMON_V2_H */
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
index 90a432b..a23c182 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
@@ -769,6 +769,13 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
if (gpio >= hw->soc->npins)
return -EINVAL;

+ /*
+ * "Virtual" GPIOs are always and only used for interrupts
+ * Since they are only used for interrupts, they are always inputs
+ */
+ if (mtk_is_virt_gpio(hw, gpio))
+ return 1;
+
desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];

err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &value);
--
1.7.9.5

2020-07-07 11:44:20

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v7] Add basic SoC Support for Mediatek MT6779 SoC

On Thu, Jul 2, 2020 at 2:57 PM Hanks Chen <[email protected]> wrote:

> Change since v7:
> Commit "dt-bindings: pinctrl: add bindings for MediaTek"
> -- fix typo and change order of patch
> Commit "clk: mediatek: add UART0 clock support"
> -- add fixes tag and real name
> Commit "arm64: dts: add dts nodes for MT6779"
> -- expose all three UARTs in the dtsi

Oh I see there are still development on this patch set so I took out
the patches I applied again.

Waiting for the final reviewed version.

Yours,
Linus Walleij

2020-07-07 11:53:32

by Hanks Chen

[permalink] [raw]
Subject: Re: [PATCH v7] Add basic SoC Support for Mediatek MT6779 SoC

On Tue, 2020-07-07 at 13:41 +0200, Linus Walleij wrote:
> On Thu, Jul 2, 2020 at 2:57 PM Hanks Chen <[email protected]> wrote:
>
> > Change since v7:
> > Commit "dt-bindings: pinctrl: add bindings for MediaTek"
> > -- fix typo and change order of patch
> > Commit "clk: mediatek: add UART0 clock support"
> > -- add fixes tag and real name
> > Commit "arm64: dts: add dts nodes for MT6779"
> > -- expose all three UARTs in the dtsi
>
> Oh I see there are still development on this patch set so I took out
> the patches I applied again.
>
> Waiting for the final reviewed version.
>
Thank you for taking a look over these so quickly!

Got it, I'll send a newer version.

Thanks!

> Yours,
> Linus Walleij