On 17/03/21 09:19AM, Michal Simek wrote: > From: T Karthik Reddy <t.karthik.re...@xilinx.com> > > Add spi memory operations to relocate manually when > CONFIG_NEEDS_MANUAL_RELOC is enabled. > > Signed-off-by: T Karthik Reddy <t.karthik.re...@xilinx.com> > Acked-by: Ashok Reddy Soma <ashok.reddy.s...@xilinx.com> > Signed-off-by: Michal Simek <michal.si...@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.