Commit f2d1a331 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mark Brown
Browse files

spi: Propagate default fwnode to the SPI controller device



Most of the SPI controller drivers share the parent's fwnode
by explicit assignment. Propagate the default by SPI core,
so they may drop that in the code. Only corner cases may require
a special treatment and we simply (re)assign the controller's
fwnode explicitly (as it's done right now, no changes required
for that).

Reviewed-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260112203534.4186261-2-andriy.shevchenko@linux.intel.com


Reviewed-by: default avatarLinus Walleij <linusw@kernel.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0f93dddb
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -371,6 +371,14 @@ static int cs42l43_spi_probe(struct platform_device *pdev)

	fwnode_property_read_u32(xu_fwnode, "01fa-sidecar-instances", &nsidecars);

	/*
	 * Depending on the value of nsidecars we either create a software node
	 * or assign an fwnode. We don't want software node to be attached to
	 * the default one. That's why we need to clear the SPI controller fwnode
	 * first.
	 */
	device_set_node(&priv->ctlr->dev, NULL);

	if (nsidecars) {
		struct software_node_ref_args args[] = {
			SOFTWARE_NODE_REFERENCE(fwnode, 0, GPIO_ACTIVE_LOW),
+3 −0
Original line number Diff line number Diff line
@@ -3072,6 +3072,9 @@ struct spi_controller *__spi_alloc_controller(struct device *dev,
	else
		ctlr->dev.class = &spi_controller_class;
	ctlr->dev.parent = dev;

	device_set_node(&ctlr->dev, dev_fwnode(dev));

	pm_suspend_ignore_children(&ctlr->dev, true);
	spi_controller_set_devdata(ctlr, (void *)ctlr + ctlr_size);