152: Correct usage of IO memory mappings
The module should not remove mappings which were not previously created.
The module should not recreate a mapping and should not remove already removed mapping.
At the end the module should remove all previously created mappings.
An IO memory mapping is created with the help of static inline void *ioremap(phys_addr_t, unsigned long) and void *ioremap_cache(resource_size_t, unsigned long) (on x86 architecture) or static inline void *ioremap_cache(unsigned long, unsigned long) (on Xtensa or IA-64) or static inline void *ioremap_cache(phys_addr_t, unsigned long) (on SuperH) and with architecture dependent macro or ioremap_nocache and ioremap_wc.
IO memory mappings are removed with static inline void iounmap(volatile void *).
Sample bugfix 57cbe30