devc-ser8250 and memory mapped device

Hi,

At the moment we are working on the driver for the
XR17C158 chipset. As we know preset implementation
of the devc-ser8250 supports devices which are
accessible via I/O address space only. Simply driver
calls mmap_device_io () function.

How to switch very fast from I/O to memory mappings ?
How to begin with driver modification ?

Can anybody give some hints for a start ?

Here is how PCI server sees our device:

Class = Communication (Serial Controller)
Vendor ID = 13a8h, Exar Corp.
Device ID = 158h, XR17C158 Octal UART
PCI index = 0h
Class Codes = 070002h
Revision ID = 9h
Bus number = 2
Device number = 7
Function num = 0
Status Reg = 80h
Command Reg = 102h
I/O space access disabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Error Response disabled
Data/Address stepping disabled
SERR# driver enabled
Fast back-to-back transactions to different agents disabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 0h
Cache Line Size= 0h
PCI Mem Address = e0200000h 32bit length 4096 enabled
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = 10
CPU Interrupt = ah
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Regards,
Jacek