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.