Yo! On Mon, 2024-01-08 at 12:46 +0100, Uwe Kleine-König wrote: > On Mon, Jan 08, 2024 at 10:45:31AM +0100, Philipp Stanner wrote: > > On Mon, 2024-01-08 at 10:37 +0100, Uwe Kleine-König wrote: > > > Other than that I indifferent if this is a good idea. There are > > > so many > > > helpers around these functions ... > > > > Around which, the devres functions in general? There are, but > > that's > > kind of the point, unless we'd want everyone to call into the > > lowest > > level region-request functions with their own devres callbacks. > > > > In any case: What would your suggestion be, should parties who > > can't > > (without restructuring very large parts of their code) ioremap() > > and > > request() simultaneously just not use devres? See my patch #2 > > Or is there another way to reach that goal that I'm not aware of? > > This wasn't a constructive feedback unfortunately and more a feeling > than a measurable criticism. To actually improve the state, maybe > first > check what helpers are actually there, how they are used and if they > are > suitable to what they are used for. > > Having many helpers is a hint that the usage is complicated. Is that > because the situation is complicated, or is this just a big pile of > inconsistency that can be simplified and consolidated? I thought about that and tend to believe that you are right in this case. The reason being that there'd be very few callers to such a wrapper. We have the functions for doing pure requests and pure ioremaps, so that should be sufficient. I think we can do sth like this in the rare cases where someone needs to request without (immediately) mapping: struct dcss_dev *dcss_dev_create(struct device *dev, bool hdmi_output) { struct platform_device *pdev = to_platform_device(dev); int ret; struct resource *res; struct dcss_dev *dcss; const struct dcss_type_data *devtype; resource_size_t res_len; devtype = of_device_get_match_data(dev); if (!devtype) { dev_err(dev, "no device match found\n"); return ERR_PTR(-ENODEV); } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(dev, "cannot get memory resource\n"); return ERR_PTR(-EINVAL); } res_len = res->end - res->start; if (!devm_request_mem_region(pdev->dev, res->start, res_len, "dcss")) { dev_err(dev, "cannot request memory region\n"); return ERR_PTR(-EBUSY); } And then do the associated devm_ioremap()s where they're needed. So I'd 'close' this patch series and handle it entirely through my dcss patch-series. Thx for the feedback P. > > Also I think there are helpers that take a resource type parameter > (as > your function) and others hard code it in the function name. Maybe > unifying that would be nice, too. > > Best regards > Uwe >