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

Commit 19763671 authored by Brian Norris's avatar Brian Norris
Browse files

mtd: spi-nor: embed struct mtd_info within struct spi_nor



This reflects the proper layering, so let's do it.

Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
Tested-by: default avatarJoachim Eastwood <manabian@gmail.com>
parent a39f1d5e
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@
struct m25p {
	struct spi_device	*spi;
	struct spi_nor		spi_nor;
	struct mtd_info		mtd;
	u8			command[MAX_CMD_SIZE];
};

@@ -159,7 +158,7 @@ static int m25p80_erase(struct spi_nor *nor, loff_t offset)
	struct m25p *flash = nor->priv;

	dev_dbg(nor->dev, "%dKiB at 0x%08x\n",
		flash->mtd.erasesize / 1024, (u32)offset);
		flash->spi_nor.mtd.erasesize / 1024, (u32)offset);

	/* Set up command buffer. */
	flash->command[0] = nor->erase_opcode;
@@ -201,7 +200,6 @@ static int m25p_probe(struct spi_device *spi)
	nor->read_reg = m25p80_read_reg;

	nor->dev = &spi->dev;
	nor->mtd = &flash->mtd;
	nor->priv = flash;

	spi_set_drvdata(spi, flash);
@@ -213,7 +211,7 @@ static int m25p_probe(struct spi_device *spi)
		mode = SPI_NOR_DUAL;

	if (data && data->name)
		flash->mtd.name = data->name;
		nor->mtd.name = data->name;

	/* For some (historical?) reason many platforms provide two different
	 * names in flash_platform_data: "name" and "type". Quite often name is
@@ -231,7 +229,7 @@ static int m25p_probe(struct spi_device *spi)

	ppdata.of_node = spi->dev.of_node;

	return mtd_device_parse_register(&flash->mtd, NULL, &ppdata,
	return mtd_device_parse_register(&nor->mtd, NULL, &ppdata,
			data ? data->parts : NULL,
			data ? data->nr_parts : 0);
}
@@ -242,7 +240,7 @@ static int m25p_remove(struct spi_device *spi)
	struct m25p	*flash = spi_get_drvdata(spi);

	/* Clean up MTD stuff. */
	return mtd_device_unregister(&flash->mtd);
	return mtd_device_unregister(&flash->spi_nor.mtd);
}

/*
+4 −6
Original line number Diff line number Diff line
@@ -259,7 +259,6 @@ static struct fsl_qspi_devtype_data imx6ul_data = {

#define FSL_QSPI_MAX_CHIP	4
struct fsl_qspi {
	struct mtd_info mtd[FSL_QSPI_MAX_CHIP];
	struct spi_nor nor[FSL_QSPI_MAX_CHIP];
	void __iomem *iobase;
	void __iomem *ahb_addr;
@@ -888,7 +887,7 @@ static int fsl_qspi_erase(struct spi_nor *nor, loff_t offs)
	int ret;

	dev_dbg(nor->dev, "%dKiB at 0x%08x:0x%08x\n",
		nor->mtd->erasesize / 1024, q->chip_base_addr, (u32)offs);
		nor->mtd.erasesize / 1024, q->chip_base_addr, (u32)offs);

	ret = fsl_qspi_runcmd(q, nor->erase_opcode, offs, 0);
	if (ret)
@@ -1013,9 +1012,8 @@ static int fsl_qspi_probe(struct platform_device *pdev)
			i *= 2;

		nor = &q->nor[i];
		mtd = &q->mtd[i];
		mtd = &nor->mtd;

		nor->mtd = mtd;
		nor->dev = dev;
		nor->priv = q;

@@ -1086,7 +1084,7 @@ static int fsl_qspi_probe(struct platform_device *pdev)
		/* skip the holes */
		if (!q->has_second_chip)
			i *= 2;
		mtd_device_unregister(&q->mtd[i]);
		mtd_device_unregister(&q->nor[i].mtd);
	}
mutex_failed:
	mutex_destroy(&q->lock);
@@ -1106,7 +1104,7 @@ static int fsl_qspi_remove(struct platform_device *pdev)
		/* skip the holes */
		if (!q->has_second_chip)
			i *= 2;
		mtd_device_unregister(&q->mtd[i]);
		mtd_device_unregister(&q->nor[i].mtd);
	}

	/* disable the hardware */
+2 −4
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ struct nxp_spifi {
	struct clk *clk_reg;
	void __iomem *io_base;
	void __iomem *flash_base;
	struct mtd_info mtd;
	struct spi_nor nor;
	bool memory_mode;
	u32 mcmd;
@@ -331,7 +330,6 @@ static int nxp_spifi_setup_flash(struct nxp_spifi *spifi,

	writel(ctrl, spifi->io_base + SPIFI_CTRL);

	spifi->nor.mtd   = &spifi->mtd;
	spifi->nor.dev   = spifi->dev;
	spifi->nor.priv  = spifi;
	spifi->nor.read  = nxp_spifi_read;
@@ -364,7 +362,7 @@ static int nxp_spifi_setup_flash(struct nxp_spifi *spifi,
	}

	ppdata.of_node = np;
	ret = mtd_device_parse_register(&spifi->mtd, NULL, &ppdata, NULL, 0);
	ret = mtd_device_parse_register(&spifi->nor.mtd, NULL, &ppdata, NULL, 0);
	if (ret) {
		dev_err(spifi->dev, "mtd device parse failed\n");
		return ret;
@@ -453,7 +451,7 @@ static int nxp_spifi_remove(struct platform_device *pdev)
{
	struct nxp_spifi *spifi = platform_get_drvdata(pdev);

	mtd_device_unregister(&spifi->mtd);
	mtd_device_unregister(&spifi->nor.mtd);
	clk_disable_unprepare(spifi->clk_spifi);
	clk_disable_unprepare(spifi->clk_reg);

+4 −4
Original line number Diff line number Diff line
@@ -265,7 +265,7 @@ static int spi_nor_wait_till_ready(struct spi_nor *nor)
 */
static int erase_chip(struct spi_nor *nor)
{
	dev_dbg(nor->dev, " %lldKiB\n", (long long)(nor->mtd->size >> 10));
	dev_dbg(nor->dev, " %lldKiB\n", (long long)(nor->mtd.size >> 10));

	return nor->write_reg(nor, SPINOR_OP_CHIP_ERASE, NULL, 0, 0);
}
@@ -373,7 +373,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)

static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len)
{
	struct mtd_info *mtd = nor->mtd;
	struct mtd_info *mtd = &nor->mtd;
	uint32_t offset = ofs;
	uint8_t status_old, status_new;
	int ret = 0;
@@ -407,7 +407,7 @@ static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len)

static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len)
{
	struct mtd_info *mtd = nor->mtd;
	struct mtd_info *mtd = &nor->mtd;
	uint32_t offset = ofs;
	uint8_t status_old, status_new;
	int ret = 0;
@@ -1004,7 +1004,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode)
{
	const struct flash_info *info = NULL;
	struct device *dev = nor->dev;
	struct mtd_info *mtd = nor->mtd;
	struct mtd_info *mtd = &nor->mtd;
	struct device_node *np = dev->of_node;
	int ret;
	int i;
+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ struct mtd_info;
 * @priv:		the private data
 */
struct spi_nor {
	struct mtd_info		*mtd;
	struct mtd_info		mtd;
	struct mutex		lock;
	struct device		*dev;
	u32			page_size;