From patchwork Tue Feb 19 12:00:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 16918 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1U7lsP-0006wD-BY; Tue, 19 Feb 2013 13:00:49 +0100 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-3) with esmtp id 1U7lsO-00049t-Eu; Tue, 19 Feb 2013 13:00:49 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932560Ab3BSMAr (ORCPT + 1 other); Tue, 19 Feb 2013 07:00:47 -0500 Received: from mailout3.w1.samsung.com ([210.118.77.13]:21365 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932473Ab3BSMAq (ORCPT ); Tue, 19 Feb 2013 07:00:46 -0500 Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MIG00AIJUMHWE60@mailout3.w1.samsung.com> for linux-media@vger.kernel.org; Tue, 19 Feb 2013 12:00:44 +0000 (GMT) X-AuditID: cbfec7f4-b7f4c6d0000018de-21-5123696cd852 Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id A4.A7.06366.C6963215; Tue, 19 Feb 2013 12:00:44 +0000 (GMT) Received: from AMDC1061.digital.local ([106.116.147.88]) by eusync3.samsung.com (Oracle Communications Messaging Server 7u4-23.01 (7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0MIG00I7PUOUPT60@eusync3.samsung.com> for linux-media@vger.kernel.org; Tue, 19 Feb 2013 12:00:44 +0000 (GMT) From: Andrzej Hajda To: linux-media@vger.kernel.org Cc: Kyungmin Park , Seung-Woo Kim , Sylwester Nawrocki , Andrzej Hajda Subject: [PATCH 1/2] max77693: added device tree support Date: Tue, 19 Feb 2013 13:00:20 +0100 Message-id: <1361275221-6595-2-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1361275221-6595-1-git-send-email-a.hajda@samsung.com> References: <1361275221-6595-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMJMWRmVeSWpSXmKPExsVy+t/xq7o5mcqBBv031S16NmxldWD0+LxJ LoAxissmJTUnsyy1SN8ugSvj5vJLrAWtYhUvZuY0MH4V7GLk4JAQMJG422nXxcgJZIpJXLi3 nq2LkYtDSGApo8TKKw9ZIZx1TBKLmo+ygFSxCWhK/N18kw3EFhGQl3jSewOsg1lgLaNE49s3 zCAJYQELiYfX7zGC2CwCqhJX5y5lBbF5BZwkFn66wwKxTlGi+9kEsEGcAs4SC352s4PYQkA1 q59NY5rAyLuAkWEVo2hqaXJBcVJ6rqFecWJucWleul5yfu4mRojHv+xgXHzM6hCjAAejEg/v B0elQCHWxLLiytxDjBIczEoivPMtlQOFeFMSK6tSi/Lji0pzUosPMTJxcEo1MC5tjdK0Vuma kBvSFrDBMenFLoaShv8bs94+uP35pO6HDV++XF3Q83f36WrrZ8ujpM6s1ndfH1l+7+7NqUWH w6PKLzSk252KVbNIOiJ26WwAe7V6efMf/zU1sUu57i5b579kfu+947khKj6sP8W4Xq89U7S0 eoORfWbjJi9LhgUvc79KabccyFNiKc5INNRiLipOBACVA5a71gEAAA== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2013.2.19.114817 X-PMX-Spam: Gauge=IIIIIIIII, Probability=9%, Report=' HTML_NO_HTTP 0.1, MULTIPLE_RCPTS 0.1, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __HAS_FROM 0, __HAS_HTML 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' Signed-off-by: Andrzej Hajda Reviewed-by: Sylwester Nawrocki Signed-off-by: Kyungmin Park --- drivers/mfd/max77693.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c index cc5155e..46223da 100644 --- a/drivers/mfd/max77693.c +++ b/drivers/mfd/max77693.c @@ -106,11 +106,30 @@ static const struct regmap_config max77693_regmap_config = { .max_register = MAX77693_PMIC_REG_END, }; +static int max77693_get_platform_data(struct max77693_dev *max77693, + struct device *dev) +{ + struct device_node *node = dev->of_node; + struct max77693_platform_data *pdata = dev->platform_data; + + if (node) { + max77693->wakeup = of_property_read_bool(node, "wakeup-source"); + return 0; + } + + if (pdata) { + max77693->wakeup = pdata->wakeup; + return 0; + } + + dev_err(dev, "No platform data found.\n"); + return -EINVAL; +} + static int max77693_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { struct max77693_dev *max77693; - struct max77693_platform_data *pdata = i2c->dev.platform_data; u8 reg_data; int ret = 0; @@ -119,6 +138,10 @@ static int max77693_i2c_probe(struct i2c_client *i2c, if (max77693 == NULL) return -ENOMEM; + ret = max77693_get_platform_data(max77693, &i2c->dev); + if (ret < 0) + return ret; + max77693->regmap = devm_regmap_init_i2c(i2c, &max77693_regmap_config); if (IS_ERR(max77693->regmap)) { ret = PTR_ERR(max77693->regmap); @@ -133,11 +156,6 @@ static int max77693_i2c_probe(struct i2c_client *i2c, max77693->irq = i2c->irq; max77693->type = id->driver_data; - if (!pdata) - goto err_regmap; - - max77693->wakeup = pdata->wakeup; - if (max77693_read_reg(max77693->regmap, MAX77693_PMIC_REG_PMIC_ID2, ®_data) < 0) { dev_err(max77693->dev, "device not found on this channel\n"); @@ -177,7 +195,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c, if (ret < 0) goto err_mfd; - device_init_wakeup(max77693->dev, pdata->wakeup); + device_init_wakeup(max77693->dev, max77693->wakeup); return ret; @@ -233,11 +251,19 @@ static const struct dev_pm_ops max77693_pm = { .resume = max77693_resume, }; +#ifdef CONFIG_OF +static struct of_device_id max77693_dt_match[] = { + {.compatible = "maxim,max77693"}, + {}, +}; +#endif + static struct i2c_driver max77693_i2c_driver = { .driver = { .name = "max77693", .owner = THIS_MODULE, .pm = &max77693_pm, + .of_match_table = of_match_ptr(max77693_dt_match), }, .probe = max77693_i2c_probe, .remove = max77693_i2c_remove,