diff mbox

[U-Boot,5/8] sf: Add MTD support for non-dm spi_flash interface

Message ID 1444679655-30349-5-git-send-email-jteki@openedev.com
State Superseded
Delegated to: Jagannadha Sutradharudu Teki
Headers show

Commit Message

Jagan Teki Oct. 12, 2015, 7:54 p.m. UTC
This patch adds MTD support to non-dm spi_flash
interface code.

Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi/sf_probe.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

Comments

Heiko Schocher Oct. 29, 2015, 6:37 a.m. UTC | #1
Hello Jagan,

Am 12.10.2015 um 21:54 schrieb Jagan Teki:
> This patch adds MTD support to non-dm spi_flash
> interface code.
>
> Signed-off-by: Jagan Teki <jteki@openedev.com>
> ---
>   drivers/mtd/spi/sf_probe.c | 26 ++++++++++++++------------
>   1 file changed, 14 insertions(+), 12 deletions(-)

Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
>
> diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
> index 5e314e2..60abaf2 100644
> --- a/drivers/mtd/spi/sf_probe.c
> +++ b/drivers/mtd/spi/sf_probe.c
> @@ -26,17 +26,24 @@ struct spi_flash_priv {
>   #ifndef CONFIG_DM_SPI_FLASH
>   struct spi_flash *spi_flash_probe_tail(struct spi_slave *bus)
>   {
> +	struct spi_flash_priv *priv;
>   	struct spi_flash *flash;
>   	int ret;
>
> -	/* Allocate space if needed (not used by sf-uclass */
> -	flash = calloc(1, sizeof(*flash));
> -	if (!flash) {
> -		debug("SF: Failed to allocate spi_flash\n");
> +	/* Allocate space if needed (not used by sf-uclass) */
> +	priv = calloc(1, sizeof(*priv));
> +	if (!priv) {
> +		debug("SF: Failed to allocate spi_flash_priv\n");
>   		return NULL;
>   	}
>
> +	flash = &priv->flash;
> +	flash->mtd = &priv->mtd;
> +
>   	flash->spi = bus;
> +	flash->priv = priv;
> +
> +	priv->mtd.priv = flash;
>
>   	/* Claim spi bus */
>   	ret = spi_claim_bus(bus);
> @@ -49,19 +56,16 @@ struct spi_flash *spi_flash_probe_tail(struct spi_slave *bus)
>   	if (ret)
>   		goto err_scan;
>
> -#ifdef CONFIG_SPI_FLASH_MTD
> -	ret = spi_flash_mtd_register(flash);
> +	ret = add_mtd_device(&priv->mtd);
>   	if (ret) {
>   		printf("SF: failed to register mtd device: %d\n", ret);
>   		goto err_mtd;
>   	}
> -#endif
> +
>   	return flash;
>
> -#ifdef CONFIG_SPI_FLASH_MTD
>   err_mtd:
>   	spi_free_slave(bus);
> -#endif
>   err_scan:
>   	spi_release_bus(bus);
>   err_claim:
> @@ -95,9 +99,7 @@ struct spi_flash *spi_flash_probe_fdt(const void *blob, int slave_node,
>
>   void spi_flash_free(struct spi_flash *flash)
>   {
> -#ifdef CONFIG_SPI_FLASH_MTD
> -	spi_flash_mtd_unregister();
> -#endif
> +	del_mtd_device(flash->mtd);
>   	spi_free_slave(flash->spi);
>   	free(flash);
>   }
>
diff mbox

Patch

diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index 5e314e2..60abaf2 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -26,17 +26,24 @@  struct spi_flash_priv {
 #ifndef CONFIG_DM_SPI_FLASH
 struct spi_flash *spi_flash_probe_tail(struct spi_slave *bus)
 {
+	struct spi_flash_priv *priv;
 	struct spi_flash *flash;
 	int ret;
 
-	/* Allocate space if needed (not used by sf-uclass */
-	flash = calloc(1, sizeof(*flash));
-	if (!flash) {
-		debug("SF: Failed to allocate spi_flash\n");
+	/* Allocate space if needed (not used by sf-uclass) */
+	priv = calloc(1, sizeof(*priv));
+	if (!priv) {
+		debug("SF: Failed to allocate spi_flash_priv\n");
 		return NULL;
 	}
 
+	flash = &priv->flash;
+	flash->mtd = &priv->mtd;
+
 	flash->spi = bus;
+	flash->priv = priv;
+
+	priv->mtd.priv = flash;
 
 	/* Claim spi bus */
 	ret = spi_claim_bus(bus);
@@ -49,19 +56,16 @@  struct spi_flash *spi_flash_probe_tail(struct spi_slave *bus)
 	if (ret)
 		goto err_scan;
 
-#ifdef CONFIG_SPI_FLASH_MTD
-	ret = spi_flash_mtd_register(flash);
+	ret = add_mtd_device(&priv->mtd);
 	if (ret) {
 		printf("SF: failed to register mtd device: %d\n", ret);
 		goto err_mtd;
 	}
-#endif
+
 	return flash;
 
-#ifdef CONFIG_SPI_FLASH_MTD
 err_mtd:
 	spi_free_slave(bus);
-#endif
 err_scan:
 	spi_release_bus(bus);
 err_claim:
@@ -95,9 +99,7 @@  struct spi_flash *spi_flash_probe_fdt(const void *blob, int slave_node,
 
 void spi_flash_free(struct spi_flash *flash)
 {
-#ifdef CONFIG_SPI_FLASH_MTD
-	spi_flash_mtd_unregister();
-#endif
+	del_mtd_device(flash->mtd);
 	spi_free_slave(flash->spi);
 	free(flash);
 }