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

📄 portdrv_bus.c

📁 底层驱动开发
💻 C
字号:
/* * File:	portdrv_bus.c * Purpose:	PCI Express Port Bus Driver's Bus Overloading Functions * * Copyright (C) 2004 Intel * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) */#include <linux/module.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/pm.h>#include <linux/pcieport_if.h>static int pcie_port_bus_match(struct device *dev, struct device_driver *drv);static int pcie_port_bus_suspend(struct device *dev, pm_message_t state);static int pcie_port_bus_resume(struct device *dev);struct bus_type pcie_port_bus_type = {	.name 		= "pci_express",	.match 		= pcie_port_bus_match,	.suspend	= pcie_port_bus_suspend,	.resume		= pcie_port_bus_resume, };static int pcie_port_bus_match(struct device *dev, struct device_driver *drv){	struct pcie_device *pciedev;	struct pcie_port_service_driver *driver;	if (drv->bus != &pcie_port_bus_type || dev->bus != &pcie_port_bus_type)		return 0;		pciedev = to_pcie_device(dev);	driver = to_service_driver(drv);	if (   (driver->id_table->vendor != PCI_ANY_ID && 		driver->id_table->vendor != pciedev->id.vendor) ||	       (driver->id_table->device != PCI_ANY_ID &&		driver->id_table->device != pciedev->id.device) ||		       (driver->id_table->port_type != PCIE_ANY_PORT &&		driver->id_table->port_type != pciedev->id.port_type) ||		driver->id_table->service_type != pciedev->id.service_type )		return 0;	return 1;}static int pcie_port_bus_suspend(struct device *dev, pm_message_t state){	struct pcie_device *pciedev;	struct pcie_port_service_driver *driver;	if (!dev || !dev->driver)		return 0;	pciedev = to_pcie_device(dev); 	driver = to_service_driver(dev->driver);	if (driver && driver->suspend)		driver->suspend(pciedev, state);	return 0;}static int pcie_port_bus_resume(struct device *dev){	struct pcie_device *pciedev;	struct pcie_port_service_driver *driver;	if (!dev || !dev->driver)		return 0;	pciedev = to_pcie_device(dev); 	driver = to_service_driver(dev->driver);	if (driver && driver->resume)		driver->resume(pciedev);	return 0;}

⌨️ 快捷键说明

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