int status, ret;
        bool mirror = false;
        struct regmap_config *one_regmap_config = NULL;
+       int raw_chip_address = (addr & ~0x40) >> 1;
 
        mutex_init(&mcp->lock);
 
                                        sizeof(struct regmap_config), GFP_KERNEL);
                        mcp->reg_shift = 0;
                        mcp->chip.ngpio = 8;
-                       mcp->chip.label = "mcp23s08";
+                       mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL,
+                                       "mcp23s08.%d", raw_chip_address);
                        break;
                case MCP_TYPE_S17:
                        one_regmap_config =
                                        sizeof(struct regmap_config), GFP_KERNEL);
                        mcp->reg_shift = 1;
                        mcp->chip.ngpio = 16;
-                       mcp->chip.label = "mcp23s17";
+                       mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL,
+                                       "mcp23s17.%d", raw_chip_address);
                        break;
                }
                if (!one_regmap_config)
                        return -ENOMEM;
 
-               one_regmap_config->name = devm_kasprintf(dev, GFP_KERNEL, "%d", (addr & ~0x40) >> 1);
+               one_regmap_config->name = devm_kasprintf(dev, GFP_KERNEL, "%d", raw_chip_address);
                mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp,
                                               one_regmap_config);
                break;