linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Common/typical fractional divider HW API
@ 2016-02-05 14:49 Mason
  2016-02-05 15:05 ` Andy Shevchenko
  0 siblings, 1 reply; 8+ messages in thread
From: Mason @ 2016-02-05 14:49 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

AFAICT, the clk-fractional-divider driver implements the following
hardware API:

  M and N are two fields in the same register.
  DIV = M / N

Is this HW API common/typical in the embedded world?
in the PC world?


My hardware uses a slightly weird (to me) API:

  I = 0-255 (8 bits)
  F = 0-15  (4 bits)

  I = 0 => DIV = +INF
  I = 1 => DIV = 1 + F/(32-F)
  I > 1 => DIV = I + F/16

Is this HW API common/typical in the embedded world?
(Perhaps just the linear part for I > 1)

I see two downsides to this API:

1) I = 1 is a special case
2) A lot of the value space is wasted on large values.

For example, when I = 250, we don't really care about 250.0625, 250.125,
etc, or even nearby integer values, for that matter.

I think it's better to have a distribution with high density in small
values, and low density in high values (sort of like floating point).

For example:

  I = 0-15  (4 bits)
  F = 0-255 (8 bits)
  DIV = 2^I * (1 + F/256)

(We could probably even shave 2-4 bits on F.)

Are there downsides to this HW API?
Is this HW API common/typical in the embedded world?

Regards.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-02-15 15:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-05 14:49 Common/typical fractional divider HW API Mason
2016-02-05 15:05 ` Andy Shevchenko
2016-02-05 16:01   ` Mason
2016-02-05 16:12     ` Andy Shevchenko
2016-02-05 16:29       ` Mason
2016-02-05 16:43         ` Andy Shevchenko
2016-02-07 16:04           ` Mason
2016-02-15 15:35             ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).