Received: by 2002:ab2:620c:0:b0:1ef:ffd0:ce49 with SMTP id o12csp1421599lqt; Wed, 20 Mar 2024 03:40:36 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWExE8cDmP0zttHHllZqxJa60I7zSM4NCsrysc4S4rVBq0xewQjLol9PAOKKskaKjX/q2fB2tjJu3iODYnO2ZPp6qXU9+OQN9IGMDbbZg== X-Google-Smtp-Source: AGHT+IEqKdaPzjoDamqnWBcScMfuV8R5mjEpvQgsex5GHZ0mjSW7YdyDwOeKwFc9oiKYFhWQuJby X-Received: by 2002:a17:906:1309:b0:a46:acdf:5a20 with SMTP id w9-20020a170906130900b00a46acdf5a20mr6266363ejb.37.1710931236365; Wed, 20 Mar 2024 03:40:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710931236; cv=pass; d=google.com; s=arc-20160816; b=jhPg6TSltoeXErXWBEc0Egs8Sar/IRi4zcwfnbCvqPh3GUIr+8+KmA/HGIgBEkRJb4 HCrHktmzGmXRBlIsAme9JOf3mfuHsk6XRuqKDgJ5boEODCmxf0WWM61RTSckb4nxw/Si WqumgHNUlEafBbuLMDr74112cAASLZCGKvhcjOQoZr5u8wv181GSx3i6UzeFFh16rQUP Q57l0ovfzs6WVyPMLzrBux4iUkGLKqtx023tcsV14wE4Zg0FfSEQbnUz/bpmhoiGaWAW neV8/FtOms0n6z1qCqyplvj41OoYdd4EFhosW0+v71sF66itxJ9q7bSA5suKcnETO+Py 0bJw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=iMhNhe+tcxLmuyKOOZrdE9LpgvkjJPJ2ncK9B+m2l1Q=; fh=rErrmMyFUNLtckmTK/leaiF1CC+u1V/GL7k+2aVTcb0=; b=bRj2+VYmsZPKGIRMRwnau7OZa25Cm078xroSqFauzNx1g1RxHuL9grsAhjthLT3/AN VzQjUFKl3Yl5kaO7AuNmv1g3a8TKem4zL+B6kf84LFRJ7nikWy9raZULAyHqFdlcGywZ desinKS9LviJvtE7L9vNLARc4fgPHtHCbyMLRrp3GtyfDaJkYf5OWzL6mjEcJuYrfhm1 6K8tz3wnCuWqAfvs6epqf0OCcyVn9cWj5Gim0cbsTQW8LsBJY3O63rLiqMptFVLgUkQi Vq9QQhhpiAYKKDsYESz+maiZ9lKI9RyeJvhVH61ObpJviwzTxoKXZQ8L3PU+iiy5q3fN R4oQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@norik.com header.s=default header.b="UD3/huH2"; arc=pass (i=1 spf=pass spfdomain=norik.com dkim=pass dkdomain=norik.com); spf=pass (google.com: domain of linux-kernel+bounces-108796-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-108796-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id rh12-20020a17090720ec00b00a4669ed7188si6078866ejb.1023.2024.03.20.03.40.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Mar 2024 03:40:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-108796-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=fail header.i=@norik.com header.s=default header.b="UD3/huH2"; arc=pass (i=1 spf=pass spfdomain=norik.com dkim=pass dkdomain=norik.com); spf=pass (google.com: domain of linux-kernel+bounces-108796-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-108796-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 1C4631F23598 for ; Wed, 20 Mar 2024 10:40:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0779A38398; Wed, 20 Mar 2024 10:40:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=norik.com header.i=@norik.com header.b="UD3/huH2" Received: from cpanel.siel.si (cpanel.siel.si [46.19.9.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9B322D05C; Wed, 20 Mar 2024 10:40:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=46.19.9.99 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710931226; cv=none; b=CHspoaCntpQ14HsODLA02zbbKghRsd3V3QNk8xYA880Q9aQJvQ5Z+aJR5MkFQKVfVMJKIu5oACICfjpqTwxZxUP3ZlBxKVxwR+JlIacbGxJYDtM0Gr5i6ZcSHDjlH6qX2k//dSOaQSbgirBMe0km47kGfayIOkMBByVBC50RCe4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710931226; c=relaxed/simple; bh=Y32T7gZW4IggfhZ5kFlo81B/FTCzi9qFSwHVweW2rNM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CszHR/ZXtudI196gxQD/iR3nIUhTnM1QFKR4oNsl36Hub0hFfkdM96SB+TL4neheuTnzhwhDM2FLS+/boxXBEteY4ivB+T3G73akYBX6z/FUBnk8At5QjVeEFo7EjdsE4TJmivZrEEJkQsV7TrASEMGRpn5rQum2VBJ397k8E5w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=norik.com; spf=pass smtp.mailfrom=norik.com; dkim=pass (2048-bit key) header.d=norik.com header.i=@norik.com header.b=UD3/huH2; arc=none smtp.client-ip=46.19.9.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=norik.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=norik.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=norik.com; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=iMhNhe+tcxLmuyKOOZrdE9LpgvkjJPJ2ncK9B+m2l1Q=; b=UD3/huH2xJxpLYmHVUVdrpRcfg hM/Tcu5hF3lVsE2Tgl7+6R8mn9eOmqWtGGlCg9Z7s1Jyh72IJEDUIrcXhqk4B6a5hlTzQrqN5EboQ 7L8lL8vNP2PKWjQs1WX57MuIpRtF2eWPZnCrqqZMiGxf1Qxs8GULRB6JtK0XaMzcQXttibccLW8k2 FKOazelzUm9QVJDXqOSBb3X3U2dQ8lsaMPFGEx5yHmAEYUKcMAXO2QMbkYcduxeg9acsVJjIleYQv 1iiH/HxvMEjAy0cHmsKL3tWtlLXZbIB0uyyXb5uPLDd7pDgCeLLNtpA++7qIn03yHA/U/3F/JvScg 2uczQZCw==; Received: from [89.212.21.243] (port=57750 helo=localhost.localdomain) by cpanel.siel.si with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96.2) (envelope-from ) id 1rmsnx-005Tm8-10; Wed, 20 Mar 2024 11:04:17 +0100 From: Andrej Picej To: haibo.chen@nxp.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org Cc: jic23@kernel.org, lars@metafoo.de, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, upstream@lists.phytec.de Subject: [PATCH 1/2] iio: adc: imx93: Make calibration properties configurable Date: Wed, 20 Mar 2024 11:04:05 +0100 Message-Id: <20240320100407.1639082-2-andrej.picej@norik.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240320100407.1639082-1-andrej.picej@norik.com> References: <20240320100407.1639082-1-andrej.picej@norik.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cpanel.siel.si X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - norik.com X-Get-Message-Sender-Via: cpanel.siel.si: authenticated_id: andrej.picej@norik.com X-Authenticated-Sender: cpanel.siel.si: andrej.picej@norik.com X-Source: X-Source-Args: X-Source-Dir: Make calibration properties: - AVGEN: allow averaging of calibration time, - NRSMPL: select the number of averaging samples during calibration and - TSAMP: specifies the sample time of calibration conversions configurable with device tree properties: - nxp,calib-avg-en, - nxp,calib-nr-samples and - nxp,calib-t-samples. Signed-off-by: Andrej Picej --- drivers/iio/adc/imx93_adc.c | 66 ++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/drivers/iio/adc/imx93_adc.c b/drivers/iio/adc/imx93_adc.c index 4ccf4819f1f1..ad24105761ab 100644 --- a/drivers/iio/adc/imx93_adc.c +++ b/drivers/iio/adc/imx93_adc.c @@ -18,6 +18,7 @@ #include #include #include +#include #define IMX93_ADC_DRIVER_NAME "imx93-adc" @@ -43,6 +44,9 @@ #define IMX93_ADC_MCR_MODE_MASK BIT(29) #define IMX93_ADC_MCR_NSTART_MASK BIT(24) #define IMX93_ADC_MCR_CALSTART_MASK BIT(14) +#define IMX93_ADC_MCR_AVGEN_MASK BIT(13) +#define IMX93_ADC_MCR_NRSMPL_MASK GENMASK(12, 11) +#define IMX93_ADC_MCR_TSAMP_MASK GENMASK(10, 9) #define IMX93_ADC_MCR_ADCLKSE_MASK BIT(8) #define IMX93_ADC_MCR_PWDN_MASK BIT(0) #define IMX93_ADC_MSR_CALFAIL_MASK BIT(30) @@ -145,7 +149,7 @@ static void imx93_adc_config_ad_clk(struct imx93_adc *adc) static int imx93_adc_calibration(struct imx93_adc *adc) { - u32 mcr, msr; + u32 mcr, msr, value; int ret; /* make sure ADC in power down mode */ @@ -156,12 +160,64 @@ static int imx93_adc_calibration(struct imx93_adc *adc) mcr &= ~FIELD_PREP(IMX93_ADC_MCR_ADCLKSE_MASK, 1); writel(mcr, adc->regs + IMX93_ADC_MCR); - imx93_adc_power_up(adc); - /* - * TODO: we use the default TSAMP/NRSMPL/AVGEN in MCR, - * can add the setting of these bit if need in future. + * Set calibration settings: + * - AVGEN: allow averaging of calibration time, + * - NRSMPL: select the number of averaging samples during calibration, + * - TSAMP: specifies the sample time of calibration conversions. */ + if (!device_property_read_u32(adc->dev, "nxp,calib-avg-en", &value)) { + mcr &= ~IMX93_ADC_MCR_AVGEN_MASK; + mcr |= FIELD_PREP(IMX93_ADC_MCR_AVGEN_MASK, value); + } + + if (!device_property_read_u32(adc->dev, "nxp,calib-nr-samples", &value)) { + switch (value) { + case 16: + value = 0x0; + break; + case 32: + value = 0x1; + break; + case 128: + value = 0x2; + break; + case 512: + value = 0x3; + break; + default: + dev_warn(adc->dev, "NRSMPL: wrong value, using default: 512\n"); + value = 0x3; + } + mcr &= ~IMX93_ADC_MCR_NRSMPL_MASK; + mcr |= FIELD_PREP(IMX93_ADC_MCR_NRSMPL_MASK, value); + } + + if (!device_property_read_u32(adc->dev, "nxp,calib-t-samples", &value)) { + switch (value) { + case 8: + value = 0x1; + break; + case 16: + value = 0x2; + break; + case 22: + value = 0x0; + break; + case 32: + value = 0x3; + break; + default: + dev_warn(adc->dev, "TSAMP: wrong value, using default: 22\n"); + value = 0x0; + } + mcr &= ~IMX93_ADC_MCR_TSAMP_MASK; + mcr |= FIELD_PREP(IMX93_ADC_MCR_TSAMP_MASK, value); + } + + writel(mcr, adc->regs + IMX93_ADC_MCR); + + imx93_adc_power_up(adc); /* run calibration */ mcr = readl(adc->regs + IMX93_ADC_MCR); -- 2.25.1