Immutable branch between MFD and ACPI due for the v5.20 merge window
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAmK5lmkACgkQUa+KL4f8 d2EkTBAAktwJtXE1qys6xtR6TfrCqG5ndUSDXwzHnqgxAmjfL0EzuBbkFb313OCa UD3eXc7mnlJXk+2dGUth6jr+PrMnayD8xizjvJMwLU4ZOQftapIZG1wLH3s6dUdA mvxFwslxQsYBDuPdYt/u/UY2hZlfhvEGNyNlDyS1gPugLd2ZjTj9LjPiRqAI2hJd zNlWLZwAKutZsp7hBHrmEIEmgepo7JtAUtmDPcyBSzekKIaWz+hCXUwCZFP2ehVk mkul8SgT0RFo+97OZwd87uiFWp0/apbJsIEiuWCZSnCclU+hCJ+tV6kiaaEop4eN tT6jqvZKEIf2cNjaPBe7rFUPoEqWBe8oM2EPlam1z2jloMUc4hTAZQbtkh0Hsb41 c54vhKtcEc2QIMqBNARsh/wEk4Nj6LUhT12q7pDYs41dsUcaNMSTUiyhZxwU3vQb Pb9h5T/aOVIyonIJd85Sr9/jgrStWdjSiIhrn7+G1TgOTZAe5jI85x71nwu2O0G2 XVBMSVAtRqcQKvLIHqzBUP1rI7vc1PhvUMLJdkTkU/Pukh2+B1rtcaZ9GNVzXUoV Of1qrSel12s2XU9Y37PCwo2KUIdFygN+0qoIJI78karYDfXZaB4IKLi1d3ICwn9U DL6hfpM9V0eCRCO0yPHjg21PjPcLuvz3uLMIE6OhQf+pmAu+1bw= =2/uv -----END PGP SIGNATURE----- Merge tag 'ib-mfd-acpi-for-rafael-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd Pull MFD changes for 5.20 from Lee Jones to satisfy dependencies: "Immutable branch between MFD and ACPI due for the v5.20 merge window." * tag 'ib-mfd-acpi-for-rafael-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: mfd: core: Use acpi_dev_for_each_child()
This commit is contained in:
commit
dfc17f6eec
|
@ -60,12 +60,29 @@ int mfd_cell_disable(struct platform_device *pdev)
|
|||
EXPORT_SYMBOL(mfd_cell_disable);
|
||||
|
||||
#if IS_ENABLED(CONFIG_ACPI)
|
||||
struct match_ids_walk_data {
|
||||
struct acpi_device_id *ids;
|
||||
struct acpi_device *adev;
|
||||
};
|
||||
|
||||
static int match_device_ids(struct acpi_device *adev, void *data)
|
||||
{
|
||||
struct match_ids_walk_data *wd = data;
|
||||
|
||||
if (!acpi_match_device_ids(adev, wd->ids)) {
|
||||
wd->adev = adev;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mfd_acpi_add_device(const struct mfd_cell *cell,
|
||||
struct platform_device *pdev)
|
||||
{
|
||||
const struct mfd_cell_acpi_match *match = cell->acpi_match;
|
||||
struct acpi_device *parent, *child;
|
||||
struct acpi_device *adev = NULL;
|
||||
struct acpi_device *parent;
|
||||
|
||||
parent = ACPI_COMPANION(pdev->dev.parent);
|
||||
if (!parent)
|
||||
|
@ -83,14 +100,14 @@ static void mfd_acpi_add_device(const struct mfd_cell *cell,
|
|||
if (match) {
|
||||
if (match->pnpid) {
|
||||
struct acpi_device_id ids[2] = {};
|
||||
struct match_ids_walk_data wd = {
|
||||
.adev = NULL,
|
||||
.ids = ids,
|
||||
};
|
||||
|
||||
strlcpy(ids[0].id, match->pnpid, sizeof(ids[0].id));
|
||||
list_for_each_entry(child, &parent->children, node) {
|
||||
if (!acpi_match_device_ids(child, ids)) {
|
||||
adev = child;
|
||||
break;
|
||||
}
|
||||
}
|
||||
acpi_dev_for_each_child(parent, match_device_ids, &wd);
|
||||
adev = wd.adev;
|
||||
} else {
|
||||
adev = acpi_find_child_device(parent, match->adr, false);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue