Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1357362
| From | Murali Karicheri <m-karicheri2@ti.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: Export clocks_calc_mult_shift() function |
| Date | 2016-03-14 16:30 +0100 |
| Message-ID | <rcCBt-5C6-29@gated-at.bofh.it> (permalink) |
| References | <rayiC-7ah-11@gated-at.bofh.it> |
| Organization | Texas Instruments |
On 03/08/2016 05:25 PM, Murali Karicheri wrote:
> Hi,
>
> I found a patch posted sometime back to export the clocksource
> function clocks_calc_mult_shift() so that it can be called by
> drivers that are dynamically loadable. I have not seen any
> comment against this. Wondering why this is not merged. We require
> this function exported for use in our driver as well. Can you merge
> the patch please. Or do you suggest me to repost the same?
>
> http://lkml.iu.edu/hypermail/linux/kernel/1502.2/01641.html
>
> Thanks
>
John,
Some reason, your response didn't make into my inbox. So I am
reproducing it below.
>Why would the clocksource driver need to calculate the hz/shift value
>instead of using the clocksource_register_hz/khz functions?
>
>thanks
>-john
John,
In this use case, the timestamp for Tx/Rx is generated by a firmware
that attach the timestamp raw count to the packet meta data when the
same is received from the Packet Accelerator h/w at the ingress.
We need to convert this raw count value to nano second and use a code
like this.
/* Convert a raw PA timer count to nanoseconds
*/
static inline u64 tstamp_raw_to_ns(struct pa_core_device *core_dev, u32 lo,
u32 hi)
{
u32 mult = core_dev->timestamp_info.mult;
u32 shift = core_dev->timestamp_info.shift;
u64 result;
/* Minimize overflow errors by doing this in pieces */
result = ((u64)lo * mult) >> shift;
result += ((u64)hi << (32 - shift)) * mult;
return result;
}
The mult, shift values are obtained using the existing clocks_calc_mult_shift()
that will not work, if our driver is built as a dynamically loadable module
as the symbol is not exported.
Is there an alternative way of doing this without exporting this function.
clocksource_register_hz/khz() can't help in this, right?
--
Murali Karicheri
Linux Kernel, Keystone
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
Export clocks_calc_mult_shift() function Murali Karicheri <m-karicheri2@ti.com> - 2016-03-08 23:30 +0100 Re: Export clocks_calc_mult_shift() function John Stultz <john.stultz@linaro.org> - 2016-03-09 00:00 +0100 Re: Export clocks_calc_mult_shift() function Murali Karicheri <m-karicheri2@ti.com> - 2016-03-14 16:30 +0100
csiph-web