static int register_irq(struct platform_device *pdev, struct regulator_dev *rdev, const struct rt5033_pmic_irq_handler *irq_handler, int irq_handler_size) { int irq; int i, j; int ret; const char *irq_name; for (i = 0; i < irq_handler_size; i++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[i].irq_index); irq = platform_get_irq_byname(pdev, irq_name); ret = request_threaded_irq(irq, NULL, irq_handler[i].handler, IRQF_ONESHOT, irq_name, rdev); if (ret < 0) { pr_err("Failed to request IRQ: #%d: %d\n", irq, ret); goto err_irq; } } return 0; err_irq: for (j = 0; j < i; j++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[i].irq_index); irq = platform_get_irq_byname(pdev, irq_name); free_irq(irq, rdev); } return ret; }
static int register_irq(struct platform_device *pdev, rt5033_fled_info_t *info) { int irq; int i, j; int ret; const struct rt5033_fled_irq_handler *irq_handler = rt5033_fled_irq_handlers; const char *irq_name; for (i = 0; i < ARRAY_SIZE(rt5033_fled_irq_handlers); i++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[i].irq_index); irq = platform_get_irq_byname(pdev, irq_name); ret = request_threaded_irq(irq, NULL, irq_handler[i].handler, IRQF_ONESHOT | IRQF_TRIGGER_RISING | IRQF_NO_SUSPEND, irq_name, info); if (ret < 0) { RT5033_FLED_ERR("Failed to request IRQ (%s): #%d: %d\n", irq_name, irq, ret); goto err_irq; } } return 0; err_irq: for (j = 0; j < i; j++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[j].irq_index); irq = platform_get_irq_byname(pdev, irq_name); free_irq(irq, info); } return ret; }
static void unregister_irq(struct platform_device *pdev, rt5033_fled_info_t *info) { int irq; int i; const char *irq_name; const struct rt5033_fled_irq_handler *irq_handler = rt5033_fled_irq_handlers; for (i = 0; i < ARRAY_SIZE(rt5033_fled_irq_handlers); i++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[i].irq_index); irq = platform_get_irq_byname(pdev, irq_name); free_irq(irq, info); } }
static void unregister_irq(struct platform_device *pdev, struct regulator_dev *rdev, const struct rt5033_pmic_irq_handler *irq_handler, int irq_handler_size) { int irq; int i; const char *irq_name; for (i = 0; i < irq_handler_size; i++) { irq_name = rt5033_get_irq_name_by_index(irq_handler[i].irq_index); irq = platform_get_irq_byname(pdev, irq_name); free_irq(irq, rdev); } }