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

Stefan Roese sr at denx.de
Tue Aug 23 10:51:08 CEST 2022


On 23.08.22 10:47, Pali Rohár wrote:
> On Tuesday 23 August 2022 10:24:10 michael at walle.cc wrote:
>> Am 2022-08-23 10:17, schrieb michael at walle.cc:
>>> Am 2022-08-23 07:02, schrieb Stefan Roese:
>>>> 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?
>>>
>>> I guess soc.h should also include <asm/io.h> because now it is
>>> using that hidden readl().
>>
>> ..which isn't working because it somehow finds its way to the
>> hosttools. Hum.
> 
> Or you can include it in ds109/ds109.c file.

Yes, this works. I'll squash this in, while applying - if everything
else is okay.

Thanks,
Stefan


More information about the U-Boot mailing list