Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/cxl/mock_acpi.c
26288 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/* Copyright(c) 2021 Intel Corporation. All rights reserved. */
3
4
#include <linux/platform_device.h>
5
#include <linux/device.h>
6
#include <linux/acpi.h>
7
#include <cxl.h>
8
#include "test/mock.h"
9
10
struct acpi_device *to_cxl_host_bridge(struct device *host, struct device *dev)
11
{
12
int index;
13
struct acpi_device *adev, *found = NULL;
14
struct cxl_mock_ops *ops = get_cxl_mock_ops(&index);
15
16
if (ops && ops->is_mock_bridge(dev)) {
17
found = ACPI_COMPANION(dev);
18
goto out;
19
}
20
21
if (dev_is_platform(dev))
22
goto out;
23
24
adev = to_acpi_device(dev);
25
if (!acpi_pci_find_root(adev->handle))
26
goto out;
27
28
if (strcmp(acpi_device_hid(adev), "ACPI0016") == 0) {
29
found = adev;
30
dev_dbg(host, "found host bridge %s\n", dev_name(&adev->dev));
31
}
32
out:
33
put_cxl_mock_ops(index);
34
return found;
35
}
36
37