Merge tag 'xfs-for-linus-v3.13-rc1' of git://oss.sgi.com/xfs/xfs
[firefly-linux-kernel-4.4.55.git] / drivers / spi / spi-gpio.c
index 22ef6e1f9e9d1f1948089ab634b5e849eae6356d..3fb09f981980aedb23a760dd0b14d604c843661b 100644 (file)
@@ -468,7 +468,7 @@ static int spi_gpio_probe(struct platform_device *pdev)
        }
 #endif
 
-       spi_gpio->bitbang.master = spi_master_get(master);
+       spi_gpio->bitbang.master = master;
        spi_gpio->bitbang.chipselect = spi_gpio_chipselect;
 
        if ((master_flags & (SPI_MASTER_NO_TX | SPI_MASTER_NO_RX)) == 0) {
@@ -487,7 +487,6 @@ static int spi_gpio_probe(struct platform_device *pdev)
 
        status = spi_bitbang_start(&spi_gpio->bitbang);
        if (status < 0) {
-               spi_master_put(spi_gpio->bitbang.master);
 gpio_free:
                if (SPI_MISO_GPIO != SPI_GPIO_NO_MISO)
                        gpio_free(SPI_MISO_GPIO);
@@ -511,13 +510,13 @@ static int spi_gpio_remove(struct platform_device *pdev)
 
        /* stop() unregisters child devices too */
        status = spi_bitbang_stop(&spi_gpio->bitbang);
-       spi_master_put(spi_gpio->bitbang.master);
 
        if (SPI_MISO_GPIO != SPI_GPIO_NO_MISO)
                gpio_free(SPI_MISO_GPIO);
        if (SPI_MOSI_GPIO != SPI_GPIO_NO_MOSI)
                gpio_free(SPI_MOSI_GPIO);
        gpio_free(SPI_SCK_GPIO);
+       spi_master_put(spi_gpio->bitbang.master);
 
        return status;
 }