Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The generic Linux clock infra-structure is documented in <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/clk.txt" rel="nofollow">clk.txt</a>. For the ARM, Sasha Hauer created the <em>common clock</em> frame-work recently (last two years). The clocks are structured in a <em>parent/child</em> relation. Typical SOC (system on chip) has main clocks created from a crystal which are either scaled down (with a counter) or up with a PLL and maybe both. They hierarchy is important for power savings. Usually devices are only using one of the <em>lowest/youngest</em> clocks in the tree. When a device requests a clock, the infra-structure ensures that all parents are started.</p> <p>Previously (legacy), clocks were passed from the <em>machine file</em> (reference <code>arch/arm/Board***/</code>) to the driver/device via platform data; ultimately through <code>platform_device_register()</code>. Sometimes, the clocks were/are derived from the device name. For example the <em>fec</em> driver might use <em>fec-clk</em>. This did not work well for <strong>multiple machine</strong> configurations, so the <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/driver-model/platform.txt" rel="nofollow">platform data</a> mechanism was introduced. Even newer machinery uses a <strong>dt</strong> (or device table). Here, there are no machine files, only a device table that is passed from the boot loader to the kernel. In this case, the <strong>dt</strong> tells the driver which clock to use. </p> <p>Originally, the <code>dev_id</code> and <code>con_id</code> were to relate clocks for a <strong>device</strong> and clocks that are <strong>connected</strong> (parent/child). Usually either <code>dev_id</code> or <code>con_id</code> are NULL as only one aspect is needed. I think that this view was found wanting; especially for starting an entire <strong>clock chain</strong>. So, depending on the Linux version, the answer varies. Even in the current source, some platforms (like <code>orion</code>) still use an older mechanism. I don't think <code>orion</code> supports <strong><a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree" rel="nofollow">device trees</a></strong>.</p> <p>Specific answers will depend on your Linux version and the machine (and possibly platform) in use.<br/>See also: <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/clk/clkdev.c" rel="nofollow">clkdev.c</a>, <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/clk/clk.c" rel="nofollow">clk.c</a></p> <p><strong>Open source - There are many mutations. They all have a different plan.</strong></p> <p>Reference: <a href="http://lists.linaro.org/pipermail/linaro-dev/2011-October/007952.html" rel="nofollow">Russell Kings message on ARM clkdev</a>, original did not imply ordering.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload