spi/tegra-slink: remove redundant code
[firefly-linux-kernel-4.4.55.git] / drivers / spi / spi-tegra20-slink.c
index b8698b389ef3ec6980da435317ec383f2c1ea22a..d35315408f649de737650e48b5d2ad59e499a60b 100644 (file)
@@ -189,7 +189,6 @@ struct tegra_slink_data {
        unsigned                                dma_buf_size;
        unsigned                                max_buf_size;
        bool                                    is_curr_dma_xfer;
-       bool                                    is_hw_based_cs;
 
        struct completion                       rx_dma_complete;
        struct completion                       tx_dma_complete;
@@ -375,9 +374,6 @@ static unsigned int tegra_slink_read_rx_fifo_to_client_rxbuf(
                tspi->cur_rx_pos += tspi->curr_dma_words * tspi->bytes_per_word;
                read_words += tspi->curr_dma_words;
        } else {
-               unsigned int bits_per_word;
-
-               bits_per_word = t->bits_per_word;
                for (count = 0; count < rx_full_count; count++) {
                        x = tegra_slink_readl(tspi, SLINK_RX_FIFO);
                        for (i = 0; (i < tspi->bytes_per_word); i++)
@@ -720,7 +716,6 @@ static int tegra_slink_start_transfer_one(struct spi_device *spi,
        u8 bits_per_word;
        unsigned total_fifo_words;
        int ret;
-       struct tegra_spi_device_controller_data *cdata = spi->controller_data;
        unsigned long command;
        unsigned long command2;
 
@@ -743,39 +738,11 @@ static int tegra_slink_start_transfer_one(struct spi_device *spi,
 
                command = tspi->def_command_reg;
                command |= SLINK_BIT_LENGTH(bits_per_word - 1);
+               command |= SLINK_CS_SW | SLINK_CS_VALUE;
 
                command2 = tspi->def_command2_reg;
                command2 |= SLINK_SS_EN_CS(spi->chip_select);
 
-               /* possibly use the hw based chip select */
-               tspi->is_hw_based_cs = false;
-               if (cdata && cdata->is_hw_based_cs && is_single_xfer &&
-                       ((tspi->curr_dma_words * tspi->bytes_per_word) ==
-                                               (t->len - tspi->cur_pos))) {
-                       int setup_count;
-                       int sts2;
-
-                       setup_count = cdata->cs_setup_clk_count >> 1;
-                       setup_count = max(setup_count, 3);
-                       command2 |= SLINK_SS_SETUP(setup_count);
-                       if (tspi->chip_data->cs_hold_time) {
-                               int hold_count;
-
-                               hold_count = cdata->cs_hold_clk_count;
-                               hold_count = max(hold_count, 0xF);
-                               sts2 = tegra_slink_readl(tspi, SLINK_STATUS2);
-                               sts2 &= ~SLINK_SS_HOLD_TIME(0xF);
-                               sts2 |= SLINK_SS_HOLD_TIME(hold_count);
-                               tegra_slink_writel(tspi, sts2, SLINK_STATUS2);
-                       }
-                       tspi->is_hw_based_cs = true;
-               }
-
-               if (tspi->is_hw_based_cs)
-                       command &= ~SLINK_CS_SW;
-               else
-                       command |= SLINK_CS_SW | SLINK_CS_VALUE;
-
                command &= ~SLINK_MODES;
                if (spi->mode & SPI_CPHA)
                        command |= SLINK_CK_SDA;
@@ -858,21 +825,6 @@ static int tegra_slink_setup(struct spi_device *spi)
        return 0;
 }
 
-static int tegra_slink_prepare_transfer(struct spi_master *master)
-{
-       struct tegra_slink_data *tspi = spi_master_get_devdata(master);
-
-       return pm_runtime_get_sync(tspi->dev);
-}
-
-static int tegra_slink_unprepare_transfer(struct spi_master *master)
-{
-       struct tegra_slink_data *tspi = spi_master_get_devdata(master);
-
-       pm_runtime_put(tspi->dev);
-       return 0;
-}
-
 static int tegra_slink_transfer_one_message(struct spi_master *master,
                        struct spi_message *msg)
 {
@@ -885,6 +837,12 @@ static int tegra_slink_transfer_one_message(struct spi_master *master,
 
        msg->status = 0;
        msg->actual_length = 0;
+       ret = pm_runtime_get_sync(tspi->dev);
+       if (ret < 0) {
+               dev_err(tspi->dev, "runtime get failed: %d\n", ret);
+               goto done;
+       }
+
        single_xfer = list_is_singular(&msg->transfers);
        list_for_each_entry(xfer, &msg->transfers, transfer_list) {
                INIT_COMPLETION(tspi->xfer_completion);
@@ -921,6 +879,8 @@ static int tegra_slink_transfer_one_message(struct spi_master *master,
 exit:
        tegra_slink_writel(tspi, tspi->def_command_reg, SLINK_COMMAND);
        tegra_slink_writel(tspi, tspi->def_command2_reg, SLINK_COMMAND2);
+       pm_runtime_put(tspi->dev);
+done:
        msg->status = ret;
        spi_finalize_current_message(master);
        return ret;
@@ -1148,9 +1108,7 @@ static int tegra_slink_probe(struct platform_device *pdev)
        /* the spi->mode bits understood by this driver: */
        master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
        master->setup = tegra_slink_setup;
-       master->prepare_transfer_hardware = tegra_slink_prepare_transfer;
        master->transfer_one_message = tegra_slink_transfer_one_message;
-       master->unprepare_transfer_hardware = tegra_slink_unprepare_transfer;
        master->num_chipselect = MAX_CHIP_SELECT;
        master->bus_num = -1;