// SPDX-License-Identifier: GPL-2.0-only /* * isst_tpmi.c: SST TPMI interface * * Copyright (c) 2023, Intel Corporation. * All Rights Reserved. * */ #include #include #include #include "isst_tpmi_core.h" static int intel_sst_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id) { int ret; ret = tpmi_sst_init(); if (ret) return ret; ret = tpmi_sst_dev_add(auxdev); if (ret) tpmi_sst_exit(); return ret; } static void intel_sst_remove(struct auxiliary_device *auxdev) { tpmi_sst_dev_remove(auxdev); tpmi_sst_exit(); } static int intel_sst_suspend(struct device *dev) { tpmi_sst_dev_suspend(to_auxiliary_dev(dev)); return 0; } static int intel_sst_resume(struct device *dev) { tpmi_sst_dev_resume(to_auxiliary_dev(dev)); return 0; } static DEFINE_SIMPLE_DEV_PM_OPS(intel_sst_pm, intel_sst_suspend, intel_sst_resume); static const struct auxiliary_device_id intel_sst_id_table[] = { { .name = "intel_vsec.tpmi-sst" }, {} }; MODULE_DEVICE_TABLE(auxiliary, intel_sst_id_table); static struct auxiliary_driver intel_sst_aux_driver = { .id_table = intel_sst_id_table, .remove = intel_sst_remove, .probe = intel_sst_probe, .driver = { .pm = pm_sleep_ptr(&intel_sst_pm), }, }; module_auxiliary_driver(intel_sst_aux_driver); MODULE_IMPORT_NS(INTEL_TPMI_SST); MODULE_DESCRIPTION("Intel TPMI SST Driver"); MODULE_LICENSE("GPL");