ARM: u8540: Add Pinctrl Device Tree settings for uart0, uart2
authorGabriel Fernandez <gabriel.fernandez@st.com>
Wed, 12 Jun 2013 14:35:34 +0000 (16:35 +0200)
committerLinus Walleij <linus.walleij@stericsson.com>
Tue, 6 Aug 2013 21:48:50 +0000 (23:48 +0200)
This patch adds pinctrl device tree settings for uart0 and uart2
for ccu8540 board.

Signed-off-by: Gabriel Fernandez <gabriel.fernandez@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/boot/dts/ccu8540-pinctrl.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ccu8540.dts
arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi [new file with mode: 0644]
include/dt-bindings/pinctrl/nomadik.h [new file with mode: 0644]

diff --git a/arch/arm/boot/dts/ccu8540-pinctrl.dtsi b/arch/arm/boot/dts/ccu8540-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..644b189
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2012 ST-Ericsson
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include "ste-nomadik-pinctrl.dtsi"
+
+/ {
+       soc {
+               pinctrl {
+                       uart0 {
+                               uart0_default_mux: uart0_mux {
+                                       default_mux {
+                                               ste,function = "u0";
+                                               ste,pins = "u0_a_1";
+                                       };
+                               };
+
+                               uart0_default_mode: uart0_default {
+                                       default_cfg1 {
+                                               ste,pins = "GPIO0", "GPIO2";
+                                               ste,config = <&in_pu>;
+                                       };
+
+                                       default_cfg2 {
+                                               ste,pins = "GPIO1", "GPIO3";
+                                               ste,config = <&out_hi>;
+                                       };
+                               };
+
+                               uart0_sleep_mode: uart0_sleep {
+                                       sleep_cfg1 {
+                                               ste,pins = "GPIO0", "GPIO2";
+                                               ste,config = <&slpm_in_pu>;
+                                       };
+
+                                       sleep_cfg2 {
+                                               ste,pins = "GPIO1", "GPIO3";
+                                               ste,config = <&slpm_out_hi>;
+                                       };
+                               };
+                       };
+
+                       uart2 {
+                               uart2_default_mode: uart2_default {
+                                       default_mux {
+                                               ste,function = "u2";
+                                               ste,pins = "u2txrx_a_1";
+                                       };
+
+                                       default_cfg1 {
+                                               ste,pins = "GPIO120";
+                                               ste,config = <&in_pu>;
+                                       };
+
+                                       default_cfg2 {
+                                               ste,pins = "GPIO121";
+                                               ste,config = <&out_hi>;
+                                       };
+                               };
+
+                               uart2_sleep_mode: uart2_sleep {
+                                       sleep_cfg1 {
+                                               ste,pins = "GPIO120";
+                                               ste,config = <&slpm_in_pu>;
+                                       };
+
+                                       sleep_cfg2 {
+                                               ste,pins = "GPIO121";
+                                               ste,config = <&slpm_out_hi>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
index 48ff034..3065fe4 100644 (file)
@@ -11,6 +11,7 @@
 
 /dts-v1/;
 #include "dbx5x0.dtsi"
+#include "ccu8540-pinctrl.dtsi"
 
 / {
        model = "ST-Ericsson U8540 platform with Device Tree";
        };
 
        soc {
+               pinctrl {
+                       compatible = "stericsson,db8540-pinctrl";
+               };
+
                prcmu@80157000 {
                        reg = <0x80157000 0x2000>, <0x801b0000 0x8000>, <0x801b8000 0x3000>;
                        reg-names = "prcmu", "prcmu-tcpm", "prcmu-tcdm";
                };
 
                uart@80120000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
+                       pinctrl-1 = <&uart0_sleep_mode>;
                        status = "okay";
                };
 
@@ -35,6 +43,9 @@
                };
 
                uart@80007000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&uart2_default_mode>;
+                       pinctrl-1 = <&uart2_sleep_mode>;
                        status = "okay";
                };
        };
diff --git a/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi b/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..efddee9
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2012 ST-Ericsson
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+#include <dt-bindings/pinctrl/nomadik.h>
+
+/ {
+       in_nopull: in_nopull {
+               ste,input = <INPUT_NOPULL>;
+       };
+
+       in_pu: input_pull_up {
+               ste,input = <INPUT_PULLUP>;
+       };
+
+       in_pd: input_pull_down {
+               ste,input = <INPUT_PULLDOWN>;
+       };
+
+       out_hi: output_high {
+               ste,output = <OUTPUT_HIGH>;
+       };
+
+       out_lo: output_low {
+               ste,output = <OUTPUT_LOW>;
+       };
+
+       gpio_out_lo: gpio_output_low {
+               ste,gpio = <GPIOMODE_ENABLED>;
+               ste,output = <OUTPUT_LOW>;
+       };
+
+       slpm_in_pu: slpm_in_pu {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-input = <SLPM_INPUT_PULLUP>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+       };
+
+       slpm_in_wkup_pdis: slpm_in_wkup_pdis {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-input = <SLPM_DIR_INPUT>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+
+       slpm_out_lo: slpm_out_lo {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-output = <SLPM_OUTPUT_LOW>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+       };
+
+       slpm_out_hi: slpm_out_hi {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-output = <SLPM_OUTPUT_HIGH>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+       };
+
+       slpm_out_hi_wkup_pdis: slpm_out_hi_wkup_pdis {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-output = <SLPM_OUTPUT_HIGH>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+
+       slpm_out_wkup_pdis: slpm_out_wkup_pdis {
+               ste,sleep = <SLPM_ENABLED>;
+               ste,sleep-output = <SLPM_DIR_OUTPUT>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+
+       in_wkup_pdis: in_wkup_pdis {
+               ste,sleep-input = <SLPM_DIR_INPUT>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+
+       out_hi_wkup_pdis: out_hi_wkup_pdis {
+               ste,sleep-output = <SLPM_OUTPUT_HIGH>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+
+       out_wkup_pdis: out_wkup_pdis {
+               ste,sleep-output = <SLPM_DIR_OUTPUT>;
+               ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
+               ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
+       };
+};
diff --git a/include/dt-bindings/pinctrl/nomadik.h b/include/dt-bindings/pinctrl/nomadik.h
new file mode 100644 (file)
index 0000000..638fb32
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * nomadik.h
+ *
+ * Copyright (C) ST-Ericsson SA 2013
+ * Author: Gabriel Fernandez <gabriel.fernandez@st.com> for ST-Ericsson.
+ * License terms:  GNU General Public License (GPL), version 2
+ */
+
+#define INPUT_NOPULL           0
+#define INPUT_PULLUP           1
+#define INPUT_PULLDOWN         2
+
+#define OUTPUT_LOW             0
+#define OUTPUT_HIGH            1
+#define DIR_OUTPUT             2
+
+#define SLPM_DISABLED          0
+#define SLPM_ENABLED           1
+
+#define SLPM_INPUT_NOPULL      0
+#define SLPM_INPUT_PULLUP      1
+#define SLPM_INPUT_PULLDOWN    2
+#define SLPM_DIR_INPUT         3
+
+#define SLPM_OUTPUT_LOW                0
+#define SLPM_OUTPUT_HIGH       1
+#define SLPM_DIR_OUTPUT                2
+
+#define SLPM_WAKEUP_DISABLE    0
+#define SLPM_WAKEUP_ENABLE     1
+
+#define GPIOMODE_DISABLED      0
+#define GPIOMODE_ENABLED       1
+
+#define SLPM_PDIS_DISABLED     0
+#define SLPM_PDIS_ENABLED      1