Re: [PATCH 6/6] pinctrl: Add pinctrl-s3c64xx driver

2013-04-09 Thread Linus Walleij
On Mon, Mar 18, 2013 at 10:31 PM, Tomasz Figa  wrote:

> This patch adds pinctrl-s3c64xx driver which implements pin control
> interface for Samsung S3C64xx SoCs.
>
> Signed-off-by: Tomasz Figa 

Yes it's long over due that we fix up the S3C family, thanks a lot
for doing this Tomasz, and sorry for taking so long to review the
patches.

Patch applied!

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 6/6] pinctrl: Add pinctrl-s3c64xx driver

2013-03-18 Thread Tomasz Figa
This patch adds pinctrl-s3c64xx driver which implements pin control
interface for Samsung S3C64xx SoCs.

Signed-off-by: Tomasz Figa 
---
 .../bindings/pinctrl/samsung-pinctrl.txt   |   3 +
 drivers/pinctrl/Kconfig|   5 +
 drivers/pinctrl/Makefile   |   1 +
 drivers/pinctrl/pinctrl-s3c64xx.c  | 817 +
 drivers/pinctrl/pinctrl-samsung.c  |   4 +
 drivers/pinctrl/pinctrl-samsung.h  |   5 +
 6 files changed, 835 insertions(+)
 create mode 100644 drivers/pinctrl/pinctrl-s3c64xx.c

diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt 
b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 4598a47..c70fca1 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -7,6 +7,7 @@ on-chip controllers onto these pads.
 
 Required Properties:
 - compatible: should be one of the following.
+  - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
   - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
   - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
   - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
@@ -105,6 +106,8 @@ B. External Wakeup Interrupts: For supporting external 
wakeup interrupts, a
 
- compatible: identifies the type of the external wakeup interrupt 
controller
  The possible values are:
+ - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
+   found on Samsung S3C64xx SoCs,
  - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
found on Samsung Exynos4210 SoC.
- interrupt-parent: phandle of the interrupt parent to which the external
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 5a690ce..b1cc5dc 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -227,6 +227,11 @@ config PINCTRL_EXYNOS5440
select PINMUX
select PINCONF
 
+config PINCTRL_S3C64XX
+   bool "Samsung S3C64XX SoC pinctrl driver"
+   depends on ARCH_S3C64XX
+   select PINCTRL_SAMSUNG
+
 source "drivers/pinctrl/mvebu/Kconfig"
 source "drivers/pinctrl/sh-pfc/Kconfig"
 source "drivers/pinctrl/spear/Kconfig"
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
index f82cc5b..21d34c2 100644
--- a/drivers/pinctrl/Makefile
+++ b/drivers/pinctrl/Makefile
@@ -45,6 +45,7 @@ obj-$(CONFIG_PINCTRL_COH901)  += pinctrl-coh901.o
 obj-$(CONFIG_PINCTRL_SAMSUNG)  += pinctrl-samsung.o
 obj-$(CONFIG_PINCTRL_EXYNOS)   += pinctrl-exynos.o
 obj-$(CONFIG_PINCTRL_EXYNOS5440)   += pinctrl-exynos5440.o
+obj-$(CONFIG_PINCTRL_S3C64XX)  += pinctrl-s3c64xx.o
 obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o
 obj-$(CONFIG_PINCTRL_LANTIQ)   += pinctrl-lantiq.o
 
diff --git a/drivers/pinctrl/pinctrl-s3c64xx.c 
b/drivers/pinctrl/pinctrl-s3c64xx.c
new file mode 100644
index 000..b5d1c4a
--- /dev/null
+++ b/drivers/pinctrl/pinctrl-s3c64xx.c
@@ -0,0 +1,817 @@
+/*
+ * S3C64xx specific support for pinctrl-samsung driver.
+ *
+ * Copyright (c) 2013 Tomasz Figa 
+ *
+ * Based on pinctrl-exynos.c, please see the file for original copyrights.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This file contains the Samsung S3C64xx specific information required by the
+ * the Samsung pinctrl/gpiolib driver. It also includes the implementation of
+ * external gpio and wakeup interrupt support.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+
+#include "pinctrl-samsung.h"
+
+#define NUM_EINT0  28
+#define NUM_EINT0_IRQ  4
+#define EINT_MAX_PER_REG   16
+#define EINT_MAX_PER_GROUP 16
+
+/* External GPIO and wakeup interrupt related definitions */
+#define SVC_GROUP_SHIFT4
+#define SVC_GROUP_MASK 0xf
+#define SVC_NUM_MASK   0xf
+#define SVC_GROUP(x)   ((x >> SVC_GROUP_SHIFT) & \
+   SVC_GROUP_MASK)
+
+#define EINT12CON_REG  0x200
+#define EINT12MASK_REG 0x240
+#define EINT12PEND_REG 0x260
+
+#define EINT_OFFS(i)   ((i) % (2 * EINT_MAX_PER_GROUP))
+#define EINT_GROUP(i)  ((i) / EINT_MAX_PER_GROUP)
+#define EINT_REG(g)(4 * ((g) / 2))
+
+#define EINTCON_REG(i) (EINT12CON_REG + EINT_REG(EINT_GROUP(i)))
+#define EINTMASK_REG(i)(EINT12MASK_REG + 
EINT_REG(EINT_GROUP(i)))
+#define EINTPEND_REG(i)(EINT12PEND_REG + 
EINT_REG(EINT_GROUP(i)))
+
+#define SERVICE_REG0x284
+#define SERVICEPEND_REG0x288
+
+#defin