[PATCH 02/22] arm: kirkwood: 88f6281: Detect CONFIG_SYS_TCLK from SAR register

Stefan Roese sr at denx.de
Tue Aug 23 07:02:01 CEST 2022


Hi Michael,

On 17.08.22 21:37, Michael Walle wrote:
> From: Pali Rohár <pali at kernel.org>
> 
> Bit 21 in SAR register specifies if TCLK is running at 166 MHz or 200 MHz.
> This information is undocumented in public Marvell Kirkwood Functional
> Specifications [2], but is available in Linux v3.15 kirkwood code [1].
> 
> Commit 8ac303d49f89 ("arm: kirkwood: Do not overwrite CONFIG_SYS_TCLK")
> broke support for Marvell 88F6281 SoCs because it was expected that all
> those SoCs have TCLK running at 200 MHz as specified in Marvell 88F6281
> Hardware Specifications [3].
> 
> Fix broken support for 88F6281 by detecting CONFIG_SYS_TCLK from SAR
> register, like it was doing Linux v3.15.
> 
> [1] - https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm/mach-kirkwood/common.c?h=v3.15#n542
> [2] - https://web.archive.org/web/20130730091033/http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
> [3] - https://web.archive.org/web/20120620073511/http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F6281_OpenSource.pdf
> 
> Fixes: 8ac303d49f89 ("arm: kirkwood: Do not overwrite CONFIG_SYS_TCLK")
> Signed-off-by: Pali Rohár <pali at kernel.org>

I've applied your patch series on master (from yesterday) and see
these error(s):

$ make ds109_defconfig
$ make -sj
...
In file included from ./arch/arm/include/asm/arch/config.h:18,
                  from include/configs/mv-common.h:58,
                  from include/configs/ds109.h:14,
                  from include/config.h:4,
                  from include/common.h:16,
                  from board/Synology/ds109/ds109.c:8:
board/Synology/ds109/ds109.c: In function 'reset_misc':
./arch/arm/include/asm/arch/kw88f6281.h:18:43: warning: implicit 
declaration of function 'readl' [-Wimplicit-function-declaration]
    18 | #define CONFIG_SYS_TCLK                 ((readl(CONFIG_SAR_REG) 
& BIT(21)) ? \
       |                                           ^~~~~
include/configs/mv-common.h:36:41: note: in expansion of macro 
'CONFIG_SYS_TCLK'
    36 | #define CONFIG_SYS_NS16550_CLK          CONFIG_SYS_TCLK
       |                                         ^~~~~~~~~~~~~~~
board/Synology/ds109/ds109.c:111:36: note: in expansion of macro 
'CONFIG_SYS_NS16550_CLK'
   111 |                                    CONFIG_SYS_NS16550_CLK, 9600);
       |                                    ^~~~~~~~~~~~~~~~~~~~~~
/opt/kernel.org/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-ld.bfd: 
board/Synology/ds109/ds109.o: in function `reset_misc':
/home/stefan/git/u-boot/u-boot-marvell/board/Synology/ds109/ds109.c:111: 
undefined reference to `readl'
make: *** [Makefile:1823: u-boot] Error 1

Could you please take a look and fix this?

Thanks,
Stefan

> ---
>   arch/arm/mach-kirkwood/include/mach/kw88f6281.h | 3 ++-
>   arch/arm/mach-kirkwood/include/mach/soc.h       | 2 ++
>   2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-kirkwood/include/mach/kw88f6281.h b/arch/arm/mach-kirkwood/include/mach/kw88f6281.h
> index 87406081cf..f86cd0bb60 100644
> --- a/arch/arm/mach-kirkwood/include/mach/kw88f6281.h
> +++ b/arch/arm/mach-kirkwood/include/mach/kw88f6281.h
> @@ -15,6 +15,7 @@
>   #define KW_REGS_PHY_BASE		KW88F6281_REGS_PHYS_BASE
>   
>   /* TCLK Core Clock definition */
> -#define CONFIG_SYS_TCLK	200000000 /* 200MHz */
> +#define CONFIG_SYS_TCLK			((readl(CONFIG_SAR_REG) & BIT(21)) ? \
> +					166666667 : 200000000)
>   
>   #endif /* _ASM_ARCH_KW88F6281_H */
> diff --git a/arch/arm/mach-kirkwood/include/mach/soc.h b/arch/arm/mach-kirkwood/include/mach/soc.h
> index 1d7f2828cd..5f545c6f43 100644
> --- a/arch/arm/mach-kirkwood/include/mach/soc.h
> +++ b/arch/arm/mach-kirkwood/include/mach/soc.h
> @@ -62,6 +62,8 @@
>   #define MVCPU_WIN_ENABLE	KWCPU_WIN_ENABLE
>   #define MVCPU_WIN_DISABLE	KWCPU_WIN_DISABLE
>   
> +#define CONFIG_SAR_REG		(KW_MPP_BASE + 0x0030)
> +
>   #if defined (CONFIG_KW88F6281)
>   #include <asm/arch/kw88f6281.h>
>   #elif defined (CONFIG_KW88F6192)

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list