#include "devices.h"
 
+#define KZM_ARM11_IO_ADDRESS(x) (                                      \
+       IMX_IO_ADDRESS(x, MX31_CS4) ?:                                  \
+       IMX_IO_ADDRESS(x, MX31_CS5) ?:                                  \
+       MX31_IO_ADDRESS(x))
+
 #if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
 /*
  * KZM-ARM11-01 has an external UART on FPGA
  */
 static struct plat_serial8250_port serial_platform_data[] = {
        {
-               .membase        = IO_ADDRESS(KZM_ARM11_16550),
+               .membase        = KZM_ARM11_IO_ADDRESS(KZM_ARM11_16550),
                .mapbase        = KZM_ARM11_16550,
                .irq            = IOMUX_TO_IRQ(MX31_PIN_GPIO1_1),
                .irqflags       = IRQ_TYPE_EDGE_RISING,
        /*
         * Unmask UART interrupt
         */
-       tmp = __raw_readb(IO_ADDRESS(KZM_ARM11_CTL1));
+       tmp = __raw_readb(KZM_ARM11_IO_ADDRESS(KZM_ARM11_CTL1));
        tmp |= 0x2;
-       __raw_writeb(tmp, IO_ADDRESS(KZM_ARM11_CTL1));
+       __raw_writeb(tmp, KZM_ARM11_IO_ADDRESS(KZM_ARM11_CTL1));
 
        return platform_device_register(&serial_device);
 }