Hi3511 Hi3512-PCI开发手册参考资料

介绍海思Hi3511/Hi3512芯片PCI总线API,支持按字节、字和双字访问配置空间。适用于挂载标准PCI设备及多芯片高速通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

海思平台资料,Hi3511 Hi3512_PCI开发参考,介绍了Hi3511/Hi3512 芯片提供的 PCI 涉及的 API 函数及数据类型。

描述范围:

Hi3511/Hi3512 芯片提供符合 PCI Local Bus Specification, Revision 2.3 标准的 PCI 总线。用于挂载标准 PCI 设备(如 SATA 硬盘控制器,以太网控制器等)和实现多片Hi3511/Hi3512 芯片之间大数据量高速级联通信。

Hi3511/Hi3512 的 PCI 驱动软件主要包含以下几个部分:
符合 PCI Local Bus Specification, Revision 2.3 标准的 PCI 总线适配层,用于管理各种标准的 PCI 设备的资源。
Hi3511/Hi3512 作为标准 PCI 设备时的驱动软件,包括 Hi3511/Hi3512 作为 PCI 设备在启动时的软件加载。

函数列表:

函数描述方式:
本文用 10 个域对 API 参考信息进行描述。

结构体描述方式:

API 参考

Hi3511/Hi3512 PCI 配置空间访问接口函数族

pci_bus_read_config_byte/word/dword

【目的】
当 Hi3511/Hi3512 主设备挂载标准 PCI 设备时,提供访问 Hi3511/Hi3512 挂载的各个设备的配置寄存器空间。访问该 PCI 配置空间的方式有按字节、按字和按双字三种。

【语法】
int pci_bus_read_config_byte( struct pci_bus *bus, unsigned int devfn, 
int where, u8 *val); 
int pci_bus_read_config_word( struct pci_bus *bus, unsigned int devfn, 
int where, u16 *val); 
int pci_bus_read_config_dword( struct pci_bus *bus, unsigned int devfn, 
int where, u32 *val);

【描述】
根据调用传入的 PCI 总线描述结构和设备号,找到相应的设备上的目标配置寄存器,并以一定的数据宽度(1 字节、2 字节或 4 字节)对目标配置寄存器的内容进行读操作。

【参数】

【返回值】

【需求】
头文件:#include <linux/pci.h> 
【注意】
无。
【举例】
无。
【相关主题】
pci_bus_write_config_byte/word/dword

pci_bus_write_config_byte/word/dword

【目的】
当 Hi3511/Hi3512 主设备挂载标准 PCI 设备时,提供访问 Hi3511/Hi3512 挂载的各个设备的配置寄存器空间。访问该 PCI 配置空间的方式有按字节、按字和按双字三种。

【语法】
int pci_bus_write_config_byte ( struct pci_bus *bus, unsigned int devfn, 
int where, u8 val); 
int pci_bus_write_config_word ( struct pci_bus *bus, unsigned int devfn, 
int where, u16 val); 
int pci_bus_write_config_dword ( struct pci_bus *bus, unsigned int devfn, 
int where, u32 val);

【描述】
根据调用传入的 PCI 总线描述结构和设备号,找到相应的设备上的目标配置寄存器,并以一定的数据宽度(1 字节、2 字节或 4 字节)对目标配置寄存器的内容进行写操作。

【参数】

【返回值】

【错误码】
无。
【需求】
头文件:#include <linux/pci.h> 
【注意】
无。
【举例】
无。
【相关主题】
pci_bus_read_config_byte/word/dword

pci_read_config_byte/word/dword

【目的】
当 Hi3511/Hi3512 主设备挂载标准 PCI 设备时,提供访问 Hi3511/Hi3512 挂载的各个设备的配置寄存器空间。访问该 PCI 配置空间的方式有按字节、按字和按双字三种。

【语法】
int pci_read_config_byte( struct pci_dev *dev, int where, u8 *val); 
int pci_read_config_word( struct pci_dev *dev, int where, u16 *val); 
int pci_read_config_dword( struct pci_dev *dev, int where, u32 *val);

【描述】
根据调用传入的 PCI 设备描述结构,找到相应的设备上的目标配置寄存器,并以一定的数据宽度(1 字节、2 字节或 4 字节)对目标配置寄存器的内容进行读操作。

【参数】

【返回值】

【错误码】
无。
【需求】
头文件:#include <linux/pci.h>

【注意】
内核提供的配置空间访问机制中的 pci_bus_read/write_x(x 表示 byte、word 或 dword)和 pci_read/write_x 这两组接口函数实质上都是对同一组配置空间访问函数的回调。两者的传入参数虽有区别,但是 pci_read/write_x 的 dev 参数中包含有
pci_bus_read/write_x 的参数 bus 和 devfn 的信息。因此可根据开发时的上下文来决定使用更方便的接口。例如在做设备驱动软件开发时,通常 dev 参数是直接可以获取的,则使用 pci_read/write_x 这组接口。
内核代码中两组函数的关系:
static inline int pci_read_config_byte(struct pci_dev *dev, int where, u8 
*val) 

 return pci_bus_read_config_byte (dev->bus, dev->devfn, where, val); 
}

【举例】
#define PCI_COMMAND 0x04 
#define PCI_COMMAND_MEMORY 0x2 
static void pci_set_command(struct pci_dev *dev) 

 unsigned int cmd; 
 pci_read_config_dword(dev, PCI_COMMAND, &cmd); 
 cmd = (cmd | PCI_COMMAND_MEMORY ); 
 pci_write_config_dword(dev, PCI_COMMAND, cmd); 
#endif 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值