static int mma845x_mod_probe(struct i2c_client *client, const struct i2c_device_id *devid) { struct ext_slave_platform_data *pdata; struct mma845x_mod_private_data *private_data; int result = 0; unsigned char product_id = 0xff; dev_info(&client->adapter->dev, "%s: %s\n", __func__, devid->name); if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { result = -ENODEV; goto out_no_free; } pdata = client->dev.platform_data; if (!pdata) { dev_err(&client->adapter->dev, "Missing platform data for slave %s\n", devid->name); result = -EFAULT; goto out_no_free; } result = inv_serial_read(client->adapter, pdata->address, ACCEL_MMA845X_WHO_AM_I, sizeof(product_id), &product_id); printk("mma845x detect 0x%x\n", product_id); if (result || (product_id != ACCEL_MMA845X_ID)) { dev_err(&client->adapter->dev, "mma845x not found\n"); result = -ENODEV; goto out_no_free; } printk("mma845x find\n"); private_data = kzalloc(sizeof(*private_data), GFP_KERNEL); if (!private_data) { result = -ENOMEM; goto out_no_free; } i2c_set_clientdata(client, private_data); private_data->client = client; private_data->pdata = pdata; result = inv_mpu_register_slave(THIS_MODULE, client, pdata, mma845x_get_slave_descr); if (result) { dev_err(&client->adapter->dev, "Slave registration failed: %s, %d\n", devid->name, result); goto out_free_memory; } return result; out_free_memory: kfree(private_data); out_no_free: dev_err(&client->adapter->dev, "%s failed %d\n", __func__, result); return result; }
static int kxtf9_mod_probe(struct i2c_client *client, const struct i2c_device_id *devid) { struct ext_slave_platform_data *pdata; struct kxtf9_mod_private_data *private_data; int result = 0; unsigned char product_id = 0xff; //[ECID:000000] ZTEBSP wanghaifei 20120220, add for id detect dev_info(&client->adapter->dev, "%s: %s\n", __func__, devid->name); if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { result = -ENODEV; goto out_no_free; } pdata = client->dev.platform_data; if (!pdata) { dev_err(&client->adapter->dev, "Missing platform data for slave %s\n", devid->name); result = -EFAULT; goto out_no_free; } //[ECID:000000] ZTEBSP wanghaifei start 20120220, determine whether this driver shold be installed result = inv_serial_read(client->adapter, pdata->address, ACCEL_KXTF9_WHO_AM_I, sizeof(product_id), &product_id); printk("kxtf9 detect 0x%x\n", product_id); if (result || (product_id != ACCEL_KXTF9_ID)) { dev_err(&client->adapter->dev, "kxtf9 not found\n"); result = -ENODEV; goto out_no_free; } printk("kxtf9 find\n"); //[ECID:000000] ZTEBSP wanghaifei end 20120220, determine whether this driver shold be installed private_data = kzalloc(sizeof(*private_data), GFP_KERNEL); if (!private_data) { result = -ENOMEM; goto out_no_free; } i2c_set_clientdata(client, private_data); private_data->client = client; private_data->pdata = pdata; result = inv_mpu_register_slave(THIS_MODULE, client, pdata, kxtf9_get_slave_descr); if (result) { dev_err(&client->adapter->dev, "Slave registration failed: %s, %d\n", devid->name, result); goto out_free_memory; } return result; out_free_memory: kfree(private_data); out_no_free: dev_err(&client->adapter->dev, "%s failed %d\n", __func__, result); return result; }