diff mbox series

[v1,4/6] clk: tegra: Add stubs needed for compile testing

Message ID 20210912202907.28471-5-digetx@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show
Series Tegra cpuidle driver fixes and improvements for 5.16 | expand

Commit Message

Dmitry Osipenko Sept. 12, 2021, 8:29 p.m. UTC
Add stubs needed for compile-testing of tegra-cpuidle driver.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 include/linux/clk/tegra.h | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Thierry Reding Oct. 4, 2021, 7:33 p.m. UTC | #1
On Sun, Sep 12, 2021 at 11:29:05PM +0300, Dmitry Osipenko wrote:
> Add stubs needed for compile-testing of tegra-cpuidle driver.
> 
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
>  include/linux/clk/tegra.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
> index d128ad1570aa..9bd06d8a5436 100644
> --- a/include/linux/clk/tegra.h
> +++ b/include/linux/clk/tegra.h
> @@ -42,7 +42,11 @@ struct tegra_cpu_car_ops {
>  #endif
>  };
>  
> +#ifdef CONFIG_ARCH_TEGRA
>  extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
> +#else
> +static struct tegra_cpu_car_ops *tegra_cpu_car_ops __maybe_unused;
> +#endif

Ugh... this one seems a bit over the top, to be honest. The only place
where this seems to be used is in arch/arm/mach-tegra/pm.c, but that
already uses one of the stubs from include/linux/clk/tegra.h, so I'm
wondering if we can't define that latter stub in a way to make it
unnecessary to declare this bogus pointer.

I'll play around with this a little bit.

Thierry
Thierry Reding Oct. 4, 2021, 8:02 p.m. UTC | #2
On Mon, Oct 04, 2021 at 09:33:57PM +0200, Thierry Reding wrote:
> On Sun, Sep 12, 2021 at 11:29:05PM +0300, Dmitry Osipenko wrote:
> > Add stubs needed for compile-testing of tegra-cpuidle driver.
> > 
> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> > ---
> >  include/linux/clk/tegra.h | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
> > index d128ad1570aa..9bd06d8a5436 100644
> > --- a/include/linux/clk/tegra.h
> > +++ b/include/linux/clk/tegra.h
> > @@ -42,7 +42,11 @@ struct tegra_cpu_car_ops {
> >  #endif
> >  };
> >  
> > +#ifdef CONFIG_ARCH_TEGRA
> >  extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
> > +#else
> > +static struct tegra_cpu_car_ops *tegra_cpu_car_ops __maybe_unused;
> > +#endif
> 
> Ugh... this one seems a bit over the top, to be honest. The only place
> where this seems to be used is in arch/arm/mach-tegra/pm.c, but that
> already uses one of the stubs from include/linux/clk/tegra.h, so I'm
> wondering if we can't define that latter stub in a way to make it
> unnecessary to declare this bogus pointer.
> 
> I'll play around with this a little bit.

The below does the trick for me as well:

--- >8 ---
diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
index d128ad1570aa..d261db7e6060 100644
--- a/include/linux/clk/tegra.h
+++ b/include/linux/clk/tegra.h
@@ -42,6 +42,7 @@ struct tegra_cpu_car_ops {
 #endif
 };

+#ifdef CONFIG_ARCH_TEGRA
 extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;

 static inline void tegra_wait_cpu_in_reset(u32 cpu)
@@ -83,6 +84,27 @@ static inline void tegra_disable_cpu_clock(u32 cpu)

 	tegra_cpu_car_ops->disable_clock(cpu);
 }
+#else
+static inline void tegra_wait_cpu_in_reset(u32 cpu)
+{
+}
+
+static inline void tegra_put_cpu_in_reset(u32 cpu)
+{
+}
+
+static inline void tegra_cpu_out_of_reset(u32 cpu)
+{
+}
+
+static inline void tegra_enable_cpu_clock(u32 cpu)
+{
+}
+
+static inline void tegra_disable_cpu_clock(u32 cpu)
+{
+}
+#endif

 #ifdef CONFIG_PM_SLEEP
 static inline bool tegra_cpu_rail_off_ready(void)
--- >8 ---

Do you mind if I replace your version with that? I think that's a little
bit cleaner because it should be easier for the compiler to completely
compile it out.

Thierry
Dmitry Osipenko Oct. 4, 2021, 8:41 p.m. UTC | #3
04.10.2021 23:02, Thierry Reding пишет:
> On Mon, Oct 04, 2021 at 09:33:57PM +0200, Thierry Reding wrote:
>> On Sun, Sep 12, 2021 at 11:29:05PM +0300, Dmitry Osipenko wrote:
>>> Add stubs needed for compile-testing of tegra-cpuidle driver.
>>>
>>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>>> ---
>>>  include/linux/clk/tegra.h | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
>>> index d128ad1570aa..9bd06d8a5436 100644
>>> --- a/include/linux/clk/tegra.h
>>> +++ b/include/linux/clk/tegra.h
>>> @@ -42,7 +42,11 @@ struct tegra_cpu_car_ops {
>>>  #endif
>>>  };
>>>  
>>> +#ifdef CONFIG_ARCH_TEGRA
>>>  extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
>>> +#else
>>> +static struct tegra_cpu_car_ops *tegra_cpu_car_ops __maybe_unused;
>>> +#endif
>>
>> Ugh... this one seems a bit over the top, to be honest. The only place
>> where this seems to be used is in arch/arm/mach-tegra/pm.c, but that
>> already uses one of the stubs from include/linux/clk/tegra.h, so I'm
>> wondering if we can't define that latter stub in a way to make it
>> unnecessary to declare this bogus pointer.
>>
>> I'll play around with this a little bit.
> 
> The below does the trick for me as well:
> 
> --- >8 ---
> diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
> index d128ad1570aa..d261db7e6060 100644
> --- a/include/linux/clk/tegra.h
> +++ b/include/linux/clk/tegra.h
> @@ -42,6 +42,7 @@ struct tegra_cpu_car_ops {
>  #endif
>  };
> 
> +#ifdef CONFIG_ARCH_TEGRA
>  extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
> 
>  static inline void tegra_wait_cpu_in_reset(u32 cpu)
> @@ -83,6 +84,27 @@ static inline void tegra_disable_cpu_clock(u32 cpu)
> 
>  	tegra_cpu_car_ops->disable_clock(cpu);
>  }
> +#else
> +static inline void tegra_wait_cpu_in_reset(u32 cpu)
> +{
> +}
> +
> +static inline void tegra_put_cpu_in_reset(u32 cpu)
> +{
> +}
> +
> +static inline void tegra_cpu_out_of_reset(u32 cpu)
> +{
> +}
> +
> +static inline void tegra_enable_cpu_clock(u32 cpu)
> +{
> +}
> +
> +static inline void tegra_disable_cpu_clock(u32 cpu)
> +{
> +}
> +#endif
> 
>  #ifdef CONFIG_PM_SLEEP
>  static inline bool tegra_cpu_rail_off_ready(void)
> --- >8 ---
> 
> Do you mind if I replace your version with that? I think that's a little
> bit cleaner because it should be easier for the compiler to completely
> compile it out.

I don't mind, please choose what you prefer more. This was one of the
first variants of this patch, it adds more lines and it won't be
compiled with ARCH_TEGRA=n and COMPILE_TEST=n anyways.
diff mbox series

Patch

diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
index d128ad1570aa..9bd06d8a5436 100644
--- a/include/linux/clk/tegra.h
+++ b/include/linux/clk/tegra.h
@@ -42,7 +42,11 @@  struct tegra_cpu_car_ops {
 #endif
 };
 
+#ifdef CONFIG_ARCH_TEGRA
 extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
+#else
+static struct tegra_cpu_car_ops *tegra_cpu_car_ops __maybe_unused;
+#endif
 
 static inline void tegra_wait_cpu_in_reset(u32 cpu)
 {