clock cdev1 routing/parenting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Colin, Eric,

For the Tegra audio driver, I need to add clock cdev1 to tegra2_clocks.c to
for-next. I can mostly copy this from Linux-tegra-2.6.36, but I'd like
guidance on one issue:

Namely, clock cdev1 is a pin on the Tegra package intended to drive an audio
codec's master clock input. Being a pin, the pinmux logic controls whether this
pin drives signal clk_m, pll_a_out0, pll_m_out1, or audio. The control of this
mux is already implemented by the pinmux module.

However, I could equally add a tegra2_cdev_clk_set_parent function into the
clock's clk_ops (and in fact have done so locally). The advantage of this is
the clock would shown up in /sys/kernel/debug/clock/clock_tree, as well as
feeding into the clock tree validation logic in the clock driver.

However, this would then this mux could be configured in two places; the clock
API and the pinmux API. In particular, I found that board-harmony.c calls:

    tegra_clk_init_from_table(harmony_clk_init_table);

before it calls:

    harmony_pinmux_init();

and hence any parenting information in harmony_clk_init_table[] is overridden
by that in harmony_pinmux[] (this was the cause of the noisy audio issue
discussed in another thread; the wrong clock was routed out this pin).

What's your take; should I simply not implement a set_parent method for this
clock? Perhaps harmony_pinmux[] could have some mux field value meaning "don't
change the mux"?

Thanks.

-- 
nvpublic

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux