ret = device_add(&iris->dev); if (ret) {
put_device(&iris->dev); return ERR_PTR(ret);
}
match = of_match_device(iris_of_match, &iris->dev); if (!match) {
dev_err(&iris->dev, "no matching compatible for iris\n");
ret = -EINVAL; goto err_device_del;
}
data = match->data;
iris->xo_clk = devm_clk_get(&iris->dev, "xo"); if (IS_ERR(iris->xo_clk)) {
ret = dev_err_probe(&iris->dev, PTR_ERR(iris->xo_clk), "failed to acquire xo clk\n"); goto err_device_del;
}
iris->num_vregs = data->num_vregs;
iris->vregs = devm_kcalloc(&iris->dev,
iris->num_vregs, sizeof(struct regulator_bulk_data),
GFP_KERNEL); if (!iris->vregs) {
ret = -ENOMEM; goto err_device_del;
}
for (i = 0; i < iris->num_vregs; i++)
iris->vregs[i].supply = data->vregs[i].name;
ret = devm_regulator_bulk_get(&iris->dev, iris->num_vregs, iris->vregs); if (ret) {
dev_err(&iris->dev, "failed to get regulators\n"); goto err_device_del;
}
for (i = 0; i < iris->num_vregs; i++) { if (data->vregs[i].max_voltage)
regulator_set_voltage(iris->vregs[i].consumer,
data->vregs[i].min_voltage,
data->vregs[i].max_voltage);
if (data->vregs[i].load_uA)
regulator_set_load(iris->vregs[i].consumer,
data->vregs[i].load_uA);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.