Add pinctrl for uart{0, 1} nodes

Set pinmux to uart for uart0 and uart1 pins since the uarts are enabled
in the device tree. uart0 previously was set in the u-boot device tree.

Add pinctrl support in MTK tty serial driver.

Change-Id: Ib0cd4d4014dcd3769d090172682b6a9442055819
diff --git a/arch/arm64/boot/dts/mediatek/mt8167-coral.dts b/arch/arm64/boot/dts/mediatek/mt8167-coral.dts
index c87f9ec..cbb7112 100644
--- a/arch/arm64/boot/dts/mediatek/mt8167-coral.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8167-coral.dts
@@ -258,10 +258,14 @@
 
 &uart0 {
 	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
 };
 
 &uart1 {
 	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>;
 };
 
 &pio {
@@ -301,6 +305,20 @@
 		};
 	};
 
+	uart0_pins: uart0 {
+		pins1 {
+			pinmux = <MT8167_PIN_62_URXD0__FUNC_URXD0>,
+				<MT8167_PIN_63_UTXD0__FUNC_UTXD0>;
+		};
+	};
+
+	uart1_pins: uart1 {
+		pins1 {
+			pinmux = <MT8167_PIN_64_URXD1__FUNC_URXD1>,
+				<MT8167_PIN_65_UTXD1__FUNC_UTXD1>;
+		};
+	};
+
 	aud_pins_default: audiodefault {
 		pins1 {
 			pinmux = <MT8167_PIN_40_KPROW0__FUNC_GPIO40>;
diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c
index c3f933d..e31a69e 100644
--- a/drivers/tty/serial/8250/8250_mtk.c
+++ b/drivers/tty/serial/8250/8250_mtk.c
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 #include <linux/serial_8250.h>
@@ -26,6 +27,8 @@
 	int			line;
 	struct clk		*uart_clk;
 	struct clk		*bus_clk;
+	struct pinctrl *pinctrl;
+	struct pinctrl_state *pins_default;
 };
 
 static void
@@ -194,6 +197,18 @@
 	} else
 		return -ENODEV;
 
+	data->pinctrl = devm_pinctrl_get(&pdev->dev);
+	if (IS_ERR(data->pinctrl)) {
+		dev_err(&pdev->dev, "Cannot find pinctrl!\n");
+		return PTR_ERR(data->pinctrl);
+	}
+
+	data->pins_default = pinctrl_lookup_state(data->pinctrl, "default");
+	if (IS_ERR(data->pins_default)) {
+		dev_err(&pdev->dev, "Cannot find default pinctrl group!\n");
+		return PTR_ERR(data->pins_default);
+	}
+
 	spin_lock_init(&uart.port.lock);
 	uart.port.mapbase = regs->start;
 	uart.port.irq = irq->start;