OSDN Git Service

ide/pci: introduce pci_ide_update_mode() function
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Thu, 16 Nov 2023 10:33:53 +0000 (10:33 +0000)
committerKevin Wolf <kwolf@redhat.com>
Tue, 21 Nov 2023 11:45:21 +0000 (12:45 +0100)
commitfd6a543d19dae461f2b6a4df7f6571d3f77af45a
tree66cdb31c499914aabed5310477d1d51ab22565f6
parent75524884443f388840ddc96c4a8dcb9072e092f1
ide/pci: introduce pci_ide_update_mode() function

This function reads the value of the PCI_CLASS_PROG register for PCI IDE
controllers and configures the PCI BARs and/or IDE ioports accordingly.

In the case where we switch to legacy mode, the PCI BARs are set to return zero
(as suggested in the "PCI IDE Controller" specification), the legacy IDE ioports
are enabled, and the PCI interrupt pin cleared to indicate legacy IRQ routing.

Conversely when we switch to native mode, the legacy IDE ioports are disabled
and the PCI interrupt pin set to indicate native IRQ routing. The contents of
the PCI BARs are unspecified, but this is not an issue since if a PCI IDE
controller has been switched to native mode then its BARs will need to be
programmed.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-ID: <20231116103355.588580-3-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
hw/ide/pci.c
include/hw/ide/pci.h