X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cmd%2Fclk.c;h=5402c87de7295ca8bd5f374a788b360dcc1e5a7e;hb=52cbac9b06bf247dda8ff261b15e3c13f88188db;hp=52b25405ce6e2356bcab6a04c490289c089f8f7e;hpb=ff719a73d93196d6f1d9456bdc40f48be4f91484;p=oweals%2Fu-boot.git diff --git a/cmd/clk.c b/cmd/clk.c index 52b25405ce..5402c87de7 100644 --- a/cmd/clk.c +++ b/cmd/clk.c @@ -1,16 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2013 Xilinx, Inc. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include +#if defined(CONFIG_DM) && defined(CONFIG_CLK) +#include +#include +#endif int __weak soc_clk_dump(void) { +#if defined(CONFIG_DM) && defined(CONFIG_CLK) + struct udevice *dev; + struct uclass *uc; + struct clk clk; + int ret; + ulong rate; + + /* Device addresses start at 1 */ + ret = uclass_get(UCLASS_CLK, &uc); + if (ret) + return ret; + + uclass_foreach_dev(dev, uc) { + memset(&clk, 0, sizeof(clk)); + ret = device_probe(dev); + if (ret) + goto noclk; + + ret = clk_request(dev, &clk); + if (ret) + goto noclk; + + rate = clk_get_rate(&clk); + clk_free(&clk); + + if (rate == -ENODEV) + goto noclk; + + printf("%-30.30s : %lu Hz\n", dev->name, rate); + continue; + noclk: + printf("%-30.30s : ? Hz\n", dev->name); + } + + return 0; +#else puts("Not implemented\n"); return 1; +#endif } static int do_clk_dump(cmd_tbl_t *cmdtp, int flag, int argc,