On Wed, 2014-11-05 at 17:36 -0800, Bjorn Andersson wrote:Hi Ivan, I have a general question about this driver/layer.
On Wed, Nov 5, 2014 at 10:31 AM, Ivan T. Ivanov <iivanov@xxxxxxxxxx> wrote:
On Wed, 2014-11-05 at 10:11 -0800, Bjorn Andersson wrote:
On Tue, Nov 4, 2014 at 5:33 AM, Ivan T. Ivanov <iivanov@xxxxxxxxxx>
wrote:
[..]
@@ -28,11 +144,27 @@ static int pmic_spmi_probe(struct spmi_device
*sdev)
{
struct device_node *root = sdev->dev.of_node;
struct regmap *regmap;
+ struct property *prop;
+ int major, minor, ret;
+ char *name, compatible[32];
regmap = devm_regmap_init_spmi_ext(sdev,
&spmi_regmap_config);
Actually also PMIC subtype (pm8841, pm8226...) is also required, soSo your plan is to have a strstr(parent->compatible, "-v2") there?Some of the child device drivers have to know PMIC chip revision.if (IS_ERR(regmap))Why would you do this?
return PTR_ERR(regmap);
+ ret = pmic_spmi_read_revid(regmap, &name, &major, &minor);
+ if (!ret) {
+ snprintf(compatible, ARRAY_SIZE(compatible),
"qcom,%s-v%d.%d",
+ name, major, minor);
+ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
+ if (prop) {
+ prop->name = kstrdup("compatible",
GFP_KERNEL);
+ prop->value = kstrdup(compatible,
GFP_KERNEL);
+ prop->length = strlen(prop->value);
+ of_update_property(root, prop);
+ }
+ }
+
What benefit does it give to patch the of_node to have a more
specific
compatible?
the plan is to have something like this:
{
static const struct of_device_id pmic_match_table[] = {
{ .compatible = "qcom,pm8941-v1.0" },
{ .compatible = "qcom,pm8841-v0.0" },
{ }
};
const struct of_device_id *match;
match = of_match_device(pmic_match_table, pdev->dev.parent);
if (match) {
dev_info(&pdev->dev, "%s chip detected\n", match->compatible);
}
}
Could you be a little bit more elaborate on what you're trying to doFor example ADC drivers are required temperature compensation based
and which child devices that might be?
on PMIC variant and chip manufacturer.
This patch have one issue, at least :-). Using of_update_property will prevent
driver to be build as module. which, I think, is coming from the fact the
on first load it will modify device compatible property and will be impossible
driver to match device id again. Still thinking how to overcome this.
Regards,
Ivan
--
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