static void bt532_ts_int_set_pull(bool to_up) { int ret; #if 0 int pull = (to_up) ? NMK_GPIO_PULL_UP : NMK_GPIO_PULL_DOWN; ret = nmk_gpio_set_pull(TSP_INT_CODINA_R0_0, pull); if (ret < 0) printk(KERN_ERR "%s: fail to set pull xx on interrupt pin\n", __func__); #endif }
static int __devinit adp1653_probe(struct i2c_client *client, const struct i2c_device_id *id) { int err=0; struct flash_chip *flash_chip_p=NULL; struct adp1653_priv_data *priv_p=NULL; DEBUG_LOG("> adp1653_probe\n"); priv_p = kzalloc(sizeof(struct adp1653_priv_data),GFP_KERNEL); if(!priv_p){ DEBUG_LOG("Kmalloc failed for priv data\n"); err = ENOMEM; goto out; } priv_p->i2c_client = client; flash_chip_p = kzalloc(sizeof(struct flash_chip),GFP_KERNEL); if(!flash_chip_p){ DEBUG_LOG("Kmalloc failed for flash_chip_p"); err = ENOMEM; goto out; } flash_chip_p->priv_data = priv_p; flash_chip_p->ops = &adp1653_ops; SET_FLASHCHIP_TYPE(flash_chip_p,FLASH_TYPE_HPLED); SET_FLASHCHIP_ID(flash_chip_p,ADP1653_ID); strncpy(flash_chip_p->name,"Adp1653",FLASH_NAME_SIZE); i2c_set_clientdata(client,priv_p); /*Request GPIO and Register IRQ if supported by platform and flash chip*/ if(machine_is_hrefv60()) enable_gpio = 21; else enable_gpio = 272; if(enable_gpio){ err = gpio_request(enable_gpio,"Camera LED flash Enable"); if(err){ DEBUG_LOG("Unable to get GPIO %d, for enable\n",enable_gpio); goto out; } priv_p->enable_gpio = enable_gpio; err = gpio_direction_output(priv_p->enable_gpio,GPIO_HIGH); if(err){ DEBUG_LOG("Unable to set GPIO %lu in output mode, err %d\n",priv_p->enable_gpio,err); gpio_free(priv_p->enable_gpio); goto out; } gpio_set_value(priv_p->enable_gpio,GPIO_HIGH); } if (strobe_gpio != 0) { err = gpio_request(STR_GPIO,"Camera flash strobe\n"); if(err){ DEBUG_LOG("Unable to request strobe GPIO\n"); // somebody else requested this gpio ... //goto out; } err = gpio_direction_output(STR_GPIO,GPIO_LOW); if(err){ DEBUG_LOG("Unable to set GPIO %d in output mode, err %d\n",STR_GPIO,err); goto out; } } else { err = gpio_request(STR_GPIO,"Camera flash strobe\n"); if(err){ DEBUG_LOG("Unable to request strobe GPIO\n"); // somebody else requested this gpio ... //goto out; } err = gpio_direction_input(STR_GPIO); if(err){ DEBUG_LOG("Unable to set GPIO %d in input mode, err %d\n",STR_GPIO,err); goto out; } #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35) err = nmk_gpio_set_pull(STR_GPIO, NMK_GPIO_PULL_DOWN); #endif if(err){ DEBUG_LOG("Unable to set pull down on GPIO %d\n",STR_GPIO); goto out; } } priv_p->strobe_gpio = STR_GPIO; if(client->irq){ err = request_threaded_irq(client->irq,NULL,adp1653_irq_hdlr, IRQF_ONESHOT|IRQF_TRIGGER_FALLING, "Adp1653 flash",priv_p); if(err){ DEBUG_LOG("Unable to register flash IRQ handler, irq %d, err %d\n", client->irq,err); goto out; } } err = register_flash_chip(flash_position,flash_chip_p); if(err){ DEBUG_LOG("Failed to register Adp1653 as flash for %s camera\n", (flash_position?"Primary":"Secondary")); goto out; } SET_FLASH_STATUS(priv_p->status,FLASH_STATUS_READY); DEBUG_LOG("< adp1653_probe ok\n"); return err; out: if(priv_p->irq_no) free_irq(priv_p->irq_no,NULL); if(priv_p->enable_gpio) gpio_free(priv_p->enable_gpio); if(priv_p) kfree(priv_p); if(flash_chip_p) kfree(flash_chip_p); DEBUG_LOG("< adp1653_probe (%d)\n", err); return err; }