Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / drivers / platform / x86 / intel / speed_select_if / isst_tpmi.c
blob17972191538a390acaa6d1650cbed3e826219bd9
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3 * isst_tpmi.c: SST TPMI interface
5 * Copyright (c) 2023, Intel Corporation.
6 * All Rights Reserved.
8 */
10 #include <linux/auxiliary_bus.h>
11 #include <linux/module.h>
12 #include <linux/intel_tpmi.h>
14 #include "isst_tpmi_core.h"
16 static int intel_sst_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id)
18 int ret;
20 ret = tpmi_sst_init();
21 if (ret)
22 return ret;
24 ret = tpmi_sst_dev_add(auxdev);
25 if (ret)
26 tpmi_sst_exit();
28 return ret;
31 static void intel_sst_remove(struct auxiliary_device *auxdev)
33 tpmi_sst_dev_remove(auxdev);
34 tpmi_sst_exit();
37 static int intel_sst_suspend(struct device *dev)
39 tpmi_sst_dev_suspend(to_auxiliary_dev(dev));
41 return 0;
44 static int intel_sst_resume(struct device *dev)
46 tpmi_sst_dev_resume(to_auxiliary_dev(dev));
48 return 0;
51 static DEFINE_SIMPLE_DEV_PM_OPS(intel_sst_pm, intel_sst_suspend, intel_sst_resume);
53 static const struct auxiliary_device_id intel_sst_id_table[] = {
54 { .name = "intel_vsec.tpmi-sst" },
57 MODULE_DEVICE_TABLE(auxiliary, intel_sst_id_table);
59 static struct auxiliary_driver intel_sst_aux_driver = {
60 .id_table = intel_sst_id_table,
61 .remove = intel_sst_remove,
62 .probe = intel_sst_probe,
63 .driver = {
64 .pm = pm_sleep_ptr(&intel_sst_pm),
68 module_auxiliary_driver(intel_sst_aux_driver);
70 MODULE_IMPORT_NS(INTEL_TPMI_SST);
71 MODULE_DESCRIPTION("Intel TPMI SST Driver");
72 MODULE_LICENSE("GPL");