static int earjack_debugger_probe(struct platform_device *pdev) { int ret = 0; struct earjack_debugger_device *adev; struct earjack_debugger_platform_data *pdata; lge_uart_console_set_config(UART_CONSOLE_ENABLE_ON_EARJACK_DEBUGGER); if (pdev->dev.of_node) { pdata = devm_kzalloc(&pdev->dev, sizeof(struct earjack_debugger_platform_data), GFP_KERNEL); if (pdata == NULL) { pr_err("%s: no pdata\n", __func__); return -ENOMEM; } pdev->dev.platform_data = pdata; earjack_debugger_parse_dt(&pdev->dev, pdata); } else { pdata = pdev->dev.platform_data; } if (!pdata) { pr_err("%s: no pdata\n", __func__); return -ENOMEM; } adev = kzalloc(sizeof(struct earjack_debugger_device), GFP_KERNEL); if (!adev) { pr_err("%s: no memory\n", __func__); return -ENOMEM; } adev->gpio = pdata->gpio_trigger; adev->irq = gpio_to_irq(pdata->gpio_trigger); adev->set_uart_console = msm_serial_set_uart_console; platform_set_drvdata(pdev, adev); ret = gpio_request_one(adev->gpio, GPIOF_IN, "gpio_earjack_debugger"); if (ret < 0) { pr_err("%s: failed to request gpio %d\n", __func__, adev->gpio); goto err_gpio_request; } ret = request_threaded_irq(adev->irq, NULL, earjack_debugger_irq_handler, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "earjack_debugger_trigger", adev); if (ret < 0) { pr_err("%s: failed to request irq\n", __func__); goto err_request_irq; } if (earjack_debugger_detected(adev)) { pr_debug("[UART CONSOLE][%s] %s uart console\n", __func__, lge_uart_console_should_enable_on_earjack_debugger() ? "enable" : "disable"); adev->set_uart_console( lge_uart_console_should_enable_on_earjack_debugger()); } pr_info("earjack debugger probed\n"); return ret; err_request_irq: gpio_free(adev->gpio); err_gpio_request: kfree(adev); return ret; }
static int __devinit earjack_debugger_probe(struct platform_device *pdev) { int ret = 0; struct earjack_debugger_device *adev; struct earjack_debugger_platform_data *pdata; unsigned int um = 0; if (pdev->dev.of_node) { pdata = devm_kzalloc(&pdev->dev, sizeof(struct earjack_debugger_platform_data), GFP_KERNEL); if (pdata == NULL) { pr_err("%s: no pdata\n", __func__); return -ENOMEM; } pdev->dev.platform_data = pdata; earjack_debugger_parse_dt(&pdev->dev, pdata); } else { pdata = pdev->dev.platform_data; } if (!pdata) { pr_err("%s: no pdata\n", __func__); return -ENOMEM; } adev = kzalloc(sizeof(struct earjack_debugger_device), GFP_KERNEL); if (!adev) { pr_err("%s: no memory\n", __func__); return -ENOMEM; } adev->gpio = pdata->gpio_trigger; adev->irq = gpio_to_irq(pdata->gpio_trigger); adev->set_uart_console = msm_serial_set_uart_console; platform_set_drvdata(pdev, adev); ret = gpio_request_one(adev->gpio, GPIOF_IN, "gpio_earjack_debugger"); if (ret < 0) { pr_err("%s: failed to request gpio %d\n", __func__, adev->gpio); goto err_gpio_request; } ret = request_threaded_irq(adev->irq, NULL, earjack_debugger_irq_handler, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "earjack_debugger_trigger", adev); if (ret < 0) { pr_err("%s: failed to request irq\n", __func__); goto err_request_irq; } um = lge_get_uart_mode(); if (earjack_debugger_detected(adev)) adev->set_uart_console(1); #ifdef CONFIG_ZERO_WAIT zw_notifier_chain_register(&zw_earjack_debugger_nb, adev); #endif pr_info("earjack debugger probed\n"); return ret; err_request_irq: gpio_free(adev->gpio); err_gpio_request: kfree(adev); return ret; }