Commit caa5a5d4 authored by Brian Mak's avatar Brian Mak Committed by Lee Jones
Browse files

mfd: core: Preserve OF node when ACPI handle is present



Switch device_set_node to set_primary_fwnode, so that the ACPI fwnode
does not overwrite the of_node with NULL.

This allows MFD children with both OF nodes and ACPI handles to have OF
nodes again.

Cc: stable@vger.kernel.org
Fixes: 51e3b257 ("mfd: core: Make use of device_set_node()")
Signed-off-by: default avatarBrian Mak <makb@juniper.net>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260325223024.35992-1-makb@juniper.net


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 70910aad
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -88,7 +88,17 @@ static void mfd_acpi_add_device(const struct mfd_cell *cell,
		}
	}

	device_set_node(&pdev->dev, acpi_fwnode_handle(adev ?: parent));
	/*
	 * NOTE: The fwnode design doesn't allow proper stacking/sharing. This
	 * should eventually turn into a device fwnode API call that will allow
	 * prepending to a list of fwnodes (with ACPI taking precedence).
	 *
	 * set_primary_fwnode() is used here, instead of device_set_node(), as
	 * device_set_node() will overwrite the existing fwnode, which may be an
	 * OF node that was populated earlier. To support a use case where ACPI
	 * and OF is used in conjunction, we call set_primary_fwnode() instead.
	 */
	set_primary_fwnode(&pdev->dev, acpi_fwnode_handle(adev ?: parent));
}
#else
static inline void mfd_acpi_add_device(const struct mfd_cell *cell,