public inbox for linux-tegra@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2] firmware/tegra: add COMPILE_TEST
@ 2026-03-24  1:57 Rosen Penev
  2026-03-24  6:01 ` Mikko Perttunen
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Rosen Penev @ 2026-03-24  1:57 UTC (permalink / raw)
  To: linux-tegra
  Cc: Michael Turquette, Stephen Boyd, Thierry Reding, Jonathan Hunter,
	open list:COMMON CLK FRAMEWORK, open list

For this driver specifically, there's no arch specific stuff needed.

Build the tegra clk stuff as tegra_bpmp_init_clocks is defined there.
CLK_TEGRA_BPMP also depends on TEGRA_BPMP.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 v2: also build the tegra clk stuff.
 drivers/clk/Makefile           | 2 +-
 drivers/firmware/tegra/Kconfig | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index 760d9643705f..334d5c522394 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -154,7 +154,7 @@ obj-$(CONFIG_ARCH_STM32)		+= stm32/
 obj-y					+= starfive/
 obj-$(CONFIG_ARCH_SUNXI)		+= sunxi/
 obj-y					+= sunxi-ng/
-obj-$(CONFIG_ARCH_TEGRA)		+= tegra/
+obj-y					+= tegra/
 obj-y					+= tenstorrent/
 obj-$(CONFIG_ARCH_THEAD)		+= thead/
 obj-y					+= ti/
diff --git a/drivers/firmware/tegra/Kconfig b/drivers/firmware/tegra/Kconfig
index 91f2320c0d0f..ae21f460807d 100644
--- a/drivers/firmware/tegra/Kconfig
+++ b/drivers/firmware/tegra/Kconfig
@@ -3,7 +3,7 @@ menu "Tegra firmware driver"

 config TEGRA_IVC
 	bool "Tegra IVC protocol" if COMPILE_TEST
-	depends on ARCH_TEGRA
+	depends on ARCH_TEGRA || COMPILE_TEST
 	help
 	  IVC (Inter-VM Communication) protocol is part of the IPC
 	  (Inter Processor Communication) framework on Tegra. It maintains the
@@ -13,7 +13,7 @@ config TEGRA_IVC

 config TEGRA_BPMP
 	bool "Tegra BPMP driver"
-	depends on ARCH_TEGRA && TEGRA_HSP_MBOX
+	depends on (ARCH_TEGRA && TEGRA_HSP_MBOX) || COMPILE_TEST
 	depends on !CPU_BIG_ENDIAN
 	select TEGRA_IVC
 	help
--
2.53.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  1:57 [PATCHv2] firmware/tegra: add COMPILE_TEST Rosen Penev
@ 2026-03-24  6:01 ` Mikko Perttunen
  2026-03-24  6:42   ` Rosen Penev
  2026-03-26 19:35 ` kernel test robot
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Mikko Perttunen @ 2026-03-24  6:01 UTC (permalink / raw)
  To: linux-tegra, Rosen Penev
  Cc: Michael Turquette, Stephen Boyd, Thierry Reding, Jonathan Hunter,
	open list:COMMON CLK FRAMEWORK, open list

On Tuesday, March 24, 2026 10:57 AM Rosen Penev wrote:
> For this driver specifically, there's no arch specific stuff needed.
> 
> Build the tegra clk stuff as tegra_bpmp_init_clocks is defined there.
> CLK_TEGRA_BPMP also depends on TEGRA_BPMP.
> 
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  v2: also build the tegra clk stuff.
>  drivers/clk/Makefile           | 2 +-
>  drivers/firmware/tegra/Kconfig | 4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> index 760d9643705f..334d5c522394 100644
> --- a/drivers/clk/Makefile
> +++ b/drivers/clk/Makefile
> @@ -154,7 +154,7 @@ obj-$(CONFIG_ARCH_STM32)		+= stm32/
>  obj-y					+= starfive/
>  obj-$(CONFIG_ARCH_SUNXI)		+= sunxi/
>  obj-y					+= sunxi-ng/
> -obj-$(CONFIG_ARCH_TEGRA)		+= tegra/
> +obj-y					+= tegra/

clk/tegra/Makefile doesn't separately check for ARCH_TEGRA, so this will cause 
much of it to get built on non-Tegra platforms as well.

Cheers,
Mikko

>  obj-y					+= tenstorrent/
>  obj-$(CONFIG_ARCH_THEAD)		+= thead/
>  obj-y					+= ti/
> diff --git a/drivers/firmware/tegra/Kconfig b/drivers/firmware/tegra/Kconfig
> index 91f2320c0d0f..ae21f460807d 100644
> --- a/drivers/firmware/tegra/Kconfig
> +++ b/drivers/firmware/tegra/Kconfig
> @@ -3,7 +3,7 @@ menu "Tegra firmware driver"
> 
>  config TEGRA_IVC
>  	bool "Tegra IVC protocol" if COMPILE_TEST
> -	depends on ARCH_TEGRA
> +	depends on ARCH_TEGRA || COMPILE_TEST
>  	help
>  	  IVC (Inter-VM Communication) protocol is part of the IPC
>  	  (Inter Processor Communication) framework on Tegra. It maintains 
the
> @@ -13,7 +13,7 @@ config TEGRA_IVC
> 
>  config TEGRA_BPMP
>  	bool "Tegra BPMP driver"
> -	depends on ARCH_TEGRA && TEGRA_HSP_MBOX
> +	depends on (ARCH_TEGRA && TEGRA_HSP_MBOX) || COMPILE_TEST
>  	depends on !CPU_BIG_ENDIAN
>  	select TEGRA_IVC
>  	help
> --
> 2.53.0





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  6:01 ` Mikko Perttunen
@ 2026-03-24  6:42   ` Rosen Penev
  2026-03-24 11:33     ` Thierry Reding
  0 siblings, 1 reply; 7+ messages in thread
From: Rosen Penev @ 2026-03-24  6:42 UTC (permalink / raw)
  To: Mikko Perttunen
  Cc: linux-tegra, Michael Turquette, Stephen Boyd, Thierry Reding,
	Jonathan Hunter, open list:COMMON CLK FRAMEWORK, open list

On Mon, Mar 23, 2026 at 11:01 PM Mikko Perttunen <mperttunen@nvidia.com> wrote:
>
> On Tuesday, March 24, 2026 10:57 AM Rosen Penev wrote:
> > For this driver specifically, there's no arch specific stuff needed.
> >
> > Build the tegra clk stuff as tegra_bpmp_init_clocks is defined there.
> > CLK_TEGRA_BPMP also depends on TEGRA_BPMP.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> >  v2: also build the tegra clk stuff.
> >  drivers/clk/Makefile           | 2 +-
> >  drivers/firmware/tegra/Kconfig | 4 ++--
> >  2 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> > index 760d9643705f..334d5c522394 100644
> > --- a/drivers/clk/Makefile
> > +++ b/drivers/clk/Makefile
> > @@ -154,7 +154,7 @@ obj-$(CONFIG_ARCH_STM32)          += stm32/
> >  obj-y                                        += starfive/
> >  obj-$(CONFIG_ARCH_SUNXI)             += sunxi/
> >  obj-y                                        += sunxi-ng/
> > -obj-$(CONFIG_ARCH_TEGRA)             += tegra/
> > +obj-y                                        += tegra/
>
> clk/tegra/Makefile doesn't separately check for ARCH_TEGRA, so this will cause
> much of it to get built on non-Tegra platforms as well.
Sure. It builds fine.
>
> Cheers,
> Mikko
>
> >  obj-y                                        += tenstorrent/
> >  obj-$(CONFIG_ARCH_THEAD)             += thead/
> >  obj-y                                        += ti/
> > diff --git a/drivers/firmware/tegra/Kconfig b/drivers/firmware/tegra/Kconfig
> > index 91f2320c0d0f..ae21f460807d 100644
> > --- a/drivers/firmware/tegra/Kconfig
> > +++ b/drivers/firmware/tegra/Kconfig
> > @@ -3,7 +3,7 @@ menu "Tegra firmware driver"
> >
> >  config TEGRA_IVC
> >       bool "Tegra IVC protocol" if COMPILE_TEST
> > -     depends on ARCH_TEGRA
> > +     depends on ARCH_TEGRA || COMPILE_TEST
> >       help
> >         IVC (Inter-VM Communication) protocol is part of the IPC
> >         (Inter Processor Communication) framework on Tegra. It maintains
> the
> > @@ -13,7 +13,7 @@ config TEGRA_IVC
> >
> >  config TEGRA_BPMP
> >       bool "Tegra BPMP driver"
> > -     depends on ARCH_TEGRA && TEGRA_HSP_MBOX
> > +     depends on (ARCH_TEGRA && TEGRA_HSP_MBOX) || COMPILE_TEST
> >       depends on !CPU_BIG_ENDIAN
> >       select TEGRA_IVC
> >       help
> > --
> > 2.53.0
>
>
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  6:42   ` Rosen Penev
@ 2026-03-24 11:33     ` Thierry Reding
  0 siblings, 0 replies; 7+ messages in thread
From: Thierry Reding @ 2026-03-24 11:33 UTC (permalink / raw)
  To: Rosen Penev
  Cc: Mikko Perttunen, linux-tegra, Michael Turquette, Stephen Boyd,
	Thierry Reding, Jonathan Hunter, open list:COMMON CLK FRAMEWORK,
	open list

[-- Attachment #1: Type: text/plain, Size: 2174 bytes --]

On Mon, Mar 23, 2026 at 11:42:18PM -0700, Rosen Penev wrote:
> On Mon, Mar 23, 2026 at 11:01 PM Mikko Perttunen <mperttunen@nvidia.com> wrote:
> >
> > On Tuesday, March 24, 2026 10:57 AM Rosen Penev wrote:
> > > For this driver specifically, there's no arch specific stuff needed.
> > >
> > > Build the tegra clk stuff as tegra_bpmp_init_clocks is defined there.
> > > CLK_TEGRA_BPMP also depends on TEGRA_BPMP.
> > >
> > > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > > ---
> > >  v2: also build the tegra clk stuff.
> > >  drivers/clk/Makefile           | 2 +-
> > >  drivers/firmware/tegra/Kconfig | 4 ++--
> > >  2 files changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> > > index 760d9643705f..334d5c522394 100644
> > > --- a/drivers/clk/Makefile
> > > +++ b/drivers/clk/Makefile
> > > @@ -154,7 +154,7 @@ obj-$(CONFIG_ARCH_STM32)          += stm32/
> > >  obj-y                                        += starfive/
> > >  obj-$(CONFIG_ARCH_SUNXI)             += sunxi/
> > >  obj-y                                        += sunxi-ng/
> > > -obj-$(CONFIG_ARCH_TEGRA)             += tegra/
> > > +obj-y                                        += tegra/
> >
> > clk/tegra/Makefile doesn't separately check for ARCH_TEGRA, so this will cause
> > much of it to get built on non-Tegra platforms as well.
> Sure. It builds fine.

I think the point that Mikko was trying to make is that with the current
setup you get the Tegra clock code built on all platforms, whether you
enable ARCH_TEGRA or not. Meaning you will get this included in your
kernel builds even on x86 or MIPS systems, or ARM systems that don't
enable any Tegra code.

If you really want to make this build with COMPILE_TEST, the right way
to do so is by adding a dedicated Kconfig symbol that uses something
like:

	config CLK_TEGRA
	...
		depends ARCH_TEGRA || COMPILE_TEST

and then use that symbol instead of CONFIG_ARCH_TEGRA above:

	obj-$(CONFIG_CLK_TEGRA) += tegra/

That way you ensure that it gets enabled for build testing or if Tegra
support is explicitly enabled.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  1:57 [PATCHv2] firmware/tegra: add COMPILE_TEST Rosen Penev
  2026-03-24  6:01 ` Mikko Perttunen
@ 2026-03-26 19:35 ` kernel test robot
  2026-03-26 19:35 ` kernel test robot
  2026-03-26 21:51 ` kernel test robot
  3 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2026-03-26 19:35 UTC (permalink / raw)
  To: Rosen Penev, linux-tegra
  Cc: oe-kbuild-all, Michael Turquette, Stephen Boyd, Thierry Reding,
	Jonathan Hunter, linux-clk, linux-kernel

Hi Rosen,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20260325]
[cannot apply to tegra/for-next clk/clk-next drm-tegra/drm/tegra/for-next v7.0-rc5 v7.0-rc4 v7.0-rc3 linus/master v7.0-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/firmware-tegra-add-COMPILE_TEST/20260326-124230
base:   next-20260325
patch link:    https://lore.kernel.org/r/20260324015722.12507-1-rosenp%40gmail.com
patch subject: [PATCHv2] firmware/tegra: add COMPILE_TEST
config: parisc-allnoconfig (https://download.01.org/0day-ci/archive/20260327/202603270355.rxjFONcV-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260327/202603270355.rxjFONcV-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603270355.rxjFONcV-lkp@intel.com/

All errors (new ones prefixed by >>):

   hppa-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_register_devclks':
>> (.text+0x348): undefined reference to `clk_register_clkdev'
>> hppa-linux-ld: (.text+0x398): undefined reference to `__clk_get_name'
>> hppa-linux-ld: (.text+0x3a8): undefined reference to `clk_register_clkdev'
   hppa-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_clk_dev_register':
>> (.text+0x438): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_init_dup_clks':
>> (.init.text+0x114): undefined reference to `clkdev_add'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_sync_clk_init.constprop.0':
>> (.init.text+0x90): undefined reference to `clk_register_mux_table'
>> hppa-linux-ld: (.init.text+0xd0): undefined reference to `clk_register_gate'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_clk_init':
>> (.init.text+0x348): undefined reference to `clk_register_fixed_factor'
>> hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x10c): undefined reference to `clk_mux_ops'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x1a4): undefined reference to `clk_mux_ops'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x23c): undefined reference to `clk_mux_ops'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x2d4): undefined reference to `clk_mux_ops'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x36c): undefined reference to `clk_mux_ops'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x404): more undefined references to `clk_mux_ops' follow
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-periph.o: in function `init_pllp':
>> (.init.text+0x7c): undefined reference to `clk_register_clkdev'
   hppa-linux-ld: (.init.text+0x204): undefined reference to `clk_register_gate'
   hppa-linux-ld: (.init.text+0x24c): undefined reference to `clk_register_gate'
>> hppa-linux-ld: (.init.text+0x260): undefined reference to `clk_register_clkdev'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_osc_clk_init':
>> (.init.text+0x9c): undefined reference to `clk_register_fixed_rate'
>> hppa-linux-ld: (.init.text+0xd8): undefined reference to `clk_register_fixed_factor'
   hppa-linux-ld: (.init.text+0x114): undefined reference to `clk_register_fixed_factor'
   hppa-linux-ld: (.init.text+0x150): undefined reference to `clk_register_fixed_factor'
   hppa-linux-ld: (.init.text+0x194): undefined reference to `clk_register_fixed_factor'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_fixed_clk_init':
   (.init.text+0x20c): undefined reference to `clk_register_fixed_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-super-gen4.o: in function `tegra_sclk_init':
>> (.init.text+0xb8): undefined reference to `clk_register_divider_table'
>> hppa-linux-ld: (.init.text+0x164): undefined reference to `clk_register_divider_table'
   hppa-linux-ld: (.init.text+0x194): undefined reference to `clk_register_gate'
   hppa-linux-ld: (.init.text+0x1ec): undefined reference to `clk_register_divider_table'
   hppa-linux-ld: (.init.text+0x21c): undefined reference to `clk_register_gate'
   hppa-linux-ld: drivers/clk/tegra/clk-audio-sync.o: in function `tegra_clk_register_sync_source':
   (.text+0x13c): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-dfll.o: in function `tegra_dfll_unregister':
>> (.text+0x1d8): undefined reference to `clk_unregister'
   hppa-linux-ld: drivers/clk/tegra/clk-divider.o: in function `clk_divider_restore_context':
>> (.text+0x2c8): undefined reference to `clk_hw_get_parent'
>> hppa-linux-ld: (.text+0x2d0): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x2dc): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_divider':
   (.text+0x3d0): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_mc':
>> (.text+0x4c4): undefined reference to `clk_register_divider_table'
   hppa-linux-ld: drivers/clk/tegra/clk-periph.o: in function `clk_periph_restore_context':
>> (.text+0x254): undefined reference to `clk_hw_get_parent_index'
   hppa-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph':
   (.text+0x3bc): undefined reference to `clk_register'
   hppa-linux-ld: (.text+0x420): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph_nodiv':
   (.text+0x528): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph_data':
   (.text+0x648): undefined reference to `clk_register'
   hppa-linux-ld: (.text+0x6b0): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-periph.o:(.rodata+0x94): undefined reference to `clk_hw_determine_rate_no_reparent'
   hppa-linux-ld: drivers/clk/tegra/clk-periph-fixed.o: in function `tegra_clk_register_periph_fixed':
   (.text+0x250): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-periph-gate.o: in function `tegra_clk_register_periph_gate':
   (.text+0x35c): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_determine_rate':
   (.text+0x6c4): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_wait_for_lock':
   (.text+0x7c0): undefined reference to `clk_hw_get_name'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pllu_enable':
   (.text+0xed0): undefined reference to `clk_hw_get_parent'
   hppa-linux-ld: (.text+0xed8): undefined reference to `clk_hw_get_parent'
   hppa-linux-ld: (.text+0xee8): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_recalc_rate':
   (.text+0x17c4): undefined reference to `clk_hw_get_name'
   hppa-linux-ld: (.text+0x1818): undefined reference to `clk_hw_get_name'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_set_rate':
   (.text+0x1d54): undefined reference to `clk_hw_get_name'
   hppa-linux-ld: (.text+0x1d84): undefined reference to `clk_hw_get_name'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `tegra_clk_pll_restore_context':
   (.text+0x1dcc): undefined reference to `clk_hw_get_parent'
   hppa-linux-ld: (.text+0x1dd4): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x1de0): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x1e20): undefined reference to `__clk_get_enable_count'
   hppa-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_plle_enable':
   (.text+0x1ed0): undefined reference to `clk_hw_get_parent'
   hppa-linux-ld: (.text+0x1ed8): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_pll_out_restore_context':
   (.text+0x1cc): undefined reference to `__clk_get_enable_count'
   hppa-linux-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_register_pll_out':
   (.text+0x2cc): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_get_parent':
   (.text+0x248): undefined reference to `clk_hw_get_num_parents'
   hppa-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_restore_context':
   (.text+0x48c): undefined reference to `clk_hw_get_parent'
   hppa-linux-ld: (.text+0x494): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x4a0): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x4ac): undefined reference to `clk_hw_get_parent_index'
   hppa-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `tegra_clk_register_sdmmc_mux_div':
   (.text+0x5f4): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_restore_context':
   (.text+0x38c): undefined reference to `clk_hw_get_parent_index'
   hppa-linux-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_mux_restore_context':
   (.text+0x408): undefined reference to `clk_hw_get_parent_index'
   hppa-linux-ld: drivers/clk/tegra/clk-super.o: in function `tegra_clk_register_super_clk':
   (.text+0x658): undefined reference to `clk_register'
   hppa-linux-ld: drivers/clk/tegra/clk-super.o:(.rodata+0x94): undefined reference to `clk_hw_determine_rate_no_reparent'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `cclk_super_determine_rate':
   (.text+0xe0): undefined reference to `clk_hw_get_parent_by_index'
   hppa-linux-ld: (.text+0xf0): undefined reference to `clk_hw_get_parent_by_index'
   hppa-linux-ld: (.text+0x10c): undefined reference to `clk_hw_get_rate'
   hppa-linux-ld: (.text+0x184): undefined reference to `clk_hw_get_rate_range'
   hppa-linux-ld: (.text+0x1b0): undefined reference to `clk_hw_round_rate'
   hppa-linux-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `tegra_clk_register_super_cclk':
   (.text+0x3c8): undefined reference to `clk_register'

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  1:57 [PATCHv2] firmware/tegra: add COMPILE_TEST Rosen Penev
  2026-03-24  6:01 ` Mikko Perttunen
  2026-03-26 19:35 ` kernel test robot
@ 2026-03-26 19:35 ` kernel test robot
  2026-03-26 21:51 ` kernel test robot
  3 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2026-03-26 19:35 UTC (permalink / raw)
  To: Rosen Penev, linux-tegra
  Cc: oe-kbuild-all, Michael Turquette, Stephen Boyd, Thierry Reding,
	Jonathan Hunter, linux-clk, linux-kernel

Hi Rosen,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20260325]
[cannot apply to tegra/for-next clk/clk-next drm-tegra/drm/tegra/for-next v7.0-rc5 v7.0-rc4 v7.0-rc3 linus/master v7.0-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/firmware-tegra-add-COMPILE_TEST/20260326-124230
base:   next-20260325
patch link:    https://lore.kernel.org/r/20260324015722.12507-1-rosenp%40gmail.com
patch subject: [PATCHv2] firmware/tegra: add COMPILE_TEST
config: sparc-allnoconfig (https://download.01.org/0day-ci/archive/20260327/202603270305.aMVfb5Bs-lkp@intel.com/config)
compiler: sparc-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260327/202603270305.aMVfb5Bs-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603270305.aMVfb5Bs-lkp@intel.com/

All errors (new ones prefixed by >>):

   sparc-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_register_devclks':
   clk.c:(.text+0x4b0): undefined reference to `clk_register_clkdev'
>> sparc-linux-ld: clk.c:(.text+0x520): undefined reference to `__clk_get_name'
>> sparc-linux-ld: clk.c:(.text+0x530): undefined reference to `clk_register_clkdev'
   sparc-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_clk_dev_register':
   clk.c:(.text+0x5fc): undefined reference to `clk_register'
>> sparc-linux-ld: clk.c:(.text+0x664): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_init_dup_clks':
   clk.c:(.init.text+0x10c): undefined reference to `clkdev_add'
   sparc-linux-ld: drivers/clk/tegra/clk.o: in function `tegra_add_of_provider':
   clk.c:(.init.text+0x1a0): undefined reference to `of_clk_add_provider'
   sparc-linux-ld: drivers/clk/tegra/clk-audio-sync.o: in function `tegra_clk_register_sync_source':
   clk-audio-sync.c:(.text+0x128): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-dfll.o: in function `tegra_dfll_unregister':
   clk-dfll.c:(.text+0x19c): undefined reference to `of_clk_del_provider'
>> sparc-linux-ld: clk-dfll.c:(.text+0x1a4): undefined reference to `clk_unregister'
   sparc-linux-ld: drivers/clk/tegra/clk-divider.o: in function `clk_divider_restore_context':
   clk-divider.c:(.text+0x2c4): undefined reference to `clk_hw_get_parent'
>> sparc-linux-ld: clk-divider.c:(.text+0x2cc): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: clk-divider.c:(.text+0x2d8): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_divider':
   clk-divider.c:(.text+0x3b4): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_mc':
   clk-divider.c:(.text+0x438): undefined reference to `clk_register_divider_table'
   sparc-linux-ld: drivers/clk/tegra/clk-periph.o: in function `clk_periph_restore_context':
   clk-periph.c:(.text+0x248): undefined reference to `clk_hw_get_parent_index'
   sparc-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph':
   clk-periph.c:(.text+0x350): undefined reference to `clk_register'
>> sparc-linux-ld: clk-periph.c:(.text+0x3d4): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph_nodiv':
   clk-periph.c:(.text+0x484): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-periph.o: in function `tegra_clk_register_periph_data':
   clk-periph.c:(.text+0x560): undefined reference to `clk_register'
   sparc-linux-ld: clk-periph.c:(.text+0x5e4): undefined reference to `clk_register'
>> sparc-linux-ld: drivers/clk/tegra/clk-periph.o:(.rodata+0x94): undefined reference to `clk_hw_determine_rate_no_reparent'
   sparc-linux-ld: drivers/clk/tegra/clk-periph-fixed.o: in function `tegra_clk_register_periph_fixed':
   clk-periph-fixed.c:(.text+0x2fc): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-periph-gate.o: in function `tegra_clk_register_periph_gate':
   clk-periph-gate.c:(.text+0x448): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_determine_rate':
   clk-pll.c:(.text+0x764): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_wait_for_lock':
   clk-pll.c:(.text+0x860): undefined reference to `clk_hw_get_name'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pllu_enable':
   clk-pll.c:(.text+0x1244): undefined reference to `clk_hw_get_parent'
>> sparc-linux-ld: clk-pll.c:(.text+0x124c): undefined reference to `clk_hw_get_parent'
>> sparc-linux-ld: clk-pll.c:(.text+0x1260): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_set_rate':
   clk-pll.c:(.text+0x20d8): undefined reference to `clk_hw_get_name'
>> sparc-linux-ld: clk-pll.c:(.text+0x2110): undefined reference to `clk_hw_get_name'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `tegra_clk_pll_restore_context':
   clk-pll.c:(.text+0x2184): undefined reference to `clk_hw_get_parent'
   sparc-linux-ld: clk-pll.c:(.text+0x218c): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: clk-pll.c:(.text+0x2198): undefined reference to `clk_hw_get_rate'
>> sparc-linux-ld: clk-pll.c:(.text+0x21e4): undefined reference to `__clk_get_enable_count'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_recalc_rate':
   clk-pll.c:(.text+0x243c): undefined reference to `clk_hw_get_name'
   sparc-linux-ld: clk-pll.c:(.text+0x248c): undefined reference to `clk_hw_get_name'
   sparc-linux-ld: drivers/clk/tegra/clk-pll.o: in function `clk_plle_enable':
   clk-pll.c:(.text+0x24f4): undefined reference to `clk_hw_get_parent'
   sparc-linux-ld: clk-pll.c:(.text+0x24fc): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_pll_out_restore_context':
   clk-pll-out.c:(.text+0x284): undefined reference to `__clk_get_enable_count'
   sparc-linux-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_register_pll_out':
   clk-pll-out.c:(.text+0x364): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_get_parent':
   clk-sdmmc-mux.c:(.text+0x244): undefined reference to `clk_hw_get_num_parents'
   sparc-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_restore_context':
   clk-sdmmc-mux.c:(.text+0x4c4): undefined reference to `clk_hw_get_parent'
>> sparc-linux-ld: clk-sdmmc-mux.c:(.text+0x4cc): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: clk-sdmmc-mux.c:(.text+0x4d8): undefined reference to `clk_hw_get_rate'
>> sparc-linux-ld: clk-sdmmc-mux.c:(.text+0x4e4): undefined reference to `clk_hw_get_parent_index'
   sparc-linux-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `tegra_clk_register_sdmmc_mux_div':
   clk-sdmmc-mux.c:(.text+0x5f8): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_restore_context':
   clk-super.c:(.text+0x404): undefined reference to `clk_hw_get_parent_index'
   sparc-linux-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_mux_restore_context':
   clk-super.c:(.text+0x484): undefined reference to `clk_hw_get_parent_index'
   sparc-linux-ld: drivers/clk/tegra/clk-super.o: in function `tegra_clk_register_super_clk':
   clk-super.c:(.text+0x620): undefined reference to `clk_register'
>> sparc-linux-ld: drivers/clk/tegra/clk-super.o:(.rodata+0x94): undefined reference to `clk_hw_determine_rate_no_reparent'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_sync_clk_init.constprop.0':
   clk-tegra-audio.c:(.init.text+0x54): undefined reference to `clk_register_mux_table'
>> sparc-linux-ld: clk-tegra-audio.c:(.init.text+0x94): undefined reference to `clk_register_gate'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_clk_init':
   clk-tegra-audio.c:(.init.text+0x29c): undefined reference to `clk_register_fixed_factor'
>> sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x10c): undefined reference to `clk_mux_ops'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x1a4): undefined reference to `clk_mux_ops'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x23c): undefined reference to `clk_mux_ops'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x2d4): undefined reference to `clk_mux_ops'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x36c): undefined reference to `clk_mux_ops'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data+0x404): more undefined references to `clk_mux_ops' follow
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-periph.o: in function `init_pllp':
   clk-tegra-periph.c:(.init.text+0x48): undefined reference to `clk_register_clkdev'
>> sparc-linux-ld: clk-tegra-periph.c:(.init.text+0x1c8): undefined reference to `clk_register_gate'
   sparc-linux-ld: clk-tegra-periph.c:(.init.text+0x20c): undefined reference to `clk_register_gate'
>> sparc-linux-ld: clk-tegra-periph.c:(.init.text+0x21c): undefined reference to `clk_register_clkdev'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_osc_clk_init':
   clk-tegra-fixed.c:(.init.text+0x98): undefined reference to `clk_register_fixed_rate'
>> sparc-linux-ld: clk-tegra-fixed.c:(.init.text+0xd0): undefined reference to `clk_register_fixed_factor'
   sparc-linux-ld: clk-tegra-fixed.c:(.init.text+0x108): undefined reference to `clk_register_fixed_factor'
   sparc-linux-ld: clk-tegra-fixed.c:(.init.text+0x140): undefined reference to `clk_register_fixed_factor'
   sparc-linux-ld: clk-tegra-fixed.c:(.init.text+0x184): undefined reference to `clk_register_fixed_factor'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_fixed_clk_init':
   clk-tegra-fixed.c:(.init.text+0x1d8): undefined reference to `clk_register_fixed_rate'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `cclk_super_determine_rate':
   clk-tegra-super-cclk.c:(.text+0xc8): undefined reference to `clk_hw_get_parent_by_index'
>> sparc-linux-ld: clk-tegra-super-cclk.c:(.text+0xd8): undefined reference to `clk_hw_get_parent_by_index'
   sparc-linux-ld: clk-tegra-super-cclk.c:(.text+0xfc): undefined reference to `clk_hw_get_rate'
   sparc-linux-ld: clk-tegra-super-cclk.c:(.text+0x144): undefined reference to `clk_hw_round_rate'
   sparc-linux-ld: clk-tegra-super-cclk.c:(.text+0x194): undefined reference to `clk_hw_get_rate_range'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `tegra_clk_register_super_cclk':
   clk-tegra-super-cclk.c:(.text+0x420): undefined reference to `clk_register'
   sparc-linux-ld: drivers/clk/tegra/clk-tegra-super-gen4.o: in function `tegra_sclk_init':
   clk-tegra-super-gen4.c:(.init.text+0x98): undefined reference to `clk_register_divider_table'
   sparc-linux-ld: clk-tegra-super-gen4.c:(.init.text+0x140): undefined reference to `clk_register_divider_table'
   sparc-linux-ld: clk-tegra-super-gen4.c:(.init.text+0x16c): undefined reference to `clk_register_gate'
   sparc-linux-ld: clk-tegra-super-gen4.c:(.init.text+0x1c4): undefined reference to `clk_register_divider_table'
   sparc-linux-ld: clk-tegra-super-gen4.c:(.init.text+0x1f0): undefined reference to `clk_register_gate'

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] firmware/tegra: add COMPILE_TEST
  2026-03-24  1:57 [PATCHv2] firmware/tegra: add COMPILE_TEST Rosen Penev
                   ` (2 preceding siblings ...)
  2026-03-26 19:35 ` kernel test robot
@ 2026-03-26 21:51 ` kernel test robot
  3 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2026-03-26 21:51 UTC (permalink / raw)
  To: Rosen Penev, linux-tegra
  Cc: oe-kbuild-all, Michael Turquette, Stephen Boyd, Thierry Reding,
	Jonathan Hunter, linux-clk, linux-kernel

Hi Rosen,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20260325]
[cannot apply to tegra/for-next clk/clk-next drm-tegra/drm/tegra/for-next v7.0-rc5 v7.0-rc4 v7.0-rc3 linus/master v7.0-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/firmware-tegra-add-COMPILE_TEST/20260326-124230
base:   next-20260325
patch link:    https://lore.kernel.org/r/20260324015722.12507-1-rosenp%40gmail.com
patch subject: [PATCHv2] firmware/tegra: add COMPILE_TEST
config: s390-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260326/202603262233.dvRyEA8v-lkp@intel.com/config)
compiler: s390x-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260326/202603262233.dvRyEA8v-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603262233.dvRyEA8v-lkp@intel.com/

All errors (new ones prefixed by >>):

   s390x-linux-gnu-ld: drivers/clk/tegra/clk.o: in function `tegra_register_devclks':
>> drivers/clk/tegra/clk.c:361:(.text+0x718): undefined reference to `clk_register_clkdev'
>> s390x-linux-gnu-ld: drivers/clk/tegra/clk.c:366:(.text+0x770): undefined reference to `__clk_get_name'
>> s390x-linux-gnu-ld: drivers/clk/tegra/clk.c:366:(.text+0x784): undefined reference to `clk_register_clkdev'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk.o: in function `tegra_clk_dev_register':
>> drivers/clk/tegra/clk.c:437:(.text+0x830): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk.o: in function `tegra_init_dup_clks':
>> drivers/clk/tegra/clk.c:263:(.init.text+0x17c): undefined reference to `clkdev_add'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-audio-sync.o: in function `tegra_clk_register_sync_source':
>> drivers/clk/tegra/clk-audio-sync.c:70:(.text+0x1f8): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-dfll.o: in function `dfll_unregister_clk':
>> drivers/clk/tegra/clk-dfll.c:1215:(.text+0x236): undefined reference to `clk_unregister'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-divider.o: in function `clk_divider_restore_context':
>> drivers/clk/tegra/clk-divider.c:127:(.text+0x262): undefined reference to `clk_hw_get_parent'
>> s390x-linux-gnu-ld: drivers/clk/tegra/clk-divider.c:128:(.text+0x268): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-divider.c:129:(.text+0x276): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_divider':
>> drivers/clk/tegra/clk-divider.c:174:(.text+0x6e0): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-divider.o: in function `tegra_clk_register_mc':
>> drivers/clk/tegra/clk-divider.c:190:(.text+0x7da): undefined reference to `clk_register_divider_table'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.o: in function `clk_periph_restore_context':
>> drivers/clk/tegra/clk-periph.c:119:(.text+0x676): undefined reference to `clk_hw_get_parent_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.o: in function `_tegra_clk_register_periph':
>> drivers/clk/tegra/clk-periph.c:199:(.text+0x8ec): undefined reference to `clk_register'
>> s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.c:199:(.text+0x9b6): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.c:199:(.text+0xb72): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.c:199:(.text+0xdf2): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.c:199:(.text+0xeb8): undefined reference to `clk_register'
>> s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph.o:(.data.rel.ro+0x60): undefined reference to `clk_hw_determine_rate_no_reparent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph-fixed.o: in function `tegra_clk_register_periph_fixed':
>> drivers/clk/tegra/clk-periph-fixed.c:105:(.text+0x558): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-periph-gate.o: in function `tegra_clk_register_periph_gate':
>> drivers/clk/tegra/clk-periph-gate.c:171:(.text+0x79e): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_determine_rate':
>> drivers/clk/tegra/clk-pll.c:852:(.text+0xbc4): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_wait_for_lock':
>> drivers/clk/tegra/clk-pll.c:319:(.text+0xdae): undefined reference to `clk_hw_get_name'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pllu_enable':
>> drivers/clk/tegra/clk-pll.c:1124:(.text+0x1eec): undefined reference to `clk_hw_get_parent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:1125:(.text+0x1ef2): undefined reference to `clk_hw_get_parent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:1137:(.text+0x1f08): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_recalc_rate':
   drivers/clk/tegra/clk-pll.c:888:(.text+0x2b58): undefined reference to `clk_hw_get_name'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:902:(.text+0x2c10): undefined reference to `clk_hw_get_name'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_pll_set_rate':
   drivers/clk/tegra/clk-pll.c:821:(.text+0x3a1a): undefined reference to `clk_hw_get_name'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:811:(.text+0x3a4e): undefined reference to `clk_hw_get_name'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `tegra_clk_pll_restore_context':
   drivers/clk/tegra/clk-pll.c:1042:(.text+0x3ae2): undefined reference to `clk_hw_get_parent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:1043:(.text+0x3ae8): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:1044:(.text+0x3af6): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:1054:(.text+0x3b5c): undefined reference to `__clk_get_enable_count'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.o: in function `clk_plle_enable':
   drivers/clk/tegra/clk-pll.c:971:(.text+0x3cc0): undefined reference to `clk_hw_get_parent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll.c:971:(.text+0x3cc6): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_pll_out_restore_context':
   drivers/clk/tegra/clk-pll-out.c:74:(.text+0x432): undefined reference to `__clk_get_enable_count'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-pll-out.o: in function `tegra_clk_register_pll_out':
   drivers/clk/tegra/clk-pll-out.c:115:(.text+0x5f8): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_get_parent':
   drivers/clk/tegra/clk-sdmmc-mux.c:48:(.text+0x66c): undefined reference to `clk_hw_get_num_parents'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `clk_sdmmc_mux_restore_context':
   drivers/clk/tegra/clk-sdmmc-mux.c:208:(.text+0x9e2): undefined reference to `clk_hw_get_parent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.c:209:(.text+0x9e8): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.c:210:(.text+0x9f6): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.c:213:(.text+0xa04): undefined reference to `clk_hw_get_parent_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-sdmmc-mux.o: in function `tegra_clk_register_sdmmc_mux_div':
   drivers/clk/tegra/clk-sdmmc-mux.c:269:(.text+0xc06): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_restore_context':
   drivers/clk/tegra/clk-super.c:184:(.text+0x726): undefined reference to `clk_hw_get_parent_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-super.o: in function `clk_super_mux_restore_context':
   drivers/clk/tegra/clk-super.c:131:(.text+0x7a2): undefined reference to `clk_hw_get_parent_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-super.o: in function `tegra_clk_register_super_clk':
   drivers/clk/tegra/clk-super.c:270:(.text+0xbba): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-super.o:(.data.rel.ro+0x60): undefined reference to `clk_hw_determine_rate_no_reparent'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_sync_clk_init':
   drivers/clk/tegra/clk-tegra-audio.c:145:(.init.text+0xda): undefined reference to `clk_register_mux_table'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-audio.c:156:(.init.text+0x172): undefined reference to `clk_register_gate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-audio.o: in function `tegra_audio_clk_init':
   drivers/clk/tegra/clk-tegra-audio.c:235:(.init.text+0x4a0): undefined reference to `clk_register_fixed_factor'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o: in function `init_pllp':
   drivers/clk/tegra/clk-tegra-periph.c:952:(.init.text+0x7c): undefined reference to `clk_register_clkdev'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.c:1004:(.init.text+0x326): undefined reference to `clk_register_gate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.c:1013:(.init.text+0x380): undefined reference to `clk_register_gate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.c:1017:(.init.text+0x394): undefined reference to `clk_register_clkdev'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0xe8): undefined reference to `clk_mux_ops'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0x208): undefined reference to `clk_mux_ops'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0x328): undefined reference to `clk_mux_ops'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0x448): undefined reference to `clk_mux_ops'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0x568): undefined reference to `clk_mux_ops'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-periph.o:(.data.rel+0x688): more undefined references to `clk_mux_ops' follow
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_osc_clk_init':
   drivers/clk/tegra/clk-tegra-fixed.c:53:(.init.text+0xe0): undefined reference to `clk_register_fixed_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.c:59:(.init.text+0x12e): undefined reference to `clk_register_fixed_factor'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.c:67:(.init.text+0x17c): undefined reference to `clk_register_fixed_factor'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.c:76:(.init.text+0x1ca): undefined reference to `clk_register_fixed_factor'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.c:87:(.init.text+0x226): undefined reference to `clk_register_fixed_factor'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-fixed.o: in function `tegra_fixed_clk_init':
   drivers/clk/tegra/clk-tegra-fixed.c:105:(.init.text+0x2da): undefined reference to `clk_register_fixed_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `cclk_super_determine_rate':
   drivers/clk/tegra/clk-tegra-super-cclk.c:71:(.text+0x200): undefined reference to `clk_hw_get_parent_by_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.c:72:(.text+0x212): undefined reference to `clk_hw_get_parent_by_index'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.c:84:(.text+0x246): undefined reference to `clk_hw_get_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.c:95:(.text+0x304): undefined reference to `clk_hw_get_rate_range'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.c:106:(.text+0x34c): undefined reference to `clk_hw_round_rate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-cclk.o: in function `tegra_clk_register_super_cclk':
   drivers/clk/tegra/clk-tegra-super-cclk.c:200:(.text+0x6e2): undefined reference to `clk_register'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-gen4.o: in function `tegra_sclk_init':
   drivers/clk/tegra/clk-tegra-super-gen4.c:117:(.init.text+0xf8): undefined reference to `clk_register_divider_table'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-gen4.c:141:(.init.text+0x1e8): undefined reference to `clk_register_divider_table'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-gen4.c:144:(.init.text+0x21a): undefined reference to `clk_register_gate'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-gen4.c:156:(.init.text+0x286): undefined reference to `clk_register_divider_table'
   s390x-linux-gnu-ld: drivers/clk/tegra/clk-tegra-super-gen4.c:159:(.init.text+0x2b8): undefined reference to `clk_register_gate'


vim +361 drivers/clk/tegra/clk.c

d5ff89a82a6d27 Peter De Schrijver 2013-08-22  254  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  255  void __init tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list,
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  256  				struct clk *clks[], int clk_max)
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  257  {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  258  	struct clk *clk;
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  259  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  260  	for (; dup_list->clk_id < clk_max; dup_list++) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  261  		clk = clks[dup_list->clk_id];
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  262  		dup_list->lookup.clk = clk;
8f8f484bf355e5 Prashant Gaikwad   2013-01-11 @263  		clkdev_add(&dup_list->lookup);
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  264  	}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  265  }
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  266  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  267  void tegra_init_from_table(struct tegra_clk_init_table *tbl,
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  268  			   struct clk *clks[], int clk_max)
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  269  {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  270  	struct clk *clk;
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  271  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  272  	for (; tbl->clk_id < clk_max; tbl++) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  273  		clk = clks[tbl->clk_id];
b9e742c3164344 Tomeu Vizoso       2014-09-17  274  		if (IS_ERR_OR_NULL(clk)) {
b9e742c3164344 Tomeu Vizoso       2014-09-17  275  			pr_err("%s: invalid entry %ld in clks array for id %d\n",
b9e742c3164344 Tomeu Vizoso       2014-09-17  276  			       __func__, PTR_ERR(clk), tbl->clk_id);
b9e742c3164344 Tomeu Vizoso       2014-09-17  277  			WARN_ON(1);
b9e742c3164344 Tomeu Vizoso       2014-09-17  278  
b9e742c3164344 Tomeu Vizoso       2014-09-17  279  			continue;
b9e742c3164344 Tomeu Vizoso       2014-09-17  280  		}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  281  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  282  		if (tbl->parent_id < clk_max) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  283  			struct clk *parent = clks[tbl->parent_id];
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  284  			if (clk_set_parent(clk, parent)) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  285  				pr_err("%s: Failed to set parent %s of %s\n",
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  286  				       __func__, __clk_get_name(parent),
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  287  				       __clk_get_name(clk));
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  288  				WARN_ON(1);
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  289  			}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  290  		}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  291  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  292  		if (tbl->rate)
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  293  			if (clk_set_rate(clk, tbl->rate)) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  294  				pr_err("%s: Failed to set rate %lu of %s\n",
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  295  				       __func__, tbl->rate,
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  296  				       __clk_get_name(clk));
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  297  				WARN_ON(1);
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  298  			}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  299  
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  300  		if (tbl->state)
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  301  			if (clk_prepare_enable(clk)) {
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  302  				pr_err("%s: Failed to enable %s\n", __func__,
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  303  				       __clk_get_name(clk));
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  304  				WARN_ON(1);
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  305  			}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  306  	}
8f8f484bf355e5 Prashant Gaikwad   2013-01-11  307  }
61fd290d213e25 Prashant Gaikwad   2013-01-11  308  
7ba256d2aa2a18 Philipp Zabel      2016-02-25  309  static const struct reset_control_ops rst_ops = {
6d5b988e7dc56b Stephen Warren     2013-11-05  310  	.assert = tegra_clk_rst_assert,
6d5b988e7dc56b Stephen Warren     2013-11-05  311  	.deassert = tegra_clk_rst_deassert,
4236e752f19d4d Mikko Perttunen    2017-03-02  312  	.reset = tegra_clk_rst_reset,
6d5b988e7dc56b Stephen Warren     2013-11-05  313  };
6d5b988e7dc56b Stephen Warren     2013-11-05  314  
6d5b988e7dc56b Stephen Warren     2013-11-05  315  static struct reset_controller_dev rst_ctlr = {
6d5b988e7dc56b Stephen Warren     2013-11-05  316  	.ops = &rst_ops,
6d5b988e7dc56b Stephen Warren     2013-11-05  317  	.owner = THIS_MODULE,
6d5b988e7dc56b Stephen Warren     2013-11-05  318  	.of_reset_n_cells = 1,
6d5b988e7dc56b Stephen Warren     2013-11-05  319  };
6d5b988e7dc56b Stephen Warren     2013-11-05  320  
5d797111afe12e Dmitry Osipenko    2018-05-08  321  void __init tegra_add_of_provider(struct device_node *np,
5d797111afe12e Dmitry Osipenko    2018-05-08  322  				  void *clk_src_onecell_get)
343a607cb79259 Peter De Schrijver 2013-09-02  323  {
343a607cb79259 Peter De Schrijver 2013-09-02  324  	int i;
343a607cb79259 Peter De Schrijver 2013-09-02  325  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  326  	tegra_car_np = np;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  327  
343a607cb79259 Peter De Schrijver 2013-09-02  328  	for (i = 0; i < clk_num; i++) {
343a607cb79259 Peter De Schrijver 2013-09-02  329  		if (IS_ERR(clks[i])) {
343a607cb79259 Peter De Schrijver 2013-09-02  330  			pr_err
343a607cb79259 Peter De Schrijver 2013-09-02  331  			    ("Tegra clk %d: register failed with %ld\n",
343a607cb79259 Peter De Schrijver 2013-09-02  332  			     i, PTR_ERR(clks[i]));
343a607cb79259 Peter De Schrijver 2013-09-02  333  		}
343a607cb79259 Peter De Schrijver 2013-09-02  334  		if (!clks[i])
343a607cb79259 Peter De Schrijver 2013-09-02  335  			clks[i] = ERR_PTR(-EINVAL);
343a607cb79259 Peter De Schrijver 2013-09-02  336  	}
343a607cb79259 Peter De Schrijver 2013-09-02  337  
343a607cb79259 Peter De Schrijver 2013-09-02  338  	clk_data.clks = clks;
343a607cb79259 Peter De Schrijver 2013-09-02  339  	clk_data.clk_num = clk_num;
5d797111afe12e Dmitry Osipenko    2018-05-08  340  	of_clk_add_provider(np, clk_src_onecell_get, &clk_data);
6d5b988e7dc56b Stephen Warren     2013-11-05  341  
6d5b988e7dc56b Stephen Warren     2013-11-05  342  	rst_ctlr.of_node = np;
66b6f3d07454a6 Mikko Perttunen    2015-05-20  343  	rst_ctlr.nr_resets = periph_banks * 32 + num_special_reset;
6d5b988e7dc56b Stephen Warren     2013-11-05  344  	reset_controller_register(&rst_ctlr);
343a607cb79259 Peter De Schrijver 2013-09-02  345  }
343a607cb79259 Peter De Schrijver 2013-09-02  346  
66b6f3d07454a6 Mikko Perttunen    2015-05-20  347  void __init tegra_init_special_resets(unsigned int num,
66b6f3d07454a6 Mikko Perttunen    2015-05-20  348  				      int (*assert)(unsigned long),
66b6f3d07454a6 Mikko Perttunen    2015-05-20  349  				      int (*deassert)(unsigned long))
66b6f3d07454a6 Mikko Perttunen    2015-05-20  350  {
66b6f3d07454a6 Mikko Perttunen    2015-05-20  351  	num_special_reset = num;
66b6f3d07454a6 Mikko Perttunen    2015-05-20  352  	special_reset_assert = assert;
66b6f3d07454a6 Mikko Perttunen    2015-05-20  353  	special_reset_deassert = deassert;
66b6f3d07454a6 Mikko Perttunen    2015-05-20  354  }
66b6f3d07454a6 Mikko Perttunen    2015-05-20  355  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  356  void tegra_register_devclks(struct tegra_devclk *dev_clks, int num)
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  357  {
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  358  	int i;
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  359  
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  360  	for (i = 0; i < num; i++, dev_clks++)
73d37e4c7c4b9d Peter De Schrijver 2013-10-09 @361  		clk_register_clkdev(clks[dev_clks->dt_id], dev_clks->con_id,
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  362  				dev_clks->dev_id);
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26  363  
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26  364  	for (i = 0; i < clk_num; i++) {
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26  365  		if (!IS_ERR_OR_NULL(clks[i]))
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26 @366  			clk_register_clkdev(clks[i], __clk_get_name(clks[i]),
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26  367  				"tegra-clk-debug");
9f0030c8ad0ce3 Peter De Schrijver 2014-06-26  368  	}
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  369  }
73d37e4c7c4b9d Peter De Schrijver 2013-10-09  370  
b8700d506ac405 Peter De Schrijver 2013-10-14  371  struct clk ** __init tegra_lookup_dt_id(int clk_id,
b8700d506ac405 Peter De Schrijver 2013-10-14  372  					struct tegra_clk *tegra_clk)
b8700d506ac405 Peter De Schrijver 2013-10-14  373  {
b8700d506ac405 Peter De Schrijver 2013-10-14  374  	if (tegra_clk[clk_id].present)
b8700d506ac405 Peter De Schrijver 2013-10-14  375  		return &clks[tegra_clk[clk_id].dt_id];
b8700d506ac405 Peter De Schrijver 2013-10-14  376  	else
b8700d506ac405 Peter De Schrijver 2013-10-14  377  		return NULL;
b8700d506ac405 Peter De Schrijver 2013-10-14  378  }
b8700d506ac405 Peter De Schrijver 2013-10-14  379  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  380  static struct device_node *tegra_clk_get_of_node(struct clk_hw *hw)
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  381  {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  382  	struct device_node *np;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  383  	char *node_name;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  384  
28df1500f53874 Andy Shevchenko    2023-08-04  385  	node_name = kstrdup_and_replace(hw->init->name, '_', '-', GFP_KERNEL);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  386  	if (!node_name)
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  387  		return NULL;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  388  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  389  	for_each_child_of_node(tegra_car_np, np) {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  390  		if (!strcmp(np->name, node_name))
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  391  			break;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  392  	}
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  393  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  394  	kfree(node_name);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  395  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  396  	return np;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  397  }
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  398  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  399  struct clk *tegra_clk_dev_register(struct clk_hw *hw)
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  400  {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  401  	struct platform_device *pdev, *parent;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  402  	const char *dev_name = NULL;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  403  	struct device *dev = NULL;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  404  	struct device_node *np;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  405  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  406  	np = tegra_clk_get_of_node(hw);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  407  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  408  	if (!of_device_is_available(np))
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  409  		goto put_node;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  410  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  411  	dev_name = kasprintf(GFP_KERNEL, "tegra_clk_%s", hw->init->name);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  412  	if (!dev_name)
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  413  		goto put_node;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  414  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  415  	parent = of_find_device_by_node(tegra_car_np);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  416  	if (parent) {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  417  		pdev = of_platform_device_create(np, dev_name, &parent->dev);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  418  		put_device(&parent->dev);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  419  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  420  		if (!pdev) {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  421  			pr_err("%s: failed to create device for %pOF\n",
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  422  			       __func__, np);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  423  			goto free_name;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  424  		}
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  425  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  426  		dev = &pdev->dev;
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  427  		pm_runtime_enable(dev);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  428  	} else {
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  429  		WARN(1, "failed to find device for %pOF\n", tegra_car_np);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  430  	}
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  431  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  432  free_name:
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  433  	kfree(dev_name);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  434  put_node:
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  435  	of_node_put(np);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  436  
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01 @437  	return clk_register(dev, hw);
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  438  }
b1bc04a2ac5b15 Dmitry Osipenko    2021-12-01  439  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-03-26 21:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-24  1:57 [PATCHv2] firmware/tegra: add COMPILE_TEST Rosen Penev
2026-03-24  6:01 ` Mikko Perttunen
2026-03-24  6:42   ` Rosen Penev
2026-03-24 11:33     ` Thierry Reding
2026-03-26 19:35 ` kernel test robot
2026-03-26 19:35 ` kernel test robot
2026-03-26 21:51 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox