diff mbox

[RFC] ARM: clps711x: Partial multiplatform support

Message ID 1401559206-23767-1-git-send-email-shc_work@mail.ru (mailing list archive)
State New, archived
Headers show

Commit Message

Alexander Shiyan May 31, 2014, 6 p.m. UTC
This patch provide initial partial multiplatform support for CLPS711X CPUs.
Not intended for apply, just for comments at now.
---
 arch/arm/Kconfig                               | 10 ++--------
 arch/arm/mach-clps711x/Kconfig                 | 21 +++++++++++++++++++++
 arch/arm/mach-clps711x/common.c                |  2 +-
 arch/arm/mach-clps711x/devices.c               |  2 +-
 arch/arm/mach-clps711x/include/mach/hardware.h |  2 +-
 5 files changed, 26 insertions(+), 11 deletions(-)

Comments

Arnd Bergmann May 31, 2014, 6:12 p.m. UTC | #1
On Saturday 31 May 2014 22:00:06 Alexander Shiyan wrote:
> This patch provide initial partial multiplatform support for CLPS711X CPUs.
> Not intended for apply, just for comments at now.

It's great to see you are this close now!
 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 899afa4..aced2fb 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -385,15 +385,9 @@ config ARCH_AT91
>  	  This enables support for systems based on Atmel
>  	  AT91RM9200 and AT91SAM9* processors.
>  
> -config ARCH_CLPS711X
> +config CLPS711X_SINGLE
>  	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
> -	select ARCH_REQUIRE_GPIOLIB
> -	select AUTO_ZRELADDR
> -	select CLKSRC_MMIO
> -	select COMMON_CLK
> -	select CPU_ARM720T
> -	select GENERIC_CLOCKEVENTS
> -	select MFD_SYSCON
> +	select ARCH_CLPS711X
>  	help
>  	  Support for Cirrus Logic 711x/721x/731x based boards.
>  
> diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig
> index f711498..1802562 100644
> --- a/arch/arm/mach-clps711x/Kconfig
> +++ b/arch/arm/mach-clps711x/Kconfig
> @@ -1,15 +1,34 @@
> +config ARCH_CLPS711X
> +	bool
> +	depends on CLPS711X_SINGLE || CLPS711X_MULTI
> +	select ARCH_REQUIRE_GPIOLIB
> +	select AUTO_ZRELADDR
> +	select CLKSRC_MMIO
> +	select COMMON_CLK
> +	select CPU_ARM720T
> +	select GENERIC_CLOCKEVENTS
> +	select MFD_SYSCON
> +
> +config CLPS711X_MULTI
> +	bool "Cirrus Logic CLPS711X" if ARCH_MULTI_V4T
> +	select ARCH_CLPS711X
> +	help
> +	  Support for Cirrus Logic CLPS711X-based family of processors.

The split between single and multi is just intended to be temporary,
while the framebuffer driver is being sorted out, right?

In general, I'd be happier skipping that stage and going to multiplatform
for all of clps711x when it's ready, but we can also do it like this
if  there is a good reason and you have a clear schedule for when to
remove the _SINGLE part.

One technicality: this change breaks all defconfig files and user
.configs. You can avoid that if you keep the name ARCH_CLPS711X for
either the single- or the multiplatform case and name the common
option ARCH_CLPS711X_COMMON.

	Arnd
Alexander Shiyan May 31, 2014, 6:25 p.m. UTC | #2
Sat, 31 May 2014 20:12:21 +0200 ?? Arnd Bergmann <arnd@arndb.de>:
> On Saturday 31 May 2014 22:00:06 Alexander Shiyan wrote:
> > This patch provide initial partial multiplatform support for CLPS711X CPUs.
> > Not intended for apply, just for comments at now.
> 
> It's great to see you are this close now!
>  
> > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> > index 899afa4..aced2fb 100644
> > --- a/arch/arm/Kconfig
> > +++ b/arch/arm/Kconfig
> > @@ -385,15 +385,9 @@ config ARCH_AT91
> >  	  This enables support for systems based on Atmel
> >  	  AT91RM9200 and AT91SAM9* processors.
> >  
> > -config ARCH_CLPS711X
> > +config CLPS711X_SINGLE
> >  	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
> > -	select ARCH_REQUIRE_GPIOLIB
> > -	select AUTO_ZRELADDR
> > -	select CLKSRC_MMIO
> > -	select COMMON_CLK
> > -	select CPU_ARM720T
> > -	select GENERIC_CLOCKEVENTS
> > -	select MFD_SYSCON
> > +	select ARCH_CLPS711X
> >  	help
> >  	  Support for Cirrus Logic 711x/721x/731x based boards.
> >  
> > diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig
> > index f711498..1802562 100644
> > --- a/arch/arm/mach-clps711x/Kconfig
> > +++ b/arch/arm/mach-clps711x/Kconfig
> > @@ -1,15 +1,34 @@
> > +config ARCH_CLPS711X
> > +	bool
> > +	depends on CLPS711X_SINGLE || CLPS711X_MULTI
> > +	select ARCH_REQUIRE_GPIOLIB
> > +	select AUTO_ZRELADDR
> > +	select CLKSRC_MMIO
> > +	select COMMON_CLK
> > +	select CPU_ARM720T
> > +	select GENERIC_CLOCKEVENTS
> > +	select MFD_SYSCON
> > +
> > +config CLPS711X_MULTI
> > +	bool "Cirrus Logic CLPS711X" if ARCH_MULTI_V4T
> > +	select ARCH_CLPS711X
> > +	help
> > +	  Support for Cirrus Logic CLPS711X-based family of processors.
> 
> The split between single and multi is just intended to be temporary,
> while the framebuffer driver is being sorted out, right?

Yes. This is a general thing why this patch provides "partial" support.

> In general, I'd be happier skipping that stage and going to multiplatform
> for all of clps711x when it's ready, but we can also do it like this
> if  there is a good reason and you have a clear schedule for when to
> remove the _SINGLE part.
> 
> One technicality: this change breaks all defconfig files and user
> .configs. You can avoid that if you keep the name ARCH_CLPS711X for
> either the single- or the multiplatform case and name the common
> option ARCH_CLPS711X_COMMON.

Yes, this is a problem. I thought about the best way to solve the problem
of "flip-flop" Kconfig options, but did not come to a good decision.
I'll have to think about this problem. I will look at your solution to the problem.

---
Alexander Shiyan May 31, 2014, 7:53 p.m. UTC | #3
Sat, 31 May 2014 20:12:21 +0200 ?? Arnd Bergmann <arnd@arndb.de>:
> On Saturday 31 May 2014 22:00:06 Alexander Shiyan wrote:
> > This patch provide initial partial multiplatform support for CLPS711X CPUs.
> > Not intended for apply, just for comments at now.
...
> One technicality: this change breaks all defconfig files and user
> .configs. You can avoid that if you keep the name ARCH_CLPS711X for
> either the single- or the multiplatform case and name the common
> option ARCH_CLPS711X_COMMON.

arch/arm/Kconfig:303:error: recursive dependency detected!
arch/arm/Kconfig:303:   choice <choice> contains symbol ARCH_CLPS711X
arch/arm/Kconfig:388:   symbol ARCH_CLPS711X is part of choice CLPS711X_MULTI
arch/arm/mach-clps711x/Kconfig:12:      symbol CLPS711X_MULTI depends on ARCH_MULTI_V4T
arch/arm/Kconfig:874:   symbol ARCH_MULTI_V4T depends on ARCH_MULTIPLATFORM
arch/arm/Kconfig:308:   symbol ARCH_MULTIPLATFORM is part of choice <choice>

So, it is so hard to keep ARCH_CLPS711X in its original state...

---
diff mbox

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 899afa4..aced2fb 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -385,15 +385,9 @@  config ARCH_AT91
 	  This enables support for systems based on Atmel
 	  AT91RM9200 and AT91SAM9* processors.
 
-config ARCH_CLPS711X
+config CLPS711X_SINGLE
 	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
-	select ARCH_REQUIRE_GPIOLIB
-	select AUTO_ZRELADDR
-	select CLKSRC_MMIO
-	select COMMON_CLK
-	select CPU_ARM720T
-	select GENERIC_CLOCKEVENTS
-	select MFD_SYSCON
+	select ARCH_CLPS711X
 	help
 	  Support for Cirrus Logic 711x/721x/731x based boards.
 
diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig
index f711498..1802562 100644
--- a/arch/arm/mach-clps711x/Kconfig
+++ b/arch/arm/mach-clps711x/Kconfig
@@ -1,15 +1,34 @@ 
+config ARCH_CLPS711X
+	bool
+	depends on CLPS711X_SINGLE || CLPS711X_MULTI
+	select ARCH_REQUIRE_GPIOLIB
+	select AUTO_ZRELADDR
+	select CLKSRC_MMIO
+	select COMMON_CLK
+	select CPU_ARM720T
+	select GENERIC_CLOCKEVENTS
+	select MFD_SYSCON
+
+config CLPS711X_MULTI
+	bool "Cirrus Logic CLPS711X" if ARCH_MULTI_V4T
+	select ARCH_CLPS711X
+	help
+	  Support for Cirrus Logic CLPS711X-based family of processors.
+
 if ARCH_CLPS711X
 
 menu "CLPS711X/EP721X/EP731X Implementations"
 
 config ARCH_AUTCPU12
 	bool "AUTCPU12"
+	depends on CLPS711X_SINGLE
 	help
 	  Say Y if you intend to run the kernel on the autronix autcpu12
 	  board. This board is based on a Cirrus Logic CS89712.
 
 config ARCH_CDB89712
 	bool "CDB89712"
+	depends on CLPS711X_SINGLE
 	help
 	  This is an evaluation board from Cirrus for the CS89712 processor.
 	  The board includes 2 serial ports, Ethernet, IRDA, and expansion
@@ -22,6 +41,7 @@  config ARCH_CLEP7312
 
 config ARCH_EDB7211
 	bool "EDB7211"
+	depends on CLPS711X_SINGLE
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	help
 	  Say Y here if you intend to run this kernel on a Cirrus Logic EDB-7211
@@ -29,6 +49,7 @@  config ARCH_EDB7211
 
 config ARCH_P720T
 	bool "P720T"
+	depends on CLPS711X_SINGLE
 	help
 	  Say Y here if you intend to run this kernel on the ARM Prospector
 	  720T.
diff --git a/arch/arm/mach-clps711x/common.c b/arch/arm/mach-clps711x/common.c
index 2a6323b..a230989 100644
--- a/arch/arm/mach-clps711x/common.c
+++ b/arch/arm/mach-clps711x/common.c
@@ -35,7 +35,7 @@ 
 #include <asm/mach/time.h>
 #include <asm/system_misc.h>
 
-#include <mach/hardware.h>
+#include "include/mach/hardware.h"
 
 #include "common.h"
 
diff --git a/arch/arm/mach-clps711x/devices.c b/arch/arm/mach-clps711x/devices.c
index 0c689d3..08562d5 100644
--- a/arch/arm/mach-clps711x/devices.c
+++ b/arch/arm/mach-clps711x/devices.c
@@ -12,7 +12,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/sizes.h>
 
-#include <mach/hardware.h>
+#include "include/mach/hardware.h"
 
 static const struct resource clps711x_cpuidle_res __initconst =
 	DEFINE_RES_MEM(CLPS711X_PHYS_BASE + HALT, SZ_128);
diff --git a/arch/arm/mach-clps711x/include/mach/hardware.h b/arch/arm/mach-clps711x/include/mach/hardware.h
index 833129c..e507a60 100644
--- a/arch/arm/mach-clps711x/include/mach/hardware.h
+++ b/arch/arm/mach-clps711x/include/mach/hardware.h
@@ -22,7 +22,7 @@ 
 #ifndef __MACH_HARDWARE_H
 #define __MACH_HARDWARE_H
 
-#include <mach/clps711x.h>
+#include "clps711x.h"
 
 #define CLPS711X_VIRT_BASE	IOMEM(0xfeff0000)