in spmi.c [459:509]
static void of_spmi_register_devices(struct spmi_controller *ctrl)
{
struct device_node *node;
int err;
if (!ctrl->dev.of_node)
return;
for_each_available_child_of_node(ctrl->dev.of_node, node) {
struct spmi_device *sdev;
u32 reg[2];
dev_dbg(&ctrl->dev, "adding child %pOF\n", node);
err = of_property_read_u32_array(node, "reg", reg, 2);
if (err) {
dev_err(&ctrl->dev,
"node %pOF err (%d) does not have 'reg' property\n",
node, err);
continue;
}
if (reg[1] != SPMI_USID) {
dev_err(&ctrl->dev,
"node %pOF contains unsupported 'reg' entry\n",
node);
continue;
}
if (reg[0] >= SPMI_MAX_SLAVE_ID) {
dev_err(&ctrl->dev, "invalid usid on node %pOF\n", node);
continue;
}
dev_dbg(&ctrl->dev, "read usid %02x\n", reg[0]);
sdev = spmi_device_alloc(ctrl);
if (!sdev)
continue;
sdev->dev.of_node = node;
sdev->usid = (u8)reg[0];
err = spmi_device_add(sdev);
if (err) {
dev_err(&sdev->dev,
"failure adding device. status %d\n", err);
spmi_device_put(sdev);
}
}
}