Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5b4b234 authored by Alexander Shiyan's avatar Alexander Shiyan Committed by Mark Brown
Browse files

spi: clps711x: Migrate to the new clk subsystem



Currently clps711x arch have a fully functional CLK driver.
This patch migrates clps711x-spi driver to use the new CLK subsystem.

Signed-off-by: default avatarAlexander Shiyan <shc_work@mail.ru>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 7d1311b9
Loading
Loading
Loading
Loading
+2 −32
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@
struct spi_clps711x_data {
	void __iomem		*syncio;
	struct regmap		*syscon;
	struct regmap		*syscon1;
	struct clk		*spi_clk;

	u8			*tx_buf;
@@ -47,27 +46,6 @@ static int spi_clps711x_setup(struct spi_device *spi)
	return 0;
}

static void spi_clps711x_setup_xfer(struct spi_device *spi,
				    struct spi_transfer *xfer)
{
	struct spi_master *master = spi->master;
	struct spi_clps711x_data *hw = spi_master_get_devdata(master);

	/* Setup SPI frequency divider */
	if (xfer->speed_hz >= master->max_speed_hz)
		regmap_update_bits(hw->syscon1, SYSCON_OFFSET,
				   SYSCON1_ADCKSEL_MASK, SYSCON1_ADCKSEL(3));
	else if (xfer->speed_hz >= (master->max_speed_hz / 2))
		regmap_update_bits(hw->syscon1, SYSCON_OFFSET,
				   SYSCON1_ADCKSEL_MASK, SYSCON1_ADCKSEL(2));
	else if (xfer->speed_hz >= (master->max_speed_hz / 8))
		regmap_update_bits(hw->syscon1, SYSCON_OFFSET,
				   SYSCON1_ADCKSEL_MASK, SYSCON1_ADCKSEL(1));
	else
		regmap_update_bits(hw->syscon1, SYSCON_OFFSET,
				   SYSCON1_ADCKSEL_MASK, SYSCON1_ADCKSEL(0));
}

static int spi_clps711x_prepare_message(struct spi_master *master,
					struct spi_message *msg)
{
@@ -87,7 +65,7 @@ static int spi_clps711x_transfer_one(struct spi_master *master,
	struct spi_clps711x_data *hw = spi_master_get_devdata(master);
	u8 data;

	spi_clps711x_setup_xfer(spi, xfer);
	clk_set_rate(hw->spi_clk, xfer->speed_hz ? : spi->max_speed_hz);

	hw->len = xfer->len;
	hw->bpw = xfer->bits_per_word;
@@ -176,13 +154,11 @@ static int spi_clps711x_probe(struct platform_device *pdev)
		}
	}

	hw->spi_clk = devm_clk_get(&pdev->dev, "spi");
	hw->spi_clk = devm_clk_get(&pdev->dev, NULL);
	if (IS_ERR(hw->spi_clk)) {
		dev_err(&pdev->dev, "Can't get clocks\n");
		ret = PTR_ERR(hw->spi_clk);
		goto err_out;
	}
	master->max_speed_hz = clk_get_rate(hw->spi_clk);

	hw->syscon = syscon_regmap_lookup_by_pdevname("syscon.3");
	if (IS_ERR(hw->syscon)) {
@@ -190,12 +166,6 @@ static int spi_clps711x_probe(struct platform_device *pdev)
		goto err_out;
	}

	hw->syscon1 = syscon_regmap_lookup_by_pdevname("syscon.1");
	if (IS_ERR(hw->syscon1)) {
		ret = PTR_ERR(hw->syscon1);
		goto err_out;
	}

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	hw->syncio = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(hw->syncio)) {