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

Heiko Schocher
2015-10-29T06:37:04Z

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);
> }
>

--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany