Re: [U-Boot] [PATCH v5 12/21] rockchip: rk3036: Add pinctrl driver

2015-11-15 Thread hl

Hi Ariel,

On 14/11/15 07:54, Ariel D'Alessandro wrote:

Hi Lin,

El 10/11/15 a las 07:24, Lin Huang escribió:

Add a driver which support pin multiplexing setup for rk3036

Signed-off-by: Lin Huang 
Acked-by: Simon Glass 
---
Changes in v1:
- clean copyright announcement
Changes in v2: None
Changes in v3:
- fix some coding style error
Changes in v4: None
Changes in v5: None

  drivers/pinctrl/Kconfig   |  18 ++
  drivers/pinctrl/rockchip/Makefile |   1 +
  drivers/pinctrl/rockchip/pinctrl_rk3036.c | 276 ++
  3 files changed, 295 insertions(+)
  create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3036.c

diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 3b6e3b7..6495313 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -114,6 +114,24 @@ config ROCKCHIP_PINCTRL
  definitions and pin control functions for each available multiplex
  function.
  
+config ROCKCHIP_3036_PINCTRL

+   bool "Rockchip rk3036 pin control driver"
+   depends on DM
+   help
+ Support pin multiplexing control on Rockchip rk3036 SoCs. The driver 
is
+ controlled by a device tree node which contains both the GPIO
+ definitions and pin control functions for each available multiplex
+ function.
+
+config ROCKCHIP_PINCTRL

You're duplicating ROCKCHIP_PINCTRL entry here.

Thanks, will fix next version.



+   bool "Rockchip pin control driver"
+   depends on DM
+   help
+ Support pin multiplexing control on Rockchip SoCs. The driver is
+ controlled by a device tree node which contains both the GPIO
+ definitions and pin control functions for each available multiplex
+ function.
+
  config PINCTRL_SANDBOX
bool "Sandbox pinctrl driver"
depends on SANDBOX

[...]



--
Lin Huang


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v5 12/21] rockchip: rk3036: Add pinctrl driver

2015-11-13 Thread Ariel D'Alessandro
Hi Lin,

El 10/11/15 a las 07:24, Lin Huang escribió:
> Add a driver which support pin multiplexing setup for rk3036
> 
> Signed-off-by: Lin Huang 
> Acked-by: Simon Glass 
> ---
> Changes in v1:
> - clean copyright announcement
> Changes in v2: None
> Changes in v3:
> - fix some coding style error
> Changes in v4: None
> Changes in v5: None
> 
>  drivers/pinctrl/Kconfig   |  18 ++
>  drivers/pinctrl/rockchip/Makefile |   1 +
>  drivers/pinctrl/rockchip/pinctrl_rk3036.c | 276 
> ++
>  3 files changed, 295 insertions(+)
>  create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3036.c
> 
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index 3b6e3b7..6495313 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -114,6 +114,24 @@ config ROCKCHIP_PINCTRL
> definitions and pin control functions for each available multiplex
> function.
>  
> +config ROCKCHIP_3036_PINCTRL
> + bool "Rockchip rk3036 pin control driver"
> + depends on DM
> + help
> +   Support pin multiplexing control on Rockchip rk3036 SoCs. The driver 
> is
> +   controlled by a device tree node which contains both the GPIO
> +   definitions and pin control functions for each available multiplex
> +   function.
> +
> +config ROCKCHIP_PINCTRL

You're duplicating ROCKCHIP_PINCTRL entry here.

> + bool "Rockchip pin control driver"
> + depends on DM
> + help
> +   Support pin multiplexing control on Rockchip SoCs. The driver is
> +   controlled by a device tree node which contains both the GPIO
> +   definitions and pin control functions for each available multiplex
> +   function.
> +
>  config PINCTRL_SANDBOX
>   bool "Sandbox pinctrl driver"
>   depends on SANDBOX

[...]

-- 
Ariel D'Alessandro, VanguardiaSur
www.vanguardiasur.com.ar
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v5 12/21] rockchip: rk3036: Add pinctrl driver

2015-11-10 Thread Lin Huang
Add a driver which support pin multiplexing setup for rk3036

Signed-off-by: Lin Huang 
Acked-by: Simon Glass 
---
Changes in v1:
- clean copyright announcement
Changes in v2: None
Changes in v3:
- fix some coding style error
Changes in v4: None
Changes in v5: None

 drivers/pinctrl/Kconfig   |  18 ++
 drivers/pinctrl/rockchip/Makefile |   1 +
 drivers/pinctrl/rockchip/pinctrl_rk3036.c | 276 ++
 3 files changed, 295 insertions(+)
 create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3036.c

diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 3b6e3b7..6495313 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -114,6 +114,24 @@ config ROCKCHIP_PINCTRL
  definitions and pin control functions for each available multiplex
  function.
 
+config ROCKCHIP_3036_PINCTRL
+   bool "Rockchip rk3036 pin control driver"
+   depends on DM
+   help
+ Support pin multiplexing control on Rockchip rk3036 SoCs. The driver 
is
+ controlled by a device tree node which contains both the GPIO
+ definitions and pin control functions for each available multiplex
+ function.
+
+config ROCKCHIP_PINCTRL
+   bool "Rockchip pin control driver"
+   depends on DM
+   help
+ Support pin multiplexing control on Rockchip SoCs. The driver is
+ controlled by a device tree node which contains both the GPIO
+ definitions and pin control functions for each available multiplex
+ function.
+
 config PINCTRL_SANDBOX
bool "Sandbox pinctrl driver"
depends on SANDBOX
diff --git a/drivers/pinctrl/rockchip/Makefile 
b/drivers/pinctrl/rockchip/Makefile
index 251bace..6fa7d00 100644
--- a/drivers/pinctrl/rockchip/Makefile
+++ b/drivers/pinctrl/rockchip/Makefile
@@ -6,3 +6,4 @@
 #
 
 obj-$(CONFIG_ROCKCHIP_PINCTRL) += pinctrl_rk3288.o
+obj-$(CONFIG_ROCKCHIP_3036_PINCTRL) += pinctrl_rk3036.o
diff --git a/drivers/pinctrl/rockchip/pinctrl_rk3036.c 
b/drivers/pinctrl/rockchip/pinctrl_rk3036.c
new file mode 100644
index 000..581b096
--- /dev/null
+++ b/drivers/pinctrl/rockchip/pinctrl_rk3036.c
@@ -0,0 +1,276 @@
+/*
+ * Pinctrl driver for Rockchip 3036 SoCs
+ * (C) Copyright 2015 Rockchip Electronics Co., Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct rk3036_pinctrl_priv {
+   struct rk3036_grf *grf;
+};
+
+static void pinctrl_rk3036_pwm_config(struct rk3036_grf *grf, int pwm_id)
+{
+   switch (pwm_id) {
+   case PERIPH_ID_PWM0:
+   rk_clrsetreg(&grf->gpio0d_iomux, GPIO0D2_MASK << GPIO0D2_SHIFT,
+GPIO0D2_PWM0 << GPIO0D2_SHIFT);
+   break;
+   case PERIPH_ID_PWM1:
+   rk_clrsetreg(&grf->gpio0a_iomux, GPIO0A0_MASK << GPIO0A0_SHIFT,
+GPIO0A0_PWM1 << GPIO0A0_SHIFT);
+   break;
+   case PERIPH_ID_PWM2:
+   rk_clrsetreg(&grf->gpio0a_iomux, GPIO0A1_MASK << GPIO0A1_SHIFT,
+GPIO0A1_PWM2 << GPIO0A1_SHIFT);
+   break;
+   case PERIPH_ID_PWM3:
+   rk_clrsetreg(&grf->gpio0a_iomux, GPIO0D3_MASK << GPIO0D3_SHIFT,
+GPIO0D3_PWM3 << GPIO0D3_SHIFT);
+   break;
+   default:
+   debug("pwm id = %d iomux error!\n", pwm_id);
+   break;
+   }
+}
+
+static void pinctrl_rk3036_i2c_config(struct rk3036_grf *grf, int i2c_id)
+{
+   switch (i2c_id) {
+   case PERIPH_ID_I2C0:
+   rk_clrsetreg(&grf->gpio0a_iomux,
+GPIO0A1_MASK << GPIO0A1_SHIFT |
+GPIO0A0_MASK << GPIO0A0_SHIFT,
+GPIO0A1_I2C0_SDA << GPIO0A1_SHIFT |
+GPIO0A0_I2C0_SCL << GPIO0A0_SHIFT);
+
+   break;
+   case PERIPH_ID_I2C1:
+   rk_clrsetreg(&grf->gpio0a_iomux,
+GPIO0A3_MASK << GPIO0A3_SHIFT |
+GPIO0A2_MASK << GPIO0A2_SHIFT,
+GPIO0A3_I2C1_SDA << GPIO0A3_SHIFT |
+GPIO0A2_I2C1_SCL << GPIO0A2_SHIFT);
+   break;
+   case PERIPH_ID_I2C2:
+   rk_clrsetreg(&grf->gpio2c_iomux,
+GPIO2C5_MASK << GPIO2C5_SHIFT |
+GPIO2C4_MASK << GPIO2C4_SHIFT,
+GPIO2C5_I2C2_SCL << GPIO2C5_SHIFT |
+GPIO2C4_I2C2_SDA << GPIO2C4_SHIFT);
+
+   break;
+   }
+}
+
+static void pinctrl_rk3036_spi_config(struct rk3036_grf *grf, int cs)
+{
+   switch (cs) {
+   case 0:
+   rk_clrsetreg(&grf->gpio1d_iomux,
+GPIO1D6_MASK << GPIO1D6_SHIFT,
+GPIO1D6_SPI_CSN0