Lines Matching refs:pn54x_dev
43 struct pn54x_dev {
63 static void pn54x_disable_irq(struct pn54x_dev *pn54x_dev)
67 spin_lock_irqsave(&pn54x_dev->irq_enabled_lock, flags);
68 if (pn54x_dev->irq_enabled) {
69 disable_irq_nosync(pn54x_dev->client->irq);
70 pn54x_dev->irq_enabled = false;
72 spin_unlock_irqrestore(&pn54x_dev->irq_enabled_lock, flags);
77 struct pn54x_dev *pn54x_dev = dev_id;
79 pn54x_disable_irq(pn54x_dev);
82 wake_up(&pn54x_dev->read_wq);
90 static int pn544_enable(struct pn54x_dev *dev, int mode)
166 static void pn544_disable(struct pn54x_dev *dev)
191 struct pn54x_dev *pn54x_dev = filp->private_data;
200 mutex_lock(&pn54x_dev->read_mutex);
202 if (!gpio_get_value(pn54x_dev->irq_gpio)) {
209 pn54x_dev->irq_enabled = true;
210 enable_irq(pn54x_dev->client->irq);
212 pn54x_dev->read_wq,
213 !pn54x_dev->irq_enabled);
215 pn54x_disable_irq(pn54x_dev);
220 if (gpio_get_value(pn54x_dev->irq_gpio))
228 ret = i2c_master_recv(pn54x_dev->client, tmp, count);
230 mutex_unlock(&pn54x_dev->read_mutex);
249 mutex_unlock(&pn54x_dev->read_mutex);
256 struct pn54x_dev *pn54x_dev;
260 pn54x_dev = filp->private_data;
272 ret = i2c_master_send(pn54x_dev->client, tmp, count);
285 struct pn54x_dev *pn54x_dev = container_of(filp->private_data,
286 struct pn54x_dev, pn54x_device);
288 filp->private_data = pn54x_dev;
289 pn544_enable(pn54x_dev, MODE_RUN);
296 struct pn54x_dev *pn54x_dev = filp->private_data;
298 pn544_disable(pn54x_dev);
306 struct pn54x_dev *pn54x_dev = filp->private_data;
312 if (pn544_enable(pn54x_dev, arg) == GPIO_UNUSED)
316 pn544_enable(pn54x_dev, arg);
319 pn544_disable(pn54x_dev);
327 if (gpio_is_valid(pn54x_dev->clkreq_gpio)) {
328 gpio_set_value(pn54x_dev->clkreq_gpio, 1);
334 if (gpio_is_valid(pn54x_dev->clkreq_gpio)) {
335 gpio_set_value(pn54x_dev->clkreq_gpio, 0);
473 struct pn54x_dev *pn54x_dev; // internal device specific data
535 pn54x_dev = kzalloc(sizeof(*pn54x_dev), GFP_KERNEL);
536 if (pn54x_dev == NULL) {
543 pn54x_dev->irq_gpio = pdata->irq_gpio;
544 pn54x_dev->ven_gpio = pdata->ven_gpio;
545 pn54x_dev->firm_gpio = pdata->firm_gpio;
546 pn54x_dev->clkreq_gpio = pdata->clkreq_gpio;
547 pn54x_dev->pvdd_reg = pdata->pvdd_reg;
548 pn54x_dev->vbat_reg = pdata->vbat_reg;
549 pn54x_dev->pmuvcc_reg = pdata->pmuvcc_reg;
550 pn54x_dev->sevdd_reg = pdata->sevdd_reg;
552 pn54x_dev->client = client;
555 ret = gpio_direction_input(pn54x_dev->irq_gpio);
561 ret = gpio_direction_output(pn54x_dev->ven_gpio, 0);
567 if (gpio_is_valid(pn54x_dev->firm_gpio)) {
568 ret = gpio_direction_output(pn54x_dev->firm_gpio, 0);
576 if (gpio_is_valid(pn54x_dev->clkreq_gpio)) {
577 ret = gpio_direction_output(pn54x_dev->clkreq_gpio, 0);
586 init_waitqueue_head(&pn54x_dev->read_wq);
587 mutex_init(&pn54x_dev->read_mutex);
588 spin_lock_init(&pn54x_dev->irq_enabled_lock);
591 pn54x_dev->pn54x_device.minor = MISC_DYNAMIC_MINOR;
592 pn54x_dev->pn54x_device.name = CHIP;
593 pn54x_dev->pn54x_device.fops = &pn54x_dev_fops;
594 ret = misc_register(&pn54x_dev->pn54x_device);
603 pn54x_dev->irq_enabled = true;
605 IRQF_TRIGGER_HIGH, client->name, pn54x_dev);
610 pn54x_disable_irq(pn54x_dev);
612 i2c_set_clientdata(client, pn54x_dev);
617 misc_deregister(&pn54x_dev->pn54x_device);
620 kfree(pn54x_dev);
636 struct pn54x_dev *pn54x_dev;
638 pn54x_dev = i2c_get_clientdata(client);
639 free_irq(client->irq, pn54x_dev);
640 misc_deregister(&pn54x_dev->pn54x_device);
641 mutex_destroy(&pn54x_dev->read_mutex);
642 gpio_free(pn54x_dev->irq_gpio);
643 gpio_free(pn54x_dev->ven_gpio);
644 if (gpio_is_valid(pn54x_dev->firm_gpio))
645 gpio_free(pn54x_dev->firm_gpio);
646 if (gpio_is_valid(pn54x_dev->clkreq_gpio))
647 gpio_free(pn54x_dev->clkreq_gpio);
648 regulator_put(pn54x_dev->pvdd_reg);
649 regulator_put(pn54x_dev->vbat_reg);
650 regulator_put(pn54x_dev->pmuvcc_reg);
651 regulator_put(pn54x_dev->sevdd_reg);
653 kfree(pn54x_dev);