intel_scu_pltdrv.c (1605B)
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Platform driver for the Intel SCU. 4 * 5 * Copyright (C) 2019, Intel Corporation 6 * Authors: Divya Sasidharan <divya.s.sasidharan@intel.com> 7 * Mika Westerberg <mika.westerberg@linux.intel.com> 8 * Rajmohan Mani <rajmohan.mani@intel.com> 9 */ 10 11#include <linux/err.h> 12#include <linux/errno.h> 13#include <linux/ioport.h> 14#include <linux/mod_devicetable.h> 15#include <linux/module.h> 16#include <linux/platform_device.h> 17 18#include <asm/intel_scu_ipc.h> 19 20static int intel_scu_platform_probe(struct platform_device *pdev) 21{ 22 struct intel_scu_ipc_data scu_data = {}; 23 struct intel_scu_ipc_dev *scu; 24 const struct resource *res; 25 26 scu_data.irq = platform_get_irq_optional(pdev, 0); 27 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 28 if (!res) 29 return -ENOMEM; 30 31 scu_data.mem = *res; 32 33 scu = devm_intel_scu_ipc_register(&pdev->dev, &scu_data); 34 if (IS_ERR(scu)) 35 return PTR_ERR(scu); 36 37 platform_set_drvdata(pdev, scu); 38 return 0; 39} 40 41static const struct acpi_device_id intel_scu_acpi_ids[] = { 42 { "INTC1026" }, 43 {} 44}; 45MODULE_DEVICE_TABLE(acpi, intel_scu_acpi_ids); 46 47static struct platform_driver intel_scu_platform_driver = { 48 .probe = intel_scu_platform_probe, 49 .driver = { 50 .name = "intel_scu", 51 .acpi_match_table = intel_scu_acpi_ids, 52 }, 53}; 54module_platform_driver(intel_scu_platform_driver); 55 56MODULE_AUTHOR("Divya Sasidharan <divya.s.sasidharan@intel.com>"); 57MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com"); 58MODULE_AUTHOR("Rajmohan Mani <rajmohan.mani@intel.com>"); 59MODULE_DESCRIPTION("Intel SCU platform driver"); 60MODULE_LICENSE("GPL v2");