diff mbox

[v3,01/10] ARM: cygnus: fix link failures when CONFIG_COMMON_CLK_IPROC is disabled

Message ID 1444938513-10758-2-git-send-email-jonmason@broadcom.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jon Mason Oct. 15, 2015, 7:48 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

When CONFIG_CYGNUS is set but CONFIG_COMMON_CLK_IPROC is disabled, the
following link failures are caused:

drivers/built-in.o: In function `cygnus_armpll_init':
:(.init.text+0x1d290): undefined reference to `iproc_armpll_setup'
drivers/built-in.o: In function `cygnus_genpll_clk_init':
:(.init.text+0x1d2c4): undefined reference to `iproc_pll_clk_setup'
drivers/built-in.o: In function `cygnus_lcpll0_clk_init':
:(.init.text+0x1d304): undefined reference to `iproc_pll_clk_setup'
drivers/built-in.o: In function `cygnus_mipipll_clk_init':
:(.init.text+0x1d344): undefined reference to `iproc_pll_clk_setup'
drivers/built-in.o: In function `cygnus_asiu_init':
:(.init.text+0x1d370): undefined reference to `iproc_asiu_setup'

It is fixed it by always selecting COMMON_CLK_IPROC from
ARCH_BCM_IPROC, and making COMMON_CLK_IPROC a silent option (thus
preventing it from being erroneously disabled by a user).

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jon Mason <jonmason@broadcom.com>
---
 arch/arm/mach-bcm/Kconfig | 2 +-
 drivers/clk/bcm/Kconfig   | 4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

Comments

Scott Branden Oct. 15, 2015, 8:28 p.m. UTC | #1
Jon,

One question below for others to comment on.

On 15-10-15 12:48 PM, Jon Mason wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> When CONFIG_CYGNUS is set but CONFIG_COMMON_CLK_IPROC is disabled, the
> following link failures are caused:
>
> drivers/built-in.o: In function `cygnus_armpll_init':
> :(.init.text+0x1d290): undefined reference to `iproc_armpll_setup'
> drivers/built-in.o: In function `cygnus_genpll_clk_init':
> :(.init.text+0x1d2c4): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_lcpll0_clk_init':
> :(.init.text+0x1d304): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_mipipll_clk_init':
> :(.init.text+0x1d344): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_asiu_init':
> :(.init.text+0x1d370): undefined reference to `iproc_asiu_setup'
>
> It is fixed it by always selecting COMMON_CLK_IPROC from
> ARCH_BCM_IPROC, and making COMMON_CLK_IPROC a silent option (thus
> preventing it from being erroneously disabled by a user).
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Jon Mason <jonmason@broadcom.com>
> ---
>   arch/arm/mach-bcm/Kconfig | 2 +-
>   drivers/clk/bcm/Kconfig   | 4 +---
>   2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> index 1319c3c..84bd265 100644
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -14,7 +14,7 @@ config ARCH_BCM_IPROC
>   	select HAVE_ARM_SCU if SMP
>   	select HAVE_ARM_TWD if SMP
>   	select ARM_GLOBAL_TIMER
> -
> +	select COMMON_CLK_IPROC
>   	select CLKSRC_MMIO
>   	select ARCH_REQUIRE_GPIOLIB
>   	select ARM_AMBA
> diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
> index 88febf5..46ee475 100644
> --- a/drivers/clk/bcm/Kconfig
> +++ b/drivers/clk/bcm/Kconfig
> @@ -9,10 +9,8 @@ config CLK_BCM_KONA
>   	  in the BCM281xx and BCM21664 families.
>
>   config COMMON_CLK_IPROC
> -	bool "Broadcom iProc clock support"
> -	depends on ARCH_BCM_IPROC
> +	bool
>   	depends on COMMON_CLK
Should these depends on remain?  I think COMMON_CLK_IPROC won't work 
without them.
> -	default ARCH_BCM_IPROC
>   	help
>   	  Enable common clock framework support for Broadcom SoCs
>   	  based on the iProc architecture
>
Jon Mason Oct. 15, 2015, 9:08 p.m. UTC | #2
On Thu, Oct 15, 2015 at 01:28:50PM -0700, Scott Branden wrote:
> Jon,
> 
> One question below for others to comment on.
> 
> On 15-10-15 12:48 PM, Jon Mason wrote:
> >From: Arnd Bergmann <arnd@arndb.de>
> >
> >When CONFIG_CYGNUS is set but CONFIG_COMMON_CLK_IPROC is disabled, the
> >following link failures are caused:
> >
> >drivers/built-in.o: In function `cygnus_armpll_init':
> >:(.init.text+0x1d290): undefined reference to `iproc_armpll_setup'
> >drivers/built-in.o: In function `cygnus_genpll_clk_init':
> >:(.init.text+0x1d2c4): undefined reference to `iproc_pll_clk_setup'
> >drivers/built-in.o: In function `cygnus_lcpll0_clk_init':
> >:(.init.text+0x1d304): undefined reference to `iproc_pll_clk_setup'
> >drivers/built-in.o: In function `cygnus_mipipll_clk_init':
> >:(.init.text+0x1d344): undefined reference to `iproc_pll_clk_setup'
> >drivers/built-in.o: In function `cygnus_asiu_init':
> >:(.init.text+0x1d370): undefined reference to `iproc_asiu_setup'
> >
> >It is fixed it by always selecting COMMON_CLK_IPROC from
> >ARCH_BCM_IPROC, and making COMMON_CLK_IPROC a silent option (thus
> >preventing it from being erroneously disabled by a user).
> >
> >Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> >Signed-off-by: Jon Mason <jonmason@broadcom.com>
> >---
> >  arch/arm/mach-bcm/Kconfig | 2 +-
> >  drivers/clk/bcm/Kconfig   | 4 +---
> >  2 files changed, 2 insertions(+), 4 deletions(-)
> >
> >diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> >index 1319c3c..84bd265 100644
> >--- a/arch/arm/mach-bcm/Kconfig
> >+++ b/arch/arm/mach-bcm/Kconfig
> >@@ -14,7 +14,7 @@ config ARCH_BCM_IPROC
> >  	select HAVE_ARM_SCU if SMP
> >  	select HAVE_ARM_TWD if SMP
> >  	select ARM_GLOBAL_TIMER
> >-
> >+	select COMMON_CLK_IPROC
> >  	select CLKSRC_MMIO
> >  	select ARCH_REQUIRE_GPIOLIB
> >  	select ARM_AMBA
> >diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
> >index 88febf5..46ee475 100644
> >--- a/drivers/clk/bcm/Kconfig
> >+++ b/drivers/clk/bcm/Kconfig
> >@@ -9,10 +9,8 @@ config CLK_BCM_KONA
> >  	  in the BCM281xx and BCM21664 families.
> >
> >  config COMMON_CLK_IPROC
> >-	bool "Broadcom iProc clock support"
> >-	depends on ARCH_BCM_IPROC
> >+	bool
> >  	depends on COMMON_CLK
> Should these depends on remain?  I think COMMON_CLK_IPROC won't work
> without them.

The ones that were removed were not necessary (as ARCH_BCM_IPROC now
selects it).  I left the "depends on COMMON_CLK" in the off chance
that the dependency chain gets broken some how (as ARCH_BCM_IPROC is
not selecting COMMON_CLK directly, but it is being selected by
ARCH_MULTIPLATFORM).

Thanks,
Jon

> >-	default ARCH_BCM_IPROC
> >  	help
> >  	  Enable common clock framework support for Broadcom SoCs
> >  	  based on the iProc architecture
> >
>
Hauke Mehrtens Oct. 15, 2015, 9:17 p.m. UTC | #3
On 10/15/2015 09:48 PM, Jon Mason wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> When CONFIG_CYGNUS is set but CONFIG_COMMON_CLK_IPROC is disabled, the
> following link failures are caused:
> 
> drivers/built-in.o: In function `cygnus_armpll_init':
> :(.init.text+0x1d290): undefined reference to `iproc_armpll_setup'
> drivers/built-in.o: In function `cygnus_genpll_clk_init':
> :(.init.text+0x1d2c4): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_lcpll0_clk_init':
> :(.init.text+0x1d304): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_mipipll_clk_init':
> :(.init.text+0x1d344): undefined reference to `iproc_pll_clk_setup'
> drivers/built-in.o: In function `cygnus_asiu_init':
> :(.init.text+0x1d370): undefined reference to `iproc_asiu_setup'
> 
> It is fixed it by always selecting COMMON_CLK_IPROC from
> ARCH_BCM_IPROC, and making COMMON_CLK_IPROC a silent option (thus
> preventing it from being erroneously disabled by a user).
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Jon Mason <jonmason@broadcom.com>
> ---
>  arch/arm/mach-bcm/Kconfig | 2 +-
>  drivers/clk/bcm/Kconfig   | 4 +---
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> index 1319c3c..84bd265 100644
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -14,7 +14,7 @@ config ARCH_BCM_IPROC
>  	select HAVE_ARM_SCU if SMP
>  	select HAVE_ARM_TWD if SMP
>  	select ARM_GLOBAL_TIMER
> -
> +	select COMMON_CLK_IPROC
>  	select CLKSRC_MMIO
>  	select ARCH_REQUIRE_GPIOLIB
>  	select ARM_AMBA
> diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
> index 88febf5..46ee475 100644
> --- a/drivers/clk/bcm/Kconfig
> +++ b/drivers/clk/bcm/Kconfig
> @@ -9,10 +9,8 @@ config CLK_BCM_KONA
>  	  in the BCM281xx and BCM21664 families.
>  
>  config COMMON_CLK_IPROC
> -	bool "Broadcom iProc clock support"
> -	depends on ARCH_BCM_IPROC
> +	bool
>  	depends on COMMON_CLK
> -	default ARCH_BCM_IPROC
>  	help
>  	  Enable common clock framework support for Broadcom SoCs
>  	  based on the iProc architecture

A help text is not needed for a silent option.

Hauke
Stephen Boyd Oct. 21, 2015, 11:40 p.m. UTC | #4
On 10/15, Jon Mason wrote:
> diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
> index 88febf5..46ee475 100644
> --- a/drivers/clk/bcm/Kconfig
> +++ b/drivers/clk/bcm/Kconfig
> @@ -9,10 +9,8 @@ config CLK_BCM_KONA
>  	  in the BCM281xx and BCM21664 families.
>  
>  config COMMON_CLK_IPROC
> -	bool "Broadcom iProc clock support"
> -	depends on ARCH_BCM_IPROC

Another patch added COMPILE_TEST here, so I've removed
COMPILE_TEST now.

Applied to clk-next.
diff mbox

Patch

diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 1319c3c..84bd265 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -14,7 +14,7 @@  config ARCH_BCM_IPROC
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
 	select ARM_GLOBAL_TIMER
-
+	select COMMON_CLK_IPROC
 	select CLKSRC_MMIO
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_AMBA
diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
index 88febf5..46ee475 100644
--- a/drivers/clk/bcm/Kconfig
+++ b/drivers/clk/bcm/Kconfig
@@ -9,10 +9,8 @@  config CLK_BCM_KONA
 	  in the BCM281xx and BCM21664 families.
 
 config COMMON_CLK_IPROC
-	bool "Broadcom iProc clock support"
-	depends on ARCH_BCM_IPROC
+	bool
 	depends on COMMON_CLK
-	default ARCH_BCM_IPROC
 	help
 	  Enable common clock framework support for Broadcom SoCs
 	  based on the iProc architecture