您的位置:首页 > 运维架构 > Linux

linux设备驱动程序之时钟管理(4)----原来是孩儿他爹娘

2012-09-03 14:08 218 查看
http://www.uneeded.net

小时候看过一个电视剧叫做《小龙人》,你别说,其实还是挺励志的,为了找到自己的妈妈,费劲千辛万苦,这果断是一部好的电视剧,而现在的孩子们在看什么呢?《轩辕剑》,天天神啊,魔啊,虚幻,华而不实的东东,除了商业价值,能有什么对孩子们有营养的东东?

又想起了那句,人是人他妈生的,妖是妖他妈生的,那么我们前面用clk_get获取的时钟时在哪有的,天然就有?必须不可能啊,凡是得讲个科学道理啊,怎能无中生有???

镜头转向s3c2410-clock.c



对,你没看错,就是在这儿定义的,看见木有,什么name啦,parent啦,全是在这儿定义好的,如果你够仔细你会发现,在uart那块儿成员多一个,是什么呢?对,是devname,呵呵。。一个设备可能好多串口呢?我们咋知道哪个串口呢?嘿嘿。小伙儿,你有福气了,就是用devname驱分的。

可能你会和我一样有好奇心,他们的父亲到底是谁,好吧,满足你,于是梦又回到了clock.c



我去。你看到了,这就是我们之前第一篇讲的,什么fclk,pclk,hclk啦,他们就是那些clock的parent,呵呵。。当然,足够信心的你,也一定看到了clk_mpll,什么是mpll,upll就不用我重复了吧,如果你是在想不起,看本系列第一篇吧,好吗?亲。而他们两个正是clk_f,clk_usb_bus的parent

好的, 它的爹妈我们找到了,那你可能又想了,那他们是在什么时候被注册的呢?就是他们什么时候出生的呢?我负责任的告诉你,他们再一个叫做s3c24xx_register_baseclocks中注册的,我去。。你不是想问s3c24xx_register_baseclocks在哪调用的吧?我只能说你能不能动俩下鼠标,很好搜的,亲。

我给一下调用到这儿的顺序吧:注意蓝色部分是顺序啊。。切记



看到了就是smdk2410_map_io函数



看到了,是s3c24xx_init_io函数:


看到了,最后一样,cpu_ids,函数的内部就不分析了哈,咱有空再看,



看到了,是s3c2410_init_clocks函数



看到了?是s3c24xx_register_baseclocks



我滴个妈呀,终于到了终点。。兄弟,如果这个过程你还没清楚,你找我来吧,咱来抱头痛哭一顿,然后改行吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: