[PATCH] spi: spi-uclass: Add support to manually relocate spi memory ops

Pratyush Yadav p.yadav at ti.com
Wed Mar 17 10:12:17 CET 2021


On 17/03/21 09:19AM, Michal Simek wrote:
> From: T Karthik Reddy <t.karthik.reddy at xilinx.com>
> 
> Add spi memory operations to relocate manually when
> CONFIG_NEEDS_MANUAL_RELOC is enabled.
> 
> Signed-off-by: T Karthik Reddy <t.karthik.reddy at xilinx.com>
> Acked-by: Ashok Reddy Soma <ashok.reddy.soma at xilinx.com>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
> 
>  drivers/spi/spi-uclass.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
> index 7155d4aebd6d..e24a0ff9544b 100644
> --- a/drivers/spi/spi-uclass.c
> +++ b/drivers/spi/spi-uclass.c
> @@ -11,6 +11,7 @@
>  #include <log.h>
>  #include <malloc.h>
>  #include <spi.h>
> +#include <spi-mem.h>
>  #include <dm/device_compat.h>
>  #include <asm/global_data.h>
>  #include <dm/device-internal.h>
> @@ -182,6 +183,8 @@ static int spi_post_probe(struct udevice *bus)
>  #endif
>  #if defined(CONFIG_NEEDS_MANUAL_RELOC)
>  	struct dm_spi_ops *ops = spi_get_ops(bus);
> +	struct spi_controller_mem_ops *mem_ops =
> +		(struct spi_controller_mem_ops *)ops->mem_ops;
>  	static int reloc_done;
>  
>  	if (!reloc_done) {
> @@ -199,6 +202,12 @@ static int spi_post_probe(struct udevice *bus)
>  			ops->set_mode += gd->reloc_off;
>  		if (ops->cs_info)
>  			ops->cs_info += gd->reloc_off;
> +		if (mem_ops->adjust_op_size)
> +			mem_ops->adjust_op_size += gd->reloc_off;
> +		if (mem_ops->supports_op)
> +			mem_ops->supports_op += gd->reloc_off;
> +		if (mem_ops->exec_op)
> +			mem_ops->exec_op += gd->reloc_off;

The comment above mem_ops says "This field is optional and should only 
be implemented if the controller has native support for memory-like 
operations". So you should do a NULL check before accessing it.

>  		reloc_done++;
>  	}
>  #endif
> -- 
> 2.30.1
> 

-- 
Regards,
Pratyush Yadav
Texas Instruments Inc.


More information about the U-Boot mailing list