Message ID | 8c92edd3650ce34a3cfd1c1e4e9103980830b1fa.1637236800.git.michal.simek@xilinx.com |
---|---|
State | Accepted |
Commit | 380bd08370b363a4bfe76e70fbbaead10541445b |
Delegated to: | Michal Simek |
Headers | show |
Series | xilinx: firmware: Move dcache handling directly to pmufw load config | expand |
čt 18. 11. 2021 v 13:00 odesílatel Michal Simek <michal.simek@xilinx.com> napsal: > > Core function should make sure that data is stored properly that's why move > cache operations directly to zynqmp_pmufw_load_config_object() to be able > to call it from other functions. > > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > --- > > board/xilinx/zynqmp/cmds.c | 1 - > drivers/firmware/firmware-zynqmp.c | 3 +++ > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/board/xilinx/zynqmp/cmds.c b/board/xilinx/zynqmp/cmds.c > index b15c0f599bda..5a277c712f60 100644 > --- a/board/xilinx/zynqmp/cmds.c > +++ b/board/xilinx/zynqmp/cmds.c > @@ -211,7 +211,6 @@ static int do_zynqmp_pmufw(struct cmd_tbl *cmdtp, int flag, int argc, > > addr = hextoul(argv[2], NULL); > size = hextoul(argv[3], NULL); > - flush_dcache_range((ulong)addr, (ulong)(addr + size)); > > zynqmp_pmufw_load_config_object((const void *)(uintptr_t)addr, > (size_t)size); > diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c > index b44fede30799..aa20e33b4046 100644 > --- a/drivers/firmware/firmware-zynqmp.c > +++ b/drivers/firmware/firmware-zynqmp.c > @@ -6,6 +6,7 @@ > */ > > #include <common.h> > +#include <cpu_func.h> > #include <dm.h> > #include <log.h> > #include <zynqmp_firmware.h> > @@ -99,6 +100,8 @@ void zynqmp_pmufw_load_config_object(const void *cfg_obj, size_t size) > > printf("Loading new PMUFW cfg obj (%ld bytes)\n", size); > > + flush_dcache_range((ulong)cfg_obj, (ulong)(cfg_obj + size)); > + > err = xilinx_pm_request(PM_SET_CONFIGURATION, (u32)(u64)cfg_obj, 0, 0, > 0, ret_payload); > if (err == XST_PM_NO_ACCESS) { > -- > 2.33.1 > Applied. M
diff --git a/board/xilinx/zynqmp/cmds.c b/board/xilinx/zynqmp/cmds.c index b15c0f599bda..5a277c712f60 100644 --- a/board/xilinx/zynqmp/cmds.c +++ b/board/xilinx/zynqmp/cmds.c @@ -211,7 +211,6 @@ static int do_zynqmp_pmufw(struct cmd_tbl *cmdtp, int flag, int argc, addr = hextoul(argv[2], NULL); size = hextoul(argv[3], NULL); - flush_dcache_range((ulong)addr, (ulong)(addr + size)); zynqmp_pmufw_load_config_object((const void *)(uintptr_t)addr, (size_t)size); diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c index b44fede30799..aa20e33b4046 100644 --- a/drivers/firmware/firmware-zynqmp.c +++ b/drivers/firmware/firmware-zynqmp.c @@ -6,6 +6,7 @@ */ #include <common.h> +#include <cpu_func.h> #include <dm.h> #include <log.h> #include <zynqmp_firmware.h> @@ -99,6 +100,8 @@ void zynqmp_pmufw_load_config_object(const void *cfg_obj, size_t size) printf("Loading new PMUFW cfg obj (%ld bytes)\n", size); + flush_dcache_range((ulong)cfg_obj, (ulong)(cfg_obj + size)); + err = xilinx_pm_request(PM_SET_CONFIGURATION, (u32)(u64)cfg_obj, 0, 0, 0, ret_payload); if (err == XST_PM_NO_ACCESS) {
Core function should make sure that data is stored properly that's why move cache operations directly to zynqmp_pmufw_load_config_object() to be able to call it from other functions. Signed-off-by: Michal Simek <michal.simek@xilinx.com> --- board/xilinx/zynqmp/cmds.c | 1 - drivers/firmware/firmware-zynqmp.c | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-)