}
} else if ((cur_reg >= 0x30) && (cur_reg < 0x34)) {
pci_dev->ext_rom_updated = 1;
- } else if ((cur_reg == 0x04) || (cur_reg == 0x05)) {
- // COMMAND update
+ } else if (cur_reg == 0x04) {
+ // COMMAND update
+ uint8_t command = *((uint8_t *)src + i);
+
+ pci_dev->config_space[cur_reg] = command;
+
+ if (pci_dev->cmd_update) {
+ pci_dev->cmd_update(pci_dev, (command & 0x01), (command & 0x02));
+ }
+
} else if (cur_reg == 0x0f) {
// BIST update
}
int dev_num,
struct v3_pci_bar * bars,
int (*config_update)(struct pci_device * pci_dev, uint_t reg_num, int length),
- int (*cmd_update)(struct pci_dev *pci_dev, uchar_t io_enabled, uchar_t mem_enabled),
+ int (*cmd_update)(struct pci_device *pci_dev, uchar_t io_enabled, uchar_t mem_enabled),
int (*bar_update)(struct pci_device * pci_dev, uint_t bar),
void * private_data) {