request_mem_region
allows
to tell the kernel that your driver is going to use this range of I/O addresses, which will prevent other drivers to make an overlapping call to request_mem_region
.
This mechanism does not do any kind of mapping, it's a pure reservation mechanism, which relies on the fact that all kernel device drivers must be nice, and they must call request_mem_region
,
check the return value, and behave properly in case of error.
So it is completely logical that your code works without request_mem_region
,
it's just that it doesn't comply with the kernel coding rules.