On 05/10/21, Michal Simek wrote: > > > On 10/5/21 1:13 PM, Jorge Ramirez-Ortiz wrote: > > Add new compatible string u-boot,zynqmp-fpga-ddrauth to handle this > > use case. > > > > Signed-off-by: Jorge Ramirez-Ortiz <[email protected]> > > --- > > drivers/fpga/xilinx.c | 29 +++++++++++++++++++++++++---- > > drivers/fpga/zynqmppl.c | 4 ++-- > > include/xilinx.h | 2 +- > > 3 files changed, 28 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c > > index cbebefb55f..c8035105e2 100644 > > --- a/drivers/fpga/xilinx.c > > +++ b/drivers/fpga/xilinx.c > > @@ -135,23 +135,44 @@ int fpga_loadbitstream(int devnum, char *fpgadata, > > size_t size, > > dataptr += 4; > > printf(" bytes in bitstream = %d\n", swapsize); > > > > - return fpga_load(devnum, dataptr, swapsize, bstype); > > + return fpga_load(devnum, dataptr, swapsize, bstype, NULL); > > } > > > > int xilinx_load(xilinx_desc *desc, const void *buf, size_t bsize, > > - bitstream_type bstype) > > + bitstream_type bstype, const char *compatible) > > { > > + struct fpga_secure_info info = { 0 }; > > + > > if (!xilinx_validate (desc, (char *)__FUNCTION__)) { > > printf ("%s: Invalid device descriptor\n", __FUNCTION__); > > return FPGA_FAIL; > > } > > > > - if (!desc->operations || !desc->operations->load) { > > + if (!desc->operations) { > > printf("%s: Missing load operation\n", __func__); > > return FPGA_FAIL; > > } > > > > - return desc->operations->load(desc, buf, bsize, bstype); > > + if (!compatible || !strcmp(compatible, "u-boot,fpga-legacy")) { > > + if (!desc->operations->load) { > > + printf("%s: Missing load operation\n", __func__); > > + return FPGA_FAIL; > > + } > > + return desc->operations->load(desc, buf, bsize, bstype); > > + } > > + > > + if (!strcmp(compatible, "u-boot,zynqmp-fpga-ddrauth")) { > > + if (!desc->operations->loads) { > > + printf("%s: Missing load operation\n", __func__); > > + return FPGA_FAIL; > > + } > > + /* DDR authentication */ > > + info.authflag = 1; > > + return desc->operations->loads(desc, buf, bsize, &info); > > + } > > I am not sure about this solution. First of all it forces SPL to have > additional code which just extending size. It means there must be a way > to enable/disable it.
that can be contained of course...so not really an issue (ie compile out either fpga_load or fpga_loads depending on needs). > > The next thing is that you have zynqmp string in generic xilinx file > which doesn't look right. It would be better to deal with image types > directly in driver which is capable to handle it. sure that is easy..but the idea is the same > It means record fit image compatible string in the driver with > hooks/flags and determined what should be called. what about the compatible names? will you define those? or should I do it? For our use case, we need DDR authentication so that must be defined. I can add others and someone else can add the support needed? > > And the same style should work for SPL and also for U-Boot proper. sure. thanks for the quick response. > > Thanks, > Michal

