- Fix a typo where mcp23x17 configs are referred to as mcp23x16.
- Fix precious range to include INTCAP{A,B}, which clear on read.
- Fix precious range to include GPIOB, which clears on read.
- Fix volatile range to include GPIOB, to fix debugfs registers
  reporting different values than `gpioget gpiochip2 {0..15}`.

Signed-off-by: Thomas Preston <[email protected]>
---
 drivers/pinctrl/pinctrl-mcp23s08.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c 
b/drivers/pinctrl/pinctrl-mcp23s08.c
index 42b12ea14d6b..0138638276e7 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -87,7 +87,7 @@ const struct regmap_config mcp23x08_regmap = {
 };
 EXPORT_SYMBOL_GPL(mcp23x08_regmap);
 
-static const struct reg_default mcp23x16_defaults[] = {
+static const struct reg_default mcp23x17_defaults[] = {
        {.reg = MCP_IODIR << 1,         .def = 0xffff},
        {.reg = MCP_IPOL << 1,          .def = 0x0000},
        {.reg = MCP_GPINTEN << 1,       .def = 0x0000},
@@ -98,23 +98,23 @@ static const struct reg_default mcp23x16_defaults[] = {
        {.reg = MCP_OLAT << 1,          .def = 0x0000},
 };
 
-static const struct regmap_range mcp23x16_volatile_range = {
+static const struct regmap_range mcp23x17_volatile_range = {
        .range_min = MCP_INTF << 1,
-       .range_max = MCP_GPIO << 1,
+       .range_max = (MCP_GPIO << 1) + 1,
 };
 
-static const struct regmap_access_table mcp23x16_volatile_table = {
-       .yes_ranges = &mcp23x16_volatile_range,
+static const struct regmap_access_table mcp23x17_volatile_table = {
+       .yes_ranges = &mcp23x17_volatile_range,
        .n_yes_ranges = 1,
 };
 
-static const struct regmap_range mcp23x16_precious_range = {
-       .range_min = MCP_GPIO << 1,
-       .range_max = MCP_GPIO << 1,
+static const struct regmap_range mcp23x17_precious_range = {
+       .range_min = MCP_INTCAP << 1,
+       .range_max = (MCP_GPIO << 1) + 1,
 };
 
-static const struct regmap_access_table mcp23x16_precious_table = {
-       .yes_ranges = &mcp23x16_precious_range,
+static const struct regmap_access_table mcp23x17_precious_table = {
+       .yes_ranges = &mcp23x17_precious_range,
        .n_yes_ranges = 1,
 };
 
@@ -124,10 +124,10 @@ const struct regmap_config mcp23x17_regmap = {
 
        .reg_stride = 2,
        .max_register = MCP_OLAT << 1,
-       .volatile_table = &mcp23x16_volatile_table,
-       .precious_table = &mcp23x16_precious_table,
-       .reg_defaults = mcp23x16_defaults,
-       .num_reg_defaults = ARRAY_SIZE(mcp23x16_defaults),
+       .volatile_table = &mcp23x17_volatile_table,
+       .precious_table = &mcp23x17_precious_table,
+       .reg_defaults = mcp23x17_defaults,
+       .num_reg_defaults = ARRAY_SIZE(mcp23x17_defaults),
        .cache_type = REGCACHE_FLAT,
        .val_format_endian = REGMAP_ENDIAN_LITTLE,
 };
-- 
2.26.2

Reply via email to