LINUX驱动分析之RTC(三)

 / *****************************************************************************************************/

声明:本博内容均由http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!
/****************************************************************************************************/


 

    函数把rtc驱动注册进了linux中,主要就是注册了对RTC的一些列操作,设置时间,设置闹钟等等,而这些操作都被包含在&s3c_rtcops中,我们来仔细观察这个家伙的全貌:

    static const struct rtc_class_ops s3c_rtcops = {

         .open                 = s3c_rtc_open,

         .release   = s3c_rtc_release,

         .read_time       = s3c_rtc_gettime,

         .set_time          = s3c_rtc_settime,

         .read_alarm     = s3c_rtc_getalarm,

         .set_alarm       = s3c_rtc_setalarm,

         .irq_set_freq   = s3c_rtc_setfreq,

         .irq_set_state = s3c_rtc_setpie,

         .proc                 = s3c_rtc_proc,

};

    是不是很清楚了呢?所有的RTC相关的操作全在里面。读出RTC时间,设置rtc时间,设置闹钟,读取闹钟,设置rtc频率参数等等,我就不一一分析了,无非就是一些对硬件寄存器的读写操作,千篇一律,搞驱动的兄弟和他们熟悉的不能在熟悉了。

    我们重点来看一个函数,那就是s3c_rtc_open

 

    在这个函数中我们发现只做了一件事:就是通过request_irq    RTC的两个终端注册进系统,我们来看看这2个中断函数:

    这2个函数都调用了同一个函数rtc_update_irq只是传进去的参数不一样而已,一个是闹钟中断,一个是系统时钟滴答中断。

进入代码分析:

392行:异步通知系统此中断的到来;

到这里,rtc-s3c.c已经分析完。

下面一节我们看看上层是如何和底层打交道的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值