};
 
 struct bmc150_accel_chip_info {
+       const char *name;
        u8 chip_id;
        const struct iio_chan_spec *channels;
        int num_channels;
 
 static const struct bmc150_accel_chip_info bmc150_accel_chip_info_tbl[] = {
        [bmc150] = {
+               .name = "BMC150A",
                .chip_id = 0xFA,
                .channels = bmc150_accel_channels,
                .num_channels = ARRAY_SIZE(bmc150_accel_channels),
                                 {76590, BMC150_ACCEL_DEF_RANGE_16G} },
        },
        [bmi055] = {
+               .name = "BMI055A",
                .chip_id = 0xFA,
                .channels = bmc150_accel_channels,
                .num_channels = ARRAY_SIZE(bmc150_accel_channels),
                                 {76590, BMC150_ACCEL_DEF_RANGE_16G} },
        },
        [bma255] = {
+               .name = "BMA0255",
                .chip_id = 0xFA,
                .channels = bmc150_accel_channels,
                .num_channels = ARRAY_SIZE(bmc150_accel_channels),
                                 {76590, BMC150_ACCEL_DEF_RANGE_16G} },
        },
        [bma250e] = {
+               .name = "BMA250E",
                .chip_id = 0xF9,
                .channels = bma250e_accel_channels,
                .num_channels = ARRAY_SIZE(bma250e_accel_channels),
                                 {306457, BMC150_ACCEL_DEF_RANGE_16G} },
        },
        [bma222e] = {
+               .name = "BMA222E",
                .chip_id = 0xF8,
                .channels = bma222e_accel_channels,
                .num_channels = ARRAY_SIZE(bma222e_accel_channels),
                                 {1225831, BMC150_ACCEL_DEF_RANGE_16G} },
        },
        [bma280] = {
+               .name = "BMA0280",
                .chip_id = 0xFB,
                .channels = bma280_accel_channels,
                .num_channels = ARRAY_SIZE(bma280_accel_channels),
        return IRQ_NONE;
 }
 
-static const char *bmc150_accel_match_acpi_device(struct device *dev, int *data)
-{
-       const struct acpi_device_id *id;
-
-       id = acpi_match_device(dev->driver->acpi_match_table, dev);
-
-       if (!id)
-               return NULL;
-
-       *data = (int)id->driver_data;
-
-       return dev_name(dev);
-}
-
 static int bmc150_accel_gpio_probe(struct i2c_client *client,
                                   struct bmc150_accel_data *data)
 {
 
 static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
 {
-       int ret;
+       int ret, i;
 
        ret = i2c_smbus_read_byte_data(data->client, BMC150_ACCEL_REG_CHIP_ID);
        if (ret < 0) {
        }
 
        dev_dbg(&data->client->dev, "Chip Id %x\n", ret);
-       if (ret != data->chip_info->chip_id) {
-               dev_err(&data->client->dev, "Invalid chip %x\n", ret);
+       for (i = 0; i < ARRAY_SIZE(bmc150_accel_chip_info_tbl); i++) {
+               if (bmc150_accel_chip_info_tbl[i].chip_id == ret) {
+                       data->chip_info = &bmc150_accel_chip_info_tbl[i];
+                       break;
+               }
+       }
+
+       if (!data->chip_info) {
+               dev_err(&data->client->dev, "Unsupported chip %x\n", ret);
                return -ENODEV;
        }
 
        struct iio_dev *indio_dev;
        int ret;
        const char *name = NULL;
-       int chip_id = 0;
 
        indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
        if (!indio_dev)
        i2c_set_clientdata(client, indio_dev);
        data->client = client;
 
-       if (id) {
+       if (id)
                name = id->name;
-               chip_id = id->driver_data;
-       }
-
-       if (ACPI_HANDLE(&client->dev))
-               name = bmc150_accel_match_acpi_device(&client->dev, &chip_id);
-
-       data->chip_info = &bmc150_accel_chip_info_tbl[chip_id];
 
        ret = bmc150_accel_chip_init(data);
        if (ret < 0)
        indio_dev->dev.parent = &client->dev;
        indio_dev->channels = data->chip_info->channels;
        indio_dev->num_channels = data->chip_info->num_channels;
-       indio_dev->name = name;
+       indio_dev->name = name ? name : data->chip_info->name;
        indio_dev->modes = INDIO_DIRECT_MODE;
        indio_dev->info = &bmc150_accel_info;