diff options
Diffstat (limited to 'drivers/platform/x86/intel/pmt/telemetry.c')
| -rw-r--r-- | drivers/platform/x86/intel/pmt/telemetry.c | 46 | 
1 files changed, 24 insertions, 22 deletions
diff --git a/drivers/platform/x86/intel/pmt/telemetry.c b/drivers/platform/x86/intel/pmt/telemetry.c index 38d52651c572..6b6f3e2a617a 100644 --- a/drivers/platform/x86/intel/pmt/telemetry.c +++ b/drivers/platform/x86/intel/pmt/telemetry.c @@ -8,6 +8,7 @@   * Author: "David E. Box" <david.e.box@linux.intel.com>   */ +#include <linux/auxiliary_bus.h>  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/pci.h> @@ -15,10 +16,9 @@  #include <linux/uaccess.h>  #include <linux/overflow.h> +#include "../vsec.h"  #include "class.h" -#define TELEM_DEV_NAME		"pmt_telemetry" -  #define TELEM_SIZE_OFFSET	0x0  #define TELEM_GUID_OFFSET	0x4  #define TELEM_BASE_OFFSET	0x8 @@ -79,34 +79,33 @@ static struct intel_pmt_namespace pmt_telem_ns = {  	.pmt_header_decode = pmt_telem_header_decode,  }; -static int pmt_telem_remove(struct platform_device *pdev) +static void pmt_telem_remove(struct auxiliary_device *auxdev)  { -	struct pmt_telem_priv *priv = platform_get_drvdata(pdev); +	struct pmt_telem_priv *priv = auxiliary_get_drvdata(auxdev);  	int i;  	for (i = 0; i < priv->num_entries; i++)  		intel_pmt_dev_destroy(&priv->entry[i], &pmt_telem_ns); - -	return 0;  } -static int pmt_telem_probe(struct platform_device *pdev) +static int pmt_telem_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id)  { +	struct intel_vsec_device *intel_vsec_dev = auxdev_to_ivdev(auxdev);  	struct pmt_telem_priv *priv;  	size_t size;  	int i, ret; -	size = struct_size(priv, entry, pdev->num_resources); -	priv = devm_kzalloc(&pdev->dev, size, GFP_KERNEL); +	size = struct_size(priv, entry, intel_vsec_dev->num_resources); +	priv = devm_kzalloc(&auxdev->dev, size, GFP_KERNEL);  	if (!priv)  		return -ENOMEM; -	platform_set_drvdata(pdev, priv); +	auxiliary_set_drvdata(auxdev, priv); -	for (i = 0; i < pdev->num_resources; i++) { +	for (i = 0; i < intel_vsec_dev->num_resources; i++) {  		struct intel_pmt_entry *entry = &priv->entry[i]; -		ret = intel_pmt_dev_create(entry, &pmt_telem_ns, pdev, i); +		ret = intel_pmt_dev_create(entry, &pmt_telem_ns, intel_vsec_dev, i);  		if (ret < 0)  			goto abort_probe;  		if (ret) @@ -117,32 +116,35 @@ static int pmt_telem_probe(struct platform_device *pdev)  	return 0;  abort_probe: -	pmt_telem_remove(pdev); +	pmt_telem_remove(auxdev);  	return ret;  } -static struct platform_driver pmt_telem_driver = { -	.driver = { -		.name   = TELEM_DEV_NAME, -	}, -	.remove = pmt_telem_remove, -	.probe  = pmt_telem_probe, +static const struct auxiliary_device_id pmt_telem_id_table[] = { +	{ .name = "intel_vsec.telemetry" }, +	{} +}; +MODULE_DEVICE_TABLE(auxiliary, pmt_telem_id_table); + +static struct auxiliary_driver pmt_telem_aux_driver = { +	.id_table	= pmt_telem_id_table, +	.remove		= pmt_telem_remove, +	.probe		= pmt_telem_probe,  };  static int __init pmt_telem_init(void)  { -	return platform_driver_register(&pmt_telem_driver); +	return auxiliary_driver_register(&pmt_telem_aux_driver);  }  module_init(pmt_telem_init);  static void __exit pmt_telem_exit(void)  { -	platform_driver_unregister(&pmt_telem_driver); +	auxiliary_driver_unregister(&pmt_telem_aux_driver);  	xa_destroy(&telem_array);  }  module_exit(pmt_telem_exit);  MODULE_AUTHOR("David E. Box <david.e.box@linux.intel.com>");  MODULE_DESCRIPTION("Intel PMT Telemetry driver"); -MODULE_ALIAS("platform:" TELEM_DEV_NAME);  MODULE_LICENSE("GPL v2");  | 
