lkml.org 
[lkml]   [2019]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/2] mfd: core: Support multiple OF child devices of the same type
On Thu, 06 Jun 2019, Robert Hancock wrote:

> On 2019-06-05 11:27 p.m., Lee Jones wrote:
> >>>> Without having the .of_full_name support, both MFD cells ended up
> >>>> wrongly matching against the i2c@c0000 device tree node since we just
> >>>> picked the first one where of_compatible matched.
> >>>
> >>> What is contained in each of their resources?
> >>
> >> These are the resource entries for those two devices:
> >>
> >> static const struct resource dbe_i2c1_resources[] = {
> >> {
> >> .start = 0xc0000,
> >> .end = 0xcffff,
> >> .name = "xi2c1_regs",
> >> .flags = IORESOURCE_MEM,
> >> .desc = IORES_DESC_NONE
> >> },
> >> };
> >>
> >> static const struct resource dbe_i2c2_resources[] = {
> >> {
> >> .start = 0xd0000,
> >> .end = 0xdffff,
> >> .name = "xi2c2_regs",
> >> .flags = IORESOURCE_MEM,
> >> .desc = IORES_DESC_NONE
> >> },
> >> };
> >
> > This is your problem. You are providing the memory resources through
> > *both* DT and MFD. I don't believe I've seen your MFD driver, but it
> > looks like it's probably not required at all. Just allow DT to probe
> > each of your child devices. You can obtain the IO memory from there
> > directly using the usual platform_get_resource() calls.
>
> As far as I can tell, the DT child devices underneath a PCIe device
> don't get probed and drivers loaded automatically - possibly for valid
> reasons. The MFD driver appears to be required in order to actually get
> drivers attached to those DT nodes.

You need to call of_platform_populate().

--
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

\
 
 \ /
  Last update: 2019-06-10 10:10    [W:0.062 / U:0.480 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site