On Tue, Sep 26, 2023 at 08:04:46AM -0700, srinivas pandruvada wrote: > On Tue, 2023-09-26 at 16:16 +0300, Andy Shevchenko wrote: > > On Mon, Sep 25, 2023 at 12:45:55PM -0700, Srinivas Pandruvada wrote: > > > The driver is using 256 as the size while calling devm_ioremap(). > > > The > > > maximum offset is already part of struct isst_mmio_range. Use the > > > maximum offset (end field of the struct) plus 4 as the map size to > > > remove > > > hardcoded value of 256. ... > > > + punit_dev->mmio_range = (struct isst_mmio_range *) ent- > > > >driver_data; > > > + > > > + punit_dev->punit_mmio = devm_ioremap(&pdev->dev, base_addr, > > > + punit_dev- > > > >mmio_range[1].end + sizeof(u32)); > > > > Can we rather fix the mmio_range driver data to have end be actually > > not the > > offset of the last dword? (Better maybe to keep length there.) > > > We can. But that has to be separate patch on top as there are other > places this range is used. Still you can add a third member for now and then clean up it later as it's all in one file. ... > > With help of > > > > struct resource r; > > ... > > r = DEFINE_RES_MEM(base_addr, mmio_range.beg + > > mmio_range.len); > > > > you can switch to devm_ioremap_resource() API. > What is the advantage of creating a resource and then call > devm_ioremap_resource()? It manages resource via global resource management and also prints an error messages in case of errors. -- With Best Regards, Andy Shevchenko