新路程------imx6 内核层读写寄存器

   从watchdog驱动中提取出来的代码

        u16 mattval;

       void _iomem * matt;

      resource_size_t mattstart;


mattstart = MX6Q_WDOG1_BASE_ADDR ;


matt = ioremap_nocache(mattstart, 0x00004000); //后面这个是size,这里是SZ_16K


mattval = __raw_readw(matt + IMX2_WDT_WCR);


       __raw_writew(val, imx2_wdt.base + IMX2_WDT_WCR);


这里的MX6Q_WDOG1_BASE_ADDR定义在Mx6.h中


#define MX6Q_WDOG1_BASE_ADDR(AIPS1_OFF_BASE_ADDR + 0x3C000)

如果读写32bit的寄存器的话

mattval = __raw_readl(matt + IMX2_WDT_WCR);
printk("mattval=0x%lx\n",mattval);
mattval |= IMX2_WDT_WCR_WDZST;
printk("mattval=0x%lx\n",mattval);
__raw_writel(mattval, matt + IMX2_WDT_WCR);


你可能感兴趣的:(新路程------imx6 内核层读写寄存器)