Commit graph

37 commits

Author SHA1 Message Date
Dmitry Borisov
10b08aa2bb
[ISAPNP] Detect I/O ports at runtime (#7411)
Improve the driver's portability.
CORE-17977
2024-10-07 16:10:08 +02:00
Dmitry Borisov
2981e63a31 [ISAPNP] Refactor the configuration code
- Remove useless checks
- Increase code readability
2024-08-03 17:08:43 +06:00
Dmitry Borisov
76ec8411a4 [ISAPNP] Fix parsing of complex resource data
- Properly handle the case when the dependent function is placed
  after fixed resources
- Initialize the version and revision fields of resource lists
- Improve validation of resource data
- Add more debug prints

CORE-18562
2024-08-03 17:08:43 +06:00
Dmitry Borisov
c1d7087352 [ISAPNP] Fix the reported length of the memory I/O ranges
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
ac13f37d0a [ISAPNP] Generate a name for PDO, as required 2021-10-14 23:39:30 +02: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
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
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
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
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
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
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
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
947b49aac3 [ISAPNP] Reformat files. No code change. 2020-03-20 22:40:11 +01:00
Hervé Poussineau
7a98d28d7f [ISAPNP] Rewrite device reporting method
IoCreateDevice() was called too early, when a spinlock was acquired.
Create ISAPNP_LOGICAL_DEVICE structure when a device is detected, and call IoCreateDevice() later, when required.
2020-03-14 23:39:01 +01:00
Colin Finck
c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
Renamed from reactos/drivers/bus/isapnp/isapnp.c (Browse further)