Commit Graph

176 Commits

Author SHA1 Message Date
bjorn3 8f9bbecd0c pcid: Rustfmt main.rs 2024-06-09 20:38:46 +02:00
bjorn3 fd3cf79884 pcid: Move spawning and interacting with subdrivers out of main.rs 2024-06-09 20:38:46 +02:00
bjorn3 eb2e670cd6 pcid: Explain why PciBar is used instead of pcid_types::Bar 2024-06-09 18:53:19 +02:00
bjorn3 b04915673d pcid: Remove ConfigReader and ConfigWriter traits
Only PciFunc implements this trait.
2024-06-09 18:51:55 +02:00
bjorn3 d70cf080bb pcid: Remove with_pci_func_raw 2024-06-09 18:46:35 +02:00
bjorn3 9aed7d560e pcid: Merge CapabilityOffsetsIter into CapabilitiesIter 2024-06-09 18:21:50 +02:00
bjorn3 9d37d15827 pcid: Avoid duplicate read of vendor and device id 2024-06-09 18:14:52 +02:00
bjorn3 1593884938 pcid: Use capability_pointer method instead of a raw read 2024-06-09 18:14:49 +02:00
bjorn3 7f5a340c83 pcid: Remove cap_pointer from PciHeader::PciToPci
It is never used.
2024-06-09 18:14:46 +02:00
bjorn3 ba6b91d561 pcid: Move print_pci_function to a PciHeader method 2024-06-09 16:46:59 +02:00
bjorn3 4b384066f2 Use pci_types for setting the interrupt line 2024-06-09 15:05:47 +02:00
bjorn3 7ddae5fa03 pcid: Add fixme 2024-06-09 14:03:32 +02:00
bjorn3 3737a70cc1 pcid: Reduce visibility of server handle send/recv 2024-06-09 14:03:16 +02:00
bjorn3 6825d9b2ba pcid: Remove support for connecting to non-default server 2024-06-09 14:03:16 +02:00
bjorn3 785f53c70c pcid: Stop explicitly passing PciAddress to several functions
The PciHeader/PciEndpointHeader argument already contains the
PciAddress.
2024-06-09 14:03:13 +02:00
bjorn3 38a729bc76 Handle some stabilized rustc features 2024-06-09 14:03:13 +02:00
bjorn3 020a3ef631 pcid: Update to pci_types 0.9.0 2024-06-09 14:03:10 +02:00
4lDO2 4c35e88997 Use latest event queue interface everywhere. 2024-03-31 14:30:04 +02:00
Jacob Lorentzon ff956fd3bb Switch to libredox where applicable (fixed) 2024-03-18 22:09:25 +00:00
Jeremy Soller 98078650f8 Revert "Switch to libredox where applicable."
This reverts commit 2e7dbf1cc1.
2024-03-18 15:00:52 -06:00
4lDO2 2e7dbf1cc1 Switch to libredox where applicable. 2024-03-18 19:23:05 +01:00
bjorn3 15c8ab2331 Search for PCI ECAM in the device tree on ARM 2024-03-17 17:15:34 +01:00
Jacob Lorentzon e7a6bb6c81 Only do one memory:physical map per MCFG entry. 2024-02-20 22:27:14 +00:00
Jeremy Soller de2fae8183 Do not compile MSI-X function for x86 32-bit 2024-02-16 20:52:37 -07:00
bjorn3 67d3015e2e Add helper for allocating a single MSI/MSI-X interrupt vector
It doesn't actually configure the device to emit it though, but does
make this easier to do.
2024-01-25 14:43:44 +01:00
bjorn3 ecdcefba69 Clarify message_address argument names 2024-01-24 14:28:40 +01:00
bjorn3 f43aa8574c Simplify MSI-X table pointer computation 2024-01-24 14:28:40 +01:00
bjorn3 7dbf22331b Share msix config validation code 2024-01-24 14:28:40 +01:00
bjorn3 354c351b19 Unify device info printing between drivers 2024-01-23 13:01:40 +01:00
bjorn3 77b97bb2ed Introduce PciBar::physmap_mem helper 2024-01-23 12:02:40 +01:00
bjorn3 4302a35a7e Remove a couple of unused functions from MsixCapability
The set and write methods were useless as no rpc call is exposed by
pcid to actually write the new values. As for the rest, there were
no uses and they can be emulated using the other methods.
2024-01-22 20:44:17 +01:00
bjorn3 ad23ad5d93 Introduce irq_handle helper for legacy interrupts 2024-01-22 19:35:18 +01:00
bjorn3 bd6716efe4 Make legacy_interrupt_line an Option
Drivers don't need to know the exact legacy_interrupt_pin in use.
Just if legacy interrupts are enabled and if so which
legacy_interrupt_line is used.
2024-01-22 19:35:06 +01:00
bjorn3 e972047567 Use EndpointHeader methods for the command and status registers 2024-01-22 18:12:37 +01:00
bjorn3 623d12f276 Only try to load drivers for endpoint functions
For bridge functions we don't have any existing drivers and we
currently panic if we would try to load a driver for them.
2024-01-22 18:03:46 +01:00
bjorn3 545596f296 Don't try to fetch BARs unless there is a matching driver
Fetching BARs will temporarily invalidate them, which could cause
crashes if a driver happens to access it at the same time. As we
don't yet use a single pcid instance, we don't know which devices
have a driver attached or not. As such approximate this as the set
of devices for which the current pcid instance would load a driver.
2024-01-22 17:54:38 +01:00
bjorn3 18529f6cee Remove PciClass in favor of pci_types::DeviceType 2024-01-22 16:57:53 +01:00
bjorn3 fb0dcb384b Use pci_types in a couple more places in PciHeader::from_reader 2024-01-22 16:48:52 +01:00
bjorn3 d2431d4140 Make all parsing in PciHeader::from_reader use pci_types 2024-01-22 16:32:18 +01:00
bjorn3 a5d0c7c354 Use pci_types for reading BARs
This simplifies a lot of code and adds support for 64bit BARs.
2024-01-22 15:54:18 +01:00
bjorn3 d1b6009e3d Start converting PciHeader::from_reader to pci_types 2024-01-22 15:25:08 +01:00
bjorn3 0b611dca04 Start using the pci_types crate 2024-01-22 11:25:43 +01:00
bjorn3 d56881de88 Use CfgAccess instead of ConfigReader in PciHeader::from_reader
This will enable getting BAR sizes directly inside this function in the future.
2024-01-22 11:00:17 +01:00
bjorn3 cc015eab13 Move PciHeader out of the pcid_interface crate 2024-01-21 21:25:50 +01:00
bjorn3 5192816de7 Introduce expect_port and expect_mem helpers 2024-01-21 21:12:24 +01:00
bjorn3 be0e6b9dd7 Pass self instead of &self to PciFeature methods
PciFeature is Copy, so passing it behind a reference is not necessary.
2024-01-21 20:46:00 +01:00
bjorn3 d0e90f5ded Remove fetch_header from pcid_interface
Most things are already stored in SubdriverArguments and the couple of
things that aren't may change over time and thus should be read again
each time they are accessed, while fetch_header would receive a fixed
copy from pcid.
2024-01-21 19:35:39 +01:00
bjorn3 e5772c132b Remove a lot of fields from PciHeader which are unlikely to be used
Some of these are removed with PCIe while many others only need to be
used by the firmware to initialize the PCI bridges. If we ever need
them anyway, we can always add them back, but for now it improves
readability.
2024-01-21 19:12:35 +01:00
bjorn3 1890293e86 Introduce a FullDeviceId type and pass it in pcid_interface 2024-01-21 15:18:56 +01:00
bjorn3 92914e808c Reduce code indentation one level 2024-01-21 14:03:33 +01:00