From patchwork Wed Jul 31 12:37:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ceclan, Dumitru" X-Patchwork-Id: 13748686 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0D331A8BED; Wed, 31 Jul 2024 12:37:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429451; cv=none; b=PF6Thtz1F2pV1Gr1kG8eCM6Tq5FZyiFMe4q1FVoRTlOgdC4Ia0TSYoRGfh9ydbnrZZdBpDDY4XqEjChFNsWNvSH8yURxUBrT9gVaRQ6Vs3rOCCnDXI/EZpszVrEwj6368FtZLbOSW+wTiQBShVB0/tX7hrCAZG54IO4Dw2voLtM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429451; c=relaxed/simple; bh=pAZDjeecp6rsXv/22TRVi6mFQYwYZQxzVZ7EkKQ7Log=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GfYl7/t75OYveWdvEqM4gpqSCLvc1qQ1BUsa38rS2VKG1+Y9hNVkyLYt6yPlSXmibPGIsnl9JdOcGZ/sDTDEHyRsMlkri2eUdpnLB6IQ1Vs/5tGhy2AsX/iz7GSPlc0MNJS8KL6YgDWzJqzojWRIJeRzo8xaCopQQtMW2abtrEc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FOeOvseS; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FOeOvseS" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-428141be2ddso36651545e9.2; Wed, 31 Jul 2024 05:37:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722429448; x=1723034248; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CzcBX9trXfq2k2br88kZQvGfopQSzgfszubMVwGQIRc=; b=FOeOvseSJc4GZeg5tCfraZYUwbIwucWtp/PF8vYYlAqJ6Iu6I3mYIlhiGXDdwA8zgF zaQWdmPq1xsUlELcy4R7Au965FDa43o/fUzCY1DlbXlLIeMlyCE5K/dH5cCqzvh6biTk yUxlu3yFbETJb2MhGtz1KwmC1cojabXhDvEBAXt9rVfh2FnQFSLfFWczuWs51lbw5UrG dL1w0kfwGHvSHZCV3BqXBr+ax3ijD6cl79qxINPWw7jBaZ8BJt0p3r4rKaOhTgJwZX2v 3yoEprhjw/tifICXqoK3X6oWTJAJshv0lEiS15sPJZvythlDxV5CHHcAsTCzRUxWELhn nsdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722429448; x=1723034248; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CzcBX9trXfq2k2br88kZQvGfopQSzgfszubMVwGQIRc=; b=HR7+IkuoQAq/N3+aexpx0Uu3CJ83FbtvAtHhAQXBUX9Rbz0gvQiPmNvJe88ymlTGrp NbW9PKQNnHIPlG8oTA3i8/SXgiKsikaakH83nWdYn5jR3gikDozg7Bz+19euA0NOOYda 9CxOMpdSonv4grsV8rOJcm+/VtQNJz5/dfnvNuFCA58MWY5INz1Hex01LmKaaX1q5voD 4EClyqfCpLmDKaRvjJ+hNZpq6VmeBLq4WgwM9q5sTPlHg3MMyGcD/vPZbQX+jyg/dtZw gjPXJl5JrV2JifwiP+MG7W9qiouEr89hz4uWySNuDz+mOe0ZeO8DC/d0HSK/L/NZ9v4B 5xmg== X-Forwarded-Encrypted: i=1; AJvYcCW+hdr7q75agwltriNYLEvtDeymJoDjkU7MxCGibWOQ9b4ZBHCTKQvmYCRKRpV/VQ4QwvY36gsV/42fD90Oz+Ay8nXlD1OetBae5c8oZVazq/oekSg/7ipb7MSRToSls5TfFQyKmbKs X-Gm-Message-State: AOJu0YxgsKqwD4yZOhJT2mRnUDqUEtMAFGWttSIODNinUq6HYDrdITZZ szVv6S0PFnhUf3MtW0JQoln1bAX5FduAzgQIYPc4nSRCejXCUUu8 X-Google-Smtp-Source: AGHT+IGwbo9oOCC1QRNLV5d8AI5Ecfn5RWDJx4Hj1H3F0ZUHZ0lL9y4KhWxPenwUj6t+Y93jkskEVw== X-Received: by 2002:a05:600c:1390:b0:426:5e91:3ff1 with SMTP id 5b1f17b1804b1-42811dcd2f9mr96458665e9.24.1722429447841; Wed, 31 Jul 2024 05:37:27 -0700 (PDT) Received: from HYB-hhAwRlzzMZb.ad.analog.com ([5.2.194.157]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282bb64755sm20600465e9.36.2024.07.31.05.37.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 05:37:27 -0700 (PDT) From: Dumitru Ceclan X-Google-Original-From: Dumitru Ceclan Date: Wed, 31 Jul 2024 15:37:22 +0300 Subject: [PATCH 1/4] iio: adc: ad7124: fix chip ID mismatch Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240731-ad7124-fix-v1-1-46a76aa4b9be@analog.com> References: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> In-Reply-To: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> To: Jonathan Cameron , Stefan Popa , Alexandru Tachici Cc: Dumitru Ceclan , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722429445; l=1054; i=dumitru.ceclan@analog.com; s=20240313; h=from:subject:message-id; bh=pAZDjeecp6rsXv/22TRVi6mFQYwYZQxzVZ7EkKQ7Log=; b=NeEEZRkVw4/ZYL9IfEvfTbPWR4tgG/MXAaeWn1+ZjSGidF2KnEovqinKaPEhp1y/DPdH+Crve uBU3sga4qM2DvGxMP9c4yyxmwm1kHeFXW5bfG61ea9DPXqZtVxw68g3 X-Developer-Key: i=dumitru.ceclan@analog.com; a=ed25519; pk=HdqMlVyrcazwoiai7oN6ghU+Bj1pusGUFRl30jhS7Bo= The ad7124_soft_reset() function has the assumption that the chip will assert the "power-on reset" bit in the STATUS register after a software reset without any delay. The POR bit =0 is used to check if the chip initialization is done. A chip ID mismatch probe error appears intermittently when the probe continues too soon and the ID register does not contain the expected value. Fix by adding a 200us delay after the software reset command is issued. Fixes: b3af341bbd96 ("iio: adc: Add ad7124 support") Signed-off-by: Dumitru Ceclan --- drivers/iio/adc/ad7124.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index e7b1d517d3de..54d4c5597696 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -762,6 +762,7 @@ static int ad7124_soft_reset(struct ad7124_state *st) if (ret < 0) return ret; + fsleep(200); timeout = 100; do { ret = ad_sd_read_reg(&st->sd, AD7124_STATUS, 1, &readval); From patchwork Wed Jul 31 12:37:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ceclan, Dumitru" X-Patchwork-Id: 13748687 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E97D1AC428; Wed, 31 Jul 2024 12:37:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429452; cv=none; b=tCmRGNQhyPC685HMDcCr7OCUyhyyw6RpcPFw0UHVbXUAmcRJL2NdOalNVTMkWOVkD1RWqvSkIPk9bHXoKPXf9968hV/ZizVbFpx+4yAO6Oeyiu2Nv9BeLQbhTBQdehjb69bQjdcchDoRVb9TpSgzc20cgazqhmHaw1N99f+IxmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429452; c=relaxed/simple; bh=IDLxMQAziGWRT9o+BPx2alzRcIDpqU3lrCAQOaxKYqg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LgjY1CSCwbH/BmdMGiSxW2PAIYYYU6EybXwUQ9QiJKw1Q1Yt0ht3xqRSI5cZFUa4HP0/Ij4XYjYB8WQcqUQHizc0fSt+5lEcXbJUlxtk1RnTHESmZxwuwWcY95fHZLzfBEcqwGzZKhky/0kziTMS2jTSejvw06JJAp7rU6B9WTQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MbaSTiXz; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MbaSTiXz" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-42803bbf842so47251345e9.1; Wed, 31 Jul 2024 05:37:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722429449; x=1723034249; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Fs0NGjcaoyqSyOFGWGsNiT6fgwM5H3CXS/f87w8KQ3Q=; b=MbaSTiXzUP7/KNJiiH+FgvtKdEigX1OSwqLT82vF7GnPNEnHdhDi+9x5+y6ocA+Nz7 AG21Q3vlPPwQXM0o7M1mY2mOgxSC1jTgaA7zOR2x0gV3U9LrK93tyxDRvdasAMCXR8ED cnNzExhNWdTJlIEmQ8AZyYsxeCsaPGOwVjJV1R7rR2tKE5hfORUa18oCAPt5NXr+cmfJ An4KnBpwbH75daEhsknzreZ1eazSpbrwSAKekUDCat02DaIP9aj8l/Kke11RYzLVgmjd pAagFHx28k1gzG40qZt7OdjkgYkwQap0beJR37S190doGmOZRn4/jLTViYoh+H8XyAXY /Wfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722429449; x=1723034249; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fs0NGjcaoyqSyOFGWGsNiT6fgwM5H3CXS/f87w8KQ3Q=; b=sgCBez1EwuEFy0irdxVSWrz0IlXQcujQsuEBfuMdBEwAHfdPllG0wz1l+vVZ/MfYFJ h/wrYGGXqSRfsBf6/uLSMGXwEIfqnomhNOfnVHKLJdcnYXzVMK+Sy5VXVmIL4yRF6S+L uf7VT/yMA/PLOK2x3SC+mpFF/m9ldufzDa3ut2EQiUVIeVMkbARhfGVSV0d+QCBgqsuY Bp+uSnMFjE/f4+R8ncVViY1LqDOlhQrcXTYakfhm9jvFxUw64L6JKfE0+W2yoyOogkRP p6ktWvaIM2tliPWaha5poBBpkpbEwxizwUm2mV4e3bJftlL89F6F92jaYJVtQy+tWbcA xMiA== X-Forwarded-Encrypted: i=1; AJvYcCXZ2t0JAv1rzGo4xDo/exF/nUQswiAuWVjgOEBEwmgd86yzeDsniIkN9Qn86n6ekfnaCSSfeQWV9twijbiTuOQXpjFMFwE0U7NPN7LAXBtc23VA1JUNojGkB9Gfw4nNkROLwAXGsfiZ X-Gm-Message-State: AOJu0Ywt7N/jBhSINe8FW6cV1VBePrdLZlHhyXWsCJb6uPUDXoFpKo/A 5SUAfyGTxKcDdbAVCeWx5gLYcpNJFshw+7OPxeyzLWPe/CnLyQQIZZtmiMvDy6A= X-Google-Smtp-Source: AGHT+IEknepjVVyNVqsJE7XlYUbb5dEK+cBAkF3rubSCnFg/8K8W91uYtddZ6ep7sxI3rI4IA7DpWQ== X-Received: by 2002:a05:600c:4311:b0:428:111a:193 with SMTP id 5b1f17b1804b1-42811e0b9a7mr98270705e9.37.1722429448728; Wed, 31 Jul 2024 05:37:28 -0700 (PDT) Received: from HYB-hhAwRlzzMZb.ad.analog.com ([5.2.194.157]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282bb64755sm20600465e9.36.2024.07.31.05.37.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 05:37:28 -0700 (PDT) From: Dumitru Ceclan X-Google-Original-From: Dumitru Ceclan Date: Wed, 31 Jul 2024 15:37:23 +0300 Subject: [PATCH 2/4] iio: adc: ad7124: fix config comparison Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240731-ad7124-fix-v1-2-46a76aa4b9be@analog.com> References: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> In-Reply-To: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> To: Jonathan Cameron , Stefan Popa , Alexandru Tachici Cc: Dumitru Ceclan , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722429445; l=2214; i=dumitru.ceclan@analog.com; s=20240313; h=from:subject:message-id; bh=IDLxMQAziGWRT9o+BPx2alzRcIDpqU3lrCAQOaxKYqg=; b=r2Tiqd5RKx0lTUK09pgnTP9nM67dNklhwhXN+iG0XME7bwL3j6OwUbAktTNgodNqtE0hcSVw0 ycfOcwkzDikCo3g5Pxjg0lkzqQ085b2yq3x6EsbXzaryXRQcaO6eC02 X-Developer-Key: i=dumitru.ceclan@analog.com; a=ed25519; pk=HdqMlVyrcazwoiai7oN6ghU+Bj1pusGUFRl30jhS7Bo= The ad7124_find_similar_live_cfg() computes the compare size by substracting the address of the cfg struct from the address of the live field. Because the live field is the first field in the struct, the result is 0. Also, the memcmp() call is made from the start of the cfg struct, which includes the live and cfg_slot fields, which are not relevant for the comparison. Fix by grouping the relevant fields with struct_group() and use the size of the group to compute the compare size; make the memcmp() call from the address of the group. Fixes: 7b8d045e497a ("iio: adc: ad7124: allow more than 8 channels") Signed-off-by: Dumitru Ceclan --- drivers/iio/adc/ad7124.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index 54d4c5597696..bd323c6bd756 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -147,15 +147,18 @@ struct ad7124_chip_info { struct ad7124_channel_config { bool live; unsigned int cfg_slot; - enum ad7124_ref_sel refsel; - bool bipolar; - bool buf_positive; - bool buf_negative; - unsigned int vref_mv; - unsigned int pga_bits; - unsigned int odr; - unsigned int odr_sel_bits; - unsigned int filter_type; + /* Following fields are used to compare equality. */ + struct_group(config_props, + enum ad7124_ref_sel refsel; + bool bipolar; + bool buf_positive; + bool buf_negative; + unsigned int vref_mv; + unsigned int pga_bits; + unsigned int odr; + unsigned int odr_sel_bits; + unsigned int filter_type; + ); }; struct ad7124_channel { @@ -334,11 +337,12 @@ static struct ad7124_channel_config *ad7124_find_similar_live_cfg(struct ad7124_ ptrdiff_t cmp_size; int i; - cmp_size = (u8 *)&cfg->live - (u8 *)cfg; + cmp_size = sizeof_field(struct ad7124_channel_config, config_props); for (i = 0; i < st->num_channels; i++) { cfg_aux = &st->channels[i].cfg; - if (cfg_aux->live && !memcmp(cfg, cfg_aux, cmp_size)) + if (cfg_aux->live && + !memcmp(&cfg->config_props, &cfg_aux->config_props, cmp_size)) return cfg_aux; } From patchwork Wed Jul 31 12:37:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ceclan, Dumitru" X-Patchwork-Id: 13748688 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 13FEB1B0116; Wed, 31 Jul 2024 12:37:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429453; cv=none; b=kxrthk+4qqQNfYeaMtongu2LeuxLAdq9UvAo79mcnAsgDsARJdJoq50KAz/dJDgyUal11qL9wrnwDWYoLyyTIM74PHyMhtGzfbVEG92PTfN4xWbTaJ4BQJhKIxeOuD88PNLoFRTcC2bZIKUAjEnJo9jcfux76go47oGeOpha2Mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429453; c=relaxed/simple; bh=dMyvbSpcAGD9BOQyyqG+nihowEhrRM9wLwe6KGiU3oM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=skk0H7z2binn2NEdVs4ELUAqBFhWCp3C/9yrOKFq8x79KEGVUflS+MZk1M/vt9v4B4JjbtjFGODJtWswOSl7pUsRBUWPYWi7TWNsG/AGk2LS7JMkS0QlE9eFCfikkFNaAXAopEJhDXp/dyuWheyVMExqhgZmuwM0SsLqNHKhwOU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TN5QTO1r; arc=none smtp.client-ip=209.85.208.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TN5QTO1r" Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-2ef27bfd15bso78032211fa.2; Wed, 31 Jul 2024 05:37:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722429450; x=1723034250; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LS2KS4OhAjr943Ml9EsvwJpcwB4lNojCByA1HCauwsc=; b=TN5QTO1rDAVBQA5B7SSEWGfoMEvRSqYKkEeNiJbqnEQJBoiz8BGfrLincHD1CP/0br 0mYepnUdB+LN0SqMB/JHZGV8BY/9iYBvOeig8Fn6QQ8saVjZi9IWNEEuDmd8YE7pMc8C GJ2SDW4h4QPd6XNdw3vqiEK/i9Cnm32RKpOlYaRj9SUNPjs6RqR7nrT03UaHLhzykOFi UexkxxZ57dzG/aCQLIdBvNvwIzxeARHrMZlHOgoTlkPjOo0DvPqqKR7MVzwWdQcFj/zv 6r6TP/nko7oicnyWIL/0N4bbamzaZb7obVRJVmVDf4DszqRIjO56P3Vh8UCCpZQcYCOW q2Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722429450; x=1723034250; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LS2KS4OhAjr943Ml9EsvwJpcwB4lNojCByA1HCauwsc=; b=W77ETmXJlGIz9PJUtPFpzeM59iNhYJ5KasDhloAxp4/be7E2xMZyk3Ct93WFEllQhn v69wbvJRslgqGavCWitNXB/Nb/gHRyqj3AyCA4UiRZV3smbrL6k42I2PntbbRMtPkjWh zFAE3VXLTkFHcl7ThZcYWQNSvfIshE9NL6S26YPu7fuE2Iyr2wMkMCKAqU1k6wA2VLnk iPdee3xbiCN/f8zOcx6z7FqNCYCHV4KwvZfR6VGa710XN+Zi7NkYYf8+Km5a0YR77Rqm IPPIZjNTtP2Vtu3EBpqZ42ajVaNUtS49e98IyeektMBl2CUvyQrQ3WX23asUe3pQ/Rht 8gpQ== X-Forwarded-Encrypted: i=1; AJvYcCW/Ntzdro1R+uU7WZmEB4R65I6sfZ/RKeKCn7AsyFVpUnLLkNXUzMIhB0z0yH6hHHYrI2YMXAvgk4ZfOmT47Nh5s591s/cNC/Q4u+yZEeNbB/kqo87k+AUpRh6BN9SDZQXvNimuDm8Z X-Gm-Message-State: AOJu0YwEfXtm58Rqrwpj3DzV7NrcIsZoOd1eI9Gm4ksoxJmH/SqqtDCV IwkAPZvVyb94TNB4MY2pcUK34GC6y5PbMWdA9Jj4sWjJZhTSdfUT X-Google-Smtp-Source: AGHT+IFaSbDoJIt1Z+vCsWx5cgKWLIKUsqBA0JIq9bUhUC4ptl0RkIID7s2994GEbOjsiFW+cFCzgA== X-Received: by 2002:a2e:7307:0:b0:2ef:26f2:d3e6 with SMTP id 38308e7fff4ca-2f12ee5bd37mr92441121fa.34.1722429449656; Wed, 31 Jul 2024 05:37:29 -0700 (PDT) Received: from HYB-hhAwRlzzMZb.ad.analog.com ([5.2.194.157]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282bb64755sm20600465e9.36.2024.07.31.05.37.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 05:37:29 -0700 (PDT) From: Dumitru Ceclan X-Google-Original-From: Dumitru Ceclan Date: Wed, 31 Jul 2024 15:37:24 +0300 Subject: [PATCH 3/4] iio: adc: ad7124: reduce the number of SPI transfers Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240731-ad7124-fix-v1-3-46a76aa4b9be@analog.com> References: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> In-Reply-To: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> To: Jonathan Cameron , Stefan Popa , Alexandru Tachici Cc: Dumitru Ceclan , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722429445; l=3323; i=dumitru.ceclan@analog.com; s=20240313; h=from:subject:message-id; bh=dMyvbSpcAGD9BOQyyqG+nihowEhrRM9wLwe6KGiU3oM=; b=g4bNkivIFh8UTEABqE3XBiMneAMWGvetwyulS9dMpTy4/h1BpYsOJFEA+4ExAxIsLRhTBUgW9 l8gbzrHE+jNBGDopDFtaqN753FoLV2soQYN+cpyCHK05PhiJLqyjH7H X-Developer-Key: i=dumitru.ceclan@analog.com; a=ed25519; pk=HdqMlVyrcazwoiai7oN6ghU+Bj1pusGUFRl30jhS7Bo= The ad7124_init_config_vref() function writes the AD7124_ADC_CONTROL register for each channel that is configured to use the internal reference. The ad7124_write_config()function performs 7 SPI transfers for configuring 2 registers: config_x and filter_x. Reduce the number of SPI transfers: -during the probe by only setting the st->adc_control value in ad7124_init_config_vref() and writing to the device only at the end of ad7124_setup(). -in ad7124_write_config() by grouping writes to the same register. Signed-off-by: Dumitru Ceclan --- drivers/iio/adc/ad7124.c | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index bd323c6bd756..4d63cd5c9d04 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -382,8 +382,7 @@ static int ad7124_init_config_vref(struct ad7124_state *st, struct ad7124_channe cfg->vref_mv = 2500; st->adc_control &= ~AD7124_ADC_CTRL_REF_EN_MSK; st->adc_control |= AD7124_ADC_CTRL_REF_EN(1); - return ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, - 2, st->adc_control); + return 0; default: dev_err(&st->sd.spi->dev, "Invalid reference %d\n", refsel); return -EINVAL; @@ -401,24 +400,17 @@ static int ad7124_write_config(struct ad7124_state *st, struct ad7124_channel_co tmp = (cfg->buf_positive << 1) + cfg->buf_negative; val = AD7124_CONFIG_BIPOLAR(cfg->bipolar) | AD7124_CONFIG_REF_SEL(cfg->refsel) | - AD7124_CONFIG_IN_BUFF(tmp); - ret = ad_sd_write_reg(&st->sd, AD7124_CONFIG(cfg->cfg_slot), 2, val); - if (ret < 0) - return ret; + AD7124_CONFIG_IN_BUFF(tmp) | AD7124_CONFIG_PGA(cfg->pga_bits); - tmp = AD7124_FILTER_TYPE_SEL(cfg->filter_type); - ret = ad7124_spi_write_mask(st, AD7124_FILTER(cfg->cfg_slot), AD7124_FILTER_TYPE_MSK, - tmp, 3); - if (ret < 0) - return ret; - - ret = ad7124_spi_write_mask(st, AD7124_FILTER(cfg->cfg_slot), AD7124_FILTER_FS_MSK, - AD7124_FILTER_FS(cfg->odr_sel_bits), 3); + ret = ad_sd_write_reg(&st->sd, AD7124_CONFIG(cfg->cfg_slot), 2, val); if (ret < 0) return ret; - return ad7124_spi_write_mask(st, AD7124_CONFIG(cfg->cfg_slot), AD7124_CONFIG_PGA_MSK, - AD7124_CONFIG_PGA(cfg->pga_bits), 2); + tmp = AD7124_FILTER_TYPE_SEL(cfg->filter_type) | + AD7124_FILTER_FS(cfg->odr_sel_bits); + return ad7124_spi_write_mask(st, AD7124_FILTER(cfg->cfg_slot), + AD7124_FILTER_TYPE_MSK | AD7124_FILTER_FS_MSK, + tmp, 3); } static struct ad7124_channel_config *ad7124_pop_config(struct ad7124_state *st) @@ -906,9 +898,6 @@ static int ad7124_setup(struct ad7124_state *st) /* Set the power mode */ st->adc_control &= ~AD7124_ADC_CTRL_PWR_MSK; st->adc_control |= AD7124_ADC_CTRL_PWR(power_mode); - ret = ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, st->adc_control); - if (ret < 0) - return ret; mutex_init(&st->cfgs_lock); INIT_KFIFO(st->live_cfgs_fifo); @@ -926,6 +915,10 @@ static int ad7124_setup(struct ad7124_state *st) ad7124_set_channel_odr(st, i, 10); } + ret = ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, st->adc_control); + if (ret < 0) + return ret; + return ret; } From patchwork Wed Jul 31 12:37:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ceclan, Dumitru" X-Patchwork-Id: 13748689 Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2B0B1B1406; Wed, 31 Jul 2024 12:37:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429454; cv=none; b=KZ5hH3OsFIRvd3uqRB8OExrElszkQm8aUqI0i8ZCM1SI7qWp3NDJt/F8fs9L0I/aVd+rx5ifcK7/bXfV4PwIFx6kcvlHEM52bxJKff/OXKnZjQq6hny+si/enDceDTMfLqQSqPhF8UYmGtLEXGlh6Q1fvTsBzaJIU48z8dyF48U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722429454; c=relaxed/simple; bh=UwRYvAN7LNB8VUvCepUM1zAD2MkiMuj+x2+rgIaqKLM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uDAi6B47fM4SxwDXj0XfDDnVEcLL1U5Uz/gQtkWhyn1z9he5WSfIjm4OokfVCOUr0xs32ksyIliBI2MVKXryRW7apvt1vARioXnSIKckEOLLnsUwYDKXYB6uhQEsszEHiNEnjMRMXA+RpD9JHW/wHA6XgaMG+QZRlgauPTGxrVw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S1qsWHLK; arc=none smtp.client-ip=209.85.208.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S1qsWHLK" Received: by mail-lj1-f179.google.com with SMTP id 38308e7fff4ca-2f149845d81so20095661fa.0; Wed, 31 Jul 2024 05:37:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722429451; x=1723034251; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=UU5X7a5HgxCluEnZF+3TvBQHOtwCPJFDpNa5mbVP2Io=; b=S1qsWHLKwEN1m8gE/lFSUE+ctF8Ig1RRuyhT2GZZ8x+CQFgCitDRgmY/j4sWv8W96V 0XSuCeUXOHTPtHpvzg9Q5YPONHj0I833KR4TFQfe1dpVEOIss6THSkkJSAZgRtLFPSaJ TV9cGCaZ53W1V+DelixcxCuHBRjApiZUb3spzu4FYYVRcxhEJZbgEMec7faK+LoczDgN leRSRq5NDmLz9rZSk16ljcSQavkU+5WlTmkFcaZvlQvmD6sr1Cy1rYA3oJN79IxaFJSC CXuKl77YaeBukzp0FAULWv6b1ildYBTLMpA0KCetkPlrqz0AiNYWnF0/yqCowjZWENa5 Ma/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722429451; x=1723034251; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UU5X7a5HgxCluEnZF+3TvBQHOtwCPJFDpNa5mbVP2Io=; b=ZHyshwSdkhdjLzn7rDqkJH1DOqBsE2grTH2KXDuzfa/YS9uO2bJFyJJi1vuq3TAcQ9 nBDjQ0X6zCDmbwRwFiHbiMM8L6+6Tvpb67PK4SWT0JOTd4+/Nw30UrmHQa6A+XH37UDj aWHGBvTeYMuuTxwOpUzRA09DD2rqbDJVDk4eyqr286XimOjLcsZSCQNbcrEDZ3XEUt4n k6tjM5BxxXu9Ime8auv+DxgHu8kASstjcVnQ2HYC2S4VhoScOqoEOc+eAzmjwdDX+JgA cgKWjvWizbt3qkDrGL5DFx+7Gi3B+/ztGUU1YgSbgOwIPb/oqGtpZd12aJbE8yr+1Tre FWAQ== X-Forwarded-Encrypted: i=1; AJvYcCXmb+gOr6E8gvrLyh9ifLwcLABNdAYrWrUMclxGeihQ1slUo3iNLHpkQ3EKGbU+uz2k9yr6YRMLmHL7eiZ3rm8he6Bf7TonjdO6Yi0ZMalaeqSoMMlU2xpvskXdsrLYUxutSJdXcirX X-Gm-Message-State: AOJu0YymabAcpfiEXGW1LZXZy/FdC5tpRlQ1DFLxOk38H3NMMHJrUji7 pvjhZ24SJoMG2ZHocT3feD+67LBHP5WVyoAtrgGdO9EEuL/1jGjAA+UJQhoWWjw= X-Google-Smtp-Source: AGHT+IHovvG3uQ4gbH4Wp0Lz9szD9FDkQ256iZXVZdBACrDdRWPF6ckXJmyjLshPzmuKCsD+FHD6mA== X-Received: by 2002:a2e:9e05:0:b0:2ef:2da9:655d with SMTP id 38308e7fff4ca-2f12ee24b24mr94483741fa.26.1722429450750; Wed, 31 Jul 2024 05:37:30 -0700 (PDT) Received: from HYB-hhAwRlzzMZb.ad.analog.com ([5.2.194.157]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282bb64755sm20600465e9.36.2024.07.31.05.37.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 05:37:30 -0700 (PDT) From: Dumitru Ceclan X-Google-Original-From: Dumitru Ceclan Date: Wed, 31 Jul 2024 15:37:25 +0300 Subject: [PATCH 4/4] iio: adc: ad7124: set initial ADC mode to idle Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240731-ad7124-fix-v1-4-46a76aa4b9be@analog.com> References: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> In-Reply-To: <20240731-ad7124-fix-v1-0-46a76aa4b9be@analog.com> To: Jonathan Cameron , Stefan Popa , Alexandru Tachici Cc: Dumitru Ceclan , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722429445; l=1102; i=dumitru.ceclan@analog.com; s=20240313; h=from:subject:message-id; bh=UwRYvAN7LNB8VUvCepUM1zAD2MkiMuj+x2+rgIaqKLM=; b=n0ZRGtPVxpL4Rk05uxWPt43ohRg3mz1iNocDGc8XE1o+kKsqrvXFYtDKdYsWvmLOzCIMj+B3w 1+cFmt40UczDA701gzvjQVf6ZAEAsnlfOm3v7aLVWeue2GVoz5meTC6 X-Developer-Key: i=dumitru.ceclan@analog.com; a=ed25519; pk=HdqMlVyrcazwoiai7oN6ghU+Bj1pusGUFRl30jhS7Bo= During setup the st->adc_control is 0, which corresponds to a continuous conversion mode. The reset value for channel 1 is to enable it. The combined effect of these two is that the ADC will start conversions for channel 1 without them being read. This is not neccessarily a problem, but it is an unexpected behavior. Set the ADC state to idle during setup to avoid this. Signed-off-by: Dumitru Ceclan --- drivers/iio/adc/ad7124.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index 4d63cd5c9d04..47abefd0fe5f 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -899,6 +899,9 @@ static int ad7124_setup(struct ad7124_state *st) st->adc_control &= ~AD7124_ADC_CTRL_PWR_MSK; st->adc_control |= AD7124_ADC_CTRL_PWR(power_mode); + st->adc_control &= ~AD7124_ADC_CTRL_MODE_MSK; + st->adc_control |= AD7124_ADC_CTRL_MODE(AD_SD_MODE_IDLE); + mutex_init(&st->cfgs_lock); INIT_KFIFO(st->live_cfgs_fifo); for (i = 0; i < st->num_channels; i++) {