Patch "syscon: Decrease driver registration priority" breaks clps711x target

Trent Piepho tpiepho at kymetacorp.com
Wed Jul 13 10:57:10 PDT 2016


On Wed, 2016-07-13 at 08:52 -0700, Andrey Smirnov wrote:
> On Wed, Jul 13, 2016 at 6:04 AM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> > On Wed, Jul 13, 2016 at 10:37:11AM +0300, Alexander Shiyan wrote:
> >> Hello All.
> >>
> >> Patch "syscon: Decrease driver registration priority" breaks clps711x target.
> >> Previously, the syscon device initialized at "core_initcall", that did not cause problems.
> >> Now the device is initialized at "device_initcall" level, but clps711x uses syscon for
> >> the serial, so serial device initialized at "console_initcall" level.
> >> Any ideas?
> >
> > We could move syscon back to core_initcall level and in the syscon
> > driver use dev_get_resource() instead of request_iomem_region().
> 
> Right now the driver uses both, so if we just drop the call to
> request_iomem_region that was problematic for me on i.MX6, that should
> resolve the issue. I think this would also bring the behavior of
> syscon driver closer to what it does in Linux kernel land. The only
> negative effect of that change I think would be that on the platforms
> where syscon driver controls that region of memory, it no longer would
> be reported as such by "iomem".
> 

Syscon driver is a little strange in Linux since commit bdb0066.  The
driver no longer as an OF match and doesn't bind to syscon devices
listed in the device tree.  When something wants to use a syscon it
calls syscon_regmap_lookup_by_compatible(), which finds the OF node,
maps the registers, and puts it in a driver global list.  Anything that
maps the same syscon will get the same regmap that via the list.  But
the regmap is never associated with the syscon device!

So syscon doesn't use the driver/device model anymore.  It's more like a
global table of regmaps that are indexed using a OF node.


More information about the barebox mailing list