OSDN Git Service

HID: mcp2221: fix get and get_direction for gpio
authorLouis Morhet <lmorhet@kalrayinc.com>
Tue, 4 Apr 2023 12:15:25 +0000 (14:15 +0200)
committerBenjamin Tissoires <benjamin.tissoires@redhat.com>
Thu, 13 Apr 2023 14:41:37 +0000 (16:41 +0200)
commitca6961d8a851f3720175f500be38fe9cee5a2c13
tree6c432639a764eebd5fba2e1e3ac1f91997d5255e
parente36c31f8cac54d6d900d270078d6b33de74e1b0a
HID: mcp2221: fix get and get_direction for gpio

The mcp2221_raw_event retrieves the value and direction of gpio on the
same command, by setting the value on mcp->status and the direction on
mcp->gpio_dir; and the offset at which they are read is based on
mcp->gp_idx, set by the gpiochip callbacks.

However, the individual gpiochip calls set the index to look for
directly on the field they want to track. This create a "double offset"
in the final read in the response report.

Align the behaviour of mcp2221_raw_event and
mcp_gpio_get/mcp_gpio_get_direction by putting gp_idx on those calls to
the base offset of the gpio status struct.

Signed-off-by: Louis Morhet <lmorhet@kalrayinc.com>
Link: https://lore.kernel.org/r/dd0b23800a79d2a464e1e9ed429b018b69fd5df2.1680602387.git.lmorhet@kalrayinc.com
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
drivers/hid/hid-mcp2221.c