zoukankan      html  css  js  c++  java
  • am335x Watchdog 生效导致 LAN8710A action 异常

    原因是因为 watchdog 生效的时候,产生的 reset 信号,只有 2.5us 左右,太短了,导致 LAN8710a 未完全重启

    • 在 kernel watchdog 里面增加下面的代码即可

         86 static void omap_wdt_enable(struct omap_wdt_dev *wdev)
         87 {
         88     void __iomem *base = wdev->base;
         89     static void *prm_reg_mem;
         90
    
        // 增加下面控制寄存器的代码,意思就是将 reset 下拉时间延长
         91 #define PRM_REG_MEM  0x44E00F00
         92
         93     if (!request_mem_region(PRM_REG_MEM, 8, "prm_reg_mem")){
         94         printk("request mem error
    ");
         95         goto JUMP;
         96     }
         97     prm_reg_mem = ioremap(PRM_REG_MEM, 8);
         98
         99     __raw_writel(0xff, prm_reg_mem + 4);
        100     /* __raw_writel(0x1, prm_reg_mem); */
        101     /* reset code */
        102
        103     iounmap(prm_reg_mem);
        104     release_mem_region(PRM_REG_MEM, 8);
        105
        106 JUMP:
        107     /* Sequence to enable the watchdog */
        108     __raw_writel(0xBBBB, base + OMAP_WATCHDOG_SPR);
        109     while ((__raw_readl(base + OMAP_WATCHDOG_WPS)) & 0x10)
        // ...
    
    • 参考335x datasheet 里面的如下

    • 寄存器地址如下

    • kernel 内怎么直接操作请参考上面的代码

        第一步, 申请: request_mem_region
        第二步: 映射 : ioremap 
        后面就是写,解除映射,释放申请
    
  • 相关阅读:
    功能强大的T4文本模版
    C#中.snk文件的作用
    ASP.NET MVC中实现多个按钮提交的几种方法
    asp.net mvc强大的分页控件MvcPager
    设计模式—观察者模式
    Http响应码

    编码习惯
    vim 快捷键 转
    makefilevvhttp://www.tudou.com/programs/view/e3Z8RbxFIZE/
  • 原文地址:https://www.cnblogs.com/chenfulin5/p/9205346.html
Copyright © 2011-2022 走看看