博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核ACPI函数API之acpi_os_read_pci_configuration
阅读量:4216 次
发布时间:2019-05-26

本文共 1222 字,大约阅读时间需要 4 分钟。

acpi_os_read_pci_configuration 用于在acpi这边读取形参指定的pcie设备对应的寄存器里面的值其源码分析如下:acpi_os_read_pci_configuration(struct acpi_pci_id * pci_id, u32 reg,			       u64 *value, u32 width){	int result, size;	u32 value32;	#如果value为null,则说明没有空间保存读到的值	if (!value)		return AE_BAD_PARAMETER;	switch (width) {	case 8:		size = 1;		break;	case 16:		size = 2;		break;	case 32:		size = 4;		break;	default:		return AE_ERROR;	}	读取pcie寄存器的值,可见为了区分不同的pcie设备,需要四个参数,分别是segment/bus/device/function	result = raw_pci_read(pci_id->segment, pci_id->bus,				PCI_DEVFN(pci_id->device, pci_id->function),				reg, size, &value32);	#将读到的值返回给用户	*value = value32;	return (result ? AE_ERROR : AE_OK);}int raw_pci_read(unsigned int domain, unsigned int bus,		  unsigned int devfn, int reg, int len, u32 *val){		#找到这个pcie设备对应的bug	struct pci_bus *b = pci_find_bus(domain, bus);	if (!b)		return PCIBIOS_DEVICE_NOT_FOUND;	#通过bus提供的read函数来读取pcie寄存器的值	return b->ops->read(b, devfn, reg, len, val);}与读对应的是写寄存器函数,也同样是通过bus提供的write函数进行int raw_pci_write(unsigned int domain, unsigned int bus,		unsigned int devfn, int reg, int len, u32 val){	struct pci_bus *b = pci_find_bus(domain, bus);	if (!b)		return PCIBIOS_DEVICE_NOT_FOUND;	return b->ops->write(b, devfn, reg, len, val);}

转载地址:http://ednmi.baihongyu.com/

你可能感兴趣的文章
MySQL必知必会 -- 数据检索
查看>>
MySQL必知必会 -- 排序检索数据 ORDER BY
查看>>
POJ 3087 解题报告
查看>>
POJ 2536 解题报告
查看>>
POJ 1154 解题报告
查看>>
POJ 1661 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
ACM经历总结[转载]
查看>>
C/C++文件操作[转载]
查看>>
常见的排序算法
查看>>
hdu 3460 Ancient Printer(trie tree)
查看>>
KMP求前缀函数(next数组)
查看>>
KMP
查看>>
poj 3863Business Center
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>