From patchwork Thu Sep 6 12:12:15 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ujfalusi X-Patchwork-Id: 1413651 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 82D853FC85 for ; Thu, 6 Sep 2012 12:12:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753790Ab2IFMMi (ORCPT ); Thu, 6 Sep 2012 08:12:38 -0400 Received: from na3sys009aog127.obsmtp.com ([74.125.149.107]:51643 "EHLO na3sys009aog127.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753681Ab2IFMMb (ORCPT ); Thu, 6 Sep 2012 08:12:31 -0400 Received: from mail-ob0-f174.google.com ([209.85.214.174]) (using TLSv1) by na3sys009aob127.postini.com ([74.125.148.12]) with SMTP ID DSNKUEiTLv0gnY1gcav8dCfDZlKj/oLPusAo@postini.com; Thu, 06 Sep 2012 05:12:31 PDT Received: by obbuo13 with SMTP id uo13so2296998obb.19 for ; Thu, 06 Sep 2012 05:12:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=5qIXXo0EqOMvvZP/0JmdX50tvYbsJSKIPZPqowuMcZA=; b=awX1So6WXc4CM9yjimB+dcCTka8kJFGkdJ/hIDiMXje5yX7NzO5gaWdM9GaYF2bRax bGu/cjIxKqFg02XWXjKMXoh+TUBJZivhaqiU7+dXJ/TIjvVHMs2hS8SWRt9Oazy2EY8w QBq9sxP5a5Z94tAWCaNdELn1DXLjmSqdFTt6xV4LwjANLkMFtsB/TlfyGvbQ0aYFMcVL ZFZeFlwH3N1isQiL8Cvqt8GD1TbgeMRUCFcZ/meySlvImb+d6K/F+ctOI+v5jAvoCNxj 64QaYqhx2qnHZe88A4YNd8zy6pqjHhW5lFUyVOaXPrSEYaYoMZQS0+Tw7tngoQUIU1mn zqvg== Received: by 10.60.172.201 with SMTP id be9mr1607582oec.141.1346933550434; Thu, 06 Sep 2012 05:12:30 -0700 (PDT) Received: from barack.emea.dhcp.ti.com (dragon.ti.com. [192.94.94.33]) by mx.google.com with ESMTPS id zn9sm1795856obb.23.2012.09.06.05.12.27 (version=SSLv3 cipher=OTHER); Thu, 06 Sep 2012 05:12:29 -0700 (PDT) From: Peter Ujfalusi To: Mark Brown , Liam Girdwood , Tony Lindgren , Samuel Ortiz , Dmitry Torokhov , Grant Likely , Rob Herring Cc: Tero Kristo , alsa-devel@alsa-project.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree-discuss@lists.ozlabs.org, Benoit Cousson , linux-kernel@vger.kernel.org Subject: [PATCH v3 08/14] Input: twl4030-vibra: Support for DT booted kernel Date: Thu, 6 Sep 2012 15:12:15 +0300 Message-Id: <1346933541-21547-9-git-send-email-peter.ujfalusi@ti.com> X-Mailer: git-send-email 1.7.12 In-Reply-To: <1346933541-21547-1-git-send-email-peter.ujfalusi@ti.com> References: <1346933541-21547-1-git-send-email-peter.ujfalusi@ti.com> X-Gm-Message-State: ALoCoQmOkXRuAtFOfNhaFDpN9yv9E9iI9WJH9ZHqELBDnWM9qPzCENd6+wXGQ2GVxn94c9xdfotL Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Add support when the kernel has been booted with DT blob. In this case the pdata is NULL, we need to reach up to the core node and check if the codec part has been enabled to determine if we need to coexist with the codec or not. Signed-off-by: Peter Ujfalusi Acked-by: Dmitry Torokhov --- drivers/input/misc/twl4030-vibra.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/input/misc/twl4030-vibra.c b/drivers/input/misc/twl4030-vibra.c index fc0ed9b..15620f8 100644 --- a/drivers/input/misc/twl4030-vibra.c +++ b/drivers/input/misc/twl4030-vibra.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -194,13 +195,28 @@ static int twl4030_vibra_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(twl4030_vibra_pm_ops, twl4030_vibra_suspend, twl4030_vibra_resume); +static bool twl4030_vibra_check_coexist(struct twl4030_vibra_data *pdata, + struct device_node *node) +{ + if (pdata && pdata->coexist) + return true; + +#ifdef CONFIG_OF + if (of_find_node_by_name(node, "codec")) + return true; +#endif + + return false; +} + static int __devinit twl4030_vibra_probe(struct platform_device *pdev) { struct twl4030_vibra_data *pdata = pdev->dev.platform_data; + struct device_node *twl4030_core_node = pdev->dev.parent->of_node; struct vibra_info *info; int ret; - if (!pdata) { + if (!pdata && !twl4030_core_node) { dev_dbg(&pdev->dev, "platform_data not available\n"); return -EINVAL; } @@ -210,7 +226,7 @@ static int __devinit twl4030_vibra_probe(struct platform_device *pdev) return -ENOMEM; info->dev = &pdev->dev; - info->coexist = pdata->coexist; + info->coexist = twl4030_vibra_check_coexist(pdata, twl4030_core_node); INIT_WORK(&info->play_work, vibra_play_work); info->input_dev = input_allocate_device();