⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aerdrv_acpi.c

📁 linux内核源码
💻 C
字号:
/* * Access ACPI _OSC method * * Copyright (C) 2006 Intel Corp. *	Tom Long Nguyen (tom.l.nguyen@intel.com) *	Zhang Yanmin (yanmin.zhang@intel.com) * */#include <linux/module.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/pm.h>#include <linux/suspend.h>#include <linux/acpi.h>#include <linux/pci-acpi.h>#include <linux/delay.h>#include "aerdrv.h"/** * aer_osc_setup - run ACPI _OSC method * @pciedev: pcie_device which AER is being enabled on * * @return: Zero on success. Nonzero otherwise. * * Invoked when PCIE bus loads AER service driver. To avoid conflict with * BIOS AER support requires BIOS to yield AER control to OS native driver. **/int aer_osc_setup(struct pcie_device *pciedev){	acpi_status status = AE_NOT_FOUND;	struct pci_dev *pdev = pciedev->port;	acpi_handle handle = DEVICE_ACPI_HANDLE(&pdev->dev);	struct pci_bus *parent;	while (!handle) {		if (!pdev || !pdev->bus->parent)			break;		parent = pdev->bus->parent;		if (!parent->self)			/* Parent must be a host bridge */			handle = acpi_get_pci_rootbridge_handle(					pci_domain_nr(parent),					parent->number);		else			handle = DEVICE_ACPI_HANDLE(					&(parent->self->dev));		pdev = parent->self;	}	if (handle) {		pci_osc_support_set(OSC_EXT_PCI_CONFIG_SUPPORT);		status = pci_osc_control_set(handle,					OSC_PCI_EXPRESS_AER_CONTROL |					OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL);	}	if (ACPI_FAILURE(status)) {		printk(KERN_DEBUG "AER service couldn't init device %s - %s\n",		    pciedev->device.bus_id,		    (status == AE_SUPPORT || status == AE_NOT_FOUND) ?		    "no _OSC support" : "Run ACPI _OSC fails");		return -1;	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -