Skip to content
Snippets Groups Projects
Commit 84d26e29 authored by Simon Glass's avatar Simon Glass
Browse files

dm: core: Don't use pinctrl for the root device


Currently when driver model starts up it finds the root uclass and the
pinctrl uclass. This is because even the root node handles pinctrl
processing.

But this is not useful. The root node is not a real hardware device so
cannot require any particular pinmux settings. Also it means that the
memory leak tests fails, since they end up freeing more memory than
they allocate: the marker it set after the root device and pinctrl
uclass are allocated, and later once the pinctrl uclass is freed the memory
used by driver model is less than when the marker was set.

If a platform needs 'core' pin mulitplex settings it can do this with
a driver that is probed on start-up. It would be an abuse of the root node
to use this for pinctrl.

To avoid this problem, only process pinctrl settings for non-root nodes.

Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
parent 996ec1dc
Branches
Tags
No related merge requests found
......@@ -289,8 +289,12 @@ int device_probe_child(struct udevice *dev, void *parent_priv)
dev->flags |= DM_FLAG_ACTIVATED;
/* continue regardless of the result of pinctrl */
pinctrl_select_state(dev, "default");
/*
* Process pinctrl for everything except the root device, and
* continue regardless of the result of pinctrl.
*/
if (dev->parent)
pinctrl_select_state(dev, "default");
ret = uclass_pre_probe_device(dev);
if (ret)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment