[U-Boot] [PATCH 3/8] zynq: Add clk framework support to zynq timer

Michal Simek monstr at monstr.eu
Tue Jan 10 16:08:46 CET 2017


On 10.1.2017 15:54, Stefan.Herbrechtsmeier at weidmueller.com wrote:
>> -----Ursprüngliche Nachricht-----
>> Von: Michal Simek [mailto:monstr at monstr.eu]
>> Gesendet: Dienstag, 10. Januar 2017 15:10
>> An: Herbrechtsmeier, Stefan; u-boot at lists.denx.de
>> Cc: Albert Aribaud; Herbrechtsmeier, Stefan
>> Betreff: Re: [PATCH 3/8] zynq: Add clk framework support to zynq timer
>>
>> On 4.1.2017 13:27, stefan.herbrechtsmeier at weidmueller.com wrote:
>>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>>
>>> If available use the clock framework to calculate the clock rate of
>>> the zynq timer.
>>>
>>> Signed-off-by: Stefan Herbrechtsmeier
>>> <stefan.herbrechtsmeier at weidmueller.com>
>>> ---
>>>
>>>  arch/arm/mach-zynq/timer.c | 25 +++++++++++++++++++++++++
>>>  1 file changed, 25 insertions(+)
>>>
>>> diff --git a/arch/arm/mach-zynq/timer.c b/arch/arm/mach-zynq/timer.c
>>> index 8ff82dc..0335cbe 100644
>>> --- a/arch/arm/mach-zynq/timer.c
>>> +++ b/arch/arm/mach-zynq/timer.c
>>> @@ -1,4 +1,7 @@
>>>  /*
>>> + * Copyright (C) 2017 Weidmüller Interface GmbH & Co. KG
>>> + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>> + *
>>>   * Copyright (C) 2012 Michal Simek <monstr at monstr.eu>
>>>   * Copyright (C) 2011-2012 Xilinx, Inc. All rights reserved.
>>>   *
>>> @@ -25,8 +28,10 @@
>>>   * SPDX-License-Identifier:	GPL-2.0+
>>>   */
>>>
>>> +#include <clk.h>
>>>  #include <common.h>
>>>  #include <div64.h>
>>> +#include <dm.h>
>>>  #include <asm/io.h>
>>>  #include <asm/arch/hardware.h>
>>>  #include <asm/arch/clk.h>
>>> @@ -56,6 +61,26 @@ int timer_init(void)
>>>  			(TIMER_PRESCALE << SCUTIMER_CONTROL_PRESCALER_SHIFT)
>> |
>>>  			SCUTIMER_CONTROL_ENABLE_MASK;
>>>
>>> +#if defined(CONFIG_CLK) || defined(CONFIG_SPL_CLK)
>>> +	struct udevice *dev;
>>> +	struct clk clk;
>>> +	int ret;
>>> +
>>> +	ret = uclass_get_device_by_driver(UCLASS_CLK,
>>> +		DM_GET_DRIVER(zynq_clk), &dev);
>>> +	if (ret)
>>> +		return ret;
>>> +
>>> +	clk.id = cpu_6or4x_clk;
>>
>> This information is already present in DT file. What's the reason not
>> to take it from it?
> Because this is not a DM driver and I don't know the device node. This could be done if we move the driver to drivers/timer.
> 
>>
>>> +	ret = clk_request(dev, &clk);
>>> +	if (ret < 0)
>>> +		return ret;
>>> +
>>> +	gd->cpu_clk = clk_get_rate(&clk);
>>> +
>>> +	clk_free(&clk);
>>
>> Not clk expert but isn't there a way to handle it like it is handled
>> for other drivers? clk_get(), clk_get_rate()?
> This is the solution I found in other platform drivers. The clk_get function requires a DM device.

Ok fair enough. We can use it when driver is moved.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170110/6e93b62b/attachment.sig>


More information about the U-Boot mailing list