drivers: gpio: mcp23xxx: fix drive mode validation for input pins #100759
+12
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



The drive mode validation added in commit ede19a4 was rejecting valid configurations for input pins. The validation ensures that GPIO_SINGLE_ENDED and GPIO_LINE_OPEN_DRAIN flags match the hardware capabilities of each MCP23xxx variant (push-pull vs open-drain).
However, this validation was applied to all pin configurations, including input pins. Input pins do not have a drive mode, so applications typically configure them without setting drive mode flags. This caused the validation to incorrectly reject input pin configurations with -ENOTSUP.
Fix by only validating drive mode flags when GPIO_OUTPUT is set. Input pins now configure successfully, while output pins still receive proper validation to ensure the requested drive mode matches the hardware capabilities.
Fixes: ede19a4 ("drivers: mcp23xxx: add support for open-drain chip variants")