From patchwork Wed Feb 6 12:25:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 10799261 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3DC7613BF for ; Wed, 6 Feb 2019 12:26:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 29DE42AA90 for ; Wed, 6 Feb 2019 12:26:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1CC1E2AD0F; Wed, 6 Feb 2019 12:26:04 +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=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 5B2292AA90 for ; Wed, 6 Feb 2019 12:26:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730398AbfBFM0D (ORCPT ); Wed, 6 Feb 2019 07:26:03 -0500 Received: from mail-eopbgr810040.outbound.protection.outlook.com ([40.107.81.40]:16304 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727697AbfBFM0C (ORCPT ); Wed, 6 Feb 2019 07:26:02 -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:X-MS-Exchange-SenderADCheck; bh=yrNxHZ3/YRRU2HGtdQY6d5jmLiPhAZijYROCYU+finY=; b=H2PHDYjoFMZISBOGgrLNPiT2721rq56fsRWMXSq8Q0O+s5rfmLojX6ZNZFQX++n0Mrs1L94c5isMb9bLGt0CTUW6joLhoWd6kbmpdlzT4RpjxIL/kuWNLMnuPXL9WEPDzh3Hys0zmdQPdewkY+knwoTpuNvR9gR+twta0v7LW6k= Received: from BN3PR03CA0081.namprd03.prod.outlook.com (2a01:111:e400:7a4d::41) by BYAPR03MB3751.namprd03.prod.outlook.com (2603:10b6:a03:6f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.22; Wed, 6 Feb 2019 12:25:52 +0000 Received: from CY1NAM02FT006.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::201) by BN3PR03CA0081.outlook.office365.com (2a01:111:e400:7a4d::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17 via Frontend Transport; Wed, 6 Feb 2019 12:25:52 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.55) smtp.mailfrom=analog.com; gmx.de; dkim=none (message not signed) header.d=none;gmx.de; 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 CY1NAM02FT006.mail.protection.outlook.com (10.152.74.104) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.1580.10 via Frontend Transport; Wed, 6 Feb 2019 12:25:51 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id x16CPoZM019450 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Wed, 6 Feb 2019 04:25:50 -0800 Received: from ben-Latitude-E6540.analog.com (10.50.1.129) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Wed, 6 Feb 2019 07:25:49 -0500 From: Beniamin Bia To: CC: , , , , , , , , Beniamin Bia , Beniamin Bia Subject: [PATCH 1/2] staging: iio: frequency: ad9834: Move frequency to standard iio types Date: Wed, 6 Feb 2019 14:25:41 +0200 Message-ID: <20190206122542.18362-1-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-ADIRoutedOnPrem: True 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)(39860400002)(396003)(376002)(346002)(136003)(2980300002)(3190300001)(199004)(189003)(77096007)(54906003)(7636002)(26005)(246002)(186003)(107886003)(50466002)(50226002)(8936002)(116002)(4326008)(336012)(486006)(126002)(476003)(44832011)(2616005)(48376002)(8676002)(426003)(16586007)(106466001)(47776003)(45080400002)(2351001)(316002)(478600001)(6916009)(72206003)(53416004)(106002)(7696005)(51416003)(305945005)(86362001)(1076003)(6666004)(356004)(2906002)(14444005)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR03MB3751;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;A:1;MX:1; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT006;1:IGm2hUrfblIGlUJBkpTjUCD2DxsDtl0diKEGi0kF1cj+6ozrLnv2WtdaV/zsFXDP4u6HUncqqhrkBqXf3vKkEtr2+hw2f0Mt+/qqj4iAiS0pPIbfvCoO/kNCOolV/UMUWwV1P7RTqQNbIY5t4J8Q4A== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5656c98d-5797-481e-86d5-08d68c2e3bc1 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4608076)(4709027)(2017052603328)(7153060);SRVR:BYAPR03MB3751; X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3751;3:8dCLpqtVEjyEWASJx1poQf4ciQ7Gs1tX6eqiRVFFCn7W9NJudQSvRgR+DCfc9us3nr8nH4FWwFLZzi7LnQUUtRLuOfohQ57ThdDXrrjMlg7Lt9HD8rrpGaeVos7Cpq5Gr0vzGtJmT6ZcK7jyPcjisgyJedsAI3HyIoPI3GxWQL0Miwz7IyPKK824BReLBG8yc1u/r/GTYotzSXkm1LlZWxEHESxuU0fVA3K/Ezcg0JjPJgwdqHQGSr5tf5moRvc/UGUZ0/zaoYqawTO2rGJ40Bst2aUmeeBzSb+nqBnXYQTFXdPMT7gfabDkaYWNeR/A7J8HuI+oAxBrQCScP8lB4w3GO+LsnbEDWf8rmVU84uP+UmiAMh0n+TYCnqTx9y4o;25:ly9nylMK2vkZKW0UcMctHrKvjcYW+YOKlvyQCM7tfiyQdiJkIXYl7d4BJSJmMKD4JToebwsD4WRkVf0Ry1PvlXv1ET2nQXupROWt6/mCQ1Jnbb8Dfo0ce+S+fb7hefYhPJBlrIFTYG7n2eR9DgSW9Ft0v0b4xqHo1f5E51GurZkjvLfzoONtq3QQbKLRkM97Z4Y/5tUPrIyYD6ZNgqg5APGMmV8scRmCnuhfLbx0qga+lQG8bgGA6uPcpvJ9i4FlNCD5KMF7BiG0TbeD50Dxim7t5eQ3Xz9xuVoq9u4vZT4tE96GDukGT2UcYwMEgRwkZNhbHxywOHItD298YWw89A== X-MS-TrafficTypeDiagnostic: BYAPR03MB3751: X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3751;31:nU+fnhlPqXjo0j+v2bAbHoTj+vmkeq/xicZcuBummusW0srZVz89Isqosi7uoiIIHB0UcYmcMWSOyUOhJbEWsQHJOLonZG/PMH8uKL94dwV4MpmUauu/D6M04CInfph+lBULFure2jPWONf7/x+JTDNcVhvFOWLeF25vYm1+braDcFsbirZAU9ZxkBP2r5/4xLlnX/Qp9G7Jn+tv7Zv1EsQLw5IcfQr/eZ9W3JjgT3M=;20:oqdET0G5NgIJXdyZIaDtonYTxqS9BSNZYzInPOUYCFKu8eUtEDtq/ZayZZiegIPDZaDo0fadrLIEZnK1F1pP9f/DpfT70KeeCkn2UQGeAr+qlY0Ceb8YU7HJ0pUMF2y0J6lIu5qdePXsXeEUFaBtVIk7YHMrZ0cjdH+MrdoUGMBmg4/oZ4AmfTjZ2Ffy7Y+9voldW7gZqXwoD34nRjInBZ7R1qvAwLo8Vawvzte27lUCbvGaZPfVovH7CHRyYfy3RuulERcQDKVPkEyn/INrTtF2Lm5SOBghWK9Hddd8SUS/wWcThxaqY11Nb8CWU4ApAf6qbjgCcTpFV5RKXvZ2kGtF0CIco+IZO34Dp8Q9znGM0jtkyDXJHnpDkRcgAuPr2x+ACdo6CtePAPq06R2RaUBlga0PdDOpVlzalr3gw80cccQOZuebeyUh+8YoPmyg9gRqz19tUeZdrqj/egqD3LiTqjqwVT6uK8nC7NlXio+4EAUsQX53zw1qJztlo2IK X-Microsoft-Antispam-PRVS: X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3751;4:aAWxCD6GMiM2gn1mLDjPot0V/94CNYnEvSpDEMPcfa8lZwYuMo//wQJVj6ulye3oT49QuUz0K8s7WeYzi9ZyKMV+xM9aPduG+lZ3ECGzehpRBAU0E18F8JIhwX4MsP4zjv4Q0FXCO+2YdyrKZAFRfHAXa9hKV7IuXJ5WfX1TciePFkWzAuxbls6HRoRNW9VimGbkfdimy26xJYFeYHMUtZwZ8BiM58MeoxMuLAymgFXLtYUWGnlWpgswZYVW7eQOAsmfIkEh6TZpFd+ZtYjLd21wpbeJARmPTUAHxfo4PtE+ec4/H8hWYyQwPZzU1ScO X-Forefront-PRVS: 0940A19703 X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3751;23:WAsmfhzjt3og3jkD6KG3MWgknIi7y5ywfGDtjDMvQlhUtCIBuB7GWXPKsgjuDEHqzVgGnQwXCnIN2k28Rp/YvK9+KTsWiLIYIYMTULK13AH/tiqqMUj8Asm+bEeXuGN43hE/eL0P/9hKnkXWt0b/dg5OyCUCYWmMU0JZK409Ox8Ct6CvssIHS8VxcpD2MiyUV0iJxi9EakLX0iiOcTlpJzDVcmofAh+lX/xslRGN2LVQZKq6b+SLst1ZthbyWBNABRv27Ak9rl3uRZTgnHYeDsao7Qzg5E2DSXERsamvBf6bs+oexG5jh9cs5IqsCImIXfUj0SG16SrCncsSq87VZsopJXPquSIOz5QWN0o4hIgI9z17wo0MCJwuFwkXmQzuhtC4I9bi93mHrocQ2J47dAb+1FGC1Repyc5wSKHY/hmAa3fvXCXNFUNPMVlh/+S6dy07KEfNRU7/DoZHI5hlLM34Nf0dLPTseyOHWjBMTD8eE0peuMWTE/9U9TqMM7wao0g9IhmxTjQ/Z7b+HBeON1TS6a6jfDDLXPD50y5JC3jCXmJfzg/2sIM8ZCwiuCfiJFax7YfYnQn/8ANRnBVUT/2zRPy0fLszMOnP5jR1MdBgMMMnz6uXq/eClFedQh26mX4KhYDK6+IBOW+mzAN9qk9oVOdv8qdrxM3ff5H+GTZAYbcKPm8TYOTpycxPLV1kjPMj3P0BRiagRRdgphpwMJPXGYlXiEmGrV7AU4GWttnlEOUImRX4y64ViN9xgD2PBroMiqOsRO064rSIambjslz2EMXJo2uGd41zNETjutHcm+WTsRLg0HhVoWe6VxMuB7rofq7JVXVqLrUnyR5yYFJ2GwMAT6wls0VUXwAFNPb31CtEVo1Tty15zXPkfcIbq6SgCThdAT5pHE9/ISxI5LPQZQgeTpzKy7St7UY4Ie+L19+7EJQVagKRL2ij+xoNe/uqKAloA67ztn5BufB++SH1w1gW6mDsb0ZEt4Tv+MH/4+tEiLFlpQz95guW208KmQqbXHvA3xwbrTo+75WniK/wHWT7ZMyZp+0KNMAfxsgB0a2+zN5axtmd/iXESegfTXDqvzwtqc/+nqvG5sBM7fNfSXlmc3xGcS4u0Meww1c= X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: gwGQ+ujFX1Nafzum4rSxXnwz1sNpBqzxm+FrRDSGpQZEcSAtCDmfF6kc5RtinmBaCj564UuMPMwB4s3UVWYpMBJ8xnnYk9d4ikYSgVMLBzbSpL85K2qEuuBqE6jvDlQmHkTF9ZrP5CoaMFmNMqRaTNv8Ots5RZjVDS27Y9cjzYAl9gFtkCr2U+IpTILIDtKFT3z3xCTTWN5LTRVEEHglgIAqRk/FrX7TLKhEO5thTqVvriAS3iZrU5PHfdhvPAjbePHfMgter7srlHR1MHDDez38VAoTEpokZmECBXKhutdxLat2C7SsAn96XAgaWmTMrwabWGtP74DKw1Yke5zddTBqEDvxiZgrIunFx+v8c0ezpP/2CCbXhobLibOqwYEP0Vub5lgwKkmFEw1jBpSO0nL7SHit+34UCsVmKRAXYxM= X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3751;6:d4sFDiaV6/X6IxpjYqtbLhcCaG7Z9y/tEn7bXCtsjOBkqbZuj4iAbX4FbQl+xz3E3VyzsLE5Aos0beSMGAnMXlysG2bZTal0pzQX6ypjWVvEN6ZE8CYmkJPqW5h17Phnm23jJ+HNjra485wqDdM2uImIfox0qfZTP7O5wXvmrqCALS3AGAg+njikHSCmSiKvO88y0+4AfelhPq2NgHgMZWo7AScP4/C8al9gRcAMVfL8ValVDrQq5T6ZsePkR3GiDsUV1E2bpgVlmjn30kh0WeOt3AdAGsXBYugSJhhRu8mEF8L1je1I0JG/7fVJB7JQrGFd/QMmFyLbFxAWh3nMA2ECHpl1xNKUJJGPRP6CyFPV6qmgLQiXYz1QIh5J6ps+IfE3Iei7zJqzWcirVM9TXwV9swzmF4kZJL1WxShSw9KDaNqcYGgHGxF5ZJyqkGEl/BQ0mSmtpayNqCMfCXFW1g==;5:81xh+dFmgn/WgHg0ZHUI4AwP5gsaeLbTSnmwlKx+runDI94WQ1WwwkbZnO/nexMjKI4DHhNyOo8xbJrtFmqHkPpXAeYtr+qOrC/LSFpn8ZcL63fvrAbmZdv2BkLF4FdXwEQ4kqFwj6/bdy3UjtJebdv3sSo+gsu3e+1xaITB0W9sHZZmkEzDmeuYLuB5LKjBdyKKxnbPui76Hqeyaec2gg==;7:RCdZ+v9/nNRAXGaywDq7y2dxJUKpTqdCCgTQGDNkF+NMHgCW+BY7ziVYmOGN8pxj6Rl8hf+G7RgrwT2+w1tDnJ6vGyHO8+5IyWav5KMlxhSf2SzqS1MLxAIgFxrgNzI/OlgIzW2u/WqjJRHMNDYBkQ== X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Feb 2019 12:25:51.2451 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5656c98d-5797-481e-86d5-08d68c2e3bc1 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: BYAPR03MB3751 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: Beniamin Bia Frequency attribute is added with a standard type from iio framework instead of custom attribute. This is a small step towards removing any unnecessary custom attribute. Signed-off-by: Beniamin Bia --- drivers/staging/iio/frequency/ad9834.c | 97 +++++++++++++++++++++----- 1 file changed, 80 insertions(+), 17 deletions(-) diff --git a/drivers/staging/iio/frequency/ad9834.c b/drivers/staging/iio/frequency/ad9834.c index f036f75d1f22..370e8263899e 100644 --- a/drivers/staging/iio/frequency/ad9834.c +++ b/drivers/staging/iio/frequency/ad9834.c @@ -29,8 +29,7 @@ /* Registers */ #define AD9834_REG_CMD 0 -#define AD9834_REG_FREQ0 BIT(14) -#define AD9834_REG_FREQ1 BIT(15) +#define AD9834_REG_FREQ(chann) (BIT(14) << (chann)) #define AD9834_REG_PHASE0 (BIT(15) | BIT(14)) #define AD9834_REG_PHASE1 (BIT(15) | BIT(14) | BIT(13)) @@ -81,6 +80,9 @@ struct ad9834_state { struct spi_message freq_msg; struct mutex lock; /* protect sensor state */ + unsigned long frequency0; + unsigned long frequency1; + /* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache lines. @@ -100,6 +102,25 @@ enum ad9834_supported_device_ids { ID_AD9838, }; +#define AD9833_CHANNEL(_chan) { \ + .type = IIO_ALTVOLTAGE, \ + .indexed = 1, \ + .output = 1, \ + .address = (_chan), \ + .channel = (_chan), \ + .info_mask_separate = BIT(IIO_CHAN_INFO_FREQUENCY) \ +} + +static const struct iio_chan_spec ad9833_channels[] = { + AD9833_CHANNEL(0), + AD9833_CHANNEL(1), +}; + +static const struct iio_chan_spec ad9834_channels[] = { + AD9833_CHANNEL(0), + AD9833_CHANNEL(1), +}; + static unsigned int ad9834_calc_freqreg(unsigned long mclk, unsigned long fout) { unsigned long long freqreg = (u64)fout * (u64)BIT(AD9834_FREQ_BITS); @@ -113,6 +134,7 @@ static int ad9834_write_frequency(struct ad9834_state *st, { unsigned long clk_freq; unsigned long regval; + int ret; clk_freq = clk_get_rate(st->mclk); @@ -121,13 +143,22 @@ static int ad9834_write_frequency(struct ad9834_state *st, regval = ad9834_calc_freqreg(clk_freq, fout); - st->freq_data[0] = cpu_to_be16(addr | (regval & + st->freq_data[0] = cpu_to_be16(AD9834_REG_FREQ(addr) | (regval & RES_MASK(AD9834_FREQ_BITS / 2))); - st->freq_data[1] = cpu_to_be16(addr | ((regval >> + st->freq_data[1] = cpu_to_be16(AD9834_REG_FREQ(addr) | ((regval >> (AD9834_FREQ_BITS / 2)) & RES_MASK(AD9834_FREQ_BITS / 2))); - return spi_sync(st->spi, &st->freq_msg); + ret = spi_sync(st->spi, &st->freq_msg); + if (ret) + return ret; + + if (addr == 0) + st->frequency0 = fout; + else + st->frequency1 = fout; + + return 0; } static int ad9834_write_phase(struct ad9834_state *st, @@ -140,6 +171,40 @@ static int ad9834_write_phase(struct ad9834_state *st, return spi_sync(st->spi, &st->msg); } +static int ad9834_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + struct ad9834_state *st = iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_FREQUENCY: + if (chan->address == 0) + *val = st->frequency0; + else + *val = st->frequency1; + return IIO_VAL_INT; + } + + return -EINVAL; +} + +static int ad9834_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + struct ad9834_state *st = iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_FREQUENCY: + return ad9834_write_frequency(st, chan->address, val); + default: + return -EINVAL; + } + + return 0; +} + static ssize_t ad9834_write(struct device *dev, struct device_attribute *attr, const char *buf, @@ -157,10 +222,6 @@ static ssize_t ad9834_write(struct device *dev, mutex_lock(&st->lock); switch ((u32)this_attr->address) { - case AD9834_REG_FREQ0: - case AD9834_REG_FREQ1: - ret = ad9834_write_frequency(st, this_attr->address, val); - break; case AD9834_REG_PHASE0: case AD9834_REG_PHASE1: ret = ad9834_write_phase(st, this_attr->address, val); @@ -323,8 +384,6 @@ static IIO_DEVICE_ATTR(out_altvoltage0_out1_wavetype_available, 0444, * see dds.h for further information */ -static IIO_DEV_ATTR_FREQ(0, 0, 0200, NULL, ad9834_write, AD9834_REG_FREQ0); -static IIO_DEV_ATTR_FREQ(0, 1, 0200, NULL, ad9834_write, AD9834_REG_FREQ1); static IIO_DEV_ATTR_FREQSYMBOL(0, 0200, NULL, ad9834_write, AD9834_FSEL); static IIO_CONST_ATTR_FREQ_SCALE(0, "1"); /* 1Hz */ @@ -342,8 +401,6 @@ static IIO_DEV_ATTR_OUT_WAVETYPE(0, 0, ad9834_store_wavetype, 0); static IIO_DEV_ATTR_OUT_WAVETYPE(0, 1, ad9834_store_wavetype, 1); static struct attribute *ad9834_attributes[] = { - &iio_dev_attr_out_altvoltage0_frequency0.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_frequency1.dev_attr.attr, &iio_const_attr_out_altvoltage0_frequency_scale.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phase0.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phase1.dev_attr.attr, @@ -361,8 +418,6 @@ static struct attribute *ad9834_attributes[] = { }; static struct attribute *ad9833_attributes[] = { - &iio_dev_attr_out_altvoltage0_frequency0.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_frequency1.dev_attr.attr, &iio_const_attr_out_altvoltage0_frequency_scale.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phase0.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phase1.dev_attr.attr, @@ -384,11 +439,15 @@ static const struct attribute_group ad9833_attribute_group = { }; static const struct iio_info ad9834_info = { + .write_raw = &ad9834_write_raw, + .read_raw = &ad9834_read_raw, .attrs = &ad9834_attribute_group, .driver_module = THIS_MODULE, }; static const struct iio_info ad9833_info = { + .write_raw = &ad9834_write_raw, + .read_raw = &ad9834_read_raw, .attrs = &ad9833_attribute_group, .driver_module = THIS_MODULE, }; @@ -435,9 +494,13 @@ static int ad9834_probe(struct spi_device *spi) switch (st->devid) { case ID_AD9833: case ID_AD9837: + indio_dev->channels = ad9833_channels; + indio_dev->num_channels = ARRAY_SIZE(ad9833_channels); indio_dev->info = &ad9833_info; break; default: + indio_dev->channels = ad9834_channels; + indio_dev->num_channels = ARRAY_SIZE(ad9834_channels); indio_dev->info = &ad9834_info; break; } @@ -474,11 +537,11 @@ static int ad9834_probe(struct spi_device *spi) goto error_clock_unprepare; } - ret = ad9834_write_frequency(st, AD9834_REG_FREQ0, 1000000); + ret = ad9834_write_frequency(st, 0, 1000000); if (ret) goto error_clock_unprepare; - ret = ad9834_write_frequency(st, AD9834_REG_FREQ1, 5000000); + ret = ad9834_write_frequency(st, 1, 5000000); if (ret) goto error_clock_unprepare; From patchwork Wed Feb 6 12:25:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Beniamin Bia X-Patchwork-Id: 10799263 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8041D13BF for ; Wed, 6 Feb 2019 12:26:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6A8DE28420 for ; Wed, 6 Feb 2019 12:26:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B3C12AA90; Wed, 6 Feb 2019 12:26:12 +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=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 A794128420 for ; Wed, 6 Feb 2019 12:26:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727697AbfBFM0E (ORCPT ); Wed, 6 Feb 2019 07:26:04 -0500 Received: from mail-eopbgr700081.outbound.protection.outlook.com ([40.107.70.81]:2417 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730396AbfBFM0E (ORCPT ); Wed, 6 Feb 2019 07:26:04 -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:X-MS-Exchange-SenderADCheck; bh=ERDDVQFvTAlIYo0H9RHvco2xlFQar8bni0VwCJ1wyhs=; b=Y1615NBg5MzFxKRoMxCG0JZI3+QHQZZg4OIVbWSURW5BsGOo+5i6aT53Ak83KpBwsH2HyqM/fcHkEjLFHZoc+zsoy6Hw83hQU0pl4z9lV/DHbifwaB22v4Zqb+ZAapEeLzeVp+dZVvdYCi99YzFJSctaZFS/93rF09cFk0SoZS4= Received: from MWHPR03CA0012.namprd03.prod.outlook.com (2603:10b6:300:117::22) by BYAPR03MB3752.namprd03.prod.outlook.com (2603:10b6:a03:6f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.22; Wed, 6 Feb 2019 12:26:00 +0000 Received: from BL2NAM02FT029.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::206) by MWHPR03CA0012.outlook.office365.com (2603:10b6:300:117::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1601.17 via Frontend Transport; Wed, 6 Feb 2019 12:25:59 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.55) smtp.mailfrom=analog.com; gmx.de; dkim=none (message not signed) header.d=none;gmx.de; 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 BL2NAM02FT029.mail.protection.outlook.com (10.152.77.100) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.1580.10 via Frontend Transport; Wed, 6 Feb 2019 12:25:59 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id x16CPvcx019469 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Wed, 6 Feb 2019 04:25:57 -0800 Received: from ben-Latitude-E6540.analog.com (10.50.1.129) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Wed, 6 Feb 2019 07:25:56 -0500 From: Beniamin Bia To: CC: , , , , , , , , Beniamin Bia , Beniamin Bia Subject: [PATCH 2/2] staging: iio: frequency: ad9834: Move phase and scale to standard iio attribute Date: Wed, 6 Feb 2019 14:25:42 +0200 Message-ID: <20190206122542.18362-2-beniamin.bia@analog.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206122542.18362-1-beniamin.bia@analog.com> References: <20190206122542.18362-1-beniamin.bia@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True 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)(136003)(376002)(346002)(39860400002)(396003)(2980300002)(3190300001)(199004)(189003)(72206003)(246002)(2616005)(476003)(14444005)(107886003)(11346002)(126002)(116002)(44832011)(486006)(106466001)(426003)(8936002)(446003)(305945005)(2351001)(6916009)(45080400002)(48376002)(1076003)(50226002)(7636002)(50466002)(356004)(6666004)(47776003)(4326008)(36756003)(53416004)(54906003)(316002)(106002)(16586007)(2906002)(77096007)(186003)(8676002)(336012)(51416003)(86362001)(26005)(7696005)(478600001)(76176011);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR03MB3752;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;A:1;MX:1; X-Microsoft-Exchange-Diagnostics: 1;BL2NAM02FT029;1:9dfuxXrXrSReKVBrzyj60y5zi95kEYwh9QfhAtZPcGfLM4uD5f4pobPjTOBQxhSZj7G1LTkNhzWWdrn1aG08S2Now6bRkurEKo5QfTZ0ibXdwOGn7anqmhHNbR9DdzXNUtmYj/ZiZlEZDKqqNLunaw== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2d6e9f7e-5ef8-40f7-fae9-08d68c2e405a X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4608076)(4709027)(2017052603328)(7153060);SRVR:BYAPR03MB3752; X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3752;3:mHL0GMalAuY4RiTZmV1qUatZOYdbRwPXsUBu1EfA3Ncdx2ogzIFnczkfcHHMlWtA7vxmSDtdwb0MmwBuqmNxIXtjLRXNzN8st7WcLn6mKpYteTsGOPTvKaSeSsGC7j4EO7MiQwk5Y8mPqQnBmIB36KN9Z8kIDuViyLajGCRrqZ/wrbsf7CqFjGNqctGmvq0u3sTnzCmw0pMs6NJAywoTYSFueLlSzjvyBG34kShDkD1hSB0H4jXFDfqMqWWVGoZ6CY1SmV9kY6UgQUFDUxLjyUPALnCJvSTYcNIifC17xX+ymfTEuaQ/dRpmRpCf+MyZDfA6lgxCJs4KulXfDwgkpIj4IZ5eMl3KAFLlIJRjmzwRPmb3xRF76A5lyXt0DyN7;25:9m11l7rmj/aQPeYmmY+Dc+J4UoQ7XCq0ZgnMZyS1pS2Z1v+YCajWfYPl/ekXkAAfNeWRw06qbW/V0qeliKFi5zIdEETaUvxyxH9Gh8pXYNChRzA/TSN0JPNrB41Sl7tH+E93W2Ztj9+t5Nv6lp6QKmKI6+ARXTMqmwaPs6pUyBJai7BJxz+qXHADKjiN2wOhUOVO6vt5L+AGB/4/SL4yghqoU0bh41fpsLAj0xwFPvBQoHgsxOkuWLqsfEGpqG2isDOY/LL2M20dWWzwBC7UQBq1M51ppzUuVn/uq/41zwSNlQWUuz/ACRbfSA2vd0TH0KLN2fB6tIo+nFKcLZoO7Q== X-MS-TrafficTypeDiagnostic: BYAPR03MB3752: X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3752;31:d89FqLKavI8MRrISjffcwZu9PIMHNv/wszmGTLJ499vmmcGA/pOiXWRox7PCAUa3kj1XShFTbnRWYaRiYyHX3Najw98kd0zUx+OUqjzT+iVXNKlMXqAnEdYAKACLatgBS7K3JzmfNJ2cpD5IjsOTez6dmnAoOZhTASw5HJBfKLJNoji47fcclIerFdOsR7AZOPlR9/O/rLIgZENSlGNAF4GlgPYuLFNauQx1SnyL/ro=;20:l3C+8r0erxpqscpvTILiu7kiFyozJSgYJBZQpObaH8ogpXgCNhBlxWQdAYktPkfU3ywsf2MsVFo31+QTbH4L0g/cJZcNS6mBJHVZho+myUsqgbTIUiHL3xvnQgTMxJfuxUoSUdrPOmlURrYzSg7LPLp6FJ+CMnlYYJUncadMGvcQqXj/42IvK0K9qL+GZ2v0N4h1gf0o2iIotRZGoqgdRWRprMUqz5dz9pDMdAS7CFO8fTxVlLpzpSk/t6vSh2bvMOhOIEbD6a3bhKOAroWLPqQXrJHz5glXDYaBke59xeYp1w44CKjNb3K1ljzPtSt0IlZS6d2tpSc7f8LU6+oiZizASrrRQIR3O4TrHpOUEVQUA8hKhjWBwVew2Gqip9UikUI8Wa1XolewFBfMM9NGmQWWS1UvLtLSMPzqhVWFGdrKSg49Q0LVl7/6uKK5Cwn1cAFNziN0PYdgV5AZqDzEIm+GMkHl84g68n4Hl8mQ4ZQXjjkzTjZv5tDSQLSoXds4 X-Microsoft-Antispam-PRVS: X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3752;4:FPf2/H29bCk60msXRzVVz3M3oVXIERjuP0poSzcZBIop7v4QieJFWtlMdTxEYQTb7Ywc1HS0yE9tiC5Dwf0pIvzJ8TzdiGTsXPjlQYsynk7cOEltTo1fMdOMHgEzYP3PAJ0jUBcF8XlcW1TXRxUGIInvxYgzQKEANh445hUWNXLt798CKxSgBLdjM1hyN+9Hi71bV/R5cU5N3W+MQmJAom95EOY0ZERNnkUP9/ZYTe/PkwZU5yiMYw1GIAgBw66UqvP6UvIBnqrTy+p8s9LXysTyZpn0vpyInB6Ca4ErZi4XoOD/zEeuAwo544QXdDk/ X-Forefront-PRVS: 0940A19703 X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3752;23:7m2CB3IoOmhT3b/qn7apvZkTgOXTSYBrNfuMEQTqC8MyRc6BRsScKOIrDlxPCrSeRcyAf8O29iGqwRRSjgkTe/wEHF3nH/3c34UXpS2xIw2HMfogTLA+AyROMU3EgmBClWBUKrwdMjanMYC+OnsewXhYenDHagdH0TlXoIP1fbvbTxijcBMIrquGIXAYyuUdeZMqx5i4RNxtXcDh/lzir8mG0x2dpO2BlkY9R1daKcf5xhfnS8dzAcQjhCRyjapZ/7cLXuD3is3UmsZ9YdTUcQPS3Bxg01+KjN8Bq4xKDCTeYLK9MPtduz+/zmhlZL0/iAQciC5kj0ilDgwgFEcsZwRxuxp7GoO4C+yuUZxRYArw4aUNLqnD4JSrKNGvxJJJkNbSPNb8OuyJ6xZDMX4tZh/F/0pt5wczhmED/dz8ZHk+eQLh0amurqn9YTTFFm42Bi/Rq5ybWedbcjjGZ6HFk4muEgQWKqJmCoKOP8erjPx77JZjUufITQUUwEf8poUaKg514PhJA1/3eeI48dW0k94ZYfbtJ0dGXjYLKnv/7MtvMScZCEi74/E0h+uVEH5vRaVh54m9alL6qvH5pFVCM8RnO0qDhVw76DgX5koxjl4lN6UdKrM41EZCvGCYEWRuhNJUD7Gq3F872w0wSsMu3SDbDGFXDWzuYbnsgkxoaXv8k9pa1pJn06aMo9c55ekyPFdseXmAGFXRb53fglwSSFmB39AP19hIbpBZnhVSAAFHsNbr0oT2Aem08eL07Ih8bwczzVrJUgHXNooYLjeKCNIwknTtB6rYyafHroNXpsIdAYbO4IqONvL6JPTFC5bMGVOw1eOtMCqc1GKe+VUGNQzJgICdd5BEJs2HMfTwlsARpA4rSKwIGmqlZjTX59dIwavwV8mfdan2hRJzEENlH9AOQR28TXVONUKhVTRCaoeyEx+pO3lVKK0B+aInrjOI0cPcC8K8/PtXsxLJMaGfVMkTw85ptysdrG8HvI0RJDi0VCPe4OivDaFPvO9eLDLz0oDPWmYDbZhQRgy4JEmRo6fjtIdE3RZUPHMySbKKRLAfqz9r8ZHP8ueH7IuggQKQJBFxZRuiGv1jkZFHU/nOv/1X7j75LWxsD4LxG18pWTkY6Ky4xNGgWBQNw+q1hl6x8CKvnnwbx3/hAs6MnikT2rrwTeDmrH+s4Q+NSFogiBs= X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: biKgn//tIBRnrUaDa1SP4TOj1DoAAHG1WMR6gATCq1+jLjcAz1SosTHWppfOVT7sjYH5FLtCtwvU3BJiASbGCoe+H8OLhUxDPuvPI/LVmgk4mHbRWu28BzrI3BziVjLTWfEnZY4CdeAyzTLqRB1AL90EsZIvqfOjUQCFNAUc7kwBi6J5eUvqXxyINMMHgip92qTDxnL7pd0sN6Fpyv+sKPWWWauaxQa7RkwJH+e7/ndAwYE8e0UdaLlitBpQr8G7zKRCafaVVixxXq03gyojNzo73SFIiXtJMt//J+Bmdtwb7oqXzXtIPutyV1g2cg/qQp/SOAr7oFOXI7C3OEA+xRR8SZ1Pv+R4yZVdD10mw3NKlFZlMuGshSSSwUx7pRqyW5/oeyaXuyOulDjIs2vNKjOiqgBJNOt5bojjnAsp9/M= X-Microsoft-Exchange-Diagnostics: 1;BYAPR03MB3752;6:XkXIscuDDEa5F55ea+LETpp/sTsqEVZX4uBo+1fIMtD7jSlM0rBjNogoj6A4phNHGnkbwOn1TZinSxNEPhK/9UJuZNdyWHst1U4fB7BufEll9S5yp8oLw3smudoJjrboRliJ2vWPL9PpoEytK4dcV7iIjNPJy0h5LDyyh+5v0NBZir4ehrPOgCqdEHVc2FZ+Y+/4fMKC7EVrnnCqB9xBt89ioFzLD1tpC/nl3h8dc8xdDepQgMXme9G/c6Mi6HlvKhsoWr7SqmeFS/LxKesbaK4OpDsmXwWuf6EfLcY9C4qbybgSDB+nB5WVjG4cx/V8NELwjnNB49SyVUCSuRbrISfnXB6wnOGDRKmuoATxcRkF7C2cNwYtVd828gaASUlC+cSGUT3wLbpGcyYJGDI0bEwM/ugN/JRijR8EKhWGjplY3YCw4duXm2Gm7jr4SbQdhwUqNXRQ1f0VXey0kmOU7A==;5:MvmC+DEjZqkSnLEz2XhgY/lZR8M03ka+SHPpPJA9CrF+EWE63k5CyRI0+WBTPccFGJGT7AQ0/UZluVRf6z7AP6nsjfLXF0XnBSgBxOKumEge743UBSf++Y47p1OxaG9qqIGD3LSRDZ05bIeVKnGRWVWa2J2tQ6JHci1AJWHkBaSSZCYQKkKcnWuITX4e0Hx86ZWlD6UNTeJ9jAZsj2oKMw==;7:bugMIb8yYCKh6m4WZL63TZPiHgBnjmreFKwK1IHSIRvHd0FWai1+QobjucLMG9gd0bp93mPypMDG8fLO4/exO+6WhjXLnOyfMhv6pTYbULy7T/H8FQ21KMYkf0Ktnes1FDRxUFaTiM4rqw8IQUdVNg== X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Feb 2019 12:25:59.2115 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2d6e9f7e-5ef8-40f7-fae9-08d68c2e405a 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: BYAPR03MB3752 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: Beniamin Bia The custom phase and scale attributes were moved to standard iio types. Signed-off-by: Beniamin Bia --- drivers/staging/iio/frequency/ad9834.c | 54 +++++++++++++++----------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/drivers/staging/iio/frequency/ad9834.c b/drivers/staging/iio/frequency/ad9834.c index 370e8263899e..3ecf976ddefe 100644 --- a/drivers/staging/iio/frequency/ad9834.c +++ b/drivers/staging/iio/frequency/ad9834.c @@ -30,8 +30,7 @@ #define AD9834_REG_CMD 0 #define AD9834_REG_FREQ(chann) (BIT(14) << (chann)) -#define AD9834_REG_PHASE0 (BIT(15) | BIT(14)) -#define AD9834_REG_PHASE1 (BIT(15) | BIT(14) | BIT(13)) +#define AD9834_REG_PHASE(chann) (BIT(15) | BIT(14) | ((chann) << 13UL)) /* Command Control Bits */ @@ -82,6 +81,8 @@ struct ad9834_state { unsigned long frequency0; unsigned long frequency1; + unsigned long phase0; + unsigned long phase1; /* * DMA (thus cache coherency maintenance) requires the @@ -109,6 +110,8 @@ enum ad9834_supported_device_ids { .address = (_chan), \ .channel = (_chan), \ .info_mask_separate = BIT(IIO_CHAN_INFO_FREQUENCY) \ + | BIT(IIO_CHAN_INFO_PHASE),\ + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \ } static const struct iio_chan_spec ad9833_channels[] = { @@ -164,11 +167,22 @@ static int ad9834_write_frequency(struct ad9834_state *st, static int ad9834_write_phase(struct ad9834_state *st, unsigned long addr, unsigned long phase) { + int ret; + if (phase > BIT(AD9834_PHASE_BITS)) return -EINVAL; - st->data = cpu_to_be16(addr | phase); + st->data = cpu_to_be16(AD9834_REG_PHASE(addr) | phase); + + ret = spi_sync(st->spi, &st->msg); + if (ret) + return ret; - return spi_sync(st->spi, &st->msg); + if (addr == 0) + st->phase0 = phase; + else + st->phase1 = phase; + + return 0; } static int ad9834_read_raw(struct iio_dev *indio_dev, @@ -184,6 +198,16 @@ static int ad9834_read_raw(struct iio_dev *indio_dev, else *val = st->frequency1; return IIO_VAL_INT; + case IIO_CHAN_INFO_PHASE: + if (chan->address == 0) + *val = st->phase0; + else + *val = st->phase1; + return IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + /*1 hz */ + *val = 1; + return IIO_VAL_INT; } return -EINVAL; @@ -198,6 +222,8 @@ static int ad9834_write_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_FREQUENCY: return ad9834_write_frequency(st, chan->address, val); + case IIO_CHAN_INFO_PHASE: + return ad9834_write_phase(st, chan->address, val); default: return -EINVAL; } @@ -222,10 +248,6 @@ static ssize_t ad9834_write(struct device *dev, mutex_lock(&st->lock); switch ((u32)this_attr->address) { - case AD9834_REG_PHASE0: - case AD9834_REG_PHASE1: - ret = ad9834_write_phase(st, this_attr->address, val); - break; case AD9834_OPBITEN: if (st->control & AD9834_MODE) { ret = -EINVAL; /* AD9843 reserved mode */ @@ -385,12 +407,8 @@ static IIO_DEVICE_ATTR(out_altvoltage0_out1_wavetype_available, 0444, */ static IIO_DEV_ATTR_FREQSYMBOL(0, 0200, NULL, ad9834_write, AD9834_FSEL); -static IIO_CONST_ATTR_FREQ_SCALE(0, "1"); /* 1Hz */ -static IIO_DEV_ATTR_PHASE(0, 0, 0200, NULL, ad9834_write, AD9834_REG_PHASE0); -static IIO_DEV_ATTR_PHASE(0, 1, 0200, NULL, ad9834_write, AD9834_REG_PHASE1); static IIO_DEV_ATTR_PHASESYMBOL(0, 0200, NULL, ad9834_write, AD9834_PSEL); -static IIO_CONST_ATTR_PHASE_SCALE(0, "0.0015339808"); /* 2PI/2^12 rad*/ static IIO_DEV_ATTR_PINCONTROL_EN(0, 0200, NULL, ad9834_write, AD9834_PIN_SW); @@ -401,10 +419,6 @@ static IIO_DEV_ATTR_OUT_WAVETYPE(0, 0, ad9834_store_wavetype, 0); static IIO_DEV_ATTR_OUT_WAVETYPE(0, 1, ad9834_store_wavetype, 1); static struct attribute *ad9834_attributes[] = { - &iio_const_attr_out_altvoltage0_frequency_scale.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_phase0.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_phase1.dev_attr.attr, - &iio_const_attr_out_altvoltage0_phase_scale.dev_attr.attr, &iio_dev_attr_out_altvoltage0_pincontrol_en.dev_attr.attr, &iio_dev_attr_out_altvoltage0_frequencysymbol.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phasesymbol.dev_attr.attr, @@ -418,10 +432,6 @@ static struct attribute *ad9834_attributes[] = { }; static struct attribute *ad9833_attributes[] = { - &iio_const_attr_out_altvoltage0_frequency_scale.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_phase0.dev_attr.attr, - &iio_dev_attr_out_altvoltage0_phase1.dev_attr.attr, - &iio_const_attr_out_altvoltage0_phase_scale.dev_attr.attr, &iio_dev_attr_out_altvoltage0_frequencysymbol.dev_attr.attr, &iio_dev_attr_out_altvoltage0_phasesymbol.dev_attr.attr, &iio_dev_attr_out_altvoltage0_out_enable.dev_attr.attr, @@ -545,11 +555,11 @@ static int ad9834_probe(struct spi_device *spi) if (ret) goto error_clock_unprepare; - ret = ad9834_write_phase(st, AD9834_REG_PHASE0, 512); + ret = ad9834_write_phase(st, 0, 512); if (ret) goto error_clock_unprepare; - ret = ad9834_write_phase(st, AD9834_REG_PHASE1, 1024); + ret = ad9834_write_phase(st, 1, 1024); if (ret) goto error_clock_unprepare;