On Tue, May 21, 2019 at 01:34:26PM +0200, Esben Haabendal wrote: > Allow getting memory resource (mapbase or iobase) as well as irq from > platform_device resources. > > The UPF_DEV_RESOURCES flag must be set for devices where platform_device > resources are to be used. When not set, driver behaves as before. > > This allows use of the serial8250 driver together with devices with > resources added by platform_device_add_resources(), such as mfd child > devices added with mfd_add_devices(). > > When UPF_DEV_RESOURCES flag is set, the following platform_data fields should > not be used: mapbase, iobase, mapsize, and irq. They are superseded by the > resources attached to the device. >
Same comment here: Requesting resource is orthogonal to the retrieving or slicing them. > + if (p->flags & UPF_DEV_RESOURCES) { > + serial8250_probe_resources(dev, i, p, &uart); This can be easily detected by checking for the resources directly, like res = platform_get_resource(...); if (res) new_scheme(); else old_scheme(); Otherwise looks good. > - if (!request_mem_region(port->mapbase, size, "serial")) { > + if (!(port->flags & UPF_DEV_RESOURCES) && > + !request_mem_region(port->mapbase, size, "serial")) { > - release_mem_region(port->mapbase, size); > + if (!(port->flags & UPF_DEV_RESOURCES)) > + release_mem_region(port->mapbase, size); > - if (!request_region(port->iobase, size, "serial")) > + if (!(port->flags & UPF_DEV_RESOURCES) && > + !request_region(port->iobase, size, "serial")) > - release_mem_region(port->mapbase, size); > + if (!(port->flags & UPF_DEV_RESOURCES)) > + release_mem_region(port->mapbase, size); > - release_region(port->iobase, size); > + if (!(port->flags & UPF_DEV_RESOURCES)) > + release_region(port->iobase, size); All these changes are not related to what you describe in the commit message. is a workaround for the bug in the parent MFD driver of the 8250. -- With Best Regards, Andy Shevchenko