Message ID | 20221126191319.6404-2-samuel@sholland.org (mailing list archive) |
---|---|
State | Awaiting Upstream, archived |
Headers | show |
Series | clk: sunxi-ng: Allwinner R528/T113 clock support | expand |
On Sat, 26 Nov 2022 13:13:15 -0600 Samuel Holland <samuel@sholland.org> wrote: Hi, thanks for addressing this! > SUNXI_CCU already depends on ARCH_SUNXI, so adding the dependency to > individual SoC drivers is redundant. > > Signed-off-by: Samuel Holland <samuel@sholland.org> > --- > > drivers/clk/sunxi-ng/Kconfig | 43 ++++++++++++++++++------------------ > 1 file changed, 21 insertions(+), 22 deletions(-) > > diff --git a/drivers/clk/sunxi-ng/Kconfig b/drivers/clk/sunxi-ng/Kconfig > index 461537679c04..64cfa022e320 100644 > --- a/drivers/clk/sunxi-ng/Kconfig > +++ b/drivers/clk/sunxi-ng/Kconfig > @@ -14,43 +14,43 @@ config SUNIV_F1C100S_CCU > > config SUN20I_D1_CCU > tristate "Support for the Allwinner D1 CCU" > - default RISCV && ARCH_SUNXI > - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST > + default RISCV > + depends on RISCV || COMPILE_TEST I agree on the "depends" part: Indeed the guard symbol already covers that, so it's redundant. However I am not so sure about the "default" part: When ARCH_SUNXI is deselected, but COMPILE_TEST in enabled, we default to every CCU driver being built-in. I am not sure this is the intention, or at least expected when doing compile testing? > > config SUN20I_D1_R_CCU > tristate "Support for the Allwinner D1 PRCM CCU" > - default RISCV && ARCH_SUNXI > - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST > + default RISCV > + depends on RISCV || COMPILE_TEST > > config SUN50I_A64_CCU > tristate "Support for the Allwinner A64 CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST I wonder if this "depends" line was always wrong and should be fixed: We can compile a 32-bit ARM kernel and run it on an A64. Granted this requires a special bootloader or a hacked U-Boot (tried that), and reveals some other issues with the decompressor, but technically there is no 64-bit dependency in here. The same goes for all the other ARM64 CCUs: Cortex-A53s can run AArch32 in all exception levels. So shall we just completely remove the "depends" line for those, and let SUNXI_CCU do that job? Or use use !RISCV || COMPILE_TEST? Cheers, Andre > > config SUN50I_A100_CCU > tristate "Support for the Allwinner A100 CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST > > config SUN50I_A100_R_CCU > tristate "Support for the Allwinner A100 PRCM CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST > > config SUN50I_H6_CCU > tristate "Support for the Allwinner H6 CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST > > config SUN50I_H616_CCU > tristate "Support for the Allwinner H616 CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST > > config SUN50I_H6_R_CCU > tristate "Support for the Allwinner H6 and H616 PRCM CCU" > - default ARM64 && ARCH_SUNXI > - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default ARM64 > + depends on ARM64 || COMPILE_TEST > > config SUN4I_A10_CCU > tristate "Support for the Allwinner A10/A20 CCU" > @@ -71,8 +71,7 @@ config SUN6I_A31_CCU > > config SUN6I_RTC_CCU > tristate "Support for the Allwinner H616/R329 RTC CCU" > - default ARCH_SUNXI > - depends on ARCH_SUNXI || COMPILE_TEST > + default y > > config SUN8I_A23_CCU > tristate "Support for the Allwinner A23 CCU" > @@ -91,8 +90,8 @@ config SUN8I_A83T_CCU > > config SUN8I_H3_CCU > tristate "Support for the Allwinner H3 CCU" > - default MACH_SUN8I || (ARM64 && ARCH_SUNXI) > - depends on MACH_SUN8I || (ARM64 && ARCH_SUNXI) || COMPILE_TEST > + default MACH_SUN8I || ARM64 > + depends on MACH_SUN8I || ARM64 || COMPILE_TEST > > config SUN8I_V3S_CCU > tristate "Support for the Allwinner V3s CCU" > @@ -101,7 +100,7 @@ config SUN8I_V3S_CCU > > config SUN8I_DE2_CCU > tristate "Support for the Allwinner SoCs DE2 CCU" > - default MACH_SUN8I || (ARM64 && ARCH_SUNXI) > + default MACH_SUN8I || ARM64 > > config SUN8I_R40_CCU > tristate "Support for the Allwinner R40 CCU" > @@ -115,6 +114,6 @@ config SUN9I_A80_CCU > > config SUN8I_R_CCU > tristate "Support for Allwinner SoCs' PRCM CCUs" > - default MACH_SUN8I || (ARCH_SUNXI && ARM64) > + default MACH_SUN8I || ARM64 > > endif
On 12/2/22 18:14, Andre Przywara wrote: > On Sat, 26 Nov 2022 13:13:15 -0600 > Samuel Holland <samuel@sholland.org> wrote: > > Hi, > > thanks for addressing this! > >> SUNXI_CCU already depends on ARCH_SUNXI, so adding the dependency to >> individual SoC drivers is redundant. >> >> Signed-off-by: Samuel Holland <samuel@sholland.org> >> --- >> >> drivers/clk/sunxi-ng/Kconfig | 43 ++++++++++++++++++------------------ >> 1 file changed, 21 insertions(+), 22 deletions(-) >> >> diff --git a/drivers/clk/sunxi-ng/Kconfig b/drivers/clk/sunxi-ng/Kconfig >> index 461537679c04..64cfa022e320 100644 >> --- a/drivers/clk/sunxi-ng/Kconfig >> +++ b/drivers/clk/sunxi-ng/Kconfig >> @@ -14,43 +14,43 @@ config SUNIV_F1C100S_CCU >> >> config SUN20I_D1_CCU >> tristate "Support for the Allwinner D1 CCU" >> - default RISCV && ARCH_SUNXI >> - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST >> + default RISCV >> + depends on RISCV || COMPILE_TEST > > I agree on the "depends" part: Indeed the guard symbol already covers > that, so it's redundant. > However I am not so sure about the "default" part: When ARCH_SUNXI is > deselected, but COMPILE_TEST in enabled, we default to every CCU driver > being built-in. I am not sure this is the intention, or at least > expected when doing compile testing? SUNXI_CCU, which these depend on, is still "default ARCH_SUNXI", so if you have ARCH_SUNXI disabled, you only get any drivers if you manually enable SUNXI_CCU. I mentioned this in the patch 2 description, but maybe I should move that comment here. >> >> config SUN20I_D1_R_CCU >> tristate "Support for the Allwinner D1 PRCM CCU" >> - default RISCV && ARCH_SUNXI >> - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST >> + default RISCV >> + depends on RISCV || COMPILE_TEST >> >> config SUN50I_A64_CCU >> tristate "Support for the Allwinner A64 CCU" >> - default ARM64 && ARCH_SUNXI >> - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST >> + default ARM64 >> + depends on ARM64 || COMPILE_TEST > > I wonder if this "depends" line was always wrong and should be fixed: > We can compile a 32-bit ARM kernel and run it on an A64. Granted this > requires a special bootloader or a hacked U-Boot (tried that), and > reveals some other issues with the decompressor, but technically there > is no 64-bit dependency in here. > The same goes for all the other ARM64 CCUs: Cortex-A53s can run AArch32 > in all exception levels. I was trying to simplify things by hiding irrelevant options, and you bring up an edge case of an edge case. :) I am okay with relaxing the dependency, though I would want to leave them disabled by default for 32-bit kernels (excluding them from the change in patch 2). > So shall we just completely remove the "depends" line for those, and > let SUNXI_CCU do that job? Or use use !RISCV || COMPILE_TEST? That, or we could add MACH_SUN8I to the condition. I don't have a strong opinion. Regards, Samuel
On Fri, 2 Dec 2022 19:52:41 -0600 Samuel Holland <samuel@sholland.org> wrote: Hi Samuel, > On 12/2/22 18:14, Andre Przywara wrote: > > On Sat, 26 Nov 2022 13:13:15 -0600 > > Samuel Holland <samuel@sholland.org> wrote: > > > > Hi, > > > > thanks for addressing this! > > > >> SUNXI_CCU already depends on ARCH_SUNXI, so adding the dependency to > >> individual SoC drivers is redundant. > >> > >> Signed-off-by: Samuel Holland <samuel@sholland.org> > >> --- > >> > >> drivers/clk/sunxi-ng/Kconfig | 43 ++++++++++++++++++------------------ > >> 1 file changed, 21 insertions(+), 22 deletions(-) > >> > >> diff --git a/drivers/clk/sunxi-ng/Kconfig b/drivers/clk/sunxi-ng/Kconfig > >> index 461537679c04..64cfa022e320 100644 > >> --- a/drivers/clk/sunxi-ng/Kconfig > >> +++ b/drivers/clk/sunxi-ng/Kconfig > >> @@ -14,43 +14,43 @@ config SUNIV_F1C100S_CCU > >> > >> config SUN20I_D1_CCU > >> tristate "Support for the Allwinner D1 CCU" > >> - default RISCV && ARCH_SUNXI > >> - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST > >> + default RISCV > >> + depends on RISCV || COMPILE_TEST > > > > I agree on the "depends" part: Indeed the guard symbol already covers > > that, so it's redundant. > > However I am not so sure about the "default" part: When ARCH_SUNXI is > > deselected, but COMPILE_TEST in enabled, we default to every CCU driver > > being built-in. I am not sure this is the intention, or at least > > expected when doing compile testing? > > SUNXI_CCU, which these depend on, is still "default ARCH_SUNXI", so if > you have ARCH_SUNXI disabled, you only get any drivers if you manually > enable SUNXI_CCU. I mentioned this in the patch 2 description, but maybe > I should move that comment here. Yeah, I read this later on, I guess it's fine then. > > >> > >> config SUN20I_D1_R_CCU > >> tristate "Support for the Allwinner D1 PRCM CCU" > >> - default RISCV && ARCH_SUNXI > >> - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST > >> + default RISCV > >> + depends on RISCV || COMPILE_TEST > >> > >> config SUN50I_A64_CCU > >> tristate "Support for the Allwinner A64 CCU" > >> - default ARM64 && ARCH_SUNXI > >> - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST > >> + default ARM64 > >> + depends on ARM64 || COMPILE_TEST > > > > I wonder if this "depends" line was always wrong and should be fixed: > > We can compile a 32-bit ARM kernel and run it on an A64. Granted this > > requires a special bootloader or a hacked U-Boot (tried that), and > > reveals some other issues with the decompressor, but technically there > > is no 64-bit dependency in here. > > The same goes for all the other ARM64 CCUs: Cortex-A53s can run AArch32 > > in all exception levels. > > I was trying to simplify things by hiding irrelevant options, and you > bring up an edge case of an edge case. :) I am okay with relaxing the > dependency, though I would want to leave them disabled by default for > 32-bit kernels (excluding them from the change in patch 2). Yes, definitely, that was the idea. And sorry for being a nuisance, but I think this "depends on ARCH_SUNXI" here is and was always misplaced. In contrast to things like "depends on PCI" or "depends on GPIOLIB", there is no real dependency on ARCH_SUNXI or even ARM/RISCV here, it's more a "only useful on ARCH_SUNXI". And this ARM vs ARM64 was just another rationale for not being overzealous with the dependency. But I see that this is an orthogonal discussion to this patch, so this should not block it. I will meditate over both patches again, since I have the gut feeling that the end result is fine. Cheers, Andre > > > So shall we just completely remove the "depends" line for those, and > > let SUNXI_CCU do that job? Or use use !RISCV || COMPILE_TEST? > > That, or we could add MACH_SUN8I to the condition. I don't have a strong > opinion. > > Regards, > Samuel >
Dne sobota, 26. november 2022 ob 20:13:15 CET je Samuel Holland napisal(a): > SUNXI_CCU already depends on ARCH_SUNXI, so adding the dependency to > individual SoC drivers is redundant. > > Signed-off-by: Samuel Holland <samuel@sholland.org> Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com> Best regards, Jernej
diff --git a/drivers/clk/sunxi-ng/Kconfig b/drivers/clk/sunxi-ng/Kconfig index 461537679c04..64cfa022e320 100644 --- a/drivers/clk/sunxi-ng/Kconfig +++ b/drivers/clk/sunxi-ng/Kconfig @@ -14,43 +14,43 @@ config SUNIV_F1C100S_CCU config SUN20I_D1_CCU tristate "Support for the Allwinner D1 CCU" - default RISCV && ARCH_SUNXI - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST + default RISCV + depends on RISCV || COMPILE_TEST config SUN20I_D1_R_CCU tristate "Support for the Allwinner D1 PRCM CCU" - default RISCV && ARCH_SUNXI - depends on (RISCV && ARCH_SUNXI) || COMPILE_TEST + default RISCV + depends on RISCV || COMPILE_TEST config SUN50I_A64_CCU tristate "Support for the Allwinner A64 CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN50I_A100_CCU tristate "Support for the Allwinner A100 CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN50I_A100_R_CCU tristate "Support for the Allwinner A100 PRCM CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN50I_H6_CCU tristate "Support for the Allwinner H6 CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN50I_H616_CCU tristate "Support for the Allwinner H616 CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN50I_H6_R_CCU tristate "Support for the Allwinner H6 and H616 PRCM CCU" - default ARM64 && ARCH_SUNXI - depends on (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default ARM64 + depends on ARM64 || COMPILE_TEST config SUN4I_A10_CCU tristate "Support for the Allwinner A10/A20 CCU" @@ -71,8 +71,7 @@ config SUN6I_A31_CCU config SUN6I_RTC_CCU tristate "Support for the Allwinner H616/R329 RTC CCU" - default ARCH_SUNXI - depends on ARCH_SUNXI || COMPILE_TEST + default y config SUN8I_A23_CCU tristate "Support for the Allwinner A23 CCU" @@ -91,8 +90,8 @@ config SUN8I_A83T_CCU config SUN8I_H3_CCU tristate "Support for the Allwinner H3 CCU" - default MACH_SUN8I || (ARM64 && ARCH_SUNXI) - depends on MACH_SUN8I || (ARM64 && ARCH_SUNXI) || COMPILE_TEST + default MACH_SUN8I || ARM64 + depends on MACH_SUN8I || ARM64 || COMPILE_TEST config SUN8I_V3S_CCU tristate "Support for the Allwinner V3s CCU" @@ -101,7 +100,7 @@ config SUN8I_V3S_CCU config SUN8I_DE2_CCU tristate "Support for the Allwinner SoCs DE2 CCU" - default MACH_SUN8I || (ARM64 && ARCH_SUNXI) + default MACH_SUN8I || ARM64 config SUN8I_R40_CCU tristate "Support for the Allwinner R40 CCU" @@ -115,6 +114,6 @@ config SUN9I_A80_CCU config SUN8I_R_CCU tristate "Support for Allwinner SoCs' PRCM CCUs" - default MACH_SUN8I || (ARCH_SUNXI && ARM64) + default MACH_SUN8I || ARM64 endif
SUNXI_CCU already depends on ARCH_SUNXI, so adding the dependency to individual SoC drivers is redundant. Signed-off-by: Samuel Holland <samuel@sholland.org> --- drivers/clk/sunxi-ng/Kconfig | 43 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-)