From patchwork Mon May 27 18:37:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675679 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 4904A15E5D1; Mon, 27 May 2024 18:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835097; cv=none; b=tDSTZplS0W56tdKA/UpNGHoBxmH0CVEAYmd6eJQbjNYHSU40yPVo9FIyiYJ5m0h20eWwBJ33Mv2N3p++yOJDPOGenfxrvbvlUmTFCPWc46WjZgMYRoAwKAMA7RqOT4oTWu6kdVMxOh65PUqOlOEBFGChRIV0OJnnfnnt2KpQWGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835097; c=relaxed/simple; bh=tFqyr10ieLRJ5DI6lE1JW2jdiFMNDP2b+vQxz/y0vJE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TT3w9EW4l1LzOTh8h9kH9pX2o3tuekaXIj7JA+pk70Q2CnSNa2Dtyz8IHV5++LSRkOPT7kuOUgIZm7e5xP746f9RFjl2CYkLOl+R8Za901QiaAm3ugtwsWYXmtQ3t2WeeH8MhN13dSjVB0iBkcLsNJ5PBB6lwpT/zNZ4AgdIugM= 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=Rl7QhIeV; arc=none smtp.client-ip=209.85.218.51 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="Rl7QhIeV" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-a6266ffdba8so6483566b.1; Mon, 27 May 2024 11:38:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835094; x=1717439894; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BsGa43X4Kza6EU2ZExLXgNUwaJuDByoCS0kpZNvCdFQ=; b=Rl7QhIeV9Jx1Mb+IIbymLmG3BzFXAmGzUhxEQVNH6LH5TQB5wWG41it0d51r1ZFVQP sgpKBh+pVueiit492mxiRxrAkcnDpQQ5OYvkV5azZXs01QY00ZMiQCoO44HL0zr8FyqP IYPiBcwWbAihOXOI+pQywOYtqgd/FZygkHXp4EoijjpfQ0oBHISaCGZ3X8yqb4Zjew2n sOVfnN7pJM1TlIuI4ls8Yr+Jr6ZqQPJjAMFAMhnh1gaTnCt6DJ44yjuKNZ0Acor/nJpX psmvmdWVGkJWZffPl3GzKGG7Ktueg3TP5xc+BCssrtbXYBwdfL6VsDIOMzdAfxAM5Ty+ DJsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835094; x=1717439894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BsGa43X4Kza6EU2ZExLXgNUwaJuDByoCS0kpZNvCdFQ=; b=GqE/zPIzegp3vaR+weBu6kIUDKNdzdE/RVHbiufvHKZLU1EKzdnTcJStOV1Kb5ezXZ uTrRFpOK75yLmiBr3WPrglGx0IKdlFIdiRNXLlkUscXNFJeAp9zNbmRRjyprsjT7/ik8 MwnQlO5gbb3X/4YPl070QRRTcFyZWDBl3LufGaVs4MTVVQ6H2cwzm6f/iVTNVfnsS1QV 6sbLV55kHBEu3ww1gCfUvvqD4WUisoSKGa3znIc9Th2MGvh7bCOXbrf2SUN9Fi7bUjpm bbLKXzpmGmLbn9LupJzn8paYbxVM5vU/4VCpxn7d5EoSwGCU0mdjU3C/KC5gEqGfkJ5F OG5g== X-Forwarded-Encrypted: i=1; AJvYcCV9vkMAre8gRoBRMw88BQeUbMFjt6HKNE8BkHMA2WMpx75vVM8Od23ohQEefLzMu33ZoecZSRQEQIcTHMZ+npEVR0/o27o4h7EsAPIRr9TByHWgQA3Na9pSVk+YRu1chxROdl6MJlb5 X-Gm-Message-State: AOJu0Yw0dhx63NH6L1vSqByRNGSU2u4WUb9XXhuTzcF7c05rus7pAvuf WXlbIbhSVzxPoZ51gp/Ek3e1L3DqWyLg60VgVS+6EsKufUw6V6sl X-Google-Smtp-Source: AGHT+IEmGSQMC3M5YeeYosybrmsr18vOr2yKbke9bbguDCtx2GZuViYsDvKZ1K0/w+dZk4HnTAZk1Q== X-Received: by 2002:a17:906:d057:b0:a59:a112:add2 with SMTP id a640c23a62f3a-a62651122demr594771466b.69.1716835094383; Mon, 27 May 2024 11:38:14 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:14 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 01/17] iio: chemical: bme680: Fix pressure value output Date: Mon, 27 May 2024 20:37:49 +0200 Message-Id: <20240527183805.311501-2-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The IIO standard units are measured in kPa while the driver is using hPa. Apart from checking the userspace value itself, it is mentioned also in the Bosch API [1] that the pressure value is in Pascal. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x_defs.h#L742 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index ef5e0e46fd34..2c40c13fe97a 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -678,7 +678,7 @@ static int bme680_read_press(struct bme680_data *data, } *val = bme680_compensate_press(data, adc_press); - *val2 = 100; + *val2 = 1000; return IIO_VAL_FRACTIONAL; } From patchwork Mon May 27 18:37:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675680 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 2DB2D15EFC2; Mon, 27 May 2024 18:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835098; cv=none; b=oPiIhmJNv09l3jlNZgmahhE3mSE8A7alfaxWm9W+ONloCKo7r8a6hRGYvJkgj4QntcWEUpgtQUSXI9MToKZupPWFQp4DQFfV9f6j4TwKgtFcUVa/MN4e0YlVHwjCmUxTG8N1TWUiXI0i/wtkw5ciyQqWS59jkn9spoGs+KhqWMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835098; c=relaxed/simple; bh=Dljol5I7T/go7JkK7rwB5Fp4x25iV/GPuVNSd59Dbgk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NzdZRS0zzzVMoVPYyWXHg0tfeet7batk61K3K/M0wNLE5fgTCBjYDWmWxgj9oMuVxJ2fNK8p21TKHs1wOHuSmih7sbA5/zuGWgtogJfRug7gSBDtSeg8C04mbTikktb81G4kVM5DAMB5kyUm1AhLmo7H0HCMyk6IVSKpnsgh0n0= 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=Wd8cAiml; arc=none smtp.client-ip=209.85.167.42 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="Wd8cAiml" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-523b017a5c6so82355e87.1; Mon, 27 May 2024 11:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835095; x=1717439895; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+dGq+BBpr+rlxUS0WQliGQuIKZph55HlIZAdnOOG0UE=; b=Wd8cAiml95tpFwcL5IxCAWceMiSMUGJ4ta5InHXwARhPS6psmtgoCWKQpX30odYHVs VmSFRfukvvXjm/gTE+57s6VgTeOIOTJK7iph0PZ25gH5p1Y/V6NDeVYCDohD5Vd1P1gs njEU5vk6k2bBdFHUmgT+H2WTmMsrXcu365y9F9vmalG3RUuwWHISQUIiwIQ/SFVc10Jq 17JkeT83KnSCYz9RFMxaPcsmZdesDB88xcbDUUUbH92jaCNGc4H8OdLYve6cedKH0m5T nLv9DZMYXvqxqqSr4b0AQWrB1XoLQrRzS5CJS772inlzJ3sPMK0N4Cm1y29oeIYCvsGf K/DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835095; x=1717439895; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+dGq+BBpr+rlxUS0WQliGQuIKZph55HlIZAdnOOG0UE=; b=UIwTRWFVHXUsMPDzglyw/cq/rMI2G9skap5kPlKg3A9C/U3TdSbD+Oz0T5gxnPcop1 XDL6XLhoUC0fylaF4pgK2hu+rQA2mXPbKzl0hoenawSgQTc1sx68Fsm1nwsrmSz5vqdi EzepPMVFUWG5u7Ury6Pgir/YXz7vS8aTRgkIv2SK5bVxDHjKlrKC42Eqm4nZ+2RmWEZ8 aVuvwtiGapkrc/LAg7U7TbUdhRhA2cJLzRwq9O/9brbv6JlNOCkSM+mV2fJOJd+rXNeJ gVPDrLJ+ipU/hXKYd8gUJ8B6dcoLd4V3eCvLRZa9TLNnB0EYt8DEKAQYVCrsGCTCVxgb 8yxQ== X-Forwarded-Encrypted: i=1; AJvYcCVEESuLjGbBt+QEmOi/9EWlXVzPtvJodOLAIMBIyJBV+GGN4y6NL/sBCARQsM3LCmz4GAAtFVZUX63YegO+9wNpCz8wpUqdR3kOixKBvNHICze256J5E4upv0H4mNiJ3+SfiyD9k0no X-Gm-Message-State: AOJu0YzUDABX0joD1pH1UmGbVudWDRJlrZ36/nmS7ZENS3kjtlsu7AzB b6RaNIClccZzosYwsZ7FK5hGzMihGlx5T6WsXiUA7FsOao3Um2U5a58R0Q== X-Google-Smtp-Source: AGHT+IE+pDvOblNnvWW0ebawVjlThI5+UY/fjba81lJiG2t/WWw7LdWqMqzP6CoT6aVtCklLygjnQA== X-Received: by 2002:ac2:456e:0:b0:518:9ce1:a5bb with SMTP id 2adb3069b0e04-5296736bbe6mr7172162e87.54.1716835095131; Mon, 27 May 2024 11:38:15 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:14 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 02/17] iio: chemical: bme680: Fix calibration data variable Date: Mon, 27 May 2024 20:37:50 +0200 Message-Id: <20240527183805.311501-3-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 According to the BME68x Sensor API [1], the h6 calibration data variable should be an unsigned integer of size 8. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x_defs.h#L789 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 2c40c13fe97a..812829841733 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -38,7 +38,7 @@ struct bme680_calib { s8 par_h3; s8 par_h4; s8 par_h5; - s8 par_h6; + u8 par_h6; s8 par_h7; s8 par_gh1; s16 par_gh2; From patchwork Mon May 27 18:37:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675681 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 3A1E215FA84; Mon, 27 May 2024 18:38:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835099; cv=none; b=DPIeg+svVt7xKpnBIdDvuK0xHUgOKbtHYam8H1Q4iSZYvmMWjiNlO2aOPOgejuFqwu75UPcTj1cuEKQ5E/LzkkjUDWWw1FMn1GjEbt7d6Cs4hkW0iLyfipYC9lAMklpyMew9wIFw3MSHYzgJw3qC3io6f+2ipSRse9qNTLr3cdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835099; c=relaxed/simple; bh=01VTqY+UiDyJ+F6bLOiuC/A6F1/dAPjefl3eUzDwQxc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hkilQGVpK64rBB8RfGWXbWhqz78cKe71ZgB8kbAeU0Q5kYrrhGOmf8xS/9PO7LLdGEy4gaTbxT4ZI0DxNfLdc8TXyprsC9BB3yvEkfSypRWMABar1jkZMXizdyNa68dQycNOm0uDm0Lm3V3ALjKNlSe4XoXdPnP9b/Rdbc9M+i8= 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=VzFPDRu6; arc=none smtp.client-ip=209.85.167.49 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="VzFPDRu6" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-529aa4e988aso61827e87.0; Mon, 27 May 2024 11:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835096; x=1717439896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LFkYxgR+bMKdGkSXBR5z1iRX3ThnVE2piXmkmWSpRvg=; b=VzFPDRu63eTJNAmOBopg0IdKhAQr4Fif1jqjrum5fiCuaXEEa3Ubtij+5oSaPud+Lh s+DHl95fgce2AygLzY3sJrsWl9VVt8+wxikxs+V7Xg6d8WZxImGPsH83yzCi/naEjuRe ShrrroD1uC383Oz8lKxPLynSHI2BfRETgCy5gSMpoKRi4LLuBPMCADtJ5dTvuPaxV3Jh +v6Lk4JXqoZQawfOAZemxGs4B3VFS21rlkg7Qx17AxOJgka3Xd+HmhRK4poN39br7iuk kIU6NAbkINt1J6pT33UA4DAfbSPxiB0P9Gcg3CXp2iD9PeAW0KCLP/m2pu88MKmBNeDO rbUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835096; x=1717439896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LFkYxgR+bMKdGkSXBR5z1iRX3ThnVE2piXmkmWSpRvg=; b=N7Sj0EhSo0HoB9NYRMpfq7FOACPrdSCAC4YyrhyxxPdiz8cGAlcII8pH0MCJdGJhF/ YmXAYJmmQI32ZM0gpdWAHohx6w8xpSQbIE55VyCpXAJQscSdao8zO2a8mRQEMT5nlfOb TYQmd3MfrhRYLXbnXeY6zNBq9eZrWBFVmmu8gsWRjuThE4mSl7JfeBXrb6GkLXmrelLR nDhB1rtoL8373+q+dK79PYJ4g8cz1WJ+XLSiJx1pCjwqxX9ZIcSl5cT/QaA3Tj/xwU7N yT/RsOivu5h1VFkV/ueKXMd+4N7GwmvNVPM0ch1nc6cN+T923vKaCHitw/yTMkoPFp9e fhqg== X-Forwarded-Encrypted: i=1; AJvYcCW3fvXYHweDMxNZvTjduLZw15AdZtOTvEZNpi3snsywoHhCXX/xExvJ5pmOMiQrxF5CI+LLrH4+I2kDI41FpCGasNjhdJTZ6M39eAEHaOMTN5Y4ezAIYTFz1taXszS2N0qRzYrB3V2m X-Gm-Message-State: AOJu0YzzH+0odBNzZ12y66hHK95EeWATwAcRVIi15cBGuXJZs0r/xMce 7NV5GiuMPoQm9zznEIc2o/XemO5AqzTLiJDdTDx2J6hWvKFAtIsX X-Google-Smtp-Source: AGHT+IH7f+zo8hCc7VUWF1TqYVddzQsSIQq6gWDfjZu9EcNDQe3FJaVzIQ9iJp/2lScgxX8qpc8saQ== X-Received: by 2002:a05:6512:313a:b0:51f:4c53:8e4c with SMTP id 2adb3069b0e04-52964caac28mr6220554e87.33.1716835096244; Mon, 27 May 2024 11:38:16 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:15 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 03/17] iio: chemical: bme680: Fix overflows in compensate() functions Date: Mon, 27 May 2024 20:37:51 +0200 Message-Id: <20240527183805.311501-4-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 There are cases in the compensate functions of the driver that there could be overflows of variables due to bit shifting ops. These implications were initially discussed here [1] and they were mentioned in log message of Commit 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor"). [1]: https://lore.kernel.org/linux-iio/20180728114028.3c1bbe81@archlinux/ Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 812829841733..5db48f6d646c 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -342,10 +342,10 @@ static s16 bme680_compensate_temp(struct bme680_data *data, if (!calib->par_t2) bme680_read_calib(data, calib); - var1 = (adc_temp >> 3) - (calib->par_t1 << 1); + var1 = (adc_temp >> 3) - ((s32)calib->par_t1 << 1); var2 = (var1 * calib->par_t2) >> 11; var3 = ((var1 >> 1) * (var1 >> 1)) >> 12; - var3 = (var3 * (calib->par_t3 << 4)) >> 14; + var3 = (var3 * ((s32)calib->par_t3 << 4)) >> 14; data->t_fine = var2 + var3; calc_temp = (data->t_fine * 5 + 128) >> 8; @@ -368,9 +368,9 @@ static u32 bme680_compensate_press(struct bme680_data *data, var1 = (data->t_fine >> 1) - 64000; var2 = ((((var1 >> 2) * (var1 >> 2)) >> 11) * calib->par_p6) >> 2; var2 = var2 + (var1 * calib->par_p5 << 1); - var2 = (var2 >> 2) + (calib->par_p4 << 16); + var2 = (var2 >> 2) + ((s32)calib->par_p4 << 16); var1 = (((((var1 >> 2) * (var1 >> 2)) >> 13) * - (calib->par_p3 << 5)) >> 3) + + ((s32)calib->par_p3 << 5)) >> 3) + ((calib->par_p2 * var1) >> 1); var1 = var1 >> 18; var1 = ((32768 + var1) * calib->par_p1) >> 15; @@ -388,7 +388,7 @@ static u32 bme680_compensate_press(struct bme680_data *data, var3 = ((press_comp >> 8) * (press_comp >> 8) * (press_comp >> 8) * calib->par_p10) >> 17; - press_comp += (var1 + var2 + var3 + (calib->par_p7 << 7)) >> 4; + press_comp += (var1 + var2 + var3 + ((s32)calib->par_p7 << 7)) >> 4; return press_comp; } @@ -414,7 +414,7 @@ static u32 bme680_compensate_humid(struct bme680_data *data, (((temp_scaled * ((temp_scaled * calib->par_h5) / 100)) >> 6) / 100) + (1 << 14))) >> 10; var3 = var1 * var2; - var4 = calib->par_h6 << 7; + var4 = (s32)calib->par_h6 << 7; var4 = (var4 + ((temp_scaled * calib->par_h7) / 100)) >> 4; var5 = ((var3 >> 14) * (var3 >> 14)) >> 10; var6 = (var4 * var5) >> 1; From patchwork Mon May 27 18:37:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675682 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 E323215FCE9; Mon, 27 May 2024 18:38:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835100; cv=none; b=TWQ4S3FzEX/xbTuVAnMmtcaufb24g6ZlkrziQqCmnL2XNl3cufUinusVabgbE6YAV4mptjFXygXQvtDXAhGiATulW4bsbpHdTZaVRka2/EpVwPvxL+KHhgibpbqDvzfaJpPg0mPyD65cRlf+RdaId6GdxIoWDvOuT9dwV+C2C54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835100; c=relaxed/simple; bh=6tZ+4GXcun28L9aV4/ePGyVestfvIxHwozTMhv4DqEE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=T0RaTK6WL3hnIRGzHTZyTUUQ42BVOAv7Tuk2JA1MvkkcYJJ0xGwraycw6PjK/czs1Jm0IQDDdPszmdrAxxVPdl06AOcyRgSD3AQDbHeMukt0KjU7BKWllYOaWmP44eEF7RvtHdMfZtTUcgYQbnhQ89vo07i2kY1/L/dWpK9+FBU= 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=CIMX75OC; arc=none smtp.client-ip=209.85.218.50 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="CIMX75OC" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a61b70394c0so9044466b.1; Mon, 27 May 2024 11:38:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835097; x=1717439897; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GaLc3nntzqGGZfLdlaeumzg71QFyUXK+JAO+p8PtAy4=; b=CIMX75OCGFsv1kuzuqbFt3u0OYMgwowOmZxazFnsDu7kcnxnWSSiKZdwq2aSmbZxbX eeFTPdRt5cvzviadTfbHYQY313OZhGxLfnKlIS+R6/ZMGN7+8v7kqV+V0mU2sk2GwSM+ GuF5zhHfTud9b/0TB//reMvDUdaUeOe+BithTmv7EeM7OGrzGnpz3lUztfBriyoEnlnB BYlwpxe88n6AbpvK1yKD1ZZlShU7hhVXGr4fsuxxm8P0n+Ekx0f5ZxZxMEPqK9iZUucS W2luc2DPDYJt7xcLD56X9wxLQT+b+ehdxm8x1ElFzTsb75p++hvccAJ65AVDbmYxBqS0 +ZiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835097; x=1717439897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GaLc3nntzqGGZfLdlaeumzg71QFyUXK+JAO+p8PtAy4=; b=NDk2f4RuqrTHNiMMBuusfI796eoumb7peF9tCpl/XkVROGeLB3L1iihyACmE+3duKJ gJ/8cOvz0GTADD2P3KbkPZ13wIW5Jhhp14JAatBoxET7Vy4IQdV6sqbEimIQSG81mA9I Im+wqpukUxkuTn4X8oGCDLvQCxSjrHX9/pCtlj/78quVmKxbV13r6TAK1x7Zmo5kmMA6 b7N5gk41jluXKizIAG59yT8I9jxnCbvEcJ8TExfTnxtDanCedQzBuHxpsUvE+EvCyP/9 W8NGF1Oj4n8Z56tDCw57jWNWQtjZG+XQM/Eih2/CMEr63MQ4N1B/e885v24U9SK04a0V owtA== X-Forwarded-Encrypted: i=1; AJvYcCV/qIZNdiR+DWz2v6nu32Xqpl7fm8QRBqMT7/qJQzisNNbZyBmRrJB00WwijUjSBgp2vx9fQTTneEueKk4zzmrw1Skui/NmkXOPOw4Q2tyHfeUwbFUjnbdJFlXChNsfhUow6EKrwpu1 X-Gm-Message-State: AOJu0Yxj539FWNhwsd8wFBkRB85eXKkw05R67Q50M6Nc/lMqAiOo4dTv yfQCP4+zPuI7Qq+6DNQOei0yPbJFsoKb6VoEl6NV8CnmHDzxlU3b X-Google-Smtp-Source: AGHT+IEM1YMHXHJ+E04vq+C50SXX9r98TrLnL5H1/IkU+k61KI5VbCHLhgb8N7oTN9h32gDeQ9ehyQ== X-Received: by 2002:a17:906:4c49:b0:a63:3702:def1 with SMTP id a640c23a62f3a-a633702dff6mr1647766b.72.1716835097255; Mon, 27 May 2024 11:38:17 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:16 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 04/17] iio: chemical: bme680: Fix sensor data read operation Date: Mon, 27 May 2024 20:37:52 +0200 Message-Id: <20240527183805.311501-5-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 A read operation is happening as follows: a) Set sensor to forced mode b) Sensor measures values and update data registers and sleeps again c) Read data registers In the current implementation the read operation happens immediately after the sensor is set to forced mode so the sensor does not have the time to update properly the registers. This leads to the following 2 problems: 1) The first ever value which is read by the register is always wrong 2) Every read operation, puts the register into forced mode and reads the data that were calculated in the previous conversion. This behaviour was tested in 2 ways: 1) The internal meas_status_0 register was read before and after every read operation in order to verify that the data were ready even before the register was set to forced mode and also to check that after the forced mode was set the new data were not yet ready. 2) Physically changing the temperature and measuring the temperature This commit adds the waiting time in between the set of the forced mode and the read of the data. The function is taken from the Bosch BME68x Sensor API [1]. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L490 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 5db48f6d646c..dd2cd11b6dd3 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -532,6 +533,26 @@ static u8 bme680_oversampling_to_reg(u8 val) return ilog2(val) + 1; } +/* + * Taken from Bosch BME680 API: + * https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L490 + */ +static int bme680_conversion_time_us(u8 meas, u8 dur) +{ + /* Oversampling + TPH meas + Gas meas + Forced mode + heater duration */ + return (meas * 1936) + (477 * 4) + (477 * 5) + 1000 + (dur * 1000); +} + +static void bme680_wait_for_eoc(struct bme680_data *data) +{ + int wait_eoc = bme680_conversion_time_us(data->oversampling_temp + + data->oversampling_press + + data->oversampling_press, + data->heater_dur); + + usleep_range(wait_eoc, wait_eoc + 100); +} + static int bme680_chip_config(struct bme680_data *data) { struct device *dev = regmap_get_device(data->regmap); @@ -622,6 +643,8 @@ static int bme680_read_temp(struct bme680_data *data, int *val) if (ret < 0) return ret; + bme680_wait_for_eoc(data); + ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, &tmp, 3); if (ret < 0) { @@ -738,6 +761,8 @@ static int bme680_read_gas(struct bme680_data *data, if (ret < 0) return ret; + bme680_wait_for_eoc(data); + ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &check); if (check & BME680_GAS_MEAS_BIT) { dev_err(dev, "gas measurement incomplete\n"); From patchwork Mon May 27 18:37:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675683 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 28A36160796; Mon, 27 May 2024 18:38:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835101; cv=none; b=tI3m582Pok1yJ59bqxHWHAsa/eBmtD7XTGZAJpwzChaIpTspX6Cttt0D/tYIYpGWS/9GJw9PDa7Wy7QGwz5uPqrDR6QDwI281hkXPdplDmvUBVDos1bPDzS5mdoUTr+i+hHOpFytqSo1wZS3J6sy67If7lj8Wb1d/WOapJMylFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835101; c=relaxed/simple; bh=wg8PkYq2vv17rsR/l8nMQ5doyUXlPzOS6Z0DMcQ8DJg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s09nb2FZOrGL5v0m9sfoO5vLH3UGTyk2suPoXAWml8uUwwBXsY4fTjXdweQzhabom0lgHWCGss4Pgtm23frdI0Niuh5m7DzS32PL/EU0Hya0CL9GtNyD9dXPFka2UFhV+Mg2yadrY9R5V45SytfbIkJObAcosHTOHsDvCniG8uw= 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=AuTLqu2B; arc=none smtp.client-ip=209.85.167.50 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="AuTLqu2B" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-5295a66e775so82931e87.0; Mon, 27 May 2024 11:38:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835098; x=1717439898; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FcTV1qQ2q91YjgXekUdE0FTmBFj0P4pw7uvqhX9sQ4E=; b=AuTLqu2BP6wbzz5SpIAyLzp0cuPkBLDQ3Yuq/3a4Dsom3A70h0N5GVBcorxsEvZ1nY eCVYbxNePmABadNrBHXqKYeFJSILKcNNwxOxndnMg1a3E/G0TqWBqWRV1G75YvsvTeWK sJCOLl0O3DB7gUYIQ8HND0iyUNa951mRAA4GVqhHfPgJk7/FyVJCdV/PfLatWjxguAlS lYhCZjiHPyq61uR2i5ob2UorzqQrrosgTkH1nOz0ZjpZXMSUYfGlIzdLjWcO/ccnJHa9 ni+j7biTDlxtagiZTe+kECX75bZvQhC2zYnmGFclCkfEPfudOn0MmY/VdRIVKq61epuG JELg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835098; x=1717439898; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FcTV1qQ2q91YjgXekUdE0FTmBFj0P4pw7uvqhX9sQ4E=; b=UwNOrtgJX9A/qykinaV2w6GZyWT3oYSHX+F6WjvBQ3EnyhpMyU/Id4kqd3uGcnz20a +2XtI/UBDJsh+b5geH9TYCjjWFZyuQPjM2wUyuExB756H7RKUj+jpKVAz6w7mIqNVIr+ VByH7xa4KKAipKk/YtKRb3pAByPSKCFepwRrtlzjkKWYC0kHXQaxP31TYzjbR54nfTSB k0nZPMyhgGt9v0HAHB0SY5X71gKXi/6DLsPF18ncnUkgBXnEdbmVlU0rpdEg4opYDqy+ LqElAshd8uw5iZfLBm3HhueuiIiBiZk60hLJ841MFLHKs/swHHXs1541b+p24QzGGokX MiRw== X-Forwarded-Encrypted: i=1; AJvYcCVcM3VlmEb0rJHY9XxkP1QG+wzDRcwrA/Pc8QJupW6mO4WocuMN+NDqPn1AkD0EzHOBiMw94eIy4cYUpdVlmCGtGcwmS790SyAFbO6x6BXdB2OP6ycwtEhhEh6EYgcrbClHtzxWqLig X-Gm-Message-State: AOJu0Ywv6FBd5PCuLD0U6DR98Eg3wHBM18cVt5568QIA3FfsKQvyIkld aM2aTdOZuOD+Os+hdCJFjc3VOUTlvl1E+E/SJatkDNz6t0KQYs5w X-Google-Smtp-Source: AGHT+IGvXJrQ2FmzU+IvnS0r1WXIa/25Zr1inRriKMA8HqVVPGoFHmihzoODuY80fATEpZXWCBQLnw== X-Received: by 2002:a05:6512:3c6:b0:523:8723:32de with SMTP id 2adb3069b0e04-52966f8f472mr8776908e87.53.1716835098035; Mon, 27 May 2024 11:38:18 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:17 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 05/17] iio: chemical: bme680: Fix type in define Date: Mon, 27 May 2024 20:37:53 +0200 Message-Id: <20240527183805.311501-6-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Fix a define typo that instead of BME680_... it is saying BM6880_... Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 2 +- drivers/iio/chemical/bme680_core.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 4edc5d21cb9f..3133d624270a 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -12,7 +12,7 @@ #define BME680_REG_TEMP_MSB 0x22 #define BME680_REG_PRESS_MSB 0x1F -#define BM6880_REG_HUMIDITY_MSB 0x25 +#define BME680_REG_HUMIDITY_MSB 0x25 #define BME680_REG_GAS_MSB 0x2A #define BME680_REG_GAS_R_LSB 0x2B #define BME680_GAS_STAB_BIT BIT(4) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index dd2cd11b6dd3..8b42c4716412 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -719,7 +719,7 @@ static int bme680_read_humid(struct bme680_data *data, if (ret < 0) return ret; - ret = regmap_bulk_read(data->regmap, BM6880_REG_HUMIDITY_MSB, + ret = regmap_bulk_read(data->regmap, BME680_REG_HUMIDITY_MSB, &tmp, sizeof(tmp)); if (ret < 0) { dev_err(dev, "failed to read humidity\n"); From patchwork Mon May 27 18:37:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675684 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (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 B66981607BA; Mon, 27 May 2024 18:38:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835102; cv=none; b=c3i5eA0JVrqxz65RN1PszsM1rQk0OxJXiw4MRvgNSREgQVa5HvpMMMBLgGDxzWNLP6k2w2wZWRUOB1rFbEYai3Zvkkktu3Nl54qqnubsO7QWdl5c9RJ8WtFCZaut0a/b4P9UOkaRhsksLzOG8TYOPEQRp6xtkMosFy8rSJTjQOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835102; c=relaxed/simple; bh=8h3ZRg9jE+wXkQFtxydH/IDDDXBcwvRNSAmtK1noof4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FGyMCMx3GhYqRpJ/+MUVOMXo7sbExZ6gZvRXZQ7H3FCMXp1GwTAFN+Pdn3IYTh9VEKLh540/4htrhk4Dwq40r89dStgTqwzK+Ihfbghgfizf7dFeJrB06VJuITR0trWBHhJqG5ARcpnWcrmiocCDVBT8sPx4iymz5cANofKXmYQ= 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=TPRqEMio; arc=none smtp.client-ip=209.85.167.47 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="TPRqEMio" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-529aa4e988aso61865e87.0; Mon, 27 May 2024 11:38:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835099; x=1717439899; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QPmAz60TWZ3wSMtgFHp8/duTRSijFC9UjSGJVty6+0o=; b=TPRqEMiofPzbGgXvwPJoevQxKMZIa66JOGxmgCKRixPC4kZYzWHELwU7RsRoixTXXA wlRfqlCA2ppbJVYQaxr26KFkKzKEbQucJMqfEK0tVspRWUQHhpihdKYK66E9nkFobTRk pvJnql/puEweU08zjIJjdBSa48z0ZMv06dsO6NAVtWnhZDfPDjkOQe8sg7+g8T4T8Ehp DZPNfk5bQ/yvD3mQaS9uPJn0/SFGl5HckCIAzGTplxjTDFxlTvmi03hLlo0UZKyZNN7W e6fG2oENNXzYT3zMc59HKlPAh8MhA/c9EKVUjcN6fD/SkvwEvmymP7iy9DR7ENJJVh7s GcHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835099; x=1717439899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QPmAz60TWZ3wSMtgFHp8/duTRSijFC9UjSGJVty6+0o=; b=DLdHqe8MMBp7r/QRQqL4zxEQzKjFAxPrY7x2GBBTDf+Cxf2x5AcplT6PEgauUl4YyH uLZMmDnf2naWhAsz3QBvAv18BE23B1InWVptVQRlgUcPkp9Sg/Xial1AfpUw5TGGwT1T qz0ID1nYVL6JRrk4i2UyUmaVRhBi45ZEdRleJrpKwbYqXvVUKVV2MY1djIlUdvLf/ghz 0oOCbkuv2ogW/x3vSNowgoLGM0kCVDWhtD78ljkr16L32NQMsr6bwDOmIzII9NtLSuo5 bNAF45jXr5/OZsYXvtY8AHZC1R3rp36tN1exEJ5STohQom+yMpHHIFneO9Ox9gFEx7/G BV6w== X-Forwarded-Encrypted: i=1; AJvYcCUuLQJ+kBWzZLnQUOP1nXmjBAX88tyBrTd9TClG1TZSZUXDI0tn1m24HMvA0rJ+Bd8l44Rk9/9WJE1ns4zpWLy2RAWhD8tus8KnlkVhUyGAtko8Usl15WNE/P+HqFHN2FgU4B09/y/9 X-Gm-Message-State: AOJu0YyHx0lJxKD1qJMkiqbofqLW1HRZ4BLgyZ797KJAmIBX/5iIXG+C m6flBlLNW21It+RH1aSQigjr3LwxCk/Uy6R/Sfj63g9pUFHQsnX8 X-Google-Smtp-Source: AGHT+IE6dWkVBZU8rST46PJ+hOEJ+EjGd8INABvR+NoEKiyuqatG5TvDevFHfouDDk077DqIkN/Qgw== X-Received: by 2002:ac2:5ec6:0:b0:51e:147d:bd2d with SMTP id 2adb3069b0e04-52964eac421mr5664708e87.39.1716835098789; Mon, 27 May 2024 11:38:18 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:18 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 06/17] iio: chemical: bme680: Add mutexes to guard read/write to device Date: Mon, 27 May 2024 20:37:54 +0200 Message-Id: <20240527183805.311501-7-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add mutexes in the {read/write}_raw() functions of the device to guard the read/write of data from/to the device. This is necessary because for any operation other than temperature, multiple reads need to take place from the device. Even though regmap has a locking by itself, it won't protect us from multiple applications trying to read at the same time temperature and pressure since the pressure reading includes an internal temperature reading and there is nothing to ensure that this temperature+pressure reading will happen sequentially without any other operation interfering in the meantime. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 8b42c4716412..2ef3fc7effc6 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -52,6 +53,7 @@ struct bme680_calib { struct bme680_data { struct regmap *regmap; struct bme680_calib bme680; + struct mutex lock; u8 oversampling_temp; u8 oversampling_press; u8 oversampling_humid; @@ -806,6 +808,8 @@ static int bme680_read_raw(struct iio_dev *indio_dev, { struct bme680_data *data = iio_priv(indio_dev); + guard(mutex)(&data->lock); + switch (mask) { case IIO_CHAN_INFO_PROCESSED: switch (chan->type) { @@ -850,6 +854,8 @@ static int bme680_write_raw(struct iio_dev *indio_dev, { struct bme680_data *data = iio_priv(indio_dev); + guard(mutex)(&data->lock); + if (val2 != 0) return -EINVAL; @@ -946,6 +952,7 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, name = bme680_match_acpi_device(dev); data = iio_priv(indio_dev); + mutex_init(&data->lock); dev_set_drvdata(dev, indio_dev); data->regmap = regmap; indio_dev->name = name; From patchwork Mon May 27 18:37:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675685 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 643D8161310; Mon, 27 May 2024 18:38:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835103; cv=none; b=Kl9/OLNw9kXfASd7OtudgGWu8rGWyLKYYnudm6/kkTYVVzdyDOmIZ5aN+YRjsXlWq9oe0fTAilEzohZe5AGyG7NRqVa2M7EQUiHiOmGv9QXSV1Q8MY1zTEJM+YI/UTqKmJcyzpXOiMEm7UOblyFnk45bVTvq/fIr/KhhSPhZbTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835103; c=relaxed/simple; bh=l75cUOo2NDHJxIM4ha1/avmw+UeLGzAofdLHBtFREIY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=awI7DZa1U5WvtU0n943cIcVrQvnmNtxBTBtZVGKDA4Yj2Aco6gSCVbgEk+zI67tnRR3LLqgeDV++1obghOxCbHxQBcXuF4BjEbrGMDljMoisARHX3Tyt+VxnB+0q/KdgAIby5Ut9f3FzsgZ2ijxd8fWXvZQDsjpUlY9fsGADiSQ= 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=NX2DVLdD; arc=none smtp.client-ip=209.85.218.50 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="NX2DVLdD" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a6269885572so571876666b.1; Mon, 27 May 2024 11:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835100; x=1717439900; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MuqlsXLohE6qQ71Dzy+mKgn30/PQTvYM4hBsATK0ajQ=; b=NX2DVLdDFsYRvWB3x+PH4bwrsNZ/rs3+iWqCXKvpLhXIvk3STu0IPxgC+BU/II9QoZ 5szlZWP8+qfIdn+fuAOVBnlCBxBei0FuC2quA5RZsMhgyGWEWzwOq2od8t5t8Azwx5Fs Ygxzg/sB12aAd8wvjdvavhwY/y64JI3zoeWtmUp1iVOnNTrwwvouzpeELX1k3/H3LOdl JrJ5PaeOzz+UmfUZfnQeUG+Y+xIf8GKzNTCKSVHz/0N5mc4SOMdFvIrOUVVYIi3tkn2i IbxY4mvE8IgWAMWaGCcjJAej7VrrMzRFko8YooJ8aCldbqfkFz4S6FkqF9tgWLIxp4UW i0tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835100; x=1717439900; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MuqlsXLohE6qQ71Dzy+mKgn30/PQTvYM4hBsATK0ajQ=; b=nLoN8MQtxpXbyA4FmBgQ/kCrvVuxKHAFKZr/zAvIeWYG9cFmVOOE7hhI/4uZ9Fkhwb vh3dLjqkL1ciINstBg5t+NsmRN7BuBGOMDaQ79/MN269lIqqsbHYtQJ01Dqy4cROxFGJ KFnS6c0nr2suEt5awJ5fH013Si0UGRAmkQAdGaHYam403XWsPw3GzodoYdGnlI80Nxq7 4IXaviQ/fpTfyerfqKhWg3bxHNTTwBXzDyX5VQpx7yDsxTgB8IyiUHZmC1xLLBImVYvZ gL8R/IMJUDDo0+3UaJoYaciGE0DipEThX4v8JlPETE643QRZqBsk5n6rA98ci7qefNRj WDDg== X-Forwarded-Encrypted: i=1; AJvYcCWweMXjF2ELRCxAxom2EkOuYl6M9klrP1Y+DxurxNBiuwrLxi73bmDrLRwy9e8QI7eyR8KGcJjFuH63jcOj97QL45duRqM8yjgRIYNiH8tIB7JX+xASOB8PX6P3mK3fp11qCR53kJED X-Gm-Message-State: AOJu0YyojJ7i6AZxGgrntGBBh0FDB3/HWTjW/5FOFI+zcmRTUuxiaV6B yT3jiN3yZDASelodrDU8AI/lE098u5Z3d5BCpqdtURzSAtH2Vnaf X-Google-Smtp-Source: AGHT+IFqKc1xrLmvQjz5yRBer9pPgikq9Y1bUIhZGytj8irOag4w79YZBeoVZvTnzMo08dftx0Ewiw== X-Received: by 2002:a17:906:6a25:b0:a62:e450:b147 with SMTP id a640c23a62f3a-a62e450b652mr463276066b.29.1716835099744; Mon, 27 May 2024 11:38:19 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:19 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 07/17] iio: chemical: bme680: Drop unnecessary casts and correct adc data types Date: Mon, 27 May 2024 20:37:55 +0200 Message-Id: <20240527183805.311501-8-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Delete any redundant casts in the code and use unsigned integers for the raw adc values. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 2ef3fc7effc6..7607c3167e24 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -335,7 +335,7 @@ static int bme680_read_calib(struct bme680_data *data, * output value of "3233" represents 32.33 DegC. */ static s16 bme680_compensate_temp(struct bme680_data *data, - s32 adc_temp) + u32 adc_temp) { struct bme680_calib *calib = &data->bme680; s64 var1, var2, var3; @@ -345,7 +345,7 @@ static s16 bme680_compensate_temp(struct bme680_data *data, if (!calib->par_t2) bme680_read_calib(data, calib); - var1 = (adc_temp >> 3) - ((s32)calib->par_t1 << 1); + var1 = ((s32)adc_temp >> 3) - ((s32)calib->par_t1 << 1); var2 = (var1 * calib->par_t2) >> 11; var3 = ((var1 >> 1) * (var1 >> 1)) >> 12; var3 = (var3 * ((s32)calib->par_t3 << 4)) >> 14; @@ -410,9 +410,9 @@ static u32 bme680_compensate_humid(struct bme680_data *data, s32 var1, var2, var3, var4, var5, var6, temp_scaled, calc_hum; temp_scaled = (data->t_fine * 5 + 128) >> 8; - var1 = (adc_humid - ((s32) ((s32) calib->par_h1 * 16))) - - (((temp_scaled * (s32) calib->par_h3) / 100) >> 1); - var2 = ((s32) calib->par_h2 * + var1 = (adc_humid - (((s32)calib->par_h1 * 16))) - + (((temp_scaled * calib->par_h3) / 100) >> 1); + var2 = (calib->par_h2 * (((temp_scaled * calib->par_h4) / 100) + (((temp_scaled * ((temp_scaled * calib->par_h5) / 100)) >> 6) / 100) + (1 << 14))) >> 10; @@ -637,7 +637,7 @@ static int bme680_read_temp(struct bme680_data *data, int *val) struct device *dev = regmap_get_device(data->regmap); int ret; __be32 tmp = 0; - s32 adc_temp; + u32 adc_temp; s16 comp_temp; /* set forced mode to trigger measurement */ @@ -681,7 +681,7 @@ static int bme680_read_press(struct bme680_data *data, struct device *dev = regmap_get_device(data->regmap); int ret; __be32 tmp = 0; - s32 adc_press; + u32 adc_press; /* Read and compensate temperature to get a reading of t_fine */ ret = bme680_read_temp(data, NULL); @@ -713,7 +713,7 @@ static int bme680_read_humid(struct bme680_data *data, struct device *dev = regmap_get_device(data->regmap); int ret; __be16 tmp = 0; - s32 adc_humidity; + u16 adc_humidity; u32 comp_humidity; /* Read and compensate temperature to get a reading of t_fine */ From patchwork Mon May 27 18:37:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675686 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 AD7D1161936; Mon, 27 May 2024 18:38:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835104; cv=none; b=RXWbC21g/+1LQGOCpiBlmQJIldN6ozFbLXIKyqhdxG+XA3TQIgB0YWmwEKhi/rGPVCPQ/xnQnbTcSYiVCd65u43/NBpXSCP84CWQFwBWESI6Vp8+xtrINbQxi7klRq+4U1GdF7oe3HFpa3seiZKQJLVugfosj87foH3jBG4dJnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835104; c=relaxed/simple; bh=0dfNx7DIWoTHcOaWPc+zEobJOaN8XKXivqc3NTO03mc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JbKC0oQ3hTh3GmCI2rpRPHhAttOT9xyMW+Okquhsq8jeVMtA5Usi0zSj/gG3ec6PHoR8tC9vOphDIZPqTUW7oiktE92AguE8iB3c84SEKCCzZHFutN48cfQA06GNKHdUwQHeoylSlYXVaPPDejfC+6tSPn71ln6HaApWPYz/eY4= 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=YFVgx3Yy; arc=none smtp.client-ip=209.85.167.51 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="YFVgx3Yy" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-523b017a5c6so82451e87.1; Mon, 27 May 2024 11:38:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835101; x=1717439901; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jorQRSEWiRbefIBVk6pwpNbetVkXTLRRe3J2qG6vfu8=; b=YFVgx3Yy90sqTSPBfA+CloHIs0miwGaG6uVy8syDqeEBKKPVBYM6t7amRYSj2i2bes KTq2aggtnml4oG0kohOg3/llncwA2OtnRy3DDwvOlk1waI4TQTXGDsMdmyfEGopLuCll w0EO00KzUCOgS+2CXoHPqn55q//Wh3oXDPOpSBCl6kd32DPS0QstXPEQq6Dz9ghEUGsf 27R89vLRwvr+ZTb2w9a6ccqMBB1gvbU6rL5FgZLqDSAeFvreBQ2N34wFtQ79g/qJsBkF RDo72pOAQGzjOZ9mLaPd2K0OF+ChjmHVFHfzEWfeexQnXRh15nk3E655PuX0Nbz2FIpO p1gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835101; x=1717439901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jorQRSEWiRbefIBVk6pwpNbetVkXTLRRe3J2qG6vfu8=; b=chsaJh+siCGac5XZpKAbIwCKZ5Do5u0qhujYkcnIl03lOe47YC3LZvgX5rRRIWjH8/ AanxdvduvWrc9y6vL2XC3ZjhWt2jynt1AreY2hXs1WDKzDsP9xRCRnwfSA8VHqvhw+W6 +Zs2bR3rz4iQraEBXHE1kv+myX0gk/5GcrFqo1GbspqnHHRncYoHfrml2d5fsMBA+EN2 nReDQxyWCvDEAN2bv82UF5ACTGcsRTCefdeTrpm0wBjxhpNvy7JZgjugY0JV6mo0hNDg cQvziVec+RCPTi8RZy6Iw+0+M5GIOeiNvmp1diy93Azq2fw+pf3RwV1/49MonLefqkLk tMmA== X-Forwarded-Encrypted: i=1; AJvYcCVTuR9CrLZ5HbqsMjijN+foN+DM6uLD2o1hOhni97tSI0AXURb/gtwFq5IUHD4GaTycARjtaUv9oGL6IglF/iXQF/PjybRp/KL2Q+nEn0mrfCAierS9KH16/sidQyvt9VADbQsl6E8d X-Gm-Message-State: AOJu0YxgtjSURRDCeAJGc857JB1seyUW9NcS3F2pDiWafTKh+FjRZ9C4 nb02Xy48QPHYEOYXCRQPwd2M3GmxRc5QeOkpkp0r1a/zCNTIB2PR X-Google-Smtp-Source: AGHT+IFywxc74HY9TdQGDsKcwIwYP/Ak47o9U4sR0HoURKU1rNqxkPhbfduVUMDA3lFV+XXCu6NzFQ== X-Received: by 2002:a05:6512:1295:b0:525:32aa:443e with SMTP id 2adb3069b0e04-5296594ccfbmr10128075e87.17.1716835100688; Mon, 27 May 2024 11:38:20 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:20 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 08/17] iio: chemical: bme680: Remove remaining ACPI-only stuff Date: Mon, 27 May 2024 20:37:56 +0200 Message-Id: <20240527183805.311501-9-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The ACPI ID table was removed with the following 2 commits: Commit b73d21dccf68 ("iio: bme680_i2c: Remove acpi_device_id table") Commit f0e4057e97c1 ("iio: bme680_spi: Remove acpi_device_id table") Remove the remaining ACPI related stuff to this driver since they are not directly used. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 7607c3167e24..e61d1f0b67c8 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -8,7 +8,6 @@ * Datasheet: * https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME680-DS001-00.pdf */ -#include #include #include #include @@ -906,17 +905,6 @@ static const struct iio_info bme680_info = { .attrs = &bme680_attribute_group, }; -static const char *bme680_match_acpi_device(struct device *dev) -{ - const struct acpi_device_id *id; - - id = acpi_match_device(dev->driver->acpi_match_table, dev); - if (!id) - return NULL; - - return dev_name(dev); -} - int bme680_core_probe(struct device *dev, struct regmap *regmap, const char *name) { @@ -948,9 +936,6 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, if (!indio_dev) return -ENOMEM; - if (!name && ACPI_HANDLE(dev)) - name = bme680_match_acpi_device(dev); - data = iio_priv(indio_dev); mutex_init(&data->lock); dev_set_drvdata(dev, indio_dev); From patchwork Mon May 27 18:37:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675687 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 4DAFA1649D8; Mon, 27 May 2024 18:38:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835104; cv=none; b=QJrHobnknKrv/W0pwNtXLf382XpZj/Ub2ZbFrmux+3bEwdtGyQV7LsehLXxxS/I7bn9XAy036ajJ7n0DREPvUz0Xdo/WfzIlfjQymLOl6G3h0KDiajfS24EnjLW3+ks71/ZM75WtovLIlbdsC5qtNEk/xGSx4EkeLEx6IR1nMKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835104; c=relaxed/simple; bh=YuJbe7/Dyr3pwoma80px3zE9SsLMR44nsh9CYslia8w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=g5COZqfl179aBze7iEvlljAxoqe71CG5ZiRlw8KNPVng/BSv5y/gxrIqxt4jhfXVHqNZSn1nWrVetil1E5GI2kKHsY0AgybPmOhjzNfwREeMiLo4/L7uMkUDKQobPMZEyyvUH9qhNbTQwo2eveAKx4As/jIyqhV7fgdl856Pf30= 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=CqkcJUG+; arc=none smtp.client-ip=209.85.218.46 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="CqkcJUG+" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a63359aaacaso4333666b.1; Mon, 27 May 2024 11:38:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835101; x=1717439901; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XfVJB/jhEn4kqNiQbUpyzu1UmUuSBiyJvdH8zWQ1Egs=; b=CqkcJUG+0n+HdGKHh+qRsN1clHHo16h14iawoA9zfDYyVXPme/HqR1lq0xNix7hMiI tZq94UVAON39jt5i7ygCMHYJ0az3ksgSB3shvXTEEcP/uHaFT/VcYhAOQl9by1C6aF8v wBoHv3O8ckAS2ZfqE/ffNcnnNIy3lth8tAsEFM70mRIm2uoRh9IYX45FQe2BXSvw/2vd RZrUykPob1SXlJ82yBE6RxzT+w4Dtpta7bf05vDPJJ6kyj0slhCooWaKDJI9HaALLP/9 RiDIxqcCkH2UOajK9iR10nx6gvFg/suBPY9qtY80gcgyAFn/EDSMTZxxU5r5yvEeFXh7 U2nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835101; x=1717439901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XfVJB/jhEn4kqNiQbUpyzu1UmUuSBiyJvdH8zWQ1Egs=; b=bNUa+EruEy++aagugtqJGfEz89bxWagDPw9TAfIRQK/sFtzHRJL9KM45vpFdE7zVH0 VS6ROcXqBXljxs5Z5vAIof/BC6RuvJWkmAbIfwF7zi3el/1boL/0OykeyFqZofu2Vw69 gV+fN3lluMCuuUIroyzwaA2kzhFXajUcKAaNTuuB9NjPFjTtLmr7Lhr65D8w3BWNsWLA JNkxQeAiFMDHJB+56IkfEYlevHYoQpxRvkERQ0BfK0S6wWX67K9IjoYzp78z3UHNQwPy aUcq+nBVJCs0BrYVgVwwGzgYCeWHuWJfAiuk2H7yBXro56bmwCvHRkN13Bq1i0gamasw hRJA== X-Forwarded-Encrypted: i=1; AJvYcCUJZkhNgKMwwD+WLqDwKmsAoO6tW4ByiWLsmZzDiGTR3BJN2paPCUugSdcuWA6NNHbAIIT/9Gj6V+wprHm5UZDZ9CeJJcEHzx22S9UELVHS/roRRG9whk6oCHOs50hzdkdWiFbK4G24 X-Gm-Message-State: AOJu0YxrZYPvzWeDLKy64lsKzCGvfiKIXRjjkC/gQdOeHSZIaaFCFGNu ccZ2FABHmCTsarcqy4rBQlikEQLDFbb3C3MHLBoey3eRw/zUU86o X-Google-Smtp-Source: AGHT+IF0VHk+MLt0fg+OD3l293QBiGQ65VSjfBMxLrd2ZYU/Nklvjq3uzQJDjKPirhMOKnMreu1jtQ== X-Received: by 2002:a17:906:2a41:b0:a58:f13d:d378 with SMTP id a640c23a62f3a-a62641b39ffmr647021266b.13.1716835101439; Mon, 27 May 2024 11:38:21 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:21 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 09/17] iio: chemical: bme680: Sort headers alphabetically Date: Mon, 27 May 2024 20:37:57 +0200 Message-Id: <20240527183805.311501-10-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Sort headers in alphabetical order and split the iio specific functions with a blank line Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index e61d1f0b67c8..96423861c79a 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -12,9 +12,10 @@ #include #include #include -#include #include +#include #include + #include #include From patchwork Mon May 27 18:37:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675688 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (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 06BA31667F6; Mon, 27 May 2024 18:38:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835106; cv=none; b=BYvZRB+d3PLee79qzK93HR5dapNOaxrZ3KDYffhr8oNeriHLhQ/KNLkxNFMGWkimVs9amUluK/IWNfklVjwYAV0DAcWFRTIxP7KdKWjy8H4n+vmeowLrdC17IAg8UKbqzJsq/W0XaSj6WarD/EgzIxpbjqo/AZhGlq+PHfIAcok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835106; c=relaxed/simple; bh=3K1S5hRSYK31me4jnx1h8KifUo9Gn9XsOKn09ofMSXU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cgZYZn3/PVdT7wxzqNV1tD3Y1olI9UsURXNn0c0TZ/jjBxFhOe09H+OhN5tEbqRDuHexs/6V6BVizezh6oiBF4E1HB1gGhpQoGc5mzlmxTUGZzwpcgyXjvZ3mxs4trYA0Fc9hx+DhwOpwunD7uSQnMSSBdMBqe7iI/jpyUUlR6o= 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=IOmz+gDL; arc=none smtp.client-ip=209.85.208.53 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="IOmz+gDL" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-57822392a0dso30865a12.0; Mon, 27 May 2024 11:38:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835102; x=1717439902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GlSEHjIcvqW+lxV4cQ1l5QsI7RM0a/cM01/bSjIyPEA=; b=IOmz+gDLpKw6dLS8NE+jubNeJtm/MyeAOKO/BmQP5lSsZEsHiG8FZAzqYHl/vm5Ot4 fpESI9HuV77plGmUYRZPy51IPm7iwTc83756L+Tn6BFqKozhFfK6/jA7ZStmfMRsio4t bMRW9GHDXJry7v2XXeQBVcfFR3QcWKGDLbRhTaIxnzwBrzT8nj0u8AZkBRNiKBIMhVoI Hka19zpcA5yDOrDJdKx/cfWQ5SVlo0T9eADz2EEan2Q48h7V4YvDl9Saw8jmQ1WjGM8p /7zH10pzY4HD0y78NnGyt6XVQDO5DZDl+EBhELGcp/XJOcxBVX/1+Whj382XkvLAQ91R +2eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835102; x=1717439902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GlSEHjIcvqW+lxV4cQ1l5QsI7RM0a/cM01/bSjIyPEA=; b=QWu0jL7ycjtIISrzznb/dPxLX4Kbwb2J7Ul7+CjBMC6aG8rkLwMV1FXd2vVdY60d6/ RNhxMRSSw4YGhNahGoiLVmDhz2/1yLf/PdKWRFEfJhXOh49170UFn3oD2vqjv6CmLds4 Ix4EHeENk4OJXxWrx156tZHbysjAYDIevOLZhYmin46mSrMxV5IXTy7ekRxli+NtbaRa yQPEsoiuOX+9/xDSTGSmBDLu02iRqYJxA1f1iNhKC7aYCC+8rb1+uvutzSJQbGpheP2l Tm8H146il2t6VRgcDRwWvDETktr1mp0itmdiyOLT4Wa3oVhdULcbqE/SjGvKdcT4g/Bg il5A== X-Forwarded-Encrypted: i=1; AJvYcCW/ow8S7OaJFJ+1HWf8UdEAPVAFYU+0I4l2gnHXQpKk7ygMMPdaWYixg8jkfTxaFJtocjAse3Po3kAMtHlxCrWmMTLwNn3W5TyUzd/9rF9Z1/+37AuL23/JO1so4/mMCWi1wG/AM16x X-Gm-Message-State: AOJu0YwkCdhiysb98aKifGztlxGin3aTRUYdL6XAY7oZwXIxojbcRfIL 7+fhqCxiesZ3DCRzDYlIAdQMU3r75SxIZKhdB8DPeCCN2d+ublMK X-Google-Smtp-Source: AGHT+IF/xMluxJ1pyGrj+l9MU9edHXAF0+v+a/2f6XJAP+5QyF46qLuzn0J7bdX0BE2IpHGKi7A9aA== X-Received: by 2002:a17:906:e84:b0:a59:c9ad:bd28 with SMTP id a640c23a62f3a-a62641a5722mr612527866b.13.1716835102352; Mon, 27 May 2024 11:38:22 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:21 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 10/17] iio: chemical: bme680: Remove duplicate register read Date: Mon, 27 May 2024 20:37:58 +0200 Message-Id: <20240527183805.311501-11-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The LSB of the gas register was read first to check if the following check was correct and then the MSB+LSB were read together. Simplify this by reading together the MSB+LSB immediately. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 96423861c79a..681f271f9b06 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -748,7 +748,7 @@ static int bme680_read_gas(struct bme680_data *data, int ret; __be16 tmp = 0; unsigned int check; - u16 adc_gas_res; + u16 adc_gas_res, gas_regs_val; u8 gas_range; /* Set heater settings */ @@ -771,11 +771,14 @@ static int bme680_read_gas(struct bme680_data *data, return -EBUSY; } - ret = regmap_read(data->regmap, BME680_REG_GAS_R_LSB, &check); + ret = regmap_bulk_read(data->regmap, BME680_REG_GAS_MSB, + &tmp, sizeof(tmp)); if (ret < 0) { - dev_err(dev, "failed to read gas_r_lsb register\n"); + dev_err(dev, "failed to read gas resistance\n"); return ret; } + gas_regs_val = be16_to_cpu(tmp); + adc_gas_res = gas_regs_val >> BME680_ADC_GAS_RES_SHIFT; /* * occurs if either the gas heating duration was insuffient @@ -783,20 +786,12 @@ static int bme680_read_gas(struct bme680_data *data, * heater temperature was too high for the heater sink to * reach. */ - if ((check & BME680_GAS_STAB_BIT) == 0) { + if ((gas_regs_val & BME680_GAS_STAB_BIT) == 0) { dev_err(dev, "heater failed to reach the target temperature\n"); return -EINVAL; } - ret = regmap_bulk_read(data->regmap, BME680_REG_GAS_MSB, - &tmp, sizeof(tmp)); - if (ret < 0) { - dev_err(dev, "failed to read gas resistance\n"); - return ret; - } - - gas_range = check & BME680_GAS_RANGE_MASK; - adc_gas_res = be16_to_cpu(tmp) >> BME680_ADC_GAS_RES_SHIFT; + gas_range = gas_regs_val & BME680_GAS_RANGE_MASK; *val = bme680_compensate_gas(data, adc_gas_res, gas_range); return IIO_VAL_INT; From patchwork Mon May 27 18:37:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675689 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.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 F0D801667F3; Mon, 27 May 2024 18:38:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835106; cv=none; b=Wm6RowzPMPX9IWZwqt1AnNu0QhzFhkb6dAJ2TyCqu1+bBfo0D1FzkHQ2ACPXf3ZFnodfx3a/IXYXb1dkhNbo0WHWEDX9+TfrP6zLXCs+j5ImSAw+gYGNQLSw6A9AjDGFKawyE1MJ1/V8A4BsAGs1EQBwq1WNRvYyM8HJ46+BuL0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835106; c=relaxed/simple; bh=ykscsYCCyhgNHO05aM4Rh85SDORxcXBSPMYX9rXWtGk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LypdineDpKA3eucEjbaybhnwj31YesN06gnDWAqGM+V2m5CvXR4/rfOyVKox9oh3b28u0nW7zCRvK0EiI5cFmNtCyQLGJwjBAYik/ZGm7QJiP+qtF/+qF4ijbTLoKiK5OHeGyPSnKsDT3oubTZsGz6zpRPwfnvbgTJLxpi/t4ok= 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=koSYMXib; arc=none smtp.client-ip=209.85.208.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="koSYMXib" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5785f861868so11618a12.2; Mon, 27 May 2024 11:38:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835103; x=1717439903; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tl31DSqAuaYSaUAdIXX4MtfeWlKhLyQWtpVC8KlB5nw=; b=koSYMXibEDi78tEJvK8yym3MR2dVR0s52sODOuIxBqglTx6wpvh3P9TFrKqXaFyQp5 EOe14ewaXJrRbc09Uhbz+DnLH4/NtrbNJ/W55okm/dAqhsCMHozlNbI+N//sn/8ymdnf 8mPPC8WBfOS69G+BpBFBA2/zICFLgvN9qU3Avvh/XNWnryQ2suw1uZ448x8h50qZDktG UQL5Qayty+KDG8akEE/E5oyznTDYdR/pR6BAEbodNd+MoGqwFeJLbK/jmKtRICv+DWzm CP9tfis6k9AuVHv+VJxx0x7RlORFYATKC5tOxHSwhCVdQ6EQfkStDU5tHHnR5mvhCE3S j2lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835103; x=1717439903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tl31DSqAuaYSaUAdIXX4MtfeWlKhLyQWtpVC8KlB5nw=; b=lVtlNIbAVgsGqyAWJXwpHTKy7SVMk6n+owICEgQWZlOEHyCRIpQ0r99dslcZJu/5vf F2of7doimPGexlorUAZVv02X6I1xcDnEHN/g1+WY8yJdby9YNqf+93mRKQVr6FzfROUH 4b63aLzaiUUHgam36LXxXqu9NSXdLcpopO7g0XXqJFIctqaUCpj58t5z72cxDJtZaq39 9BcfpBM5neB0ml1K/XLxSl4/Tht9DceH4jfgRwH96CtHr1f3UDTVZ8CeDg474ln5lsJt ge3OOip3QUk6O5Sp4pRA45rEi1qfMovH0p57MkIyXrrKn5B+sKXRrtmV/wCukJ5+/XOT rdWQ== X-Forwarded-Encrypted: i=1; AJvYcCUUFdqA1KKhIG8hGOBU2ySNvY7F6EFT6GNtp6K4LmS5KoQ6MzpGirgHLxrxNNzf6FCHG/4aj6WzR2uuRIk9BjJAFWk/reP81AO5QqNWhYyaVB0L1SHsKK8TgU4gO0onIoJeDSxCdpE0 X-Gm-Message-State: AOJu0YxAV/04JBx988xqbVtBXg8vEhCWI9oj0Z27tjMmWDLiT4dperLs DXKMgDXgkTCbVBvM7WofZxqp/ZFVoGALsT5qxVDUU07uJkc7vLjW X-Google-Smtp-Source: AGHT+IGzR74hzgBNu7nOyEfTbrBMiapKvBXfNxm91qV77whUvbb9ChhsTrvv7FTJjHV/7VaY8H0Dow== X-Received: by 2002:a17:906:a0a:b0:a5a:4683:e961 with SMTP id a640c23a62f3a-a6264f0eeaemr661579966b.52.1716835103220; Mon, 27 May 2024 11:38:23 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:22 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 11/17] iio: chemical: bme680: Use bulk reads for calibration data Date: Mon, 27 May 2024 20:37:59 +0200 Message-Id: <20240527183805.311501-12-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Calibration data are located in contiguous-ish registers inside the chip. For that reason we can use bulk reads as is done as well in the BME68x Sensor API [1]. The arrays that are used for reading the data out of the sensor are located inside DMA safe buffer. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L1769 Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 28 +-- drivers/iio/chemical/bme680_core.c | 283 ++++++++++------------------- 2 files changed, 101 insertions(+), 210 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 3133d624270a..5f602170a3af 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -39,10 +39,8 @@ #define BME680_HUM_REG_SHIFT_VAL 4 #define BME680_BIT_H1_DATA_MASK GENMASK(3, 0) -#define BME680_REG_RES_HEAT_RANGE 0x02 #define BME680_RHRANGE_MASK GENMASK(5, 4) #define BME680_REG_RES_HEAT_VAL 0x00 -#define BME680_REG_RANGE_SW_ERR 0x04 #define BME680_RSERROR_MASK GENMASK(7, 4) #define BME680_REG_RES_HEAT_0 0x5A #define BME680_REG_GAS_WAIT_0 0x64 @@ -58,31 +56,13 @@ /* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A -#define BME680_T3_REG 0x8C -#define BME680_P1_LSB_REG 0x8E -#define BME680_P2_LSB_REG 0x90 -#define BME680_P3_REG 0x92 -#define BME680_P4_LSB_REG 0x94 -#define BME680_P5_LSB_REG 0x96 -#define BME680_P7_REG 0x98 -#define BME680_P6_REG 0x99 -#define BME680_P8_LSB_REG 0x9C -#define BME680_P9_LSB_REG 0x9E -#define BME680_P10_REG 0xA0 -#define BME680_H2_LSB_REG 0xE2 #define BME680_H2_MSB_REG 0xE1 -#define BME680_H1_MSB_REG 0xE3 -#define BME680_H1_LSB_REG 0xE2 -#define BME680_H3_REG 0xE4 -#define BME680_H4_REG 0xE5 -#define BME680_H5_REG 0xE6 -#define BME680_H6_REG 0xE7 -#define BME680_H7_REG 0xE8 -#define BME680_T1_LSB_REG 0xE9 -#define BME680_GH2_LSB_REG 0xEB -#define BME680_GH1_REG 0xED #define BME680_GH3_REG 0xEE +#define BME680_CALIB_RANGE_1_LEN 23 +#define BME680_CALIB_RANGE_2_LEN 14 +#define BME680_CALIB_RANGE_3_LEN 5 + extern const struct regmap_config bme680_regmap_config; int bme680_core_probe(struct device *dev, struct regmap *regmap, diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 681f271f9b06..ed4cdb4d64af 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -19,8 +19,53 @@ #include #include +#include + #include "bme680.h" +/* 1st set of calibration data */ +enum { + /* Temperature calib indexes */ + T2_LSB = 0, + T3 = 2, + /* Pressure calib indexes */ + P1_LSB = 4, + P2_LSB = 6, + P3 = 8, + P4_LSB = 10, + P5_LSB = 12, + P7 = 14, + P6 = 15, + P8_LSB = 18, + P9_LSB = 20, + P10 = 22, +}; + +/* 2nd set of calibration data */ +enum { + /* Humidity calib indexes */ + H2_MSB = 0, + H1_LSB = 1, + H3 = 3, + H4 = 4, + H5 = 5, + H6 = 6, + H7 = 7, + /* Stray T1 calib index */ + T1_LSB = 8, + /* Gas heater calib indexes */ + GH2_LSB = 10, + GH1 = 12, + GH3 = 13, +}; + +/* 3rd set of calibration data */ +enum { + RES_HEAT_VAL = 0, + RES_HEAT_RANGE = 2, + RANGE_SW_ERR = 4, +}; + struct bme680_calib { u16 par_t1; s16 par_t2; @@ -64,6 +109,16 @@ struct bme680_data { * and humidity compensation calculations. */ s32 t_fine; + + /* + * DMA (thus cache coherency maintenance) may require the + * transfer buffers to live in their own cache lines. + */ + union { + u8 bme680_cal_buf_1[BME680_CALIB_RANGE_1_LEN]; + u8 bme680_cal_buf_2[BME680_CALIB_RANGE_2_LEN]; + u8 bme680_cal_buf_3[BME680_CALIB_RANGE_3_LEN]; + } __aligned(IIO_DMA_MINALIGN); }; static const struct regmap_range bme680_volatile_ranges[] = { @@ -112,217 +167,73 @@ static int bme680_read_calib(struct bme680_data *data, struct bme680_calib *calib) { struct device *dev = regmap_get_device(data->regmap); - unsigned int tmp, tmp_msb, tmp_lsb; + unsigned int tmp_msb, tmp_lsb; int ret; - __le16 buf; - - /* Temperature related coefficients */ - ret = regmap_bulk_read(data->regmap, BME680_T1_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_T1_LSB_REG\n"); - return ret; - } - calib->par_t1 = le16_to_cpu(buf); ret = regmap_bulk_read(data->regmap, BME680_T2_LSB_REG, - &buf, sizeof(buf)); + &data->bme680_cal_buf_1[0], + sizeof(data->bme680_cal_buf_1)); if (ret < 0) { - dev_err(dev, "failed to read BME680_T2_LSB_REG\n"); + dev_err(dev, "failed to read 1st set of calib data;\n"); return ret; } - calib->par_t2 = le16_to_cpu(buf); - ret = regmap_read(data->regmap, BME680_T3_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_T3_REG\n"); - return ret; - } - calib->par_t3 = tmp; + calib->par_t2 = get_unaligned_le16(&data->bme680_cal_buf_1[T2_LSB]); + calib->par_t3 = data->bme680_cal_buf_1[T3]; + calib->par_p1 = get_unaligned_le16(&data->bme680_cal_buf_1[P1_LSB]); + calib->par_p2 = get_unaligned_le16(&data->bme680_cal_buf_1[P2_LSB]); + calib->par_p3 = data->bme680_cal_buf_1[P3]; + calib->par_p4 = get_unaligned_le16(&data->bme680_cal_buf_1[P4_LSB]); + calib->par_p5 = get_unaligned_le16(&data->bme680_cal_buf_1[P5_LSB]); + calib->par_p7 = data->bme680_cal_buf_1[P7]; + calib->par_p6 = data->bme680_cal_buf_1[P6]; + calib->par_p8 = get_unaligned_le16(&data->bme680_cal_buf_1[P8_LSB]); + calib->par_p9 = get_unaligned_le16(&data->bme680_cal_buf_1[P9_LSB]); + calib->par_p10 = data->bme680_cal_buf_1[P10]; - /* Pressure related coefficients */ - ret = regmap_bulk_read(data->regmap, BME680_P1_LSB_REG, - &buf, sizeof(buf)); + ret = regmap_bulk_read(data->regmap, BME680_H2_MSB_REG, + &data->bme680_cal_buf_2[0], + sizeof(data->bme680_cal_buf_2)); if (ret < 0) { - dev_err(dev, "failed to read BME680_P1_LSB_REG\n"); + dev_err(dev, "failed to read 2nd set of calib data;\n"); return ret; } - calib->par_p1 = le16_to_cpu(buf); - ret = regmap_bulk_read(data->regmap, BME680_P2_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P2_LSB_REG\n"); - return ret; - } - calib->par_p2 = le16_to_cpu(buf); - - ret = regmap_read(data->regmap, BME680_P3_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P3_REG\n"); - return ret; - } - calib->par_p3 = tmp; - - ret = regmap_bulk_read(data->regmap, BME680_P4_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P4_LSB_REG\n"); - return ret; - } - calib->par_p4 = le16_to_cpu(buf); - - ret = regmap_bulk_read(data->regmap, BME680_P5_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P5_LSB_REG\n"); - return ret; - } - calib->par_p5 = le16_to_cpu(buf); - - ret = regmap_read(data->regmap, BME680_P6_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P6_REG\n"); - return ret; - } - calib->par_p6 = tmp; - - ret = regmap_read(data->regmap, BME680_P7_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P7_REG\n"); - return ret; - } - calib->par_p7 = tmp; - - ret = regmap_bulk_read(data->regmap, BME680_P8_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P8_LSB_REG\n"); - return ret; - } - calib->par_p8 = le16_to_cpu(buf); - - ret = regmap_bulk_read(data->regmap, BME680_P9_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P9_LSB_REG\n"); - return ret; - } - calib->par_p9 = le16_to_cpu(buf); - - ret = regmap_read(data->regmap, BME680_P10_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P10_REG\n"); - return ret; - } - calib->par_p10 = tmp; - - /* Humidity related coefficients */ - ret = regmap_read(data->regmap, BME680_H1_MSB_REG, &tmp_msb); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H1_MSB_REG\n"); - return ret; - } - ret = regmap_read(data->regmap, BME680_H1_LSB_REG, &tmp_lsb); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H1_LSB_REG\n"); - return ret; - } + tmp_lsb = data->bme680_cal_buf_2[H1_LSB]; + tmp_msb = data->bme680_cal_buf_2[H1_LSB + 1]; calib->par_h1 = (tmp_msb << BME680_HUM_REG_SHIFT_VAL) | (tmp_lsb & BME680_BIT_H1_DATA_MASK); - ret = regmap_read(data->regmap, BME680_H2_MSB_REG, &tmp_msb); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H2_MSB_REG\n"); - return ret; - } - ret = regmap_read(data->regmap, BME680_H2_LSB_REG, &tmp_lsb); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H2_LSB_REG\n"); - return ret; - } + tmp_msb = data->bme680_cal_buf_2[H2_MSB]; + tmp_lsb = data->bme680_cal_buf_2[H2_MSB + 1]; calib->par_h2 = (tmp_msb << BME680_HUM_REG_SHIFT_VAL) | (tmp_lsb >> BME680_HUM_REG_SHIFT_VAL); - ret = regmap_read(data->regmap, BME680_H3_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H3_REG\n"); - return ret; - } - calib->par_h3 = tmp; - - ret = regmap_read(data->regmap, BME680_H4_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H4_REG\n"); - return ret; - } - calib->par_h4 = tmp; - - ret = regmap_read(data->regmap, BME680_H5_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H5_REG\n"); - return ret; - } - calib->par_h5 = tmp; - - ret = regmap_read(data->regmap, BME680_H6_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H6_REG\n"); - return ret; - } - calib->par_h6 = tmp; + calib->par_h3 = data->bme680_cal_buf_2[H3]; + calib->par_h4 = data->bme680_cal_buf_2[H4]; + calib->par_h5 = data->bme680_cal_buf_2[H5]; + calib->par_h6 = data->bme680_cal_buf_2[H6]; + calib->par_h7 = data->bme680_cal_buf_2[H7]; + calib->par_t1 = get_unaligned_le16(&data->bme680_cal_buf_2[T1_LSB]); + calib->par_gh2 = get_unaligned_le16(&data->bme680_cal_buf_2[GH2_LSB]); + calib->par_gh1 = data->bme680_cal_buf_2[GH1]; + calib->par_gh3 = data->bme680_cal_buf_2[GH3]; - ret = regmap_read(data->regmap, BME680_H7_REG, &tmp); + ret = regmap_bulk_read(data->regmap, BME680_REG_RES_HEAT_VAL, + &data->bme680_cal_buf_3[0], + sizeof(data->bme680_cal_buf_3)); if (ret < 0) { - dev_err(dev, "failed to read BME680_H7_REG\n"); + dev_err(dev, "failed to read 3rd set of calib data;\n"); return ret; } - calib->par_h7 = tmp; - /* Gas heater related coefficients */ - ret = regmap_read(data->regmap, BME680_GH1_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_GH1_REG\n"); - return ret; - } - calib->par_gh1 = tmp; + calib->res_heat_val = data->bme680_cal_buf_3[RES_HEAT_VAL]; - ret = regmap_bulk_read(data->regmap, BME680_GH2_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_GH2_LSB_REG\n"); - return ret; - } - calib->par_gh2 = le16_to_cpu(buf); + calib->res_heat_range = FIELD_GET(BME680_RHRANGE_MASK, + data->bme680_cal_buf_3[RES_HEAT_RANGE]); - ret = regmap_read(data->regmap, BME680_GH3_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_GH3_REG\n"); - return ret; - } - calib->par_gh3 = tmp; - - /* Other coefficients */ - ret = regmap_read(data->regmap, BME680_REG_RES_HEAT_RANGE, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read resistance heat range\n"); - return ret; - } - calib->res_heat_range = FIELD_GET(BME680_RHRANGE_MASK, tmp); - - ret = regmap_read(data->regmap, BME680_REG_RES_HEAT_VAL, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read resistance heat value\n"); - return ret; - } - calib->res_heat_val = tmp; - - ret = regmap_read(data->regmap, BME680_REG_RANGE_SW_ERR, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read range software error\n"); - return ret; - } - calib->range_sw_err = FIELD_GET(BME680_RSERROR_MASK, tmp); + calib->range_sw_err = FIELD_GET(BME680_RSERROR_MASK, + data->bme680_cal_buf_3[RANGE_SW_ERR]); return 0; } From patchwork Mon May 27 18:38:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675690 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 DC5F2161339; Mon, 27 May 2024 18:38:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835107; cv=none; b=MvqTz1NlKTfEN5WvWZDoQriGAJnjYdee0oxhnKiB+Xocpm1hZ7D4jTT57C7C+Wy6ioyo6G8nJ77+qPRv2AqtrSwD71r/pxnvt8cWEd/gnt1RmqNE+0IX8eJm53OfazYXVG8bov+4zq1fJvM8sT9KaSBHUsuGjLUfkR7EHRMQ7to= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835107; c=relaxed/simple; bh=Z11L+MBntNd9tpd6XUK/Rkb7dO2gwkXSKNYVH2NWEUA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cZ2QJWqh28mVXLrzz/jD4Yr77fT42iEUAq4erWfCBm7sn6tqRCNHdtg3K2Ie+TzGdv71yYOfNJXL3nnme09YT8/WqcTv3A1qcEaMi9CkDIKa294UcXgkMZE5kQLQjGkofKAZRwJMNiWSOEVEXWaSnS7oEdxXU9vUvB0DJ//Mdd4= 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=g6ne7o4D; arc=none smtp.client-ip=209.85.218.48 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="g6ne7o4D" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a626776cc50so7199266b.3; Mon, 27 May 2024 11:38:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835104; x=1717439904; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AhEbl1lNPdJL4216synqDrxWN0ri3RT5MAntM9v8/rc=; b=g6ne7o4DFKZ6HnaQfETju1Dk8K1a2DeHirmYXFtplH8yJoO93q5Dn/4kzwdboukzKb qbw6liAxzy4ip0vWAIZY/oh19s3kuwnniuJuvFv/9J9rcCS4gUn82X8m4ydVcJzsOr+R 7rUqzgDDlzE63+H44MY8XV/4/EFQzJpncpSnOQ6+s8DujwHBf2jKN6mn6mnkPAjRl/Ni 7tfKwf8k+Bi14yofhkMTHtxe1F15U6aLBZGAL/evPgaeccYJRIon/7LI2yf5fp05lEc5 Qn6DHOsJ2MswO0lHU4HJNqYgRbfaQnvkbwYJVYl0SbT6xcSkbUsnJ8xz3O7+WHejvB+r vtgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835104; x=1717439904; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AhEbl1lNPdJL4216synqDrxWN0ri3RT5MAntM9v8/rc=; b=viNC4vp9j/s94A55DrRz8DRujfTtbZIAlOiBBjMVFfNS0RpxTVeYe7FyMrZ+TD8zQ5 r2Ehovaj6FBXMqT14yefMd6GYInR4rL5mvUchZqLJAV3VaIm7OoG3V59py327XYrULpG KFK8fXGUvfzE4J+oEDIt/chWN+8Fc7Y0fyDz973fp37w+aeQgTD38ap+vjlFk/Q25SC2 PEqGAej3odSTuYluRVqr2aJtHo9jmek30oaF8PwdoffQmvlTOW8ax9QCz7sLX4Wpr4an HfRHoZwD6io7a8uMghpSZ5OZCXrn+GQbGim267KYkHoFKjenQ5GsBKv3fMd+u9R5bPyu 7Akg== X-Forwarded-Encrypted: i=1; AJvYcCUIVmubdSevYLtsiXIQf18z3gq2m+1W9l6Pc4ftR/Uhzz0bpaot7mLVxncqQ0fkadw/TlDDL4tevf6EgGLr+z4kSmGtf2iyxLA14nDl6M2gN/mG1ZMLl4bmNYM9ApKrJaMnyXnsPUAt X-Gm-Message-State: AOJu0Yx2Gl53u6ZhSE3qgRb/Fxx9uOWlLZLgLi6SOsnRtBw44jVHk6SX 0H6XPg2kL5Pj3+Cx0vmQzuFDuGBh7aBtVoGouHwCeWxsEo+fYynUE1Ycbg== X-Google-Smtp-Source: AGHT+IFWE+ggd7jRqc4jQhnraNNFQtB0FSadWCaedcwVOuCdrAG+pUHyTZ0i04dqfAJ0DXR3w+pOhw== X-Received: by 2002:a17:906:4c49:b0:a63:3702:def1 with SMTP id a640c23a62f3a-a633702dff6mr1659766b.72.1716835104213; Mon, 27 May 2024 11:38:24 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:23 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 12/17] iio: chemical: bme680: Allocate IIO device before chip initialization Date: Mon, 27 May 2024 20:38:00 +0200 Message-Id: <20240527183805.311501-13-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Move the IIO device allocation before the actual initialization of the chip to be more consistent with most IIO drivers and also to have the ability to use any driver specific data for the chip initialization. While at it, fix also a misaligned line. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index ed4cdb4d64af..a6f425076d36 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -820,25 +820,6 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, unsigned int val; int ret; - ret = regmap_write(regmap, BME680_REG_SOFT_RESET, - BME680_CMD_SOFTRESET); - if (ret < 0) { - dev_err(dev, "Failed to reset chip\n"); - return ret; - } - - ret = regmap_read(regmap, BME680_REG_CHIP_ID, &val); - if (ret < 0) { - dev_err(dev, "Error reading chip ID\n"); - return ret; - } - - if (val != BME680_CHIP_ID_VAL) { - dev_err(dev, "Wrong chip ID, got %x expected %x\n", - val, BME680_CHIP_ID_VAL); - return -ENODEV; - } - indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; @@ -860,6 +841,25 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, data->heater_temp = 320; /* degree Celsius */ data->heater_dur = 150; /* milliseconds */ + ret = regmap_write(regmap, BME680_REG_SOFT_RESET, + BME680_CMD_SOFTRESET); + if (ret < 0) { + dev_err(dev, "Failed to reset chip\n"); + return ret; + } + + ret = regmap_read(regmap, BME680_REG_CHIP_ID, &val); + if (ret < 0) { + dev_err(dev, "Error reading chip ID\n"); + return ret; + } + + if (val != BME680_CHIP_ID_VAL) { + dev_err(dev, "Wrong chip ID, got %x expected %x\n", + val, BME680_CHIP_ID_VAL); + return -ENODEV; + } + ret = bme680_chip_config(data); if (ret < 0) { dev_err(dev, "failed to set chip_config data\n"); From patchwork Mon May 27 18:38:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675691 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.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 AF265167283; Mon, 27 May 2024 18:38:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835108; cv=none; b=j9eiF8tE7nNc27asDk1A025uNp/UdUoUx71M//KVEwuM+Wf6AtiLYQ16y5SnnCiTN/dFux5aL3Z+SVtw0y1UOQ6mcGKp+yLYu+q9NqufFcXxCpYQ93jHMoEZFqwdAJXVzE4m1nOROZbMYB3s4hC8+DAcgXfpHTZ4LAgopkhEgrQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835108; c=relaxed/simple; bh=39PDmXjTat2LrOJYPlMZ4r4AFk1Kb3ruqgQ4CjrEI5A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SWw1h0xYZdrvfEjGK59jPw3xMWzW64saAFAocW0Y0gQB7NtRWhdXepMYO7jMo+qLNe2oAnHDLumUjbFyW4doIzWURv7bvEkjnjoyblA68owT7m5bEVyfiu4vCdIZFMXd7iSbWRuQSqgKiAI5sU1l+YIGTr8rLtQV0PHCFgn+2E0= 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=EeUT3kzo; arc=none smtp.client-ip=209.85.208.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="EeUT3kzo" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-578972defb3so12663a12.2; Mon, 27 May 2024 11:38:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835105; x=1717439905; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jK5lmerkNYbstPfL+gYcg+7vPHVC5CUiywbb5O2E4Wc=; b=EeUT3kzoTn7NojXcgr0izMwBH89sEfRpYvGwHN3g2z2becCyuR44m6evtKjRgyJC/u 4CdwvXIEJP89ftYSxEXKXGxKOgeczB/WDTQdQXzJ0CrCoJnjME+8vGAO83KsDL1A38ea gFrCmDuCUkO64hyUDVAmZa5POgisXQMpgtTQlluBrstJTfmPk0iZuofkxsMmh+oQmftf jjnL2ZKwCoHj3rF/fLfw9XWhcEyS7MUJKxZ5R/AVIsb3KvL3WTA5ZnYRILlMAOssUFb7 cUvG/w9/9Hw8xkKMG9KVVVnjf3EeBbOr6KBScYtrt6U9UGav8+gQnVORmqcx86b3jucH mJnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835105; x=1717439905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jK5lmerkNYbstPfL+gYcg+7vPHVC5CUiywbb5O2E4Wc=; b=qBGr4ssA9Rv/G2KV7A6v0h+M2wdjrDJN+ai4VGs5hTyROSP5Hd2HoP0VUqxMvrr2D1 T4vlt5EbTqI5IDj8oxca9eqs1ffKncIhUTSbnXz84/bSpKxSEdi7bpKTDT51NyoAOuwE O7rAZCJsamBqGhfswpOHhUp0tg/aZcDn5Rh/UiErOlMuP3ydfj/Zx1Tgy2EUOfCglTDm 9+6KIHVPTbFAcSBMsfVCiTAJ/KaEcwN/58/l1O9+8mEspKazV/gDSs3yROTTi6y9nX8P AbLieHTQXs4k03RzjY1AxO76nkc9dRbOLobjrHByLTbVivPtgwLnN/voZwVU7AH7qHup 8+dg== X-Forwarded-Encrypted: i=1; AJvYcCW8Dc2W20AER2V0cEttNhzFtRpAuExPdEAlWlC9OHgTOudMmtOMFnBSIjGtQKk9+jg4DPHP9PyzrN2eiE/1SC9m0IWYHNFgx6ZlGDIrXc9fFBqYXoHR8UvQSszDKOBH+xnQ2thSFEAG X-Gm-Message-State: AOJu0YwNIcupkP/PpGuDtxkBvJmOxozLDkEnLkpa3FygaAZ52CP5y9vI HI3zs7RLOurDC/wNc08jZPFfMyqN+ClmqNsbVI4QT9eTvfhRkp9rH6vPrg== X-Google-Smtp-Source: AGHT+IHBZ0sRi3n9lAxJaBWSuUqmTal3IzjRJHmF1jStp0aNsRNauKLK+tGQzdCs2+yFm7sJKS78ew== X-Received: by 2002:a17:906:9907:b0:a62:32be:33be with SMTP id a640c23a62f3a-a62641a65f5mr627834866b.10.1716835105120; Mon, 27 May 2024 11:38:25 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:24 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 13/17] iio: chemical: bme680: Add read buffers in DMA safe region Date: Mon, 27 May 2024 20:38:01 +0200 Message-Id: <20240527183805.311501-14-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Move the buffers that are used in order to read data from the device in a DMA-safe region. Also create defines for the number of bytes that are being read from the device and don't use magic numbers. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 7 ++++++ drivers/iio/chemical/bme680_core.c | 37 +++++++++++++++--------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 5f602170a3af..17ea59253923 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -54,6 +54,13 @@ #define BME680_REG_MEAS_STAT_0 0x1D #define BME680_GAS_MEAS_BIT BIT(6) +#define BME680_TEMP_NUM_BYTES 3 +#define BME680_PRESS_NUM_BYTES 3 +#define BME680_HUMID_NUM_BYTES 2 +#define BME680_GAS_NUM_BYTES 2 + +#define BME680_MEAS_TRIM_MASK GENMASK(24, 4) + /* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A #define BME680_H2_MSB_REG 0xE1 diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index a6f425076d36..b055eeee8f1c 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -115,6 +115,9 @@ struct bme680_data { * transfer buffers to live in their own cache lines. */ union { + u8 buf[3]; + unsigned int check; + __be16 be16; u8 bme680_cal_buf_1[BME680_CALIB_RANGE_1_LEN]; u8 bme680_cal_buf_2[BME680_CALIB_RANGE_2_LEN]; u8 bme680_cal_buf_3[BME680_CALIB_RANGE_3_LEN]; @@ -547,7 +550,6 @@ static int bme680_read_temp(struct bme680_data *data, int *val) { struct device *dev = regmap_get_device(data->regmap); int ret; - __be32 tmp = 0; u32 adc_temp; s16 comp_temp; @@ -559,13 +561,14 @@ static int bme680_read_temp(struct bme680_data *data, int *val) bme680_wait_for_eoc(data); ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, - &tmp, 3); + data->buf, BME680_TEMP_NUM_BYTES); if (ret < 0) { dev_err(dev, "failed to read temperature\n"); return ret; } - adc_temp = be32_to_cpu(tmp) >> 12; + adc_temp = FIELD_GET(BME680_MEAS_TRIM_MASK, + get_unaligned_be24(data->buf)); if (adc_temp == BME680_MEAS_SKIPPED) { /* reading was skipped */ dev_err(dev, "reading temperature skipped\n"); @@ -591,7 +594,6 @@ static int bme680_read_press(struct bme680_data *data, { struct device *dev = regmap_get_device(data->regmap); int ret; - __be32 tmp = 0; u32 adc_press; /* Read and compensate temperature to get a reading of t_fine */ @@ -600,13 +602,14 @@ static int bme680_read_press(struct bme680_data *data, return ret; ret = regmap_bulk_read(data->regmap, BME680_REG_PRESS_MSB, - &tmp, 3); + data->buf, BME680_PRESS_NUM_BYTES); if (ret < 0) { dev_err(dev, "failed to read pressure\n"); return ret; } - adc_press = be32_to_cpu(tmp) >> 12; + adc_press = FIELD_GET(BME680_MEAS_TRIM_MASK, + get_unaligned_be24(data->buf)); if (adc_press == BME680_MEAS_SKIPPED) { /* reading was skipped */ dev_err(dev, "reading pressure skipped\n"); @@ -623,7 +626,6 @@ static int bme680_read_humid(struct bme680_data *data, { struct device *dev = regmap_get_device(data->regmap); int ret; - __be16 tmp = 0; u16 adc_humidity; u32 comp_humidity; @@ -633,13 +635,13 @@ static int bme680_read_humid(struct bme680_data *data, return ret; ret = regmap_bulk_read(data->regmap, BME680_REG_HUMIDITY_MSB, - &tmp, sizeof(tmp)); + &data->be16, BME680_HUMID_NUM_BYTES); if (ret < 0) { dev_err(dev, "failed to read humidity\n"); return ret; } - adc_humidity = be16_to_cpu(tmp); + adc_humidity = be16_to_cpu(data->be16); if (adc_humidity == BME680_MEAS_SKIPPED) { /* reading was skipped */ dev_err(dev, "reading humidity skipped\n"); @@ -657,8 +659,6 @@ static int bme680_read_gas(struct bme680_data *data, { struct device *dev = regmap_get_device(data->regmap); int ret; - __be16 tmp = 0; - unsigned int check; u16 adc_gas_res, gas_regs_val; u8 gas_range; @@ -676,19 +676,19 @@ static int bme680_read_gas(struct bme680_data *data, bme680_wait_for_eoc(data); - ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &check); - if (check & BME680_GAS_MEAS_BIT) { + ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &data->check); + if (data->check & BME680_GAS_MEAS_BIT) { dev_err(dev, "gas measurement incomplete\n"); return -EBUSY; } ret = regmap_bulk_read(data->regmap, BME680_REG_GAS_MSB, - &tmp, sizeof(tmp)); + &data->be16, BME680_GAS_NUM_BYTES); if (ret < 0) { dev_err(dev, "failed to read gas resistance\n"); return ret; } - gas_regs_val = be16_to_cpu(tmp); + gas_regs_val = be16_to_cpu(data->be16); adc_gas_res = gas_regs_val >> BME680_ADC_GAS_RES_SHIFT; /* @@ -817,7 +817,6 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, { struct iio_dev *indio_dev; struct bme680_data *data; - unsigned int val; int ret; indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); @@ -848,15 +847,15 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, return ret; } - ret = regmap_read(regmap, BME680_REG_CHIP_ID, &val); + ret = regmap_read(regmap, BME680_REG_CHIP_ID, &data->check); if (ret < 0) { dev_err(dev, "Error reading chip ID\n"); return ret; } - if (val != BME680_CHIP_ID_VAL) { + if (data->check != BME680_CHIP_ID_VAL) { dev_err(dev, "Wrong chip ID, got %x expected %x\n", - val, BME680_CHIP_ID_VAL); + data->check, BME680_CHIP_ID_VAL); return -ENODEV; } From patchwork Mon May 27 18:38:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675692 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (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 80AA4167D83; Mon, 27 May 2024 18:38:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835109; cv=none; b=J4Hql7d9ALNagpfNUwCVPbsWmiwqvkZTvD/Dv7BYF0gdmU9VBedxIj8eLkxOqEVf+nOnrKy3VWvNFZaL9w6qoe56HNLOaBcJB2ix1RJLpBkR8tRDt9X6xYe4idMC21aR95to95nfJkbRdI918STJDvmYpk85xY6En7OSxlLbFC0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835109; c=relaxed/simple; bh=cFHf0/kIR90lrbrVUhcY+LUmF5u/hR7m0XYJLD/mjQc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BwSQ5AYg5LOmYtmbljqXEJgN74oJnegit4o4ALUypWGXpzaipVeuOp3KW97I93BlkSeIC/OogzE3wLYDTU0kw5bDU+JLe/wXLLvEVde7vQffIh2cPf3lPbMDH/zSSeaaW3ZGL6spCS48aX5hQJZnG9DbI/qLJDLKbgv+PA2fJ7Y= 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=CfbXhcrN; arc=none smtp.client-ip=209.85.208.44 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="CfbXhcrN" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5788eaf5320so26947a12.0; Mon, 27 May 2024 11:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835106; x=1717439906; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u+GhNLj18UStaf7z+31r3e+sQGnYbNlK51WS2O+sgMA=; b=CfbXhcrN2G5IHYzC615qLhMIeUiSL+XxzyCwLfe70LeUuVirVc1qiWHneB03CqplkL uGhAx3PmCoyJZ7rH5qUALFsEB55VL0ksxPVj/M6iWID16k8SuCBsGWt0yYys9FpEhRxk 4rfJBXtQOeNKPoJ6oYZjNu1JUWSn0ihFNxvGTf+4UYdG+9GzMD3XCCOF+qZk1HEnx4jp OYfG701krKPjUP/No0CRftlSsRgZrHMxm3yWAo8aCNxxoMVK8Jq0ZBkVG/KuDdi0wC+4 n31mjODoIGG29tubndmWtAka7ADLHsoyXXLwJR5a7SlP/gJISyMUCN9YnRd8HpxxTMj9 cwsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835106; x=1717439906; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u+GhNLj18UStaf7z+31r3e+sQGnYbNlK51WS2O+sgMA=; b=rDsSE6H2VmY2rofFP2hwc2LFTSzNtPROusZQ5Vjl3498xAyRVAwiIqK8sd/urVd816 KogRYEAC4gpMa55z/MEHJbEkPYgaohyI0jT8mSjBm3Zo1MK3Wz/v0C+GbtTdpHpxqZrB O99ylGc4GojP60FHLHvChI/2X++FGbMnYoRM4Tl18KoWQuML5mvvpvdtE2NrmmGj37jl 5qO3199OzMXbo2SNGy5wn/7MTy4auFFu9+2Vz4z1kOcnBTd9s4VzGRjOMYM/f/nBNmUg i/fNAlQLSW6qATckzGDW43F0XBAiS0P7jTP9+l4K364P9pVrFTjJYcahZzYJO/xQLaDB 0qsw== X-Forwarded-Encrypted: i=1; AJvYcCWZ8Qv3+FdcJNr5l2oRkrKqDBbDhhot2rq7eahAtUV87r7uLEVuYw7QeMfBUm/hDtssI69BNL3tGLxqaxM39xFl2BFbPM/QdXjHkSrbqFUfH0gYy/+KYz2sri8YuFMnB81d4D9cvQCF X-Gm-Message-State: AOJu0YxgGH7FRzvtb1UM1CaGRXGF4c12uUcOpa8Py6qoNJ2cJ9MdjzXd qPtTyA+A1Xm1dnNtIkNVcADdqxYhWgXCdAKmho8f6m4UDd9vXnjR X-Google-Smtp-Source: AGHT+IEOGRPHlK5STicxRJPpyGUnP3mg/Bamc0N15D3QHY1a9CyPeq8/S0NYlewTBOcG2pdNbLqEqg== X-Received: by 2002:a17:907:512:b0:a59:29ea:ed1d with SMTP id a640c23a62f3a-a62641ce042mr562592666b.22.1716835105841; Mon, 27 May 2024 11:38:25 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:25 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 14/17] iio: chemical: bme680: Modify startup procedure Date: Mon, 27 May 2024 20:38:02 +0200 Message-Id: <20240527183805.311501-15-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Modify the startup procedure to reflect the procedure of the Bosch BME68x Sensor API. The initial readings and configuration of the sensor need to happen in the following order: 1) Read calibration data [1,2] 2) Chip general configuration [3] 3) Gas configuration [4] After the chip configuration it is necessary to ensure that the sensor is in sleeping mode, in order to apply the gas configuration settings [5]. Also, after the soft reset, it is advised to wait for 5ms [6]. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L162 [2]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L44 [3]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L53 [4]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L60 [5]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L640 [6]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L294 Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 2 ++ drivers/iio/chemical/bme680_core.c | 27 ++++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 17ea59253923..3be2f76a5bfb 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -61,6 +61,8 @@ #define BME680_MEAS_TRIM_MASK GENMASK(24, 4) +#define BME680_STARTUP_TIME_US 5000 + /* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A #define BME680_H2_MSB_REG 0xE1 diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index b055eeee8f1c..afaa43ec3241 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -505,10 +505,12 @@ static int bme680_chip_config(struct bme680_data *data) ret = regmap_write_bits(data->regmap, BME680_REG_CTRL_MEAS, BME680_OSRS_TEMP_MASK | BME680_OSRS_PRESS_MASK, osrs); - if (ret < 0) + if (ret < 0) { dev_err(dev, "failed to write ctrl_meas register\n"); + return ret; + } - return ret; + return 0; } static int bme680_gas_config(struct bme680_data *data) @@ -517,6 +519,11 @@ static int bme680_gas_config(struct bme680_data *data) int ret; u8 heatr_res, heatr_dur; + /* Go to sleep */ + ret = bme680_set_mode(data, false); + if (ret < 0) + return ret; + heatr_res = bme680_calc_heater_res(data, data->heater_temp); /* set target heater temperature */ @@ -847,6 +854,8 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, return ret; } + usleep_range(BME680_STARTUP_TIME_US, BME680_STARTUP_TIME_US + 1000); + ret = regmap_read(regmap, BME680_REG_CHIP_ID, &data->check); if (ret < 0) { dev_err(dev, "Error reading chip ID\n"); @@ -859,22 +868,22 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, return -ENODEV; } - ret = bme680_chip_config(data); + ret = bme680_read_calib(data, &data->bme680); if (ret < 0) { - dev_err(dev, "failed to set chip_config data\n"); + dev_err(dev, + "failed to read calibration coefficients at probe\n"); return ret; } - ret = bme680_gas_config(data); + ret = bme680_chip_config(data); if (ret < 0) { - dev_err(dev, "failed to set gas config data\n"); + dev_err(dev, "failed to set chip_config data\n"); return ret; } - ret = bme680_read_calib(data, &data->bme680); + ret = bme680_gas_config(data); if (ret < 0) { - dev_err(dev, - "failed to read calibration coefficients at probe\n"); + dev_err(dev, "failed to set gas config data\n"); return ret; } From patchwork Mon May 27 18:38:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675693 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 7C26A167DA0; Mon, 27 May 2024 18:38:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835110; cv=none; b=ajGDqUbLraT65OL8qAVruahH0XrB1mJ+jRO4lVES5r0gsOiwNqE4cc2V7sKFlNiCgV2MJkzejYHjWeG4+MflN/PzT0QP2CSUOyvRx25UQxuG4A7A5JxeKpEWmJg6PkiAJ50Zsz8rB1E0mYpW+pBDo3PZISDVpsfC1pXCxaMUh4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835110; c=relaxed/simple; bh=07ieVIzyDj0NiEB/B7poc8uFFqzs0xmcNVnn7RCMamk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DLWG+WYphBdgS/uPFGZlYRShYz25NonJecfpoiv2Im7PzWsQUsdD1VHCUOIpZ6u4GwlByEG+q9StbYcgigFy/oaMtF7YyMuUXXXU1RMxA+ItSwf7KeSSioticb3SMm9LxoyXqIRj15cgCWfvlYdxNeu99HSLhxx+sG1nQUorO7E= 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=lsGLLUZo; arc=none smtp.client-ip=209.85.218.50 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="lsGLLUZo" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a6265d3ccf7so10284966b.0; Mon, 27 May 2024 11:38:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835107; x=1717439907; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8ewZ9drzmQCFjZnBVwS6fu3g7oZgLJYSUNUhMXTXoqM=; b=lsGLLUZo3dyssiMbqpo59W5Ep/d1HpDF93C4Q1Yw8S8IsfoOiHNV2wtcuOVAPfQB41 GdT48Z5HfjKS5FbbASmAyOQVAqqEBAf4AXFvStfoKAmiSTxw9njAbCD2YQiMzVi/g7Sh +/ANDXR//mQJiMrlgru73g5SSQrZMEcnTp6qnkA8OpfQ0npQMVUO3F04BAA/fhLHsy2Y wjZy5/WDgn4fqkcvs7GcK8K6AE6teQgLvOhA2EifPTmNu/4eQrtQ8ikQ8s8pgyaM1ei6 3IYG+ToKTpQbC0r6o6n/Vaksb6nto9IsbL0/1mJ+SlCRdCs20m9YUbE+telRe+ByPnvX LbuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835107; x=1717439907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8ewZ9drzmQCFjZnBVwS6fu3g7oZgLJYSUNUhMXTXoqM=; b=hSIA/2oHX7V1/N4hmcy1Biq4BibrSMjWmLbxuPj4awnBtFa2fOVQxw3k6+eAIuENiy KTh+McqioJzY80d95vFvJllOXZ/vIqp9wsINCnk4yTTVxwH6pm5xFHSpBOEWf3O3OsGT l2b1bWccyuUU13A01N1gwHUyibnp/J59YFsyr/Xhy/pC4cIGFL+G+EsWWiizwvbYHOSu HpoxcV/dlUsYP0KhDBOjVRrONJhQm1IZjRu2d7ln7tpKc6LVzzogAQb7OF11o122l5X2 7mr2myfC+lSES8RjcYhWO0Shs8EknVsB+PpLjyftwedB3SvTkWyBTjAEU2StQzND/UNa j4yw== X-Forwarded-Encrypted: i=1; AJvYcCXkuXTanRVxJ1OUGpWH+90K+e9SmzUWh2+h5QwAMVqibDEPdhloevVcyYOII4ufxnGquW2JdOUUKKCl+7F+wQdaSovMGmJtEwp01RGTrCpjyeuM/ISG9vCpj2zh7QmY/dayzcxYbI2K X-Gm-Message-State: AOJu0YxGMVQYA12To4sU1WM7wWxJelh/LxqXCjlVbMOec1xs3KHunisP rPvUZ5JHH3zAR+V6vwJqOfzaN7fODIvA5d3TtRiX00+a+qkxM41m X-Google-Smtp-Source: AGHT+IH3zMh39TGvtLPwdJYWm8/FOulO4cYYbbf2Ks7QcuH0MevnMQnKRqSHgmzPrGL92Bn4QpXFOw== X-Received: by 2002:a17:906:13c4:b0:a59:c39b:6bc3 with SMTP id a640c23a62f3a-a6264f0e4d6mr675934866b.49.1716835106799; Mon, 27 May 2024 11:38:26 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:26 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 15/17] iio: chemical: bme680: Remove redundant gas configuration Date: Mon, 27 May 2024 20:38:03 +0200 Message-Id: <20240527183805.311501-16-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 There is no need to explicitly configure the gas measurement registers every time a gas measurement takes place. These are initial configurations which are written in the beginning and they are not changed throughout the lifetime of the driver. If in the future, the device starts to support multiple configuration profiles with variable heater duration and heater temperature, then they could become members of the ->read_avail(). Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index afaa43ec3241..a91b15626ec8 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -669,13 +669,6 @@ static int bme680_read_gas(struct bme680_data *data, u16 adc_gas_res, gas_regs_val; u8 gas_range; - /* Set heater settings */ - ret = bme680_gas_config(data); - if (ret < 0) { - dev_err(dev, "failed to set gas config\n"); - return ret; - } - /* set forced mode to trigger measurement */ ret = bme680_set_mode(data, true); if (ret < 0) From patchwork Mon May 27 18:38:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675694 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 70A3B168C02; Mon, 27 May 2024 18:38:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835111; cv=none; b=FcQ2BZ5l3w6Fb2+6iuWoAsxQgqju6rMWbF6g8Ask24cb6GpNH93SZFbbiAVigxT5HdtEu48KXVkieYFm0VfLv6oVX1YljfgDIoGsgQSxvLfHehdgWKKw5XGrmy2xtUvl3N27leQ2xaGuK098hnME+IIGNwnEwp9gshPh/ft2cbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835111; c=relaxed/simple; bh=rzpH65TI21U5m7K2/XlUoxBtkbSqlLsZqVOhx4LGgm0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RwYjBpOcuJiVsEipt/WOTrrFR53GvjnrMGrlOoqTpFYFA/PQ56sMMLLDnxNHdTciadXQB4Wff2rBv5nIrhIJXaISfzWekWRBu9aq9b11wnukx25EHrp1kmvW2L4oxjeoi7QoGRuHZm8sRkzlJWcNyh22K76bWUxaV7rSPRlNB30= 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=c+AqzGBx; arc=none smtp.client-ip=209.85.218.42 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="c+AqzGBx" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a6265d3ccbdso8883866b.0; Mon, 27 May 2024 11:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835108; x=1717439908; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=C1d9d0lvub004aDn/nseYuqjTWsfZ06sG/wRTeZByZ0=; b=c+AqzGBxHHZKMbTgbM1mpVxKRibVdGvUNx1uswdewwsgWlFPCXuSnnTsrZRyqSPWZf jdOkUpEJ95af6163yYqDuDIRLCAzQmIMiQRpgx0EIuPSx3AmP1Wd044IOUtvMbCyvhbv 7ErFo0YFnxnuVJZmskVZoOvNG0DTKE7mYrOVtBTEB5+7pf7ZWCFn2ns3ZGJnT8ZEon1K V1AlwUij7Xa9/ENxLOAi5VMlToC8Lw35CL7W2uo0x4JoiZRlORXSUUNPGytO5/YOQMHs R1SCAW0dvNwMiYNAI4mR2dofyL352MP+ZqRrQWxxflLIjPwm2Z8LiAobQ7EArQDh31ox uGYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835108; x=1717439908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C1d9d0lvub004aDn/nseYuqjTWsfZ06sG/wRTeZByZ0=; b=wax8t17MzpcEbW3fdji2mLL0sl/HAVzBh6ahdlCRbQkP1CW+IoVXa3Ltq47gNCPxNC 8CWdY2o8O89FECkFS9qLnzwwzaBjD4n/iLyj4rTItwhREOn/KvL03oyRXQW07jc7IaMo rIcpRHSa8nSWvn1j7dQOJDbmitEIaltI/Ih27UX/OGURics8ywBUlTJ5ERBXTS5PUBF/ Atk0caILwkrJ39Tdkr9QRnukzfHZaseuNPOwB1VtM7UiyEVyLWBoMus+SkPLf9AdcVzp Z5zLvwNtF6MJ/p7jgS0PgrFvite5NFZ0glrwvOLvW8F0l8JpTfbOjEpLNYE542JzR6iT m5qg== X-Forwarded-Encrypted: i=1; AJvYcCVi9tUd+CK9nvCzGpIb5nihMbiAmmh/tqXqXFKQJeo+1Z3blGR89GCaWWu+WBXe0SnysCr8KBsALKf8WZ1fz5dq8F9RSkoihsv2FeQtt2MShXo9LwzaBOCmIkNVnNLH4ejvPfy4a7dk X-Gm-Message-State: AOJu0YzrdoDo/crk4DEqwVfOI69RzUcCYJkxKzYb7g12m206AULWDYs0 83TdpKHB6gYiDX0bW8l2+FvO7aLhAeraHMme8klo+uEdXOvQciHB X-Google-Smtp-Source: AGHT+IFdpdfIrm/Ss6ITkoo/AI/NE/vDUJhSCtwQ5mjzNPn3DJ4Kkj3Cy/HQVY1DiB2ruqUg3FM4kA== X-Received: by 2002:a17:906:c0d3:b0:a59:c2c3:bb45 with SMTP id a640c23a62f3a-a6265112b00mr714904366b.56.1716835107827; Mon, 27 May 2024 11:38:27 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:27 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 16/17] iio: chemical: bme680: Move forced mode setup in ->read_raw() Date: Mon, 27 May 2024 20:38:04 +0200 Message-Id: <20240527183805.311501-17-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Whenever the sensor is set to forced mode, a TPHG cycle is triggered and the values of temperature, pressure, humidity and gas become ready to be read. The setup of the forced mode to trigger measurements was located inside the read_{temp/gas}() functions. This was not posing a functional problem since read_{humid/press}() are internally calling read_temp() so the forced mode is set through this call. This is not very clear and it is kind of hidden that regardless of the measurement, the setup of the forced mode needs to happen before any measurement. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index a91b15626ec8..8f977667249b 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -560,13 +560,6 @@ static int bme680_read_temp(struct bme680_data *data, int *val) u32 adc_temp; s16 comp_temp; - /* set forced mode to trigger measurement */ - ret = bme680_set_mode(data, true); - if (ret < 0) - return ret; - - bme680_wait_for_eoc(data); - ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, data->buf, BME680_TEMP_NUM_BYTES); if (ret < 0) { @@ -669,13 +662,6 @@ static int bme680_read_gas(struct bme680_data *data, u16 adc_gas_res, gas_regs_val; u8 gas_range; - /* set forced mode to trigger measurement */ - ret = bme680_set_mode(data, true); - if (ret < 0) - return ret; - - bme680_wait_for_eoc(data); - ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &data->check); if (data->check & BME680_GAS_MEAS_BIT) { dev_err(dev, "gas measurement incomplete\n"); @@ -713,9 +699,17 @@ static int bme680_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct bme680_data *data = iio_priv(indio_dev); + int ret; guard(mutex)(&data->lock); + /* set forced mode to trigger measurement */ + ret = bme680_set_mode(data, true); + if (ret < 0) + return ret; + + bme680_wait_for_eoc(data); + switch (mask) { case IIO_CHAN_INFO_PROCESSED: switch (chan->type) { From patchwork Mon May 27 18:38:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13675695 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 5F086168C29; Mon, 27 May 2024 18:38:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835112; cv=none; b=epAMUYbjWsOo0fXtOpo91vhfWQgQgj+gwC9InHxpVSzv2FUAKboXG3CG77XoPaTAqruffP4M8KGlB9X0/lUWwXB/f2o+kQQym3jvh7uEQKRooHx0SIcFJ3AcA2oQsKz3/HinDb8OLr71wxCHZUOWC3dCkjBw0rHNDZgQAnRh8Dg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716835112; c=relaxed/simple; bh=Q2PlA0hiHKYNxsXSB+MV8bzWdduB4sQHpHLyCbabfZk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EEVWZO0LI+hTkxyi4LM9MCivr1nmMbFed+NCv3lcVps+3ED4wH+Pwp93hqj4rTvvuJtlyuqP6aHunP/T//4Wv/YAwiH7lmDtUK4S3KGyM19nVnVmv5ZY+ouE4VMBKZpXt88qqnWda8E6o665SGKkTKCgARo/f64JomSJs7lofdU= 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=Cd0Rn0Sw; arc=none smtp.client-ip=209.85.218.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="Cd0Rn0Sw" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a5a89787ea4so7555466b.2; Mon, 27 May 2024 11:38:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716835109; x=1717439909; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zx/kAsdeMiTjNQrNc9mf98y9EcqJqfG2NikyGa/ZpqY=; b=Cd0Rn0Sw7CutXsCY7mWmg0tEiBiWuok9AJ7Xp6equk5V3Ds9Aug4tfIoYSVeIS4bu3 AS+nryGYWPU7t3rfMACpDrsPgF8klr1mfGHDeNdeRSt099C7UIuVJxMFBZdHKOIsdHrb L7XeX49BYahiMsWuWZ07YuBRw0qqmmF2eCeOTBQ/791+xY3uI61SMuoE/6L277/5u1ED PP4sKJ6Id+e79lCqW+60mOWvOtGh8d72iHtuyUI+2wv/koKviAczbbkoNaLDLjGM/dbb aU7NOyFbMWlYegmLt+hg9c1RITcJTus6PlJ9/ailUzV4zhU3B5WHEmgmXIeDo5kml9Id 9C/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716835109; x=1717439909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zx/kAsdeMiTjNQrNc9mf98y9EcqJqfG2NikyGa/ZpqY=; b=XjTsYnvCzPib6ZsgE4FjwA8pqvkWWtdEdrOZJen4EQOlF3ctZLFs7kyw9JeMYR00L0 eL+3o5KNYreCqt9fqLQeC1NqRvaennc7K3DEv7mIaBJS76f7OrOPjnRnhbbfLkpSxbWa czsXw/0BBML+cWZoVzXctx8Q6yDGIEkN8/r4D9ptDjqx9ET4tzGA9A5DjBOaQ4/PUOew OqD6oam8H0Mo4RD6B/8PlAaHIle2WgTbZNMOoEzrUZFIjuZolpNCWLiqASu7b5GAgImC yhyEf2Dp1/immPl/dV2rD0I0TT0IXoVDTtS9GAQTw5+UkQJPnW/3q8rLwWRvkkcaiksl DvTQ== X-Forwarded-Encrypted: i=1; AJvYcCVuJBlOIU1Vk0lTVdhifR1hN83qB7HoU9jpSVgxx1fSao7fymbe01KgPuS0XlmX2uLhKv7fC7+o7MnlbIuBLYhORCSJij51rpi+l7q7MySZFmQPE4fs8KKOo1ELXEF5lIPquLd/kg1r X-Gm-Message-State: AOJu0YwD/FfQSBKGWNWYuSuSxjxJG75PEH4VIN3ksPN37W+Vs/OqQ7et lSgvrquMRQg+WYPtJ7vV7dX5gWSHtQRt+d904h2SM6+VYmeOnD+PkMj/tw== X-Google-Smtp-Source: AGHT+IE1tKzJqbfjBH26TaM1koLxePkYTkuUtXN4w2h0H1fvC6I15wD2F+0d57Y/rydbL0hbWVPhew== X-Received: by 2002:a17:906:6b1b:b0:a59:ee81:fd68 with SMTP id a640c23a62f3a-a626525cd08mr688673366b.71.1716835108688; Mon, 27 May 2024 11:38:28 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:4b45:3774:6be0:a177]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cc52398sm513825266b.105.2024.05.27.11.38.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 May 2024 11:38:28 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org, lars@metafoo.de Cc: himanshujha199640@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasileios Amoiridis Subject: [PATCH v1 17/17] iio: chemical: bme680: Refactorize reading functions Date: Mon, 27 May 2024 20:38:05 +0200 Message-Id: <20240527183805.311501-18-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527183805.311501-1-vassilisamir@gmail.com> References: <20240527183805.311501-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The reading of the pressure and humidity value, requires an update of the t_fine variable which happens by reading the temperature value. So the bme680_read_{press/humid}() functions of the above sensors are internally calling the equivalent bme680_read_temp() function in order to update the t_fine value. By just looking at the code this relation is a bit hidden and is not easy to understand why those channels are not independent. This commit tries to clear these thing a bit by splitting the bme680_{read/compensate}_{temp/press/humid}() to the following: i. bme680_read_{temp/press/humid}_adc(): read the raw value from the sensor. ii. bme680_calc_t_fine(): calculate the t_fine variable. iii. bme680_get_t_fine(): get the t_fine variable. iv. bme680_compensate_{temp/press/humid}(): compensate the adc values and return the calculated value. v. bme680_read_{temp/press/humid}(): combine calls of the aforementioned functions to return the requested value. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 192 +++++++++++++++++------------ 1 file changed, 116 insertions(+), 76 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 8f977667249b..cfcb6f791517 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -104,11 +104,6 @@ struct bme680_data { u8 oversampling_humid; u16 heater_dur; u16 heater_temp; - /* - * Carryover value from temperature conversion, used in pressure - * and humidity compensation calculations. - */ - s32 t_fine; /* * DMA (thus cache coherency maintenance) may require the @@ -241,6 +236,31 @@ static int bme680_read_calib(struct bme680_data *data, return 0; } +static int bme680_read_temp_adc(struct bme680_data *data, u32 *adc_temp) +{ + struct device *dev = regmap_get_device(data->regmap); + u32 value_temp; + int ret; + + ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, + data->buf, BME680_TEMP_NUM_BYTES); + if (ret < 0) { + dev_err(dev, "failed to read temperature\n"); + return ret; + } + + value_temp = FIELD_GET(BME680_MEAS_TRIM_MASK, + get_unaligned_be24(data->buf)); + if (value_temp == BME680_MEAS_SKIPPED) { + /* reading was skipped */ + dev_err(dev, "reading temperature skipped\n"); + return -EINVAL; + } + *adc_temp = value_temp; + + return 0; +} + /* * Taken from Bosch BME680 API: * https://github.com/BoschSensortec/BME680_driver/blob/63bb5336/bme680.c#L876 @@ -248,12 +268,10 @@ static int bme680_read_calib(struct bme680_data *data, * Returns temperature measurement in DegC, resolutions is 0.01 DegC. Therefore, * output value of "3233" represents 32.33 DegC. */ -static s16 bme680_compensate_temp(struct bme680_data *data, - u32 adc_temp) +static s32 bme680_calc_t_fine(struct bme680_data *data, u32 adc_temp) { struct bme680_calib *calib = &data->bme680; s64 var1, var2, var3; - s16 calc_temp; /* If the calibration is invalid, attempt to reload it */ if (!calib->par_t2) @@ -263,10 +281,52 @@ static s16 bme680_compensate_temp(struct bme680_data *data, var2 = (var1 * calib->par_t2) >> 11; var3 = ((var1 >> 1) * (var1 >> 1)) >> 12; var3 = (var3 * ((s32)calib->par_t3 << 4)) >> 14; - data->t_fine = var2 + var3; - calc_temp = (data->t_fine * 5 + 128) >> 8; + return var2 + var3; /* t_fine = var2 + var3 */ +} - return calc_temp; +static int bme680_get_t_fine(struct bme680_data *data, s32 *t_fine) +{ + u32 adc_temp; + int ret; + + ret = bme680_read_temp_adc(data, &adc_temp); + if (ret) + return ret; + + *t_fine = bme680_calc_t_fine(data, adc_temp); + + return 0; +} + +static s16 bme680_compensate_temp(struct bme680_data *data, + u32 adc_temp) +{ + return (bme680_calc_t_fine(data, adc_temp) * 5 + 128) / 256; +} + +static int bme680_read_press_adc(struct bme680_data *data, u32 *adc_press) +{ + struct device *dev = regmap_get_device(data->regmap); + u32 value_press; + int ret; + + ret = regmap_bulk_read(data->regmap, BME680_REG_PRESS_MSB, + data->buf, BME680_PRESS_NUM_BYTES); + if (ret < 0) { + dev_err(dev, "failed to read pressure\n"); + return ret; + } + + value_press = FIELD_GET(BME680_MEAS_TRIM_MASK, + get_unaligned_be24(data->buf)); + if (value_press == BME680_MEAS_SKIPPED) { + /* reading was skipped */ + dev_err(dev, "reading pressure skipped\n"); + return -EINVAL; + } + *adc_press = value_press; + + return 0; } /* @@ -277,12 +337,12 @@ static s16 bme680_compensate_temp(struct bme680_data *data, * 97356 Pa = 973.56 hPa. */ static u32 bme680_compensate_press(struct bme680_data *data, - u32 adc_press) + u32 adc_press, s32 t_fine) { struct bme680_calib *calib = &data->bme680; s32 var1, var2, var3, press_comp; - var1 = (data->t_fine >> 1) - 64000; + var1 = (t_fine >> 1) - 64000; var2 = ((((var1 >> 2) * (var1 >> 2)) >> 11) * calib->par_p6) >> 2; var2 = var2 + (var1 * calib->par_p5 << 1); var2 = (var2 >> 2) + ((s32)calib->par_p4 << 16); @@ -310,6 +370,30 @@ static u32 bme680_compensate_press(struct bme680_data *data, return press_comp; } +static int bme680_read_humid_adc(struct bme680_data *data, u32 *adc_humidity) +{ + struct device *dev = regmap_get_device(data->regmap); + u32 value_humidity; + int ret; + + ret = regmap_bulk_read(data->regmap, BME680_REG_HUMIDITY_MSB, + &data->be16, BME680_HUMID_NUM_BYTES); + if (ret < 0) { + dev_err(dev, "failed to read humidity\n"); + return ret; + } + + value_humidity = be16_to_cpu(data->be16); + if (value_humidity == BME680_MEAS_SKIPPED) { + /* reading was skipped */ + dev_err(dev, "reading humidity skipped\n"); + return -EINVAL; + } + *adc_humidity = value_humidity; + + return 0; +} + /* * Taken from Bosch BME680 API: * https://github.com/BoschSensortec/BME680_driver/blob/63bb5336/bme680.c#L937 @@ -318,12 +402,12 @@ static u32 bme680_compensate_press(struct bme680_data *data, * value of "43215" represents 43.215 %rH. */ static u32 bme680_compensate_humid(struct bme680_data *data, - u16 adc_humid) + u16 adc_humid, s32 t_fine) { struct bme680_calib *calib = &data->bme680; s32 var1, var2, var3, var4, var5, var6, temp_scaled, calc_hum; - temp_scaled = (data->t_fine * 5 + 128) >> 8; + temp_scaled = (t_fine * 5 + 128) >> 8; var1 = (adc_humid - (((s32)calib->par_h1 * 16))) - (((temp_scaled * calib->par_h3) / 100) >> 1); var2 = (calib->par_h2 * @@ -555,68 +639,35 @@ static int bme680_gas_config(struct bme680_data *data) static int bme680_read_temp(struct bme680_data *data, int *val) { - struct device *dev = regmap_get_device(data->regmap); int ret; u32 adc_temp; s16 comp_temp; - ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, - data->buf, BME680_TEMP_NUM_BYTES); - if (ret < 0) { - dev_err(dev, "failed to read temperature\n"); + ret = bme680_read_temp_adc(data, &adc_temp); + if (ret) return ret; - } - adc_temp = FIELD_GET(BME680_MEAS_TRIM_MASK, - get_unaligned_be24(data->buf)); - if (adc_temp == BME680_MEAS_SKIPPED) { - /* reading was skipped */ - dev_err(dev, "reading temperature skipped\n"); - return -EINVAL; - } comp_temp = bme680_compensate_temp(data, adc_temp); - /* - * val might be NULL if we're called by the read_press/read_humid - * routine which is called to get t_fine value used in - * compensate_press/compensate_humid to get compensated - * pressure/humidity readings. - */ - if (val) { - *val = comp_temp * 10; /* Centidegrees to millidegrees */ - return IIO_VAL_INT; - } - - return ret; + *val = comp_temp * 10; /* Centidegrees to millidegrees */ + return IIO_VAL_INT; } static int bme680_read_press(struct bme680_data *data, int *val, int *val2) { - struct device *dev = regmap_get_device(data->regmap); int ret; u32 adc_press; + s32 t_fine; - /* Read and compensate temperature to get a reading of t_fine */ - ret = bme680_read_temp(data, NULL); - if (ret < 0) + ret = bme680_get_t_fine(data, &t_fine); + if (ret) return ret; - ret = regmap_bulk_read(data->regmap, BME680_REG_PRESS_MSB, - data->buf, BME680_PRESS_NUM_BYTES); - if (ret < 0) { - dev_err(dev, "failed to read pressure\n"); + ret = bme680_read_press_adc(data, &adc_press); + if (ret) return ret; - } - adc_press = FIELD_GET(BME680_MEAS_TRIM_MASK, - get_unaligned_be24(data->buf)); - if (adc_press == BME680_MEAS_SKIPPED) { - /* reading was skipped */ - dev_err(dev, "reading pressure skipped\n"); - return -EINVAL; - } - - *val = bme680_compensate_press(data, adc_press); + *val = bme680_compensate_press(data, adc_press, t_fine); *val2 = 1000; return IIO_VAL_FRACTIONAL; } @@ -624,30 +675,19 @@ static int bme680_read_press(struct bme680_data *data, static int bme680_read_humid(struct bme680_data *data, int *val, int *val2) { - struct device *dev = regmap_get_device(data->regmap); int ret; - u16 adc_humidity; - u32 comp_humidity; + u32 adc_humidity, comp_humidity; + s32 t_fine; - /* Read and compensate temperature to get a reading of t_fine */ - ret = bme680_read_temp(data, NULL); - if (ret < 0) + ret = bme680_get_t_fine(data, &t_fine); + if (ret) return ret; - ret = regmap_bulk_read(data->regmap, BME680_REG_HUMIDITY_MSB, - &data->be16, BME680_HUMID_NUM_BYTES); - if (ret < 0) { - dev_err(dev, "failed to read humidity\n"); + ret = bme680_read_humid_adc(data, &adc_humidity); + if (ret) return ret; - } - adc_humidity = be16_to_cpu(data->be16); - if (adc_humidity == BME680_MEAS_SKIPPED) { - /* reading was skipped */ - dev_err(dev, "reading humidity skipped\n"); - return -EINVAL; - } - comp_humidity = bme680_compensate_humid(data, adc_humidity); + comp_humidity = bme680_compensate_humid(data, adc_humidity, t_fine); *val = comp_humidity; *val2 = 1000;