spi: fix platform driver hotplug/coldplug
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / spi / spi_mpc83xx.c
index 2adf856e44c2bf0d91d6081adfc25b9549559384..be15a6213205c09b9c840b6ea726607b3e052e18 100644 (file)
@@ -384,11 +384,8 @@ irqreturn_t mpc83xx_spi_irq(s32 irq, void *context_data)
 
        mpc83xx_spi->count -= 1;
        if (mpc83xx_spi->count) {
-               if (mpc83xx_spi->tx) {
-                       u32 word = mpc83xx_spi->get_tx(mpc83xx_spi);
-                       mpc83xx_spi_write_reg(&mpc83xx_spi->base->transmit,
-                                             word);
-               }
+               u32 word = mpc83xx_spi->get_tx(mpc83xx_spi);
+               mpc83xx_spi_write_reg(&mpc83xx_spi->base->transmit, word);
        } else {
                complete(&mpc83xx_spi->done);
        }
@@ -439,11 +436,7 @@ static int __init mpc83xx_spi_probe(struct platform_device *dev)
        mpc83xx_spi->qe_mode = pdata->qe_mode;
        mpc83xx_spi->get_rx = mpc83xx_spi_rx_buf_u8;
        mpc83xx_spi->get_tx = mpc83xx_spi_tx_buf_u8;
-
-       if (mpc83xx_spi->qe_mode)
-               mpc83xx_spi->spibrg = pdata->sysclk / 2;
-       else
-               mpc83xx_spi->spibrg = pdata->sysclk;
+       mpc83xx_spi->spibrg = pdata->sysclk;
 
        mpc83xx_spi->rx_shift = 0;
        mpc83xx_spi->tx_shift = 0;
@@ -514,7 +507,7 @@ err:
        return ret;
 }
 
-static int __devexit mpc83xx_spi_remove(struct platform_device *dev)
+static int __exit mpc83xx_spi_remove(struct platform_device *dev)
 {
        struct mpc83xx_spi *mpc83xx_spi;
        struct spi_master *master;
@@ -530,17 +523,18 @@ static int __devexit mpc83xx_spi_remove(struct platform_device *dev)
        return 0;
 }
 
+MODULE_ALIAS("platform:mpc83xx_spi");
 static struct platform_driver mpc83xx_spi_driver = {
-       .probe = mpc83xx_spi_probe,
-       .remove = __devexit_p(mpc83xx_spi_remove),
+       .remove = __exit_p(mpc83xx_spi_remove),
        .driver = {
-                  .name = "mpc83xx_spi",
+               .name = "mpc83xx_spi",
+               .owner = THIS_MODULE,
        },
 };
 
 static int __init mpc83xx_spi_init(void)
 {
-       return platform_driver_register(&mpc83xx_spi_driver);
+       return platform_driver_probe(&mpc83xx_spi_driver, mpc83xx_spi_probe);
 }
 
 static void __exit mpc83xx_spi_exit(void)