从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);