Create function which converts SSP bus number to SSP register pointer.
This functionality is reimplemented multiple times in the code, thus
make one common implementation. Moreover, make it a switch(), since the
SSP ports are not mapped in such nice linear fashion on MX23, therefore
having it a switch will simplify things there.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Andy Fleming <afleming@freescale.com>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
        uint32_t reg;
        uint32_t divide, rate, tgtclk;
 
-       ssp_regs = (struct mxs_ssp_regs *)(MXS_SSP0_BASE + (bus * 0x2000));
+       ssp_regs = mxs_ssp_regs_by_bus(bus);
 
        /*
         * SSP bit rate = SSPCLK / (CLOCK_DIVIDE * (1 + CLOCK_RATE)),
 
        mxs_reg_32(hw_ssp_debug)
        mxs_reg_32(hw_ssp_version)
 };
+
+static inline struct mxs_ssp_regs *mxs_ssp_regs_by_bus(unsigned int port)
+{
+       switch (port) {
+       case 0:
+               return (struct mxs_ssp_regs *)MXS_SSP0_BASE;
+       case 1:
+               return (struct mxs_ssp_regs *)MXS_SSP1_BASE;
+       case 2:
+               return (struct mxs_ssp_regs *)MXS_SSP2_BASE;
+       case 3:
+               return (struct mxs_ssp_regs *)MXS_SSP3_BASE;
+       default:
+               return NULL;
+       }
+}
 #endif
 
 #define        SSP_CTRL0_SFTRST                        (1 << 31)
 
 
        priv->mmc_is_wp = wp;
        priv->id = id;
-       switch (id) {
-       case 0:
-               priv->regs = (struct mxs_ssp_regs *)MXS_SSP0_BASE;
-               break;
-       case 1:
-               priv->regs = (struct mxs_ssp_regs *)MXS_SSP1_BASE;
-               break;
-       case 2:
-               priv->regs = (struct mxs_ssp_regs *)MXS_SSP2_BASE;
-               break;
-       case 3:
-               priv->regs = (struct mxs_ssp_regs *)MXS_SSP3_BASE;
-               break;
-       }
+       priv->regs = mxs_ssp_regs_by_bus(id);
 
        sprintf(mmc->name, "MXS MMC");
        mmc->send_cmd = mxsmmc_send_cmd;
 
                                  unsigned int max_hz, unsigned int mode)
 {
        struct mxs_spi_slave *mxs_slave;
-       uint32_t addr;
        struct mxs_ssp_regs *ssp_regs;
        int reg;
 
        if (mxs_dma_init_channel(bus))
                goto err_init;
 
-       addr = MXS_SSP0_BASE + (bus * MXS_SPI_PORT_OFFSET);
-
        mxs_slave->slave.bus = bus;
        mxs_slave->slave.cs = cs;
        mxs_slave->max_khz = max_hz / 1000;
        mxs_slave->mode = mode;
-       mxs_slave->regs = (struct mxs_ssp_regs *)addr;
+       mxs_slave->regs = mxs_ssp_regs_by_bus(bus);
        ssp_regs = mxs_slave->regs;
 
        reg = readl(&ssp_regs->hw_ssp_ctrl0);