Unverified Commit 4ccf3598 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by Mark Brown
Browse files

spi: remove spi_set_cs_timing()



No one seems to be using this global and exported function, so remove it
as it is no longer needed.

Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20210609071918.2852069-1-gregkh@linuxfoundation.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2b2142f2
Loading
Loading
Loading
Loading
+0 −73
Original line number Diff line number Diff line
@@ -3472,79 +3472,6 @@ int spi_setup(struct spi_device *spi)
}
EXPORT_SYMBOL_GPL(spi_setup);

/**
 * spi_set_cs_timing - configure CS setup, hold, and inactive delays
 * @spi: the device that requires specific CS timing configuration
 * @setup: CS setup time specified via @spi_delay
 * @hold: CS hold time specified via @spi_delay
 * @inactive: CS inactive delay between transfers specified via @spi_delay
 *
 * Return: zero on success, else a negative error code.
 */
int spi_set_cs_timing(struct spi_device *spi, struct spi_delay *setup,
		      struct spi_delay *hold, struct spi_delay *inactive)
{
	struct device *parent = spi->controller->dev.parent;
	size_t len;
	int status;

	if (spi->controller->set_cs_timing &&
	    !(spi->cs_gpiod || gpio_is_valid(spi->cs_gpio))) {
		mutex_lock(&spi->controller->io_mutex);

		if (spi->controller->auto_runtime_pm) {
			status = pm_runtime_get_sync(parent);
			if (status < 0) {
				mutex_unlock(&spi->controller->io_mutex);
				pm_runtime_put_noidle(parent);
				dev_err(&spi->controller->dev, "Failed to power device: %d\n",
					status);
				return status;
			}

			status = spi->controller->set_cs_timing(spi, setup,
								hold, inactive);
			pm_runtime_mark_last_busy(parent);
			pm_runtime_put_autosuspend(parent);
		} else {
			status = spi->controller->set_cs_timing(spi, setup, hold,
							      inactive);
		}

		mutex_unlock(&spi->controller->io_mutex);
		return status;
	}

	if ((setup && setup->unit == SPI_DELAY_UNIT_SCK) ||
	    (hold && hold->unit == SPI_DELAY_UNIT_SCK) ||
	    (inactive && inactive->unit == SPI_DELAY_UNIT_SCK)) {
		dev_err(&spi->dev,
			"Clock-cycle delays for CS not supported in SW mode\n");
		return -ENOTSUPP;
	}

	len = sizeof(struct spi_delay);

	/* copy delays to controller */
	if (setup)
		memcpy(&spi->controller->cs_setup, setup, len);
	else
		memset(&spi->controller->cs_setup, 0, len);

	if (hold)
		memcpy(&spi->controller->cs_hold, hold, len);
	else
		memset(&spi->controller->cs_hold, 0, len);

	if (inactive)
		memcpy(&spi->controller->cs_inactive, inactive, len);
	else
		memset(&spi->controller->cs_inactive, 0, len);

	return 0;
}
EXPORT_SYMBOL_GPL(spi_set_cs_timing);

static int _spi_xfer_word_delay_update(struct spi_transfer *xfer,
				       struct spi_device *spi)
{
+0 −5
Original line number Diff line number Diff line
@@ -1108,11 +1108,6 @@ static inline void spi_message_free(struct spi_message *m)
	kfree(m);
}

extern int spi_set_cs_timing(struct spi_device *spi,
			     struct spi_delay *setup,
			     struct spi_delay *hold,
			     struct spi_delay *inactive);

extern int spi_setup(struct spi_device *spi);
extern int spi_async(struct spi_device *spi, struct spi_message *message);
extern int spi_async_locked(struct spi_device *spi,