Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-12 Thread Arnd Bergmann
On Tuesday, July 12, 2016 3:14:47 PM CEST Wan Zongshun wrote:
> On 2016年07月12日 12:30, Wan Zongshun wrote:
> >
> >
> > On 2016年07月12日 00:04, Arnd Bergmann wrote:
> >> On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> >>> +ifeq ($(CONFIG_SOC_NUC970),)
> >>>   obj-y  := irq.o time.o mfp.o gpio.o clock.o
> >>>   obj-y  += clksel.o dev.o cpu.o
> >>> +endif
> >>>   # W90X900 CPU support files
> >>
> >> When mfp.o is disabled like this, I get a link error in two drivers
> >> using the exported interface:
> >>
> >> ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
> >> ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko]
> >> undefined!
> >
> > Why remove mfp modules? this multifunction pin driver should be used for
> > those two drivers, if no mfp_set_groupX, I don't think driver can work.
> >
> > Now mfp has standard driver subsystem?
> >
> >>
> >> Any idea for a better migration strategy?
> 
> Arnd, If you still think the mfp should be removed, we can send a series 
> patches to instead of using mfp interface quickly, and do mfp set in 
> local driver. Do you think it is ok?

I don't think setting it locally in the driver is a good idea.

In the long run, this should go through the pinctrl framework, but
there is no need to implement that right away. Until then, I think
using the existing mfp.o code is fine, it will just need to be
adapted slightly to understand the DT based device names.

Arnd


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-12 Thread Arnd Bergmann
On Tuesday, July 12, 2016 3:14:47 PM CEST Wan Zongshun wrote:
> On 2016年07月12日 12:30, Wan Zongshun wrote:
> >
> >
> > On 2016年07月12日 00:04, Arnd Bergmann wrote:
> >> On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> >>> +ifeq ($(CONFIG_SOC_NUC970),)
> >>>   obj-y  := irq.o time.o mfp.o gpio.o clock.o
> >>>   obj-y  += clksel.o dev.o cpu.o
> >>> +endif
> >>>   # W90X900 CPU support files
> >>
> >> When mfp.o is disabled like this, I get a link error in two drivers
> >> using the exported interface:
> >>
> >> ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
> >> ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko]
> >> undefined!
> >
> > Why remove mfp modules? this multifunction pin driver should be used for
> > those two drivers, if no mfp_set_groupX, I don't think driver can work.
> >
> > Now mfp has standard driver subsystem?
> >
> >>
> >> Any idea for a better migration strategy?
> 
> Arnd, If you still think the mfp should be removed, we can send a series 
> patches to instead of using mfp interface quickly, and do mfp set in 
> local driver. Do you think it is ok?

I don't think setting it locally in the driver is a good idea.

In the long run, this should go through the pinctrl framework, but
there is no need to implement that right away. Until then, I think
using the existing mfp.o code is fine, it will just need to be
adapted slightly to understand the DT based device names.

Arnd


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-12 Thread Wan Zongshun



On 2016年07月12日 12:30, Wan Zongshun wrote:



On 2016年07月12日 00:04, Arnd Bergmann wrote:

On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:

+ifeq ($(CONFIG_SOC_NUC970),)
  obj-y  := irq.o time.o mfp.o gpio.o clock.o
  obj-y  += clksel.o dev.o cpu.o
+endif
  # W90X900 CPU support files


When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko]
undefined!


Why remove mfp modules? this multifunction pin driver should be used for
those two drivers, if no mfp_set_groupX, I don't think driver can work.

Now mfp has standard driver subsystem?



Any idea for a better migration strategy?


Arnd, If you still think the mfp should be removed, we can send a series 
patches to instead of using mfp interface quickly, and do mfp set in 
local driver. Do you think it is ok?




Arnd




___
linux-arm-kernel mailing list
linux-arm-ker...@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-12 Thread Wan Zongshun



On 2016年07月12日 12:30, Wan Zongshun wrote:



On 2016年07月12日 00:04, Arnd Bergmann wrote:

On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:

+ifeq ($(CONFIG_SOC_NUC970),)
  obj-y  := irq.o time.o mfp.o gpio.o clock.o
  obj-y  += clksel.o dev.o cpu.o
+endif
  # W90X900 CPU support files


When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko]
undefined!


Why remove mfp modules? this multifunction pin driver should be used for
those two drivers, if no mfp_set_groupX, I don't think driver can work.

Now mfp has standard driver subsystem?



Any idea for a better migration strategy?


Arnd, If you still think the mfp should be removed, we can send a series 
patches to instead of using mfp interface quickly, and do mfp set in 
local driver. Do you think it is ok?




Arnd




___
linux-arm-kernel mailing list
linux-arm-ker...@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-11 Thread Wan Zongshun



On 2016年07月12日 00:04, Arnd Bergmann wrote:

On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:

+ifeq ($(CONFIG_SOC_NUC970),)
  obj-y  := irq.o time.o mfp.o gpio.o clock.o
  obj-y  += clksel.o dev.o cpu.o
+endif
  # W90X900 CPU support files


When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko] undefined!


Why remove mfp modules? this multifunction pin driver should be used for 
those two drivers, if no mfp_set_groupX, I don't think driver can work.


Now mfp has standard driver subsystem?



Any idea for a better migration strategy?

Arnd




Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-11 Thread Wan Zongshun



On 2016年07月12日 00:04, Arnd Bergmann wrote:

On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:

+ifeq ($(CONFIG_SOC_NUC970),)
  obj-y  := irq.o time.o mfp.o gpio.o clock.o
  obj-y  += clksel.o dev.o cpu.o
+endif
  # W90X900 CPU support files


When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko] undefined!


Why remove mfp modules? this multifunction pin driver should be used for 
those two drivers, if no mfp_set_groupX, I don't think driver can work.


Now mfp has standard driver subsystem?



Any idea for a better migration strategy?

Arnd




Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-11 Thread Arnd Bergmann
On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> +ifeq ($(CONFIG_SOC_NUC970),)
>  obj-y  := irq.o time.o mfp.o gpio.o clock.o
>  obj-y  += clksel.o dev.o cpu.o
> +endif
>  # W90X900 CPU support files

When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko] undefined!

Any idea for a better migration strategy?

Arnd


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-11 Thread Arnd Bergmann
On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> +ifeq ($(CONFIG_SOC_NUC970),)
>  obj-y  := irq.o time.o mfp.o gpio.o clock.o
>  obj-y  += clksel.o dev.o cpu.o
> +endif
>  # W90X900 CPU support files

When mfp.o is disabled like this, I get a link error in two drivers
using the exported interface:

ERROR: "mfp_set_groupg" [drivers/spi/spi-nuc900.ko] undefined!
ERROR: "mfp_set_groupi" [drivers/input/keyboard/w90p910_keypad.ko] undefined!

Any idea for a better migration strategy?

Arnd


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-10 Thread Arnd Bergmann
On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include 
> +#include 
> +
> +static void __init nuc900_machine_init(void)
> +{
> +   of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> +}


This is the default for .init_machine, so you can leave the function
undefined.

> +static const char *nuc900_dt_compat[] __initconst = {
> +   "nuvoton,nuc970",
> +   NULL,
> +};
> +
> +DT_MACHINE_START(nuc900_dt, "Nuvoton NUC900 (Device Tree Support)")
> +   .init_machine   = nuc900_machine_init,
> +   .dt_compat  = nuc900_dt_compat,
> +MACHINE_END
> 

After that, you can probably remove most of the #include statements.
The file is still needed for now, until you move to ARCH_MULTIPLATFORM,
at which point the entire machine descriptor is redundant.

Arnd


Re: [PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-10 Thread Arnd Bergmann
On Sunday, July 10, 2016 3:27:21 PM CEST Wan Zongshun wrote:
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include 
> +#include 
> +
> +static void __init nuc900_machine_init(void)
> +{
> +   of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> +}


This is the default for .init_machine, so you can leave the function
undefined.

> +static const char *nuc900_dt_compat[] __initconst = {
> +   "nuvoton,nuc970",
> +   NULL,
> +};
> +
> +DT_MACHINE_START(nuc900_dt, "Nuvoton NUC900 (Device Tree Support)")
> +   .init_machine   = nuc900_machine_init,
> +   .dt_compat  = nuc900_dt_compat,
> +MACHINE_END
> 

After that, you can probably remove most of the #include statements.
The file is still needed for now, until you move to ARCH_MULTIPLATFORM,
at which point the entire machine descriptor is redundant.

Arnd


[PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-10 Thread Wan Zongshun
NUC970 is a new SoC of Nuvoton nuc900 series, this patch is
to add machine file support for it.

Signed-off-by: Wan Zongshun 
---
 arch/arm/mach-w90x900/Kconfig  | 20 
 arch/arm/mach-w90x900/Makefile |  3 +++
 arch/arm/mach-w90x900/nuc900.c | 41 +
 3 files changed, 64 insertions(+)
 create mode 100644 arch/arm/mach-w90x900/nuc900.c

diff --git a/arch/arm/mach-w90x900/Kconfig b/arch/arm/mach-w90x900/Kconfig
index 69bab32..80ab00c 100644
--- a/arch/arm/mach-w90x900/Kconfig
+++ b/arch/arm/mach-w90x900/Kconfig
@@ -15,6 +15,26 @@ config CPU_NUC960
help
  Support for NUCP960 of Nuvoton NUC900 CPUs.
 
+config SOC_NUC970
+   bool "Nuvoton NUC970 SoC support"
+   select COMMON_CLK
+   select GENERIC_IRQ_CHIP
+   select HAVE_CLK_PREPARE
+   select IRQ_DOMAIN
+   select MULTI_IRQ_HANDLER
+   select MFD_SYSCON
+   select NUC900_TIMER
+   select SOC_NUC900
+   select USE_OF
+   help
+ Support for NUC970 of Nuvoton NUC900 SoCs.
+ The NUC970 series runs up to 300 MHz, with 16 KB I-cache,
+ 16 KB D-cache and MMU, 56KB embedded SRAM and 16 KB Internal
+ Boot ROM for booting from USB, NAND and SPI FLASH.
+ Detailed information please check the following link:
+ https://github.com/zswan/nuc900-document/blob/master/
+ NUC970_TechnicalReferenceManual_EN_Rev1.30.pdf
+
 menu "W90P910 Machines"
 
 config MACH_W90P910EVB
diff --git a/arch/arm/mach-w90x900/Makefile b/arch/arm/mach-w90x900/Makefile
index 828c032..d13ba5a 100644
--- a/arch/arm/mach-w90x900/Makefile
+++ b/arch/arm/mach-w90x900/Makefile
@@ -4,8 +4,10 @@
 
 # Object file lists.
 
+ifeq ($(CONFIG_SOC_NUC970),)
 obj-y  := irq.o time.o mfp.o gpio.o clock.o
 obj-y  += clksel.o dev.o cpu.o
+endif
 # W90X900 CPU support files
 
 obj-$(CONFIG_CPU_W90P910)  += nuc910.o
@@ -17,3 +19,4 @@ obj-$(CONFIG_CPU_NUC960)  += nuc960.o
 obj-$(CONFIG_MACH_W90P910EVB)  += mach-nuc910evb.o
 obj-$(CONFIG_MACH_W90P950EVB)  += mach-nuc950evb.o
 obj-$(CONFIG_MACH_W90N960EVB)  += mach-nuc960evb.o
+obj-$(CONFIG_SOC_NUC970)   += nuc900.o
diff --git a/arch/arm/mach-w90x900/nuc900.c b/arch/arm/mach-w90x900/nuc900.c
new file mode 100644
index 000..309c332
--- /dev/null
+++ b/arch/arm/mach-w90x900/nuc900.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 Wan Zongshun 
+ *
+ * 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 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+static void __init nuc900_machine_init(void)
+{
+   of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static const char *nuc900_dt_compat[] __initconst = {
+   "nuvoton,nuc970",
+   NULL,
+};
+
+DT_MACHINE_START(nuc900_dt, "Nuvoton NUC900 (Device Tree Support)")
+   .init_machine   = nuc900_machine_init,
+   .dt_compat  = nuc900_dt_compat,
+MACHINE_END
-- 
2.7.4



[PATCH v2 01/10] ARM: NUC900: Add nuc970 machine support

2016-07-10 Thread Wan Zongshun
NUC970 is a new SoC of Nuvoton nuc900 series, this patch is
to add machine file support for it.

Signed-off-by: Wan Zongshun 
---
 arch/arm/mach-w90x900/Kconfig  | 20 
 arch/arm/mach-w90x900/Makefile |  3 +++
 arch/arm/mach-w90x900/nuc900.c | 41 +
 3 files changed, 64 insertions(+)
 create mode 100644 arch/arm/mach-w90x900/nuc900.c

diff --git a/arch/arm/mach-w90x900/Kconfig b/arch/arm/mach-w90x900/Kconfig
index 69bab32..80ab00c 100644
--- a/arch/arm/mach-w90x900/Kconfig
+++ b/arch/arm/mach-w90x900/Kconfig
@@ -15,6 +15,26 @@ config CPU_NUC960
help
  Support for NUCP960 of Nuvoton NUC900 CPUs.
 
+config SOC_NUC970
+   bool "Nuvoton NUC970 SoC support"
+   select COMMON_CLK
+   select GENERIC_IRQ_CHIP
+   select HAVE_CLK_PREPARE
+   select IRQ_DOMAIN
+   select MULTI_IRQ_HANDLER
+   select MFD_SYSCON
+   select NUC900_TIMER
+   select SOC_NUC900
+   select USE_OF
+   help
+ Support for NUC970 of Nuvoton NUC900 SoCs.
+ The NUC970 series runs up to 300 MHz, with 16 KB I-cache,
+ 16 KB D-cache and MMU, 56KB embedded SRAM and 16 KB Internal
+ Boot ROM for booting from USB, NAND and SPI FLASH.
+ Detailed information please check the following link:
+ https://github.com/zswan/nuc900-document/blob/master/
+ NUC970_TechnicalReferenceManual_EN_Rev1.30.pdf
+
 menu "W90P910 Machines"
 
 config MACH_W90P910EVB
diff --git a/arch/arm/mach-w90x900/Makefile b/arch/arm/mach-w90x900/Makefile
index 828c032..d13ba5a 100644
--- a/arch/arm/mach-w90x900/Makefile
+++ b/arch/arm/mach-w90x900/Makefile
@@ -4,8 +4,10 @@
 
 # Object file lists.
 
+ifeq ($(CONFIG_SOC_NUC970),)
 obj-y  := irq.o time.o mfp.o gpio.o clock.o
 obj-y  += clksel.o dev.o cpu.o
+endif
 # W90X900 CPU support files
 
 obj-$(CONFIG_CPU_W90P910)  += nuc910.o
@@ -17,3 +19,4 @@ obj-$(CONFIG_CPU_NUC960)  += nuc960.o
 obj-$(CONFIG_MACH_W90P910EVB)  += mach-nuc910evb.o
 obj-$(CONFIG_MACH_W90P950EVB)  += mach-nuc950evb.o
 obj-$(CONFIG_MACH_W90N960EVB)  += mach-nuc960evb.o
+obj-$(CONFIG_SOC_NUC970)   += nuc900.o
diff --git a/arch/arm/mach-w90x900/nuc900.c b/arch/arm/mach-w90x900/nuc900.c
new file mode 100644
index 000..309c332
--- /dev/null
+++ b/arch/arm/mach-w90x900/nuc900.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 Wan Zongshun 
+ *
+ * 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 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+static void __init nuc900_machine_init(void)
+{
+   of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static const char *nuc900_dt_compat[] __initconst = {
+   "nuvoton,nuc970",
+   NULL,
+};
+
+DT_MACHINE_START(nuc900_dt, "Nuvoton NUC900 (Device Tree Support)")
+   .init_machine   = nuc900_machine_init,
+   .dt_compat  = nuc900_dt_compat,
+MACHINE_END
-- 
2.7.4