Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-28 Thread Linus Walleij
On Wed, Sep 26, 2018 at 6:30 PM Craig  wrote:

> You seem to have missed the bindings, it might be an idea to drop and reapply 
> with the new ones I just sent off when they get a review.

Nah I just didn't coordinate things. It gets too messy sometimes, I will
apply the bindings separately I guess.

Yours,
Linus Walleij


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-28 Thread Linus Walleij
On Wed, Sep 26, 2018 at 6:30 PM Craig  wrote:

> You seem to have missed the bindings, it might be an idea to drop and reapply 
> with the new ones I just sent off when they get a review.

Nah I just didn't coordinate things. It gets too messy sometimes, I will
apply the bindings separately I guess.

Yours,
Linus Walleij


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-26 Thread Craig
Hey,
You seem to have missed the bindings, it might be an idea to drop and reapply 
with the new ones I just sent off when they get a review.

On 26 September 2018 07:57:41 BST, Linus Walleij  
wrote:
>On Tue, Sep 25, 2018 at 7:38 PM Craig Tatlor 
>wrote:
>
>> From: Neeraj Upadhyay 
>>
>> Add initial pinctrl driver to support pin configuration with
>> pinctrl framework for sdm660.
>> Based off CAF implementation.
>>
>> Signed-off-by: Neeraj Upadhyay 
>> Co-Developed-by: Venkatesh Yadav Abbarapu 
>> Signed-off-by: Venkatesh Yadav Abbarapu 
>> [craig: minor updates for upstreaming, updated tile handling]
>> Signed-off-by: Craig Tatlor 
>
>Co-Developed-by? That was innovative.
>
>Anyways, since there is also a signoff all is fine.
>
>Patch applied with Björn's ACK.
>
>Yours,
>Linus Walleij

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-26 Thread Craig
Hey,
You seem to have missed the bindings, it might be an idea to drop and reapply 
with the new ones I just sent off when they get a review.

On 26 September 2018 07:57:41 BST, Linus Walleij  
wrote:
>On Tue, Sep 25, 2018 at 7:38 PM Craig Tatlor 
>wrote:
>
>> From: Neeraj Upadhyay 
>>
>> Add initial pinctrl driver to support pin configuration with
>> pinctrl framework for sdm660.
>> Based off CAF implementation.
>>
>> Signed-off-by: Neeraj Upadhyay 
>> Co-Developed-by: Venkatesh Yadav Abbarapu 
>> Signed-off-by: Venkatesh Yadav Abbarapu 
>> [craig: minor updates for upstreaming, updated tile handling]
>> Signed-off-by: Craig Tatlor 
>
>Co-Developed-by? That was innovative.
>
>Anyways, since there is also a signoff all is fine.
>
>Patch applied with Björn's ACK.
>
>Yours,
>Linus Walleij

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-26 Thread Linus Walleij
On Tue, Sep 25, 2018 at 7:38 PM Craig Tatlor  wrote:

> From: Neeraj Upadhyay 
>
> Add initial pinctrl driver to support pin configuration with
> pinctrl framework for sdm660.
> Based off CAF implementation.
>
> Signed-off-by: Neeraj Upadhyay 
> Co-Developed-by: Venkatesh Yadav Abbarapu 
> Signed-off-by: Venkatesh Yadav Abbarapu 
> [craig: minor updates for upstreaming, updated tile handling]
> Signed-off-by: Craig Tatlor 

Co-Developed-by? That was innovative.

Anyways, since there is also a signoff all is fine.

Patch applied with Björn's ACK.

Yours,
Linus Walleij


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-26 Thread Linus Walleij
On Tue, Sep 25, 2018 at 7:38 PM Craig Tatlor  wrote:

> From: Neeraj Upadhyay 
>
> Add initial pinctrl driver to support pin configuration with
> pinctrl framework for sdm660.
> Based off CAF implementation.
>
> Signed-off-by: Neeraj Upadhyay 
> Co-Developed-by: Venkatesh Yadav Abbarapu 
> Signed-off-by: Venkatesh Yadav Abbarapu 
> [craig: minor updates for upstreaming, updated tile handling]
> Signed-off-by: Craig Tatlor 

Co-Developed-by? That was innovative.

Anyways, since there is also a signoff all is fine.

Patch applied with Björn's ACK.

Yours,
Linus Walleij


Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-25 Thread Bjorn Andersson
On Tue 25 Sep 10:37 PDT 2018, Craig Tatlor wrote:

> From: Neeraj Upadhyay 
> 
> Add initial pinctrl driver to support pin configuration with
> pinctrl framework for sdm660.
> Based off CAF implementation.
> 
> Signed-off-by: Neeraj Upadhyay 
> Co-Developed-by: Venkatesh Yadav Abbarapu 
> Signed-off-by: Venkatesh Yadav Abbarapu 
> [craig: minor updates for upstreaming, updated tile handling]
> Signed-off-by: Craig Tatlor 

Reviewed-by: Bjorn Andersson 

Regards,
Bjorn

> ---
>  drivers/pinctrl/qcom/Kconfig  |9 +
>  drivers/pinctrl/qcom/Makefile |1 +
>  drivers/pinctrl/qcom/pinctrl-sdm660.c | 1455 +
>  3 files changed, 1465 insertions(+)
>  create mode 100644 drivers/pinctrl/qcom/pinctrl-sdm660.c
> 
> Changes from V2:
> Sort everything
> Use tiles
> Add sdm630 compatible
> 
> diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig
> index c17bfe3a93ea..836e9f3eae4c 100644
> --- a/drivers/pinctrl/qcom/Kconfig
> +++ b/drivers/pinctrl/qcom/Kconfig
> @@ -155,6 +155,15 @@ config PINCTRL_QCOM_SSBI_PMIC
>   which are using SSBI for communication with SoC. Example PMIC's
>   devices are pm8058 and pm8921.
>  
> +config PINCTRL_SDM660
> +   tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
> +   depends on GPIOLIB && OF
> +   select PINCTRL_MSM
> +   help
> + This is the pinctrl, pinmux, pinconf and gpiolib driver for the
> + Qualcomm Technologies Inc TLMM block found on the Qualcomm
> + Technologies Inc SDM660 platform.
> +
>  config PINCTRL_SDM845
> tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
> depends on GPIOLIB && OF
> diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
> index 98b18b8cd2cc..344b4c6a6c6e 100644
> --- a/drivers/pinctrl/qcom/Makefile
> +++ b/drivers/pinctrl/qcom/Makefile
> @@ -20,4 +20,5 @@ obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o
>  obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o
>  obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
>  obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-mpp.o
> +obj-$(CONFIG_PINCTRL_SDM660)   += pinctrl-sdm660.o
>  obj-$(CONFIG_PINCTRL_SDM845) += pinctrl-sdm845.o
> diff --git a/drivers/pinctrl/qcom/pinctrl-sdm660.c 
> b/drivers/pinctrl/qcom/pinctrl-sdm660.c
> new file mode 100644
> index ..6838b38555a1
> --- /dev/null
> +++ b/drivers/pinctrl/qcom/pinctrl-sdm660.c
> @@ -0,0 +1,1455 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2018, Craig Tatlor.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "pinctrl-msm.h"
> +
> +static const char * const sdm660_tiles[] = {
> + "north",
> + "center",
> + "south"
> +};
> +
> +enum {
> + NORTH,
> + CENTER,
> + SOUTH
> +};
> +
> +#define REG_SIZE 0x1000
> +
> +#define FUNCTION(fname)  \
> + [msm_mux_##fname] = {   \
> + .name = #fname, \
> + .groups = fname##_groups,   \
> + .ngroups = ARRAY_SIZE(fname##_groups),  \
> + }
> +
> +
> +#define PINGROUP(id, base, f1, f2, f3, f4, f5, f6, f7, f8, f9)   \
> + {   \
> + .name = "gpio" #id, \
> + .pins = gpio##id##_pins,\
> + .npins = (unsigned)ARRAY_SIZE(gpio##id##_pins), \
> + .funcs = (int[]){   \
> + msm_mux_gpio, /* gpio mode */   \
> + msm_mux_##f1,   \
> + msm_mux_##f2,   \
> + msm_mux_##f3,   \
> + msm_mux_##f4,   \
> + msm_mux_##f5,   \
> + msm_mux_##f6,   \
> + msm_mux_##f7,   \
> + msm_mux_##f8,   \
> + msm_mux_##f9\
> + },  \
> + .nfuncs = 10,   \
> + .ctl_reg = base + REG_SIZE * id,\
> + .io_reg = base + 0x4 + REG_SIZE * id,   \
> + .intr_cfg_reg = base + 0x8 + REG_SIZE * id, \
> + .intr_status_reg = base + 0xc + REG_SIZE * id,  \
> + .intr_target_reg = base + 0x8 + REG_SIZE * id,  \
> + .mux_bit = 2,   \
> + .pull_bit = 0,  \
> + .drv_bit = 6,   \
> + .oe_bit = 9,\
> + .in_bit = 0,\
> + .out_bit = 1,   

Re: [PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-25 Thread Bjorn Andersson
On Tue 25 Sep 10:37 PDT 2018, Craig Tatlor wrote:

> From: Neeraj Upadhyay 
> 
> Add initial pinctrl driver to support pin configuration with
> pinctrl framework for sdm660.
> Based off CAF implementation.
> 
> Signed-off-by: Neeraj Upadhyay 
> Co-Developed-by: Venkatesh Yadav Abbarapu 
> Signed-off-by: Venkatesh Yadav Abbarapu 
> [craig: minor updates for upstreaming, updated tile handling]
> Signed-off-by: Craig Tatlor 

Reviewed-by: Bjorn Andersson 

Regards,
Bjorn

> ---
>  drivers/pinctrl/qcom/Kconfig  |9 +
>  drivers/pinctrl/qcom/Makefile |1 +
>  drivers/pinctrl/qcom/pinctrl-sdm660.c | 1455 +
>  3 files changed, 1465 insertions(+)
>  create mode 100644 drivers/pinctrl/qcom/pinctrl-sdm660.c
> 
> Changes from V2:
> Sort everything
> Use tiles
> Add sdm630 compatible
> 
> diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig
> index c17bfe3a93ea..836e9f3eae4c 100644
> --- a/drivers/pinctrl/qcom/Kconfig
> +++ b/drivers/pinctrl/qcom/Kconfig
> @@ -155,6 +155,15 @@ config PINCTRL_QCOM_SSBI_PMIC
>   which are using SSBI for communication with SoC. Example PMIC's
>   devices are pm8058 and pm8921.
>  
> +config PINCTRL_SDM660
> +   tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
> +   depends on GPIOLIB && OF
> +   select PINCTRL_MSM
> +   help
> + This is the pinctrl, pinmux, pinconf and gpiolib driver for the
> + Qualcomm Technologies Inc TLMM block found on the Qualcomm
> + Technologies Inc SDM660 platform.
> +
>  config PINCTRL_SDM845
> tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
> depends on GPIOLIB && OF
> diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
> index 98b18b8cd2cc..344b4c6a6c6e 100644
> --- a/drivers/pinctrl/qcom/Makefile
> +++ b/drivers/pinctrl/qcom/Makefile
> @@ -20,4 +20,5 @@ obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o
>  obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o
>  obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
>  obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-mpp.o
> +obj-$(CONFIG_PINCTRL_SDM660)   += pinctrl-sdm660.o
>  obj-$(CONFIG_PINCTRL_SDM845) += pinctrl-sdm845.o
> diff --git a/drivers/pinctrl/qcom/pinctrl-sdm660.c 
> b/drivers/pinctrl/qcom/pinctrl-sdm660.c
> new file mode 100644
> index ..6838b38555a1
> --- /dev/null
> +++ b/drivers/pinctrl/qcom/pinctrl-sdm660.c
> @@ -0,0 +1,1455 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2016, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2018, Craig Tatlor.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "pinctrl-msm.h"
> +
> +static const char * const sdm660_tiles[] = {
> + "north",
> + "center",
> + "south"
> +};
> +
> +enum {
> + NORTH,
> + CENTER,
> + SOUTH
> +};
> +
> +#define REG_SIZE 0x1000
> +
> +#define FUNCTION(fname)  \
> + [msm_mux_##fname] = {   \
> + .name = #fname, \
> + .groups = fname##_groups,   \
> + .ngroups = ARRAY_SIZE(fname##_groups),  \
> + }
> +
> +
> +#define PINGROUP(id, base, f1, f2, f3, f4, f5, f6, f7, f8, f9)   \
> + {   \
> + .name = "gpio" #id, \
> + .pins = gpio##id##_pins,\
> + .npins = (unsigned)ARRAY_SIZE(gpio##id##_pins), \
> + .funcs = (int[]){   \
> + msm_mux_gpio, /* gpio mode */   \
> + msm_mux_##f1,   \
> + msm_mux_##f2,   \
> + msm_mux_##f3,   \
> + msm_mux_##f4,   \
> + msm_mux_##f5,   \
> + msm_mux_##f6,   \
> + msm_mux_##f7,   \
> + msm_mux_##f8,   \
> + msm_mux_##f9\
> + },  \
> + .nfuncs = 10,   \
> + .ctl_reg = base + REG_SIZE * id,\
> + .io_reg = base + 0x4 + REG_SIZE * id,   \
> + .intr_cfg_reg = base + 0x8 + REG_SIZE * id, \
> + .intr_status_reg = base + 0xc + REG_SIZE * id,  \
> + .intr_target_reg = base + 0x8 + REG_SIZE * id,  \
> + .mux_bit = 2,   \
> + .pull_bit = 0,  \
> + .drv_bit = 6,   \
> + .oe_bit = 9,\
> + .in_bit = 0,\
> + .out_bit = 1,   

[PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-25 Thread Craig Tatlor
From: Neeraj Upadhyay 

Add initial pinctrl driver to support pin configuration with
pinctrl framework for sdm660.
Based off CAF implementation.

Signed-off-by: Neeraj Upadhyay 
Co-Developed-by: Venkatesh Yadav Abbarapu 
Signed-off-by: Venkatesh Yadav Abbarapu 
[craig: minor updates for upstreaming, updated tile handling]
Signed-off-by: Craig Tatlor 
---
 drivers/pinctrl/qcom/Kconfig  |9 +
 drivers/pinctrl/qcom/Makefile |1 +
 drivers/pinctrl/qcom/pinctrl-sdm660.c | 1455 +
 3 files changed, 1465 insertions(+)
 create mode 100644 drivers/pinctrl/qcom/pinctrl-sdm660.c

Changes from V2:
Sort everything
Use tiles
Add sdm630 compatible

diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig
index c17bfe3a93ea..836e9f3eae4c 100644
--- a/drivers/pinctrl/qcom/Kconfig
+++ b/drivers/pinctrl/qcom/Kconfig
@@ -155,6 +155,15 @@ config PINCTRL_QCOM_SSBI_PMIC
  which are using SSBI for communication with SoC. Example PMIC's
  devices are pm8058 and pm8921.
 
+config PINCTRL_SDM660
+   tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
+   depends on GPIOLIB && OF
+   select PINCTRL_MSM
+   help
+ This is the pinctrl, pinmux, pinconf and gpiolib driver for the
+ Qualcomm Technologies Inc TLMM block found on the Qualcomm
+ Technologies Inc SDM660 platform.
+
 config PINCTRL_SDM845
tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
depends on GPIOLIB && OF
diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
index 98b18b8cd2cc..344b4c6a6c6e 100644
--- a/drivers/pinctrl/qcom/Makefile
+++ b/drivers/pinctrl/qcom/Makefile
@@ -20,4 +20,5 @@ obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o
 obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o
 obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
 obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-mpp.o
+obj-$(CONFIG_PINCTRL_SDM660)   += pinctrl-sdm660.o
 obj-$(CONFIG_PINCTRL_SDM845) += pinctrl-sdm845.o
diff --git a/drivers/pinctrl/qcom/pinctrl-sdm660.c 
b/drivers/pinctrl/qcom/pinctrl-sdm660.c
new file mode 100644
index ..6838b38555a1
--- /dev/null
+++ b/drivers/pinctrl/qcom/pinctrl-sdm660.c
@@ -0,0 +1,1455 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018, Craig Tatlor.
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#include "pinctrl-msm.h"
+
+static const char * const sdm660_tiles[] = {
+   "north",
+   "center",
+   "south"
+};
+
+enum {
+   NORTH,
+   CENTER,
+   SOUTH
+};
+
+#define REG_SIZE 0x1000
+
+#define FUNCTION(fname)\
+   [msm_mux_##fname] = {   \
+   .name = #fname, \
+   .groups = fname##_groups,   \
+   .ngroups = ARRAY_SIZE(fname##_groups),  \
+   }
+
+
+#define PINGROUP(id, base, f1, f2, f3, f4, f5, f6, f7, f8, f9) \
+   {   \
+   .name = "gpio" #id, \
+   .pins = gpio##id##_pins,\
+   .npins = (unsigned)ARRAY_SIZE(gpio##id##_pins), \
+   .funcs = (int[]){   \
+   msm_mux_gpio, /* gpio mode */   \
+   msm_mux_##f1,   \
+   msm_mux_##f2,   \
+   msm_mux_##f3,   \
+   msm_mux_##f4,   \
+   msm_mux_##f5,   \
+   msm_mux_##f6,   \
+   msm_mux_##f7,   \
+   msm_mux_##f8,   \
+   msm_mux_##f9\
+   },  \
+   .nfuncs = 10,   \
+   .ctl_reg = base + REG_SIZE * id,\
+   .io_reg = base + 0x4 + REG_SIZE * id,   \
+   .intr_cfg_reg = base + 0x8 + REG_SIZE * id, \
+   .intr_status_reg = base + 0xc + REG_SIZE * id,  \
+   .intr_target_reg = base + 0x8 + REG_SIZE * id,  \
+   .mux_bit = 2,   \
+   .pull_bit = 0,  \
+   .drv_bit = 6,   \
+   .oe_bit = 9,\
+   .in_bit = 0,\
+   .out_bit = 1,   \
+   .intr_enable_bit = 0,   \
+   .intr_status_bit = 0,   \
+   .intr_target_bit = 5,   \
+   .intr_target_kpss_val = 3,  \
+   .intr_raw_status_bit = 4,   \
+   

[PATCH v3 1/2] pinctrl: qcom: Add sdm660 pinctrl driver

2018-09-25 Thread Craig Tatlor
From: Neeraj Upadhyay 

Add initial pinctrl driver to support pin configuration with
pinctrl framework for sdm660.
Based off CAF implementation.

Signed-off-by: Neeraj Upadhyay 
Co-Developed-by: Venkatesh Yadav Abbarapu 
Signed-off-by: Venkatesh Yadav Abbarapu 
[craig: minor updates for upstreaming, updated tile handling]
Signed-off-by: Craig Tatlor 
---
 drivers/pinctrl/qcom/Kconfig  |9 +
 drivers/pinctrl/qcom/Makefile |1 +
 drivers/pinctrl/qcom/pinctrl-sdm660.c | 1455 +
 3 files changed, 1465 insertions(+)
 create mode 100644 drivers/pinctrl/qcom/pinctrl-sdm660.c

Changes from V2:
Sort everything
Use tiles
Add sdm630 compatible

diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig
index c17bfe3a93ea..836e9f3eae4c 100644
--- a/drivers/pinctrl/qcom/Kconfig
+++ b/drivers/pinctrl/qcom/Kconfig
@@ -155,6 +155,15 @@ config PINCTRL_QCOM_SSBI_PMIC
  which are using SSBI for communication with SoC. Example PMIC's
  devices are pm8058 and pm8921.
 
+config PINCTRL_SDM660
+   tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
+   depends on GPIOLIB && OF
+   select PINCTRL_MSM
+   help
+ This is the pinctrl, pinmux, pinconf and gpiolib driver for the
+ Qualcomm Technologies Inc TLMM block found on the Qualcomm
+ Technologies Inc SDM660 platform.
+
 config PINCTRL_SDM845
tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
depends on GPIOLIB && OF
diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
index 98b18b8cd2cc..344b4c6a6c6e 100644
--- a/drivers/pinctrl/qcom/Makefile
+++ b/drivers/pinctrl/qcom/Makefile
@@ -20,4 +20,5 @@ obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o
 obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o
 obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
 obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-mpp.o
+obj-$(CONFIG_PINCTRL_SDM660)   += pinctrl-sdm660.o
 obj-$(CONFIG_PINCTRL_SDM845) += pinctrl-sdm845.o
diff --git a/drivers/pinctrl/qcom/pinctrl-sdm660.c 
b/drivers/pinctrl/qcom/pinctrl-sdm660.c
new file mode 100644
index ..6838b38555a1
--- /dev/null
+++ b/drivers/pinctrl/qcom/pinctrl-sdm660.c
@@ -0,0 +1,1455 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018, Craig Tatlor.
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#include "pinctrl-msm.h"
+
+static const char * const sdm660_tiles[] = {
+   "north",
+   "center",
+   "south"
+};
+
+enum {
+   NORTH,
+   CENTER,
+   SOUTH
+};
+
+#define REG_SIZE 0x1000
+
+#define FUNCTION(fname)\
+   [msm_mux_##fname] = {   \
+   .name = #fname, \
+   .groups = fname##_groups,   \
+   .ngroups = ARRAY_SIZE(fname##_groups),  \
+   }
+
+
+#define PINGROUP(id, base, f1, f2, f3, f4, f5, f6, f7, f8, f9) \
+   {   \
+   .name = "gpio" #id, \
+   .pins = gpio##id##_pins,\
+   .npins = (unsigned)ARRAY_SIZE(gpio##id##_pins), \
+   .funcs = (int[]){   \
+   msm_mux_gpio, /* gpio mode */   \
+   msm_mux_##f1,   \
+   msm_mux_##f2,   \
+   msm_mux_##f3,   \
+   msm_mux_##f4,   \
+   msm_mux_##f5,   \
+   msm_mux_##f6,   \
+   msm_mux_##f7,   \
+   msm_mux_##f8,   \
+   msm_mux_##f9\
+   },  \
+   .nfuncs = 10,   \
+   .ctl_reg = base + REG_SIZE * id,\
+   .io_reg = base + 0x4 + REG_SIZE * id,   \
+   .intr_cfg_reg = base + 0x8 + REG_SIZE * id, \
+   .intr_status_reg = base + 0xc + REG_SIZE * id,  \
+   .intr_target_reg = base + 0x8 + REG_SIZE * id,  \
+   .mux_bit = 2,   \
+   .pull_bit = 0,  \
+   .drv_bit = 6,   \
+   .oe_bit = 9,\
+   .in_bit = 0,\
+   .out_bit = 1,   \
+   .intr_enable_bit = 0,   \
+   .intr_status_bit = 0,   \
+   .intr_target_bit = 5,   \
+   .intr_target_kpss_val = 3,  \
+   .intr_raw_status_bit = 4,   \
+