On Mon, 20 Jun 2022 at 03:23, Michal Simek <mon...@monstr.eu> wrote: > On 6/9/22 14:30, Sughosh Ganu wrote: > > From: Masami Hiramatsu <masami.hirama...@linaro.org> > > ....
> > +} > > + > > +static int plat_sf_get_flash(struct spi_flash **flash) > > +{ > > + int ret = 0; > > + > > + if (!plat_spi_flash) > > + ret = __plat_sf_get_flash(); > > + > > + *flash = plat_spi_flash; > > + > > + return ret; > > +} > > + > > +static int sf_load_data(u32 offs, u32 size, void **data) > > +{ > > + struct spi_flash *flash; > > + int ret; > > + > > + ret = plat_sf_get_flash(&flash); > > + if (ret < 0) > > + return ret; > > + > > + *data = memalign(ARCH_DMA_MINALIGN, size); > > + if (!*data) > > + return -ENOMEM; > > + > > + ret = spi_flash_read(flash, offs, size, *data); > > + if (ret < 0) { > > + free(*data); > > + *data = NULL; > > + } > > + > > + return ret; > > +} > > + > > +static int sf_save_data(u32 offs, u32 size, void *data) > > +{ > > + struct spi_flash *flash; > > + u32 sect_size, nsect; > > + void *buf; > > + int ret; > > + > > + ret = plat_sf_get_flash(&flash); > > + if (ret < 0) > > + return ret; > > + > > + sect_size = flash->mtd.erasesize; > > + nsect = DIV_ROUND_UP(size, sect_size); > > + ret = spi_flash_erase(flash, offs, nsect * sect_size); > > What it is interesting here that framework itself is using mtd infrastructure > but this platform driver is calling spi functions directly. > It looks a little bit nonstandard way. What's the reason for it? > Yup, this whole sf shebang is unnecessary, and removed for next revision. > > + > > +#define PLAT_METADATA_OFFSET 0x510000 > > +#define PLAT_METADATA_SIZE (sizeof(struct devbox_metadata)) > > + > > +struct __packed devbox_metadata { > > + u32 boot_index; > > + u32 boot_count; > > There is the whole bootcount infrastructure for this. I think it would be much > better to use that framework instead of creating parallel one. > Yes, this goes too. Thanks.