[PATCH] cadence_qspi: Enable flash reset for Versal NET platform

Michal Simek michal.simek at amd.com
Fri Jun 23 16:18:02 CEST 2023



On 6/14/23 14:04, Ashok Reddy Soma wrote:
> Enable flash reset functionality for Versal NET platform.
> In cadence_qspi.c there is weak function defined for reset, hence remove
> the check for config, so that it will work for Versal and Versal NET
> platforms.
> 
> Add register defines in Versal NET hardware.h for mini U-Boot flash
> reset.
> 
> Add read_delay initialization for Versal NET also.
> 
> Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma at amd.com>
> ---
>   arch/arm/mach-versal-net/include/mach/hardware.h | 11 +++++++++++
>   drivers/spi/cadence_ospi_versal.c                |  3 +--
>   drivers/spi/cadence_qspi.c                       | 13 +++++--------
>   3 files changed, 17 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/mach-versal-net/include/mach/hardware.h b/arch/arm/mach-versal-net/include/mach/hardware.h
> index 89b84a2efc..67b864101e 100644
> --- a/arch/arm/mach-versal-net/include/mach/hardware.h
> +++ b/arch/arm/mach-versal-net/include/mach/hardware.h
> @@ -80,3 +80,14 @@ enum versal_net_platform {
>   #define VERSAL_SLCR_BASEADDR	0xF1060000
>   #define VERSAL_AXI_MUX_SEL	(VERSAL_SLCR_BASEADDR + 0x504)
>   #define VERSAL_OSPI_LINEAR_MODE	BIT(1)
> +
> +#define FLASH_RESET_GPIO	0xc
> +#define WPROT_CRP	0xF126001C
> +#define RST_GPIO	0xF1260318
> +#define WPROT_LPD_MIO	0xFF080728
> +#define WPROT_PMC_MIO	0xF1060828
> +#define BOOT_MODE_DIR	0xF1020204
> +#define BOOT_MODE_OUT	0xF1020208
> +#define MIO_PIN_12	0xF1060030
> +#define BANK0_OUTPUT	0xF1020040
> +#define BANK0_TRI	0xF1060200
> diff --git a/drivers/spi/cadence_ospi_versal.c b/drivers/spi/cadence_ospi_versal.c
> index 434c6038f3..a7685a2f51 100644
> --- a/drivers/spi/cadence_ospi_versal.c
> +++ b/drivers/spi/cadence_ospi_versal.c
> @@ -130,7 +130,6 @@ int cadence_qspi_apb_wait_for_dma_cmplt(struct cadence_spi_priv *priv)
>   #if defined(CONFIG_DM_GPIO)
>   int cadence_qspi_versal_flash_reset(struct udevice *dev)
>   {
> -#ifndef CONFIG_ARCH_VERSAL_NET
>   	struct gpio_desc gpio;
>   	u32 reset_gpio;
>   	int ret;
> @@ -166,7 +165,7 @@ int cadence_qspi_versal_flash_reset(struct udevice *dev)
>   	/* Set value 1 to pin */
>   	dm_gpio_set_value(&gpio, 1);
>   	udelay(1);
> -#endif
> +
>   	return 0;
>   }
>   #else
> diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
> index 2d715e478c..cc3a54f295 100644
> --- a/drivers/spi/cadence_qspi.c
> +++ b/drivers/spi/cadence_qspi.c
> @@ -249,17 +249,14 @@ static int cadence_spi_probe(struct udevice *bus)
>   
>   	priv->wr_delay = 50 * DIV_ROUND_UP(NSEC_PER_SEC, priv->ref_clk_hz);
>   
> -	if (IS_ENABLED(CONFIG_ARCH_VERSAL)) {
> -		/* Versal platform uses spi calibration to set read delay */
> +	/* Versal and Versal-NET use spi calibration to set read delay */
> +	if (CONFIG_IS_ENABLED(ARCH_VERSAL) ||
> +	    CONFIG_IS_ENABLED(ARCH_VERSAL_NET))
>   		if (priv->read_delay >= 0)
>   			priv->read_delay = -1;
> -		/* Reset ospi flash device */
> -		ret = cadence_qspi_versal_flash_reset(bus);
> -		if (ret)
> -			return ret;
> -	}
>   
> -	return 0;
> +	/* Reset ospi flash device */
> +	return cadence_qspi_versal_flash_reset(bus);
>   }
>   
>   static int cadence_spi_remove(struct udevice *dev)

Applied.
M


More information about the U-Boot mailing list