Dmitry Borisov
991dbeff53
[ISAPNP] Fix the truncation of 32-bit configuration I/O reads
...
CORE-18562
2024-08-03 17:08:43 +06:00
Dmitry Borisov
b36d9bd9c1
[ISAPNP_UNITTEST] Add unit tests exercising device discovery and device resources functionality
...
CORE-18562
2024-08-03 17:08:43 +06:00
Dmitry Borisov
016d01e5d1
[ISAPNP] Extract resource definitions
...
Prepare the driver for upcoming API tests
CORE-18562
2024-08-03 17:08:43 +06:00
Dmitry Borisov
4ba8a8b59b
[ISAPNP] Allocate the Read Port resources on demand
...
This will simplify failure paths and reduce memory usage
2024-08-03 17:08:42 +06:00
Hervé Poussineau
3a32d5980c
[ISAPNP] Generate hardware ids and compatible ids in upper case
2022-09-23 23:07:45 +02:00
Dmitry Borisov
84fabd819d
[ISAPNP] Add support for NEC PC-98 series
2021-11-17 13:56:29 +03:00
Hervé Poussineau
ac13f37d0a
[ISAPNP] Generate a name for PDO, as required
2021-10-14 23:39:30 +02:00
Dmitry Borisov
18b4cc1479
[ISAPNP] Start the driver early in the boot
...
Because our child devices can have boot-start drivers
2021-06-20 19:24:32 +06:00
Dmitry Borisov
adac7dc2e5
[ISAPNP] Implement device configuration
2021-06-20 19:24:32 +06:00
Dmitry Borisov
8939abf113
[ISAPNP] Disable bus scan on unsupported platforms
...
This speeds up boot a bit and also decreases binary size.
- Introduce a new CMake define ISAPNP_ENABLE that defined only in x86 platform
when ISA PnP is supported.
2021-06-20 19:24:32 +06:00
Dmitry Borisov
e318d22940
[ISAPNP] Disable I/O range check before activation
...
See Table A-2 of "Plug and Play ISA Specification 1.0a"
2021-06-20 19:24:31 +06:00
Dmitry Borisov
367f4b1581
[ISAPNP] Map configuration states to PnP states
...
Rework the hardware support code to avoid unneeded transitions
between configuration states.
- Only call WaitForKey when needed.
- Each PnP state transition causes the bus to move to WaitForKey state.
Besides, deactivate logical device during processing remove request.
2021-06-20 19:24:31 +06:00
Dmitry Borisov
d6dca83baf
[ISAPNP] Reduce software delay
2021-06-20 19:24:31 +06:00
Dmitry Borisov
8ed43b6907
[ISAPNP] Fix descriptors and support alternative configurations
...
- Fix empty resource descriptors being created.
- Properly support IRQ descriptors.
- Introduce four helpers made to help search descriptors
in the logical device's requirements.
- Implement support for memory descriptors and alternative configurations.
- DMA descriptors are always DMA_8.
2021-06-20 19:24:31 +06:00
Dmitry Borisov
b29a3ac524
[ISAPNP] Read all resources when detecting devices
2021-06-20 19:24:31 +06:00
Dmitry Borisov
ca42de9c31
[ISAPNP] Rewrite the tag parser
...
- Support all resource descriptors.
- Optimize card identification.
- Detect cards that is no longer present on the bus.
- Deactivate cards after the identification phase; they will be activated
by start device IRP.
- Provide a device description and compatible IDs to the device manager.
- Prevent duplicate IDs across multiple logical devices.
- Suppress warning about the usage of literals in port addresses.
2021-06-20 19:24:31 +06:00
Dmitry Borisov
7c897dfbd1
[ISAPNP] Use the correct types for helper functions
2021-06-20 19:24:31 +06:00
Dmitry Borisov
c4b6330b14
[ISAPNP] Implement the Read Port resource management
...
Currently disabled until the kernel is ready
2021-06-20 19:24:31 +06:00
Dmitry Borisov
f15de15554
[ISAPNP] Fixes and improvements for IRP handling
...
- Implement device removal.
- Finish the Read Port special handling
introduced in 21514e473f
.
- Gracefully handle low memory situations.
- Implement IRQ translator.
- Correctly stub power IRP handling.
- Remove unneeded dispatch routines; implement WMI IRP handling.
- Do not handle requests like WRITE_CONFIG.
- Add a signature member to device extensions to make checks clearer.
2021-06-20 19:24:26 +06:00
Dmitry Borisov
e19595572a
[ISAPNP] Implement querying bus information
2021-06-20 19:24:25 +06:00
Dmitry Borisov
8f36dee6ff
[ISAPNP] Properly count descriptors
...
Fixes random pool corruptions
2021-06-20 19:24:25 +06:00
Dmitry Borisov
2d367001bd
[ISAPNP] Fix device capabilities
...
- The bus does not supply an address.
- Read Port ID is always unique.
This reverts commit fc0a0b9f84
.
See also commit 21514e473f
.
CORE-17034
2021-06-20 19:24:19 +06:00
Dmitry Borisov
21514e473f
[ISAPNP] Make Read Data Port PDO unique
...
This PDO is created only once during start of first FDO.
Other buses will remain in an inactive state until
the first FDO receives a remove request.
CORE-17034
2021-06-20 19:22:32 +06:00
Dmitry Borisov
c92bec609b
[ISAPNP] Refactor string handling
...
- Don't allocate string buffers twice.
2021-06-20 19:22:32 +06:00
Dmitry Borisov
70ba96f164
[ISAPNP] Make the driver pageable
2021-06-20 19:22:31 +06:00
Dmitry Borisov
66c195755c
[ISAPNP] Use pool tagging
2021-06-20 19:22:31 +06:00
Dmitry Borisov
8f44930f91
[ISAPNP] Code formatting
...
- Add SAL2 annotations.
- Use RTL_NUMBER_OF macro in kernel mode.
- Use better function/member names.
- Less hardcoded values.
- Add license information. See commit
d9face83c6
for details.
No functional changes.
2021-06-20 19:22:31 +06:00
Hervé Poussineau
9df05ba4b6
[ISAPNP] Properly stub IRP_MJ_POWER
2020-07-30 13:24:29 +02:00
Hervé Poussineau
e246b9947e
[ISAPNP] Mark read data port as started, even if no ISAPNP card is present
...
CORE-17056
2020-05-16 23:20:38 +02:00
Mark Jansen
da777baa3d
[ISAPNP] Initialize uninitialized variable
...
Return value was a suggestion from Thomas,
it still boots for me (tm)
2020-05-16 14:03:04 +02:00
Hervé Poussineau
fc0a0b9f84
[ISAPNP] Mark Read Data Port as not having a unique ID
...
This fixes a bugcheck in ntoskrnl.exe when computer has multiple ISA buses.
CORE-17034
2020-05-09 16:54:46 +02:00
Hervé Poussineau
7cda1ed2f5
[ISAPNP] Report DMA channels
2020-03-26 16:36:23 +01:00
Hervé Poussineau
eb66324d7c
[ISAPNP] Fix reporting of devices with hexadecimal productId
2020-03-26 16:36:22 +01:00
Hervé Poussineau
67141abef1
[ISAPNP] Create requirements and resource lists when detecting a device
2020-03-22 14:29:38 +01:00
Hervé Poussineau
0ca5567894
[ISAPNP] Read all tags when detecting devices, and keep interesting ones
...
Currently, we only keep device identification, IO ports and IRQs.
2020-03-22 14:29:38 +01:00
Hervé Poussineau
61c1079a18
[ISAPNP] Create resource list ahead of IRP_MN_QUERY_RESOURCES
2020-03-22 14:29:38 +01:00
Hervé Poussineau
debec8c96e
[ISAPNP] Create resource requirements ahead of IRP_MN_QUERY_RESOURCE_REQUIREMENTS
2020-03-22 14:29:38 +01:00
Hervé Poussineau
1dcc6f8b94
[ISAPNP] Fix capabilities for devices
2020-03-22 14:29:38 +01:00
Hervé Poussineau
42724f47f8
[ISAPNP] Return a compatibleIDs only if defined
2020-03-22 14:29:38 +01:00
Hervé Poussineau
b905c40d2e
[ISAPNP] Fix some indentation
2020-03-22 14:29:38 +01:00
Hervé Poussineau
7b1e28e724
[ISAPNP] Fix some warnings
2020-03-21 08:29:15 +01:00
Hervé Poussineau
2abd853b37
[ISAPNP] Implement some more IRP_MJ_PNP/IRP_MN_* requests
...
We either succeed them, or we pass them down to the ISAPNP FDO.
2020-03-20 22:40:11 +01:00
Hervé Poussineau
8b53ed1d9b
[ISAPNP] Implement IRP_MN_QUERY_PNP_DEVICE_STATE for ReadDataPort
2020-03-20 22:40:11 +01:00
Hervé Poussineau
5b9929a076
[ISAPNP] Detect devices only once ReadDataPort is started
...
Also let kernel choose the read data port address, by using the resources given in IRP_MN_START_DEVICE.
2020-03-20 22:40:11 +01:00
Hervé Poussineau
5a404e6c50
[ISAPNP] Implement IRP_MN_QUERY_RESOURCES/IRP_MN_QUERY_RESOURCE_REQUIREMENTS for ReadDataPort
2020-03-20 22:40:11 +01:00
Hervé Poussineau
2fe644dc86
[ISAPNP] Report removal relations on ReadDataPort
2020-03-20 22:40:11 +01:00
Hervé Poussineau
c4813f73f5
[ISAPNP] Report a ReadDataPort PDO
...
This PDO will later request resources required for ISAPNP bus.
2020-03-20 22:40:11 +01:00
Hervé Poussineau
e0607fcebf
[ISAPNP] Create PDO identifiers ahead of IRP_MN_QUERY_ID
2020-03-20 22:40:11 +01:00
Hervé Poussineau
89aff07a67
[ISAPNP] Extract function to create DOs
2020-03-20 22:40:11 +01:00
Hervé Poussineau
d0c7bd98c7
[ISAPNP] Fix some return codes
2020-03-20 22:40:11 +01:00