From patchwork Wed Jan 10 11:29:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 10154943 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 427B0602D8 for ; Wed, 10 Jan 2018 11:30:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3596226E75 for ; Wed, 10 Jan 2018 11:30:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2A7AD27CEA; Wed, 10 Jan 2018 11:30:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5A15126E75 for ; Wed, 10 Jan 2018 11:30:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932166AbeAJLal (ORCPT ); Wed, 10 Jan 2018 06:30:41 -0500 Received: from mail-cys01nam02on0078.outbound.protection.outlook.com ([104.47.37.78]:51936 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754831AbeAJLaj (ORCPT ); Wed, 10 Jan 2018 06:30:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=83sNeKJ1W5dv3D4JmuL6YJwFKQWAOD8ByqDl52hCmUk=; b=oqQaXbS58Spu/giQCYfIK1QvZldnhXcs6jQdk0StIWDAXkuyc1EBSffte2KjKVF8KOdfmCRmeFZNKU4QFTjHRqH6WE5dhj+GkqbNF9AVko5Onp2q8B9ZlS65CcVdifYjTqMgVwWDLVVTO4vKl3ln0A9luQdef1qvFv9U5Tav45o= Received: from DM5PR03CA0059.namprd03.prod.outlook.com (10.174.189.176) by CY1PR0301MB2059.namprd03.prod.outlook.com (10.164.2.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 11:30:37 +0000 Received: from BN1BFFO11FD013.protection.gbl (2a01:111:f400:7c10::1:124) by DM5PR03CA0059.outlook.office365.com (2603:10b6:4:3b::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Wed, 10 Jan 2018 11:30:37 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.55) smtp.mailfrom=analog.com; arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=bestguesspass action=none header.from=analog.com; Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.55 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.55; helo=nwd2mta1.analog.com; Received: from nwd2mta1.analog.com (137.71.25.55) by BN1BFFO11FD013.mail.protection.outlook.com (10.58.144.76) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Wed, 10 Jan 2018 11:30:05 +0000 Received: from NWD2HUBCAS8.ad.analog.com (nwd2hubcas8.ad.analog.com [10.64.69.108]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id w0ABUago016911 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 10 Jan 2018 03:30:36 -0800 Received: from zeus.spd.analog.com (10.64.82.11) by NWD2HUBCAS8.ad.analog.com (10.64.69.108) with Microsoft SMTP Server id 14.3.301.0; Wed, 10 Jan 2018 06:30:36 -0500 Received: from saturn.analog.com ([10.50.1.244]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id w0ABUWKq022377; Wed, 10 Jan 2018 06:30:34 -0500 From: To: , , , CC: , Alexandru Ardelean Subject: [PATCH 2/3] staging: iio: adc: ad7192: add device-tree support to driver Date: Wed, 10 Jan 2018 13:29:55 +0200 Message-ID: <20180110112956.23931-2-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110112956.23931-1-alexandru.ardelean@analog.com> References: <20180110112956.23931-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.55; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(39380400002)(39860400002)(346002)(376002)(2980300002)(438002)(3190300001)(199004)(189003)(53416004)(110136005)(86152003)(316002)(5660300001)(478600001)(16586007)(246002)(54906003)(4326008)(107886003)(1076002)(2876002)(106466001)(77096006)(47776003)(7636002)(7696005)(106002)(36756003)(8676002)(50226002)(8936002)(86362001)(48376002)(2906002)(51416003)(305945005)(50466002)(6666003)(356003)(2950100002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB2059; H:nwd2mta1.analog.com; FPR:; SPF:Pass; PTR:nwd2mail10.analog.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD013; 1:IZq6LLUTt7V8K/HYDovmTBUhTZARdYWwhfO/aWUp2sTXIO0myIALURGSX5aQpD/8ZPmGklmiExoH0ahhVgzem36dMwfiCMbGB1sgaQifQdCsQa9oeMICMF5fX/HSigAz X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7236d07-812b-4ac7-9433-08d5581d7f46 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:CY1PR0301MB2059; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2059; 3:LpC9xHJuaB4z5mMyxmNF/7apY0xVMQG3muqZqbPkxFswit+1sEurx1YDjqVeGe0vPxKHKgDbCXhvwWqtric9YNTLGuGsbmpc54JYqojw0gu5VAjcs4EzR9VnxUrJ7uVH5KHI/WuU9MUVEXjQwTdguZ7hJZKZCbIcCMzAIGwTJ21u6m+bDEGkdNAwuawyK1r0w+5jnuYoCRIdb4KE5o4V3Bwg2esrUJBDDRHvmR59gEO1wIoJ7SjkQAXDfSR7HDLJIqXLUHFG72Cf98bX9splHK9alHEsanXj3Qu4agiRNs4Y2lGH4aOrJ6+wD7MSZgHvdFodgWCDzByEEC3rdQLznw==; 25:cUoUpbbdqX+9StQiQYmf18m+3ymWTmyDwfg55kKYRyPZStFwsGPUbJEVPwqOzvaWVF1A/qKTKKPhUoy/GVZJ4Xrx7Xjgeg8pRHNcozmhLWmmWNw2k78MwFvCgC+JvS10sMOiK+mvjTfRK+Lbu2YhpUPjTQt3bC7a2Scx90KChPpwciG4Kixp94A1MbDPMwNW7gPTfKL9gclP7iMt7qO1zsnu5T7KBDE+QCEEOvJvEbPeLZbknU9WfsfTMcOyEC8E7iI+CHkB/xdqxnKrtSEGAvbnsNWQhaCwdeSZdJ5QfFX5nfbiSEIxatLTYeZLfLZfUtcoIRZoUBYLFnaIPOG1WQ==; 31:DobXfMFL2c3bQVXl4WMgs+tm59Q9o90aoECh3pzL8sm7KZr8dqgjZrJ5gyRHhrE2xDXOuLIqbVEm3JzhmuaHhiNFPaG+PTo0iKS5izLNAck/DPFF0XqU0/gkn5+AkuiesbJjBWPvniIK4Mpn+mIXaOvsqQ68Oa52uY+cWfXBZwntxZ1veMOHJaNCiOIQsIp5AQKVkXs3ueeAC+jQ9glIAVqHN1FevbqxL7BcnQAvIog= X-MS-TrafficTypeDiagnostic: CY1PR0301MB2059: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2059; 20:8y992pd+l22rs3U7mQzo0ADQPVZ7IXgN7RS3WzBE+KCYmQPY+/6sdf9ty0H0q0eq/0iT1yfoVT3t1Pyy5srHs0lmguJQPMZj4SbEdVfMpyYX5PUkwedupyUop5mfq4QtXdXXYKwJiVBijqc4VkTopC+wwCIKLGBP9BkCfyB1lXekXZNgBPnVc0h1ZDQYB8AhDcogLcsQw89WNUCcXgNudDVO0M9r/+zx6zhpwaWK67BkJbTqGiJvxnjWyFHdp4Oqibr43Linr0nyHft3v6kFW+mH8YKhe0Tu3fgbwCPouFBbX8NwgGxhzAxfcoCHUAlnLaT97oiht4OlI+u/VSMw6b5LbCU1RDK2SnI2XXgvh0m4dXHU5J0LvsLccGQBLNwtmcyUoTafR+edUdZ5oKQczomqjTXMEQ3rf9rcwb4J9w+pnL/QVvYbtxZ0P9OaHeed9mITgfBZUfwGk7gFdH1cUvPlAaZEQX6AYde9nAqh6c4+AntYZQw90HENh/yxFILl; 4:9zkE17spajsNBkFwQB5yFPRLjRpsFfhuX1llL8iRSGRMuHdL7KrbNnkR/+yAsHTHMzb+hKWwQy5mwItbj6iuP3tTn0N6WvoOks5qZ5MKriBu44nWbxTqCmm8SGbiArv+Mem6vHPasiuwLag51XyDJzWA+n+41UjMKJFcLw3m3Ukd7/D820it5YB9uiSA3IQ9c/1+zyI8fVDYu9ZIUYh1NAT1Iol+jmtJkWwiKa8y6x9ZoFEeJ5W63IKlNwcNZvK7pehtAPVJARt2Dorc9jOtXAxKJLquvOLT92iODQqqjE08LQ/Yv0L7h+b50BIyq19Q X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(232431446821674); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93004095)(3231023)(944501075)(6055026)(6041268)(20161123562045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011); SRVR:CY1PR0301MB2059; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY1PR0301MB2059; X-Forefront-PRVS: 0548586081 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2059; 23:SHnaHxfyMxpsN7Sc7okEqlwErplIJkV34vSAOby?= =?us-ascii?Q?Tl/3jkerdi+ssF9h0kBNsz6xl0n1tNLuispuI5o/8ZHgrYIFwZTqa0xyq/9M?= =?us-ascii?Q?8boc3Se1tY5Mcj+AwHZR6sxv8kfoBmpDJgRz4qY3QFktdYwTC9AMWvbnsJn6?= =?us-ascii?Q?9veoHPgu2whghNONOJK9RfivfZNn+bfJaHOmlYHzcWNmIul+qPmTr02ZYVZf?= =?us-ascii?Q?X4kifRLTcs+T4jlN0YZfZYWvYUj6UMVtdHvvrdkTTItKw6uaZIxuLO/qGfvQ?= =?us-ascii?Q?MSp2WZ/7sNiy9GCkClMteDpGRgf/LCRKZhiJuqoJeG0Z/i5k8NQtAFhauyGS?= =?us-ascii?Q?WyWmbUMOgAW7eWFzC4tMzr16+s0vAx86AJvkxwM9D6k/a9RwPjCDOlxutdNg?= =?us-ascii?Q?a5ujI/e++4nMTbxRImeBIBPnu5t7rYzcuCLHM+otqegE5K34y2X4g/Kus/x/?= =?us-ascii?Q?xxTlr8hzvdPhxsUEuTlEOjYneBvZyX9UHpehXaI314a1/AatUMMlaX3DYb5Y?= =?us-ascii?Q?IfXER+oM94KQKrWAIuVnMw8w67EBbvVnCG0hVTrAWoPWfIS9riRx4LhhkzD8?= =?us-ascii?Q?/zrF1lZqWYzFkzpfCKUcydU0dV5++t07fzPYQzG9FfJz5l4RTqlUzFxK16ue?= =?us-ascii?Q?CFROTWuL2vfOtYMVWE6/5sjgShSzdBs+NAQgKXAiYidcF508IVdl8RDyCPIL?= =?us-ascii?Q?Rb9M7XSNdVKTl7Yusq3TT4dLD15jmM4n3KgsI3EUecezVcuQsMeVP2zfUYzm?= =?us-ascii?Q?Hf0jdnrTTrRgw/NzDsdT9kzF02MyeamFdM4H2lj0HcdMOgeOpJDOyVdnyn4P?= =?us-ascii?Q?fuQqxkE6DoSZ8P9FOUPUGNzaVZFRRCfiR5XShr8M9jku0dfgWuQk01RthT8R?= =?us-ascii?Q?9yfyRJHftjjXlaj4SRb8JvZhOaUN0gFuS8+mEGcstx76VoDUOvRkFhT9Ouf1?= =?us-ascii?Q?qaYly+ygpXZvN6eLoD3IVhg0NTHitLNI4T1KKt+i99Ij1rXcVs/056LdWaGg?= =?us-ascii?Q?ekq+NHpO+QwaI1TKnzEe9T4TN?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2059; 6:fsvlHFpqOGyxdguKUpBX3NBW4qciu+qPmxIL6H9kCINc4F2Fjat/8QXXDtPsHnQ6Wr/PARmDXYTILaNBWY0OZhtMNnzduz79T9Z2UnLW499lK2febr0n8Prw9eEZ/FAyKdIvv0bROu5x+NmkGHz92zs7hIEmuYVnFEUMIEYS5bfMlT7KK3N6jgTD2TSCBUZdSU1pf4LusgC49djExtXtKWKiZ6+/ukdWpDBw4QtKf93o6ql1L9ZzNlMDQpI8/3BDpyR0syRbnZj8NnyflicZlmskgsOV7Imbd03P7Kp6NQLbVgnGsfkqIX+qSDxbYxbPCOgibjWhtkhupbp24MdF1cACNlfs/b1iDvf3MkmODjE=; 5:uDEJ9A7jsdOsprC2+dgkxc6/JbZPKbxagVr1kA7H0Iur7V2xKJCKdxGP6rJCgrbymFJxZWYEAtQAg4DVll3/lB5DTdv5LfqLS6/wI9i5TBDNgrGpcBuo0hStvtii8TYsKUcG7iMCN607HdGbVrksVfqZnHTOCg2CMFfskTZASe0=; 24:btRwj1cyr66IRR44j7lac3yLXI4kTqv5tY/qtvmfYop91b2P+XKJP4gbyv9hcfpmXXCFuE/Fuh9Rc58RSDbG3d5nzMnym1rwN+QAqqpINRg=; 7:aOlQVZ5qzTQoJImst0J3W/NMRP8C82IY+iHoyJ7tTbsFnMMP1JFZGTieFFy2IRXAnRy1Ft7u4LJ9pfKYfixgf33jC0Ssn/KSoQ0Luxcr9y+tNhDZ85QGr2Dos8jBb3c72cmGcJZBGrJg+c9GaTss+7MNo8bUidLm6NilirdykwZ22ROo+gBiZdFdeF8ML6zoSA3UIaeXvybea48J1m58Y1FeCeMCQM1c1GD2U9j2p4SNEWIPlLVIyHJVVjZ8HCa2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 11:30:05.4172 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e7236d07-812b-4ac7-9433-08d5581d7f46 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a; Ip=[137.71.25.55]; Helo=[nwd2mta1.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB2059 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Alexandru Ardelean Adds device-tree support to the ad7192 driver. This change re-uses the "ad7192_platform_data" struct, and populates it with fields defined in the device-tree. Re-using the platform_data struct adds a minimal change to the driver, and keeps the possibility of defining a platform_data struct. A provided "ad7192_platform_data" struct is preferred over the device-tree to reduce impact for users when using the newer driver. This will add up to sizeof(struct ad7192_platform_data) bytes (~12 bytes) on the stack during the probing of the device. But it is a bit less error-proner than using alloc & free during the probe call. Signed-off-by: Alexandru Ardelean --- drivers/staging/iio/adc/ad7192.c | 50 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c index 7bc04101d133..d8cfdf18933b 100644 --- a/drivers/staging/iio/adc/ad7192.c +++ b/drivers/staging/iio/adc/ad7192.c @@ -625,18 +625,63 @@ static const struct iio_chan_spec ad7193_channels[] = { IIO_CHAN_SOFT_TIMESTAMP(14), }; +static int ad7192_parse_dt(struct device *dev, struct device_node *np, + struct ad7192_platform_data *pdata) +{ + int ret; + + ret = of_property_read_u8(np, "adi,clock-source-select", + &pdata->clock_source_sel); + if (ret < 0) { + pdata->clock_source_sel = AD7192_CLK_INT; + dev_info(dev, "No clock source specified. Using int clock\n"); + } + + if (pdata->clock_source_sel == AD7192_CLK_EXT_MCLK2) { + ret = of_property_read_u32(np, "adi,external-clock-Hz", + &pdata->ext_clk_hz); + if (ret < 0 || + !ad7192_valid_external_frequency(&pdata->ext_clk_hz)) { + dev_err(dev, "Invalid or no freq for ext clock\n"); + return -EINVAL; + } + } + + pdata->refin2_en = of_property_read_bool(np, "adi,refin2-pins-enable"); + pdata->sinc3_en = of_property_read_bool(np, "adi,sinc3-filter-enable"); + pdata->chop_en = of_property_read_bool(np, "adi,chop-enable"); + pdata->buf_en = of_property_read_bool(np, "adi,buffer-enable"); + pdata->unipolar_en = of_property_read_bool(np, "adi,unipolar-enable"); + pdata->rej60_en = + of_property_read_bool(np, "adi,rejection-60-Hz-enable"); + pdata->burnout_curr_en = + of_property_read_bool(np, "adi,burnout-currents-enable"); + + return 0; +} + static int ad7192_probe(struct spi_device *spi) { const struct ad7192_platform_data *pdata = dev_get_platdata(&spi->dev); + struct device_node *of_node = dev_of_node(&spi->dev); + struct ad7192_platform_data lpdata; struct ad7192_state *st; struct iio_dev *indio_dev; int ret, voltage_uv = 0; - if (!pdata) { - dev_err(&spi->dev, "no platform data?\n"); + if (!pdata && !of_node) { + dev_err(&spi->dev, "no platform data or device tree config\n"); return -ENODEV; } + if (!pdata) { + memset(&lpdata, 0, sizeof(lpdata)); + ret = ad7192_parse_dt(&spi->dev, of_node, &lpdata); + if (ret) + return ret; + pdata = &lpdata; + } + if (!spi->irq) { dev_err(&spi->dev, "no IRQ?\n"); return -ENODEV; @@ -682,6 +727,7 @@ static int ad7192_probe(struct spi_device *spi) spi_set_drvdata(spi, indio_dev); st->devid = spi_get_device_id(spi)->driver_data; indio_dev->dev.parent = &spi->dev; + indio_dev->dev.of_node = of_node; indio_dev->name = spi_get_device_id(spi)->name; indio_dev->modes = INDIO_DIRECT_MODE;