Skip to content

Add zero setters for write-one-to-set bits - #181

Closed
ArthurHeymans wants to merge 4 commits into
rust-osdev:mainfrom
ArthurHeymans:w1s-zero-setters
Closed

Add zero setters for write-one-to-set bits#181
ArthurHeymans wants to merge 4 commits into
rust-osdev:mainfrom
ArthurHeymans:w1s-zero-setters

Conversation

@ArthurHeymans

Copy link
Copy Markdown

Read-modify-write operations on registers with write-one-to-set fields need a way to clear unrelated action bits in the value that will be written back.

Add set_0_* helpers alongside the existing setters so callers can explicitly write zero to those fields and avoid triggering an unrelated command.

  • Changelog updated

Allow callers to select native, low-high, or high-low access for xHCI
64-bit MMIO registers. Keep native access as the default for existing
users while making split access available for platforms and controllers
that cannot accept native 64-bit MMIO operations.
The USB legacy support control/status register is the second dword of
the capability. Map it at base + 4 instead of aliasing the legacy
support semaphore register.
The Doorbell Array contains entry zero for the host controller followed
by one entry for each device slot. Include that first entry in the
accessor length so the highest valid slot ID remains addressable.
Read-modify-write users need to explicitly write zero to unrelated W1S
bits. Add set_0 accessors matching the existing RW1C API so updating one
field cannot accidentally trigger another write-one action.
@ArthurHeymans

Copy link
Copy Markdown
Author

This PR is part of a stack of 5 bookmarks:

  1. main
  2. configurable-64-bit-mmio
  3. fix-usb-legacy-offset
  4. fix-doorbell-count
  5. w1s-zero-setters ← this PR
  6. per-register-port-access

Created with jj-stack

@ArthurHeymans

Copy link
Copy Markdown
Author

Superseded by the stacked PR: ArthurHeymans#4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant