Skip to content

Commit

Permalink
spi: orion: Let spi core handle checking transfer speed
Browse files Browse the repository at this point in the history
Since commit a2fd4f9 'spi: Support transfer speed checking in the core',
the SPI core validates the desired speed of a given transfer against the
minimum and maximum speeds supported by the controller.
So we can remove the same code in this driver and let spi core handle checking
the desired speed of a given transfer.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Axel Lin authored and Mark Brown committed Feb 7, 2014
1 parent 1647138 commit b52a37f
Showing 1 changed file with 2 additions and 37 deletions.
39 changes: 2 additions & 37 deletions drivers/spi/spi-orion.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@
struct orion_spi {
struct spi_master *master;
void __iomem *base;
unsigned int max_speed;
unsigned int min_speed;
struct clk *clk;
};

Expand Down Expand Up @@ -319,16 +317,6 @@ static int orion_spi_transfer_one_message(struct spi_master *master,
goto msg_done;
}

if (t->speed_hz && t->speed_hz < orion_spi->min_speed) {
dev_err(&spi->dev,
"message rejected : "
"device min speed (%d Hz) exceeds "
"required transfer speed (%d Hz)\n",
orion_spi->min_speed, t->speed_hz);
status = -EIO;
goto msg_done;
}

if (par_override || t->speed_hz || t->bits_per_word) {
par_override = 1;
status = orion_spi_setup_transfer(spi, t);
Expand Down Expand Up @@ -373,28 +361,6 @@ static int orion_spi_reset(struct orion_spi *orion_spi)
return 0;
}

static int orion_spi_setup(struct spi_device *spi)
{
struct orion_spi *orion_spi;

orion_spi = spi_master_get_devdata(spi->master);

if ((spi->max_speed_hz == 0)
|| (spi->max_speed_hz > orion_spi->max_speed))
spi->max_speed_hz = orion_spi->max_speed;

if (spi->max_speed_hz < orion_spi->min_speed) {
dev_err(&spi->dev, "setup: requested speed too low %d Hz\n",
spi->max_speed_hz);
return -EINVAL;
}

/*
* baudrate & width will be set orion_spi_setup_transfer
*/
return 0;
}

static int orion_spi_probe(struct platform_device *pdev)
{
struct spi_master *master;
Expand Down Expand Up @@ -423,7 +389,6 @@ static int orion_spi_probe(struct platform_device *pdev)
/* we support only mode 0, and no options */
master->mode_bits = SPI_CPHA | SPI_CPOL;

master->setup = orion_spi_setup;
master->transfer_one_message = orion_spi_transfer_one_message;
master->num_chipselect = ORION_NUM_CHIPSELECTS;

Expand All @@ -441,8 +406,8 @@ static int orion_spi_probe(struct platform_device *pdev)
clk_prepare(spi->clk);
clk_enable(spi->clk);
tclk_hz = clk_get_rate(spi->clk);
spi->max_speed = DIV_ROUND_UP(tclk_hz, 4);
spi->min_speed = DIV_ROUND_UP(tclk_hz, 30);
master->max_speed_hz = DIV_ROUND_UP(tclk_hz, 4);
master->min_speed_hz = DIV_ROUND_UP(tclk_hz, 30);

r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
spi->base = devm_ioremap_resource(&pdev->dev, r);
Expand Down

0 comments on commit b52a37f

Please sign in to comment.