On Wed, Apr 23, 2014 at 10:34:32PM +0200, Ivan T. Ivanov wrote: > > On Wed, 2014-04-23 at 11:16 -0700, Courtney Cavin wrote: > > On Wed, Apr 23, 2014 at 03:19:28PM +0200, Ivan T. Ivanov wrote: > > > > > > Hi, > > > > > > On Tue, 2014-04-22 at 17:31 -0700, Courtney Cavin wrote: > > > > From: Josh Cartwright <joshc@xxxxxxxxxxxxxx> > > > > > > > > The Qualcomm 8941 and 8841 PMICs are components used with the Snapdragon > > > > 800 series SoC family. This driver exists largely as a glue mfd component, > > > > it exists to be an owner of an SPMI regmap for children devices > > > > described in device tree. > > > > > > > > > > Thanks. This is exactly what I have planed to do :-) > > > > > > > Sorry if I usurped your work! > > Noting to worry. I just was surprised how close it is to my vision ;-). > Well, you might notice how extremely close it is to what Josh posted in October in his SPMI series [1], so I can't take any credit there. > > > > > > Signed-off-by: Josh Cartwright <joshc@xxxxxxxxxxxxxx> > > > > Signed-off-by: Courtney Cavin <courtney.cavin@xxxxxxxxxxxxxx> > > > > --- > > > > drivers/mfd/Kconfig | 13 +++++++++++ > > > > drivers/mfd/Makefile | 1 + > > > > drivers/mfd/pm8x41.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > 3 files changed, 77 insertions(+) > > > > create mode 100644 drivers/mfd/pm8x41.c > > > > > > > > > > <snip> > > > > > > > + > > > > +static int pm8x41_probe(struct spmi_device *sdev) > > > > +{ > > > > + struct regmap *regmap; > > > > + > > > > + regmap = devm_regmap_init_spmi_ext(sdev, &pm8x41_regmap_config); > > > > + if (IS_ERR(regmap)) { > > > > + dev_dbg(&sdev->dev, "regmap creation failed.\n"); > > > > + return PTR_ERR(regmap); > > > > + } > > > > + > > > > + return of_platform_populate(sdev->dev.of_node, NULL, NULL, &sdev->dev); > > > > > > I think that this will not going to work. For example in this particular > > > case, both controllers have "qcom,qpnp-revid" peripheral which is > > > located at offset 0x100. > > > > > > And the result is: > > > > > > [ 0.963944] sysfs: cannot create duplicate filename '/bus/platform/devices/100.revid' > > > > > [...] > > > > > > Any suggestions? > > > > That's expected behavior actually. You have two nodes in DT named the > > same thing and at the same address. This error is due to the fact that > > all devices are put in '/bus/platform/devices/' with a name made from > > the unit address and name specified in DT. There's no other unique > > information used to differentiate the devices. > > > > If you simply change the names in DT, it works. > > Sure, it will work. But they are part of different address spaces. > Why we should add, IMHO, artificial requirement that names should > be unique? Is it possible to prefix child nodes with parent device > address? As side note, why they should be registered on the platform > bus at all? To be honest I don't have solution. I agree, and it would appear that the ePAPR does as well. Feel free to send patches! > > [...] qcom,qpnp-revid 100.qcom,pm8841-revid: PM8841 v2.0 options: 0, 0, 2, 2 > > [...] qcom,qpnp-revid 100.qcom,pm8941-revid: PM8941 v3.0 options: 2, 0, 0, 0 > > > > Whether this should be "fixed" in the device/bus/sysfs core, I don't > > know, but it isn't specifically an issue with this driver, and there's > > little-to-nothing I can do to fix it here. > > > > -Courtney -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html