Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Пытаемся найти устройство по коду класса:
/* Direct read PCI */
printk(KERN_INFO "PCI direct access: ");
if(pci_direct_find_class(CLASS_CODE, &pdev) < 0) {
printk(KERN_INFO "Device not found ");
return 0;
}
Считываем код фирмы-производителя, код типа устройства и код класса устройства:
/* Read VENDOR_ID */
idx = 0x00;
if(pci_direct_read(pdev.bus, pdev.dev, pdev.fn, idx, 2, &config_dword) == 0)
printk(KERN_INFO "VENDOR_ID - 0x%X ", config_dword);
/* Read DEVICE_ID */
idx = 0x02;
if(pci_direct_read(pdev.bus, pdev.dev, pdev.fn, idx, 2, &config_dword) == 0)
printk(KERN_INFO "DEVICE_ID - 0x%X ", config_dword);
/* Read Class Code */
idx = 0x08;
if(pci_direct_read(pdev.bus, pdev.dev, pdev.fn, idx, 4, &config_dword) == 0)
printk(KERN_INFO "CLASS_CODE - 0x%X ", config_dword >> 8);
Считываем содержимое командного регистра и значение адреса порта I/O:
/* Read Command Register */
command_reg = 0;
idx = 0x04;
if(pci_direct_read(pdev.bus, pdev.dev, pdev.fn, idx, 2, &config_dword) == 0)
command_reg = config_dword;
/* Read Base Address Registers */
idx = 0x10;
if(command_reg & 0x01) {
for(; idx < 0x28 ;) {
if(pci_direct_read(pdev.bus, pdev.dev, pdev.fn, idx, 4, &config_dword) == PCIBIOS_SUCCESSFUL) {
if(config_dword & 0x01) {
config_dword &= ~0x1;