};
-static int l3g4200d_init_client(struct i2c_client *client)
+static int l3g4200d_init_irq(struct i2c_client *client)
{
struct l3g4200d_data *l3g4200d;
int ret;
ret = request_irq(client->irq, l3g4200d_interrupt, IRQF_TRIGGER_LOW, client->dev.driver->name, l3g4200d);
DBG("request irq is %d,ret is 0x%x\n",client->irq,ret);
if (ret ) {
- DBG(KERN_ERR "l3g4200d_init_client: request irq failed,ret is %d\n",ret);
+ DBG(KERN_ERR "l3g4200d_init_irq: request irq failed,ret is %d\n",ret);
return ret;
}
disable_irq(client->irq);
this_client = client;
- err = l3g4200d_init_client(client);
- if (err < 0) {
- DBG(KERN_ERR
- "l3g4200d_probe: l3g4200d_init_client failed\n");
- goto exit_request_gpio_irq_failed;
- }
-
-
l3g4200d->pdata = kmalloc(sizeof(*l3g4200d->pdata), GFP_KERNEL);
if (l3g4200d->pdata == NULL)
printk("%s:fail\n",__func__);
goto exit_kfree_pdata;
}
+
+
+ err = l3g4200d_init_irq(client);
+ if (err < 0) {
+ DBG(KERN_ERR
+ "l3g4200d_probe: l3g4200d_init_irq failed\n");
+ goto exit_request_gpio_irq_failed;
+ }
l3g4200d->input_dev = input_allocate_device();
if (!l3g4200d->input_dev) {
exit_input_allocate_device_failed:
free_irq(client->irq, l3g4200d);
exit_kfree_pdata:
+exit_request_gpio_irq_failed:
kfree(l3g4200d->pdata);
exit_kfree:
-exit_request_gpio_irq_failed:
kfree(l3g4200d);
exit_alloc_data_failed:
DBG("%s error\n",__FUNCTION__);