Hi,
I'm trying to get things set up to use TIMER4 (or 5, 6, or 7) to provide an external clock source to another component and I'm having some trouble. For now I'm happy with just getting the standard 24khz clock, though I may want to be able to modify the frequency in the future.
I'm using the Yocto Project (Dora) to build my images and the straight TI kernels from the meta-ti layer (linux-ti-staging_3.12) with a static devicetree. I've customized my devicetree enough that I'm somewhat comfortable with devicetree configs, but I know I'm a long way from having real devicetree-fu. That said, I've added the following in an attempt to get TIMER4 to come up:
In the am33xx_pinmux section:
timer4_pins: pinmux_timer4_pins {
pinctrl-single,pins = <
0x90 0x12 /* gpmc_advn_ale as TIMER4, OUTPUT_PULLUP | MODE2 */
>;
};
And further down (note: I'm not certain this is necessary or correct, but it was a shot in the dark):
&timer4_fck {
pinctrl-names = "default";
pinctrl-0 = <&timer4_pins>;
status = "okay";
};
I sadly don't have a scope to verify clock on the TIMER4 pin, but my guess is that something's not qorking right from the following reported in /sys/kernel/debug/clk/clk_
summary (note: I clipped bit after the relevant part):
root@beaglebone:/sys/kernel/debug/clk# more clk_summary
clock enable_cnt prepare_cnt rate
---------------------------------------------------------------------
tclkin_ck 0 0 12000000
virt_26000000_ck 0 0 26000000
virt_25000000_ck 0 0 25000000
virt_24000000_ck 1 1 24000000
sys_clkin_ck 9 23 24000000
dpll_mpu_ck 1 1 300000000
dpll_mpu_m2_ck 4 4 300000000
timer6_fck 0 1 24000000
timer3_fck 0 1 24000000
dbg_sysclk_ck 0 1 24000000
timer7_fck 0 1 24000000
timer5_fck 0 1 24000000
timer4_fck 0 1 24000000
timer2_fck 1 1 24000000
timer1_fck 1 1 24000000
I also haven't seen the device that needs the clocking initialize properly yet, so that's another tipoff.
Maybe related, I'm also seeing the following in the dmesg:
[ 0.132509] platform mpu.1: FIXME: clock-name 'fck' DOES NOT exist in dt!
Any help or pointers would be appreciated. I've tried looking at section 20 in the AM335x TRM and I get the feeling there's just a register setting or two that need to be done, but I'm just beginning to learn the hardware end of the universe after many years as a UN*X guy, so I got a bit lost in trying to figure out how to do it.
Thanks,
-d