Unverified Commit c154dbd2 authored by Miquel Raynal's avatar Miquel Raynal Committed by Tudor Ambarus
Browse files

mtd: spi-nor: Separate preparation and locking



While this operation will remain a single function call in the end,
let's extract the logic of the [un]prepare calls within their own static
helper. We will soon add new flavors of the *_[un]prepare_and_[un]lock()
helpers, having the preparation logic outside will save us from duplicating
code over and over again.

There is no functional change.

Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/r/20230328154105.448540-5-miquel.raynal@bootlin.com


Signed-off-by: default avatarTudor Ambarus <tudor.ambarus@linaro.org>
parent 32046347
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -1070,24 +1070,40 @@ static void spi_nor_set_4byte_opcodes(struct spi_nor *nor)
	}
}

int spi_nor_prep_and_lock(struct spi_nor *nor)
static int spi_nor_prep(struct spi_nor *nor)
{
	int ret = 0;

	if (nor->controller_ops && nor->controller_ops->prepare)
		ret = nor->controller_ops->prepare(nor);

	mutex_lock(&nor->lock);
	return ret;
}

static void spi_nor_unprep(struct spi_nor *nor)
{
	if (nor->controller_ops && nor->controller_ops->unprepare)
		nor->controller_ops->unprepare(nor);
}

int spi_nor_prep_and_lock(struct spi_nor *nor)
{
	int ret;

	ret = spi_nor_prep(nor);
	if (ret)
		return ret;

	mutex_lock(&nor->lock);

	return 0;
}

void spi_nor_unlock_and_unprep(struct spi_nor *nor)
{
	mutex_unlock(&nor->lock);

	if (nor->controller_ops && nor->controller_ops->unprepare)
		nor->controller_ops->unprepare(nor);
	spi_nor_unprep(nor);
}

static u32 spi_nor_convert_addr(struct spi_nor *nor, loff_t addr)