And yet one more thing, looking at that last email: > + map_base = ioremap(dev->cmd.dbell_base, max_off + > + sizeof(unsigned long)); why is this sizeof (unsigned long)? I think you just want sizeof (u32), since the size of the command register doesn't change depending on the kernel's word size. - R.