1 // SPDX-License-Identifier: GPL-2.0
3 * Intel(R) Trace Hub ACPI driver
5 * Copyright (C) 2017 Intel Corporation.
8 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
10 #include <linux/types.h>
11 #include <linux/module.h>
12 #include <linux/device.h>
13 #include <linux/sysfs.h>
14 #include <linux/platform_device.h>
15 #include <linux/acpi.h>
19 #define DRIVER_NAME "intel_th_acpi"
21 static const struct intel_th_drvdata intel_th_acpi_pch
= {
25 static const struct intel_th_drvdata intel_th_acpi_uncore
= {
29 static const struct acpi_device_id intel_th_acpi_ids
[] = {
30 { "INTC1000", (kernel_ulong_t
)&intel_th_acpi_uncore
},
31 { "INTC1001", (kernel_ulong_t
)&intel_th_acpi_pch
},
35 MODULE_DEVICE_TABLE(acpi
, intel_th_acpi_ids
);
37 static int intel_th_acpi_probe(struct platform_device
*pdev
)
39 struct acpi_device
*adev
= ACPI_COMPANION(&pdev
->dev
);
40 const struct acpi_device_id
*id
;
43 id
= acpi_match_device(intel_th_acpi_ids
, &pdev
->dev
);
47 th
= intel_th_alloc(&pdev
->dev
, (void *)id
->driver_data
,
48 pdev
->resource
, pdev
->num_resources
, -1);
52 adev
->driver_data
= th
;
57 static int intel_th_acpi_remove(struct platform_device
*pdev
)
59 struct intel_th
*th
= platform_get_drvdata(pdev
);
66 static struct platform_driver intel_th_acpi_driver
= {
67 .probe
= intel_th_acpi_probe
,
68 .remove
= intel_th_acpi_remove
,
71 .acpi_match_table
= intel_th_acpi_ids
,
75 module_platform_driver(intel_th_acpi_driver
);
77 MODULE_LICENSE("GPL v2");
78 MODULE_DESCRIPTION("Intel(R) Trace Hub ACPI controller driver");
79 MODULE_AUTHOR("Alexander Shishkin <alexander.shishkin@intel.com>");