From patchwork Sun Jun 9 23:38:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691408 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 07C0045BEF; Sun, 9 Jun 2024 23:38:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976314; cv=none; b=C6haL08SYP5l5gK+pJk2wALgh6bzSGB7GavGb3Wav4qSMZurVwylYzVPBUKwq81EA4Qr5Mxm+QK/2uypRivTU4sMVvRHI5tg2pDipbVVj7nnfGX67tT+kymMm3J0YB4Y4DZDXalbwMc/a71Zr5roiuPsRT7ZCuI5cIAqngTsNac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976314; c=relaxed/simple; bh=/HIExraWSYrCMoCk7nOoIvhEXeD3HpJ2VyeOWxhE7ww=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HlJ3NL92ADVbihr12xchdLOR+UiRYxYRYOMsUcjhqnj/p2uOYykkciPxH2Lq4yAMKmUdL4OkIxSqaz9PtSe33E5PFE9WmE4fU+xulQaTK8h034claPL5/5mCI4+mJsf+MPaIHXr7kYmKHJRk0fW4o8cRWMObZwdMo+RUyNabkwU= 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=FdJHhy5q; arc=none smtp.client-ip=209.85.218.54 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="FdJHhy5q" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a6ef8bf500dso174193466b.0; Sun, 09 Jun 2024 16:38:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976311; x=1718581111; 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=qriIk15uECH849+rrPmyWW+JdSulOHZnSzKJ2HLoQPc=; b=FdJHhy5qZz0dYz9CeDIv94IZ1PwKHU8v6U0j6aMRWhZYDRLc/zk2l0hyZyk3BnlzGR 2i6numns0GStILgXJisp6kLBSnDM8LbxIOS+7MKB5sX3lFF1i1mw9G7xt0MQrX4hJ1/Q Mci33uNwcwG9ABTo3538A1SUqSsvylDb+/hREv5dvcfeDMxQ+vYPAiGX9cmUm0J1lGHW PDWIOqo855cnu4qYl4Vcx3rsPyh1iki+iEeXLAWwxDBzDszWC1UHba6YrITXsv8FA7Xv D8pnR127+gojB6hlpMH7y6pmUwl6sWLLgRXd6MnyP6WMlx2C9oqnWFIz90+1B/aCFhic 4fRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976311; x=1718581111; 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=qriIk15uECH849+rrPmyWW+JdSulOHZnSzKJ2HLoQPc=; b=lBZPFLJoWwsLsAOazsm9BAhOIP5vtx6oHsThPIQhiwwxdwAcbEJtLegqHNypuhqfOn 2/b2AsOcZ7efYPZsERS3jWbEEAYcz6urNVM7oFZLJgjjKoCY7e4tE6YNmPj+EjNjA3By A2xQtryXtWHfqHYggVTs75B20BJdgBpUwLYbbRSChVg+yCpRVhseWfqlM1+oeOINVyQQ N2fCZf/1wqqo/1I0rW3uUmjVcwZEurBBU5rE/sF9out22Y1aBgqmQYplaxZRzd/BE5pK usMJXZRY9WyClk7eCwb36JOnQBOCRu+rCUHCeeG8gTrJBY1x0zQneTDrf9bQ2nKuIfZm zV1Q== X-Forwarded-Encrypted: i=1; AJvYcCVRSosD+QhwEHeGCYAQSYY3/F+dBvmmGhqDWeYHe/cUM60Uj4cDJoX7V1ozshK0WXgs1Y9ndSwWkJRDJlmII2raPgDh0u/DsFoGgkvKz5CtnQW5JfewflTcLqF9x9aI5qlR/OvB2jur X-Gm-Message-State: AOJu0YwIrY6hfM2oD10JXXBDEnS6R8ocNPWaEsGF3F3M3uv+tq7MaVan YPCDzhZgxSTO7aB1Cgkc6W/u3oYrtC9DO+lSjUQgtdd5EMeTzI/i X-Google-Smtp-Source: AGHT+IERaB+Z/GAMpTRXxjz7QRhf2zYbS0Dm69EmyxWnI5cCUibMrTiOGvazxyNdYkcPuas2JmXErA== X-Received: by 2002:a17:906:2c16:b0:a68:a800:5f7e with SMTP id a640c23a62f3a-a6cd561f12cmr526136166b.10.1717976311357; Sun, 09 Jun 2024 16:38:31 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:30 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 01/15] iio: chemical: bme680: Fix read/write ops to device by adding mutexes Date: Mon, 10 Jun 2024 01:38:12 +0200 Message-Id: <20240609233826.330516-2-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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. Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") 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 500f56834b01..a6bf689833da 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; /* Protect multiple serial R/W ops to device. */ u8 oversampling_temp; u8 oversampling_press; u8 oversampling_humid; @@ -827,6 +829,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) { @@ -871,6 +875,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; @@ -967,6 +973,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 Sun Jun 9 23:38:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691409 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 4F3205466B; Sun, 9 Jun 2024 23:38:34 +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=1717976315; cv=none; b=LkGoQMYD7w47bDmU+lgH8No9KGTym6OIH37RoSLuTECDlYfCASgtPDQlnEP/PV6o9AsKb0HKeqyPiHnLmf6feU6ax4rqqv6lknZsSeu+7ucpeWQP/TTO+f+Jh5gJOA9d6Wbav4jgl354JAsOLI15R0hfpBWqXZaIT276LsGDbLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976315; c=relaxed/simple; bh=WZezGHBW7lNuyA2BtM03KIaX98EoYUexUTzkAk/OvKs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aMOzu8v1KXwo7W4np/Q8dnvSGzNYY8Kq4zkhJiXuDvNZKtxjPxmf8vRhfEdqOqp8BLlUUm0rg0QZuwylhzj81hzOvSACiHlo0YKQlUH3mLv8Al9rZXphwRreux0SB2R9nzU75be9ckYXfykQJQTVgdo0DkBRl1qZWFkbfabq7xg= 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=llb0y+j3; 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="llb0y+j3" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-a6f176c5c10so68238966b.2; Sun, 09 Jun 2024 16:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976313; x=1718581113; 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=/p69KGwneGFw5Zvl1/Wy4CEQETIxZiMeX9Wp/4PkCyA=; b=llb0y+j3kGpe7ROwc84Peo2H2wFDO1AX8mylfsPq3NnTzQlI0bnU6DoKY6Xj22Q9Vo JZK/0PhLCxvTbfAYj2wuPXFPZvbT2TyavcbGjqtuyJBH0WP8tKiHcdVjpOWy9ncJE5tD kccwAL2Z3xMRiGXt/SfK6uW3VV0UAy4/DDSmPVT6aMRFWgcmVlmNm3JKwU88WBB6eBLT 2fd+s7NjkKJ5x2/YbTonsSOak3h/LAscT0SObcm93A4DyDs+F8YJsaSFoW0sGV6zF52C baHZea+G+gjy3/csgiXT+xAAJGrctNa1Um3EIKle3FI9Xohm0aVmsTERUd4mSogdARU9 OBOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976313; x=1718581113; 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=/p69KGwneGFw5Zvl1/Wy4CEQETIxZiMeX9Wp/4PkCyA=; b=OafRr1G4CVSHKkP8O75KPJU2M85LVlHw4XTy/+9rUDqCdaHbmGnn5Oh8a0ZvR4um/+ NGJ5iW/anZN+FR6YFztOIVyLnw5ZWpd8o77J8c7YE0V7xIiCm1ynYMvkro+EwSD42+EV sd/fUqKspBl4oyA4G03VMtuYVdCgrvPWCyR1S2QcO5b7hA+WnDFtSyq9w1X+vlhEbxxI lhvXeTs82LVUsh6jsK2FAj3aqHY3aHGllk1NumI58ikP4NSsxou8A2VbZ02nAjslAdsf ZRKFfwAmg4xcXLZKHjpIIQn4C/Wna8h5DsMpOG/SgTtr+iiH0qUV9GWJ5L6aPVfcyWS6 dzWQ== X-Forwarded-Encrypted: i=1; AJvYcCUa/lnz1aaCFVKsUZeexycAj47tk1Zy5YvyBvnijIdfTyIXFQrLOY9qRx09kKO0wZjieIUOpQK2KO2V5ewbrNF1w3clTL3J4nH3s1Tkdhp0mBvbkZNij2b786dgis4AxFZC6PVqPTF5 X-Gm-Message-State: AOJu0YzsDGscmGn0V+/nQ05wR/tmZ/g0RvsrNI8i2YULeSEwqhPZSp1U ZhmM2Y2bc2K0gfhWppsmMvWWI+sgSDeRgaQqIYi9+wPey2I/Iq+V X-Google-Smtp-Source: AGHT+IGnu3PtZMC6ERAafp1iP7LLpTPSlOyVK9X8ODeRZsSyRx07Tg2xlc7JinZqiXl4ANCiHcXt5w== X-Received: by 2002:a17:906:6bd5:b0:a6f:1244:29f1 with SMTP id a640c23a62f3a-a6f1244480emr168827266b.55.1717976312564; Sun, 09 Jun 2024 16:38:32 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:31 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 02/15] iio: chemical: bme680: Fix typo in define Date: Mon, 10 Jun 2024 01:38:13 +0200 Message-Id: <20240609233826.330516-3-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 f959252a4fe6..c51bf2bdf504 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 a6bf689833da..c1a9ead1397e 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -740,7 +740,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 Sun Jun 9 23:38:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691410 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 3BF3055897; Sun, 9 Jun 2024 23:38:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976316; cv=none; b=EZhkWMIaSAKk2SvkgXOqZ2mPm2wQbzt3aFT/ocsNeaMCi6nEmKhFKiywsoXH2woZhxfMTLOjprzaI4INFCHFASIGhay7Q8SN5ldPHpP9LKA8O/yiiuFUi5IzcJ98aXlU+mSEabpbd6/XninHFJNFEPOow4lpW0E0a1Fh+wuknr4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976316; c=relaxed/simple; bh=1pI+RskQLYcBfoBZQPErDhhZ4If3D3khsanqjKzqRIk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HSx1fyXwX/b7gilACAgSv1gxzosLtIzhiUY5gbJRgO45xgBeO5Y+B71TMsRxf8g6Wh7H8hFWFaBoR/uTFhDaLYr08YWUGSL7tbM3QO3qAKz0JYrRHYGuHEbzEo4xK0yy3/kfyVZEWbMShv/4lby2m4yVkVi3nyKL50S6Olcb91k= 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=dsmjDCgz; arc=none smtp.client-ip=209.85.218.54 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="dsmjDCgz" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a6265d3ba8fso387154166b.0; Sun, 09 Jun 2024 16:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976313; x=1718581113; 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=UmGe6IgaisQ6yWQUR4FLY7pJHbk0UKhP5AWLH74fYp0=; b=dsmjDCgzjwv6Jmcgif+udcZyIXTI1wXApTTFr5cZsfxJrsX7RgILkMtpxSRMoDLehJ 8Q10NHkfbTHd3MLOmYHy6W4bqG8dnuY+Nde3QmFnypFRiZOOJ5tJ7nRu6UvboT2mu+Oe NSdMoXEqBZJ2aW+cf1YgFiPRh+yCIqcrRqcSSQKbtx1Td1uya7+J3182pDcno5AflMc4 hFn9HTLdrcMFaA0a370DXwCaJv0MWIRN0GzwU/XbamEKUvojfghIw7dQIvkxpXM+bF4R fNEwp/YCz3BZVGX/QgzBAQ7/JgQG94xP/dgOcjp0uOTcBT9nE4cQSHoJa3vrTc7kCdc+ sQHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976313; x=1718581113; 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=UmGe6IgaisQ6yWQUR4FLY7pJHbk0UKhP5AWLH74fYp0=; b=iqN+7xzGdkQuUb+AS12rBNpo0KcyEAu1IUSVF4pCME2f+B+zK4LrKRGKoYFK6w1XB3 5I/kR8qNUP0La/DS6CkY9FhV49dJMBwI2JIY64rnlHvXgPPgeNEVFTw9oYdIcBsmdzx5 0STG2Y9NK445SEtDnxUpFNqeJkAFyxoiQ/BqGZos4dQBYdTLb61i2CvUEb22b5H9U/eH auTZqQJwJ7KSplYcZ3rYa+FsUTdz9KoGqJ03DZlYP9uXOSnZzQMY1QajutIJSXrDzXO9 TbvldOeEbaqxzmjKBASrQ2pqzwSYjNsY9P9hHS/6zHTBK60VqQaH/Bx2gM99sN+dkTx7 wC9A== X-Forwarded-Encrypted: i=1; AJvYcCUbIJn33V3xeO3pi46MRZopqdJ4asbqNOKzZN+YFAs0KTywsxRAPQ9T9yt5YXxW9o5R2Hz0hHvd7g8cb8byjyxXlbtjU9lZ5gjla61w/gTsYArbHQDG2q61xL7eUFWzCw9+LfMCPlH9 X-Gm-Message-State: AOJu0Yz8cJmpAilOGry7HI3jbtrwD9S9y0QC2LHqXD3+qtFpBy5USPY7 /+yShOj2Od8L755hbAGXBOAMw8W23XV31uYhBIp2egHlJStwBjdN X-Google-Smtp-Source: AGHT+IEO8c9kuDxYfO+kLN5cE7CdYnL2Lshd1/TpbN4uKYjiE4UXKqPgWt/IEBexslWnZvaW2oL7pA== X-Received: by 2002:a17:906:fd85:b0:a5c:fc25:2730 with SMTP id a640c23a62f3a-a6cd560faa1mr633129166b.4.1717976313579; Sun, 09 Jun 2024 16:38:33 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:33 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 03/15] iio: chemical: bme680: Drop unnecessary casts and correct adc data types Date: Mon, 10 Jun 2024 01:38:14 +0200 Message-Id: <20240609233826.330516-4-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 c1a9ead1397e..577237d4c9f3 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; @@ -654,7 +654,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 */ @@ -700,7 +700,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); @@ -732,7 +732,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 Sun Jun 9 23:38:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691411 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.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 EA5215FBB1; Sun, 9 Jun 2024 23:38:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976318; cv=none; b=RRrfVofyR5BaiC0wgK8dp0lmPrJ6i3pIjMSzPLc6hnH8ImMlLCNlckFRfdkHFjrVC0w8QjGdks/277oYtqDzdwRFobCuhZijPAtplurt7EebnfRhHXm9Yegcx6FRotujGavDpbbz/A1z6X21NOrqsmJ88Y4ATczEH+szL6UxLZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976318; c=relaxed/simple; bh=DQy++SwXyATSNKkyA5DvKAjxCFRXT1GN9A5yTV1vq9Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FHo7IhKgk5DglKUBHwG9hvzGVxRxk4NJ4W1ytp0bNJLmyX6uuEnm53oHu00+gjR7QFUea8zx+N53X2TxgSrevLbq1+DuErV00FJZYqKwoFuNrG7TLa1SwR6b627+6dbHLvPc66FH+cCuecswOjnmoIEBdTBO/XAMuxAQPJ2yS6Y= 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=l/R97qGO; arc=none smtp.client-ip=209.85.167.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="l/R97qGO" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-52bc27cfb14so2661985e87.0; Sun, 09 Jun 2024 16:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976315; x=1718581115; 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=KNURLBgWnSUQosa2pT+J1wTI3cPFItjzm7xacdHoCD4=; b=l/R97qGOimH7HJ7u3k/wAs3wI2hAQlc7xk5q/fyEtHn+7AW9LNqixk96/zDO5COGDk MHUIn0xRtyw1KdOFNy0mCnXk/lwUJTVAiii/BikSsSnQfFtX+OwrVAyUVHfbgCQROpcR k+DueYT3T7IHuExWBmm0kv0nCrZhsbTdGyCAgSSfRGp+qaU0kcTVhZc1Qb9Xc5vcRhji wmxUNXp001nFIwlFgvQKQii4+RnqPgCUfNyqxAEUi+YVr87W8k9T+18kBU3YJonXNIPg VAX6qdHJg9fc7VqBTsRYkiw+w8DAjupDhD9Tk/B2RK7TX2lGCiNpulIx0KyZyHWKElxq 22QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976315; x=1718581115; 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=KNURLBgWnSUQosa2pT+J1wTI3cPFItjzm7xacdHoCD4=; b=Vn43bkPCp6jZUy20F4ixYMUFS3m0hChQNxhi72ze6dn7pvApKf7xn70zWKXRYIiJDO NUtxZEFkjS9A4hdFmbig7/qGwNiUaNPoPBGt/5/HkJHtxZAXx1n+pL9fX76Im54bk18p Qc8db949Sx/z1KX3lVu5ItXZoDX1q52J/saU2/fTT+hAXmSIcGAtA9mSs/AG4qxymgNw LRnu3rCTFea7ItmwB/lFu9PCdyf5wssDjIYcXGD0EivYc1yCzz3kV+N18nwP7sLcWEUj KO2RrBVKGjA2RmH+kMm8JUCCFctNDQRqymqK1Mc2Zbxg0iYSCqCF6Mf3YIb/jRmlfPuP ZwFw== X-Forwarded-Encrypted: i=1; AJvYcCWdxQRItT1WMjnjnpoEtc+za1grCAJEGhCcfO2pVxjnotT2ux9JCLYOVZMJgI/9U1g5EEevb0VPwQTqW4tr7ar/dmUdgMHTNWXPG4HKTOcZvgIzaKEvfroGAL9EhT8Xdd33mSe8Pokc X-Gm-Message-State: AOJu0YxmXjiMhYCWoVrFj+aMmN6TfDPOxdLUM6RmkBsLmTC19PIjaZbW wi1DAA37EMc33lfb2e3aLrfxzxQ90HZcfk/UbjqgHtPc/3KjbExf X-Google-Smtp-Source: AGHT+IFND5Z6f/9aKPFUiwMQsfgLqbd/KRcmJs+mbUCJFyTlV/mpznTwFixUq/bvRkAYzfc0lrTmhw== X-Received: by 2002:ac2:53a6:0:b0:52c:8517:c6ed with SMTP id 2adb3069b0e04-52c8517c80cmr1687525e87.0.1717976314741; Sun, 09 Jun 2024 16:38:34 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:34 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 04/15] iio: chemical: bme680: Remove remaining ACPI-only stuff Date: Mon, 10 Jun 2024 01:38:15 +0200 Message-Id: <20240609233826.330516-5-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 577237d4c9f3..1d2d5920fb23 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 @@ -927,17 +926,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) { @@ -969,9 +957,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 Sun Jun 9 23:38:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691412 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.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 E7E386F2E4; Sun, 9 Jun 2024 23:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976319; cv=none; b=p/MoPAz1aslsOX1x/f641SnlKgIS8EbU5ugHm/xW+yBPT/adVOCZ7C5OGNdbYzmZDgQXZe/uV9aZFnXzVo9mgeRpyuLZyIAjiAeSM1jM/k/ipQfgNkaFSUX04vRKriQAMnABTdXzkdpCYO0Pxg3FMpCKlWtvvl7OK/BPNo5Tagc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976319; c=relaxed/simple; bh=cnxU0cW6dA9oQSVUNgyXnbAhbuPZ6Vqr2TOidKbqI1w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uFCsaVQGSof7H7ZOibQlcNL7k16O3QVXYZWbMF1VJoRrb+iybkI2QG46sS7E2ONMQISpfsfm5XfeQEh7GQKuhuOM9inUa4B06Bz9o51iMGmFP4XxK8VFriL1oCk+BZC5jb8vn676S1pz3XFzAqo6POubOZFYnf7c6ylQyyTn4d8= 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=e1LMtBrU; arc=none smtp.client-ip=209.85.218.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="e1LMtBrU" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a6f0e153eddso134519166b.0; Sun, 09 Jun 2024 16:38:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976316; x=1718581116; 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=eQsAiNQAz1Nxjw9KXQ8hkttK+NyE4llnx54ninYy8Qo=; b=e1LMtBrUz6P5rV3fcWXBYgukJgwdu3dedgz+mA1w/4q+T7JINrUMy6rxyAUmViWIAv y+Me56X1zJ8FQcI17CdM7RYO4Oc8fZ84m1H9m9NrgTjXSLrXRKhxwAfA4RXd7x7zYW3B q4F7o5PZTSyKiinG/EdQQpWWIPpi0jtcV8XrZjB+wnz+yHxuo1OtiWDWK8T4+y3PHxAh 18YVdrbe+xn+z1hgaicENyv5PXRWBIbc5QKOswy1cKgJyi0FeQ78EzVXUSZJ/0cWIZmo ZNrrJ8CIdqWbebklNHruC4xIrkzHYgPyPr0s2oCMwe92gYrNaw6/VrVmTb24L1EbXHGn fPog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976316; x=1718581116; 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=eQsAiNQAz1Nxjw9KXQ8hkttK+NyE4llnx54ninYy8Qo=; b=KOb2fSoQUlxVYz+5i1lniP/a4HxmTSMjZz4+TG8GARNHZJW9WtzI6m2iNr3znwK50x tqXDBRtDrv5HLjrJXDAZCV2FvKIYR4vIx3uKTtI3doLMkvGyQUv0I3+bz+EKdiRSLz4o AAprRWFRSepfoBsQZUdlyjgEa3VhGv8XnUh1JjgQkZQibpFEMvwzgPOM89larirn+FNd g1Iz/BkGgglrCpn1E4uzq47Hl4uXhzHMgKXCu8FkbYVR2vLSeUrulaTxoI6p/4wghk+/ REJ598t04PfSbYIVCfX35SBJGDFHH5OX3ataeQSbkM20j5fg8J/cFzr5fOU5Q0Na09ja TrOw== X-Forwarded-Encrypted: i=1; AJvYcCV6KfDafBwoSuGJ2SgggiL74gQ6wOFW3ogIEExI/5DdQAoRtztPqw9VlujP4GUML53Rig8yXZBLXqoUK6I4DB6JNpMv5JEIRxzGGfckUvW4fys7NGVXJyK7DsaUvOwxV5CXc4y10WxE X-Gm-Message-State: AOJu0YzjBP6M+70BFiLBZmDTBStBA9zDRzw8iNlxPperZCukRy3QHqhf 1pW0iNODKHeTxdQWk5UnvkzkjNgdLLhyNmGG5wWCo9zSqp8uteYk X-Google-Smtp-Source: AGHT+IH9+BrmSmP1hF31a7kEHkjR6ax2MqEm0uMeHifRntTEjHYX/z0ENVV/SA+E47tueImsfbfm0Q== X-Received: by 2002:a17:906:a38f:b0:a6f:1e88:37c1 with SMTP id a640c23a62f3a-a6f1e883daemr83063966b.45.1717976316007; Sun, 09 Jun 2024 16:38:36 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:35 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 05/15] iio: chemical: bme680: Sort headers alphabetically Date: Mon, 10 Jun 2024 01:38:16 +0200 Message-Id: <20240609233826.330516-6-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 1d2d5920fb23..72bd5445b6c0 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 Sun Jun 9 23:38:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691413 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (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 5A1566F304; Sun, 9 Jun 2024 23:38:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976321; cv=none; b=YgYRXpwlCWaECCmW6IYnrhYEPS/s8E7CmUjeBrBtBQDH5q89amP8CQ6RcjFAVIdqm1sVfHQQKKxw4D7E5K4sbLqmYCQ6EmOeMW4WE53q+dddQYWkxLfyHTQKrDqax7DQqTQBsDVJrplHuXUVTo88qah8NvsSQUoLGuOnyhNQRU0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976321; c=relaxed/simple; bh=kT+N+A6B1z60I6KgFrmJu/OyAxrx0C8tvVp8Z/JEa84=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uw9HjnAgMKVzX05m7F24IJR5vQ3zwWs1mtRHSbio+wFx0ht5MFb5S/r0PAKa+kvZCB30dGrAJ7WrQ7Ez43s+e0stJIe9FmKodn/arhWB9uX6M5kTabqdYxHlvNdXv9Bq4x0IA8xJPLjSTrCNZ1PCwl94g45NAyw3/e5o+Ml9lSA= 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=f5WflYKU; arc=none smtp.client-ip=209.85.208.174 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="f5WflYKU" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2eabd22d441so61733621fa.2; Sun, 09 Jun 2024 16:38:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976317; x=1718581117; 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=0LfV168pmmLldnkKP0bzQoHl57vTq1AfdoTWFyVDYg4=; b=f5WflYKUpgPFTiEorjnk3MwvxCwiU+GvdPgAo8iqAPZubVPpxskfYiCjfJQj+ACGY3 wZJWiLXh2zkcQ7sp6Tg7j+iCcFpsDtXZl6gYrehOX2TGAF2YTcJXHUUscYpv9baTAOO8 sPhXHUiDPoaMl/vd1l9w+zNczCLIUr2XyKGQv3lJdtSFTEXNC2uDJRZq/k+XOVmB/FwT mRUfTtYPYbXYKKzRN0UTuOj+9HOCGB9NYaN+UjTuVY9fjtdQXhydeLg6PPP+I16tbzPq XEAzhip8vl2ZGW+kJOBu7fEJPybCtzMgD4jEybGLoAxsn+65GBv7drx6Gjn9GTcPjNKN AhBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976317; x=1718581117; 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=0LfV168pmmLldnkKP0bzQoHl57vTq1AfdoTWFyVDYg4=; b=Mh1nTgc4+4eB747sy7AhdC7cbpkQEuFqZnlTi9FpDUUJu74kuGHcEkw1VSp5LKhMJt 3H5Cg2lSHcpmGvsHQDxyhrpH4l+HoAc4Gc+xfUl7Vj8njXcd6+YmtX3ZMyQCcRyQvW5j x3b9+3xiCkvdT6W8+9uGlZpwOjvl//G40/VxJHqJB8Ar+QzUdww/XMS6ih0/Z7AJSl4Q VrxTOamq1PKEolLivU+RCqZvd7TSw8655YjXggR1ViGwwoK+eezBDkpPx038VY+X5zyh tdG4qg1NCKxCAQFeXKEWB40fk57XhLZiKKYqmavhh7n+evCEkrBkEOvFtP18Cf6RgdMK JsfA== X-Forwarded-Encrypted: i=1; AJvYcCUmpdMgNMR/lYQ4lldj92oaPBJIHZh1usCgv2cN1ofBtBP2T6GwOlv9QTQek24fsxeaLX1zJMOfN778iPt4AxiPcHVX/BlA+lcVFuzjneTprI+umH3Afc/WCQ+ZbXw41CiqtcgBOqAh X-Gm-Message-State: AOJu0YxJeZALHnt6tbokh5Hg6ooSa90dXgk4T9tQB10WG9OelThSOG0Q E4jBELqZ2dgY40nh+NsPN1ZV/1h4YaNejPz8FHI/2zdfzYZNhruEYj9MGQ== X-Google-Smtp-Source: AGHT+IHN5IV6XhKrwE8W6PFjmTX8OUYpO3itZ9BaCpE60+X7cGuaA7G5fdWbmS+iYq0WjTw0OkMf5w== X-Received: by 2002:ac2:54a9:0:b0:52c:816c:28cd with SMTP id 2adb3069b0e04-52c816c2966mr2837351e87.37.1717976317239; Sun, 09 Jun 2024 16:38:37 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:36 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 06/15] iio: chemical: bme680: Remove duplicate register read Date: Mon, 10 Jun 2024 01:38:17 +0200 Message-Id: <20240609233826.330516-7-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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.h | 2 +- drivers/iio/chemical/bme680_core.c | 21 ++++++++------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index c51bf2bdf504..b5f16ca81e70 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -46,7 +46,7 @@ #define BME680_RSERROR_MASK GENMASK(7, 4) #define BME680_REG_RES_HEAT_0 0x5A #define BME680_REG_GAS_WAIT_0 0x64 -#define BME680_ADC_GAS_RES_SHIFT 6 +#define BME680_ADC_GAS_RES GENMASK(15, 6) #define BME680_AMB_TEMP 25 #define BME680_REG_CTRL_GAS_1 0x71 diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 72bd5445b6c0..9660ec3854a1 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -767,7 +767,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 */ @@ -792,11 +792,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 = FIELD_GET(BME680_ADC_GAS_RES, gas_regs_val); /* * occurs if either the gas heating duration was insuffient @@ -804,20 +807,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 = FIELD_GET(BME680_GAS_RANGE_MASK, gas_regs_val); *val = bme680_compensate_gas(data, adc_gas_res, gas_range); return IIO_VAL_INT; From patchwork Sun Jun 9 23:38:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691414 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.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 855ED55897; Sun, 9 Jun 2024 23:38:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976322; cv=none; b=LNrz7IILvDiFmaZL92EpVtIz6ep1EzihJ1K681OiIoHD1q/Vj1eJxnk/gzlZaaW/IZw8WfPjK9E4b/S47DC7QO0FkScz8IwrdOpA1SdkdAUS1jQSdUdMXyGSCWKJj0+dA+yY/JCLtPxPprxZsL5y+fzS3Yer930mU0mBR3r4u+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976322; c=relaxed/simple; bh=MEpRwkTcXF8fGMudUp/0Z+NjZveVb9d8lnKtIxjL/yI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ehEn9mQyHWJkQ0kIighYr3X51zk8kMrtLwWAG/cf5ZFYF+fVKQ1AfwG5wEzd6jRleQNl5BhTa0oP9To3TAaETtNGX99RzJIjS8P/Yd97LU7JYItet2dT1Vfg7Sn0FrmBF2dEmWTmHJrLAjfIfGUc1//cHE9bcKnkFaQu845RMnc= 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=nMZMpFl4; arc=none smtp.client-ip=209.85.218.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="nMZMpFl4" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a6f13dddf7eso92996466b.0; Sun, 09 Jun 2024 16:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976319; x=1718581119; 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=Akx/LH5j97MyicpoI+1LYxFCgcz5jTd5QgQsZULyeEw=; b=nMZMpFl45IH3P9W4/bxN58gq3/zUwW6dpxjgNvSzLc8cjGWrSvdhYRWRRkjRU/NCeq axWXJ7Nnd0JunpBhiHndtMfsmQLQuTElX6KPhTnPSP6r7B78/eOYfKI6Y5o6QYN5CxQD pMAZ89E7K4HnErIZo00E8f/Vou++8N8fFJ/ZcyKKyOEYYK747jMbf3T6F72q6Hs9ngTn nEolGl6LIjlCIRbKZUFYigcHe6ZIEEVX9w5CGcEW3iCZWJ/ecMQ2Tn2WiwFyx7s3giYM P+TstP2vtGUR++n+HvYZjXOHb5yOuNi3MDp2xuXfh3Yn26HRaDKd9xd/gEmQTWfecqCJ UOZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976319; x=1718581119; 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=Akx/LH5j97MyicpoI+1LYxFCgcz5jTd5QgQsZULyeEw=; b=XYFDeYnGLaEzpU5hPe3FuWtv32LpFEj2EPS+HVHv2LmqfNuhs4OotKfk6Vj5+aYkbA kRKYceyESUsBmwRXrt3C88UfEYLT9eiIM7fdsLsniZ4ODYgwWuBYr1rFDJ9O6bcR5mfK ClQztI+5iYwq6xWThBq6JNlzI/uxsInWAUqMnAxY6az/JYQ2mLMjUgqPjhmknLTFnn2N kF/hZf1VOhouEU/N5KrcOXO2KlUS9SrIfROG4YxHDL7TGsnKEZGl/xF47JP1wCRE8vCc 9BPEPxNVld2+1CWWgUt6WxcJAqC/MmxFOAPnU7BD5qgZED97263XYt5N2bi8oVF8sdb0 cJFw== X-Forwarded-Encrypted: i=1; AJvYcCW9snoX5OBPl0YojZ/iYIH46bkW1iDk7AIphRzm2SJtI6qrVkmctgwQsmZ8nglH3qB6ZSZfGllVL6j518QuC3on+bmnKlmUTKf8xv8XhQJgzcgbzazGrhl5QYTL0TbVhO0rBMvV3nqf X-Gm-Message-State: AOJu0YzPtSA0jVXzWPiEnJQ/+vcWJN6FfA90ZLUSw9I5FW2j/35+TSOn e/ml1EnRFoYP53ut22t1t87zBXpknInLfqthXZitBncOnkUkk6bk X-Google-Smtp-Source: AGHT+IHzSsHI+5gEb12SEy4XvA80z2fcZKOmVFw2SA18AJ0eSSRENcdocc3TsSKaTgPyedxB8F8zsw== X-Received: by 2002:a17:906:2341:b0:a6f:e55:ba1c with SMTP id a640c23a62f3a-a6f0e55cb79mr250122266b.14.1717976318422; Sun, 09 Jun 2024 16:38:38 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:38 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 07/15] iio: chemical: bme680: Use bulk reads for calibration data Date: Mon, 10 Jun 2024 01:38:18 +0200 Message-Id: <20240609233826.330516-8-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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. Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L1769 # [1] Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 28 +-- drivers/iio/chemical/bme680_core.c | 279 ++++++++++------------------- 2 files changed, 97 insertions(+), 210 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index b5f16ca81e70..8d0f53c05d7d 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 @@ -60,31 +58,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 9660ec3854a1..493d190f4461 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,12 @@ struct bme680_data { * and humidity compensation calculations. */ s32 t_fine; + + 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]; + }; }; static const struct regmap_range bme680_volatile_ranges[] = { @@ -112,217 +163,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)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_T2_LSB_REG\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; - - /* Pressure related coefficients */ - ret = regmap_bulk_read(data->regmap, BME680_P1_LSB_REG, - &buf, sizeof(buf)); - if (ret < 0) { - dev_err(dev, "failed to read BME680_P1_LSB_REG\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); + data->bme680_cal_buf_1, + sizeof(data->bme680_cal_buf_1)); if (ret < 0) { - dev_err(dev, "failed to read BME680_P3_REG\n"); + dev_err(dev, "failed to read 1st set of calib data;\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); + 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]; - ret = regmap_bulk_read(data->regmap, BME680_P5_LSB_REG, - &buf, sizeof(buf)); + ret = regmap_bulk_read(data->regmap, BME680_H2_MSB_REG, + data->bme680_cal_buf_2, + sizeof(data->bme680_cal_buf_2)); if (ret < 0) { - dev_err(dev, "failed to read BME680_P5_LSB_REG\n"); + dev_err(dev, "failed to read 2nd set of calib data;\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; + 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_H4_REG, &tmp); + ret = regmap_bulk_read(data->regmap, BME680_REG_RES_HEAT_VAL, + data->bme680_cal_buf_3, + sizeof(data->bme680_cal_buf_3)); if (ret < 0) { - dev_err(dev, "failed to read BME680_H4_REG\n"); + dev_err(dev, "failed to read 3rd set of calib data;\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; + calib->res_heat_val = data->bme680_cal_buf_3[RES_HEAT_VAL]; - 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->res_heat_range = FIELD_GET(BME680_RHRANGE_MASK, + data->bme680_cal_buf_3[RES_HEAT_RANGE]); - ret = regmap_read(data->regmap, BME680_H7_REG, &tmp); - if (ret < 0) { - dev_err(dev, "failed to read BME680_H7_REG\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; - - 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); - - 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 Sun Jun 9 23:38:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691415 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 4130673539; Sun, 9 Jun 2024 23:38:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976322; cv=none; b=RHFdF9ao1PD4MOv65Bw3wo/c/4RW3cFsFBelCribDIMBMgcHEuNwhGlhYGRz5DvBNjy/bZP9npMdXxDS0P/zYI2vb3efbWza/fPXJCaODgENAEkd4Ghfl5p/xEh0n5QERRfp2MnRrezdcVcx/V3IzGp33CfaJv9io7ar236mCAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976322; c=relaxed/simple; bh=Hfb3FXLY0jr5pWcGc5sD5mDS5XumgG1uHHXw/e5JYu0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Jv3OdALG+h0bJJKhYQQMIkalMba+JUmtVAMYTaFYpsqZ5nbXY4yoCkXemm5ubSrFbkOtIw8r6ZyDlxw8Z9A4LRZwJV8j8g99bvHb/c5TVp1jWUq33aeRyGCXMSkE4fv5sMLTTs+WAotqHCoxYLOP3c1cccjYkRI/ZS5mXLDNBHk= 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=lbkdsQ93; arc=none smtp.client-ip=209.85.218.54 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="lbkdsQ93" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a6e43dad8ecso370786966b.1; Sun, 09 Jun 2024 16:38:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976320; x=1718581120; 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=8DCTb+Pv7ST7rOA5pIjw+wTL/eb7fOtCFb+LXYKEqh8=; b=lbkdsQ93C+nsUWE88O0qmiGMBKe8gF/j5p4MjeSDc+cPsTZpbzDvEJLjbf5nqcBLqa gibv+zIfiKCUHgFcCPFEZoJktAAyXl72BcjzJRhUht5CgAkBWBtLlUrR/dK3fT5Ey7oT oVT2gbVBTXlH86n2S5Omc0rtZ/ujuFxOSwWlilWNCfJBnOJ0LJCvypjLALkJ8GNz0Z7B xGq5A5jGftgkcZM40VtuBauvD+TGmULG0v013mDEUkoaYlC4DzgLgNL7X0VYprLCs7rX GzbkkPQXZqGYdLOWBYgzVesLQ6zRLL5AgQ1eBYGZclf7/8YlGUnmV2XZ7pD1+KEkPXBg cR7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976320; x=1718581120; 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=8DCTb+Pv7ST7rOA5pIjw+wTL/eb7fOtCFb+LXYKEqh8=; b=MilnMGSqGsKfhuiTgzwEG1o/2X/w0XzcZAtEwQ/PUznTe1Pa0t49tJOQVbblu0cNOY fFX5HEXl5DEF+VpedLIswQJMD42inXEMRYnh/8YbscwCh3PeNr879P5o/0OpaosiPJYu yWKwSqFE+5zhrpw4jXGx7/yiKxFuH2rww3l/7D1YGCIGeuSmJwSrAjHeygqRT2LJaQu4 vAtYXdUP5jDfGg80mHiAkW8zjujX8JsTIhBq+nQ8prAbCZYeYLpA43wp0yU3Cqxl8DDg SuXJZJ1YCFXg4Qy6Ne3v3b8eTGp9O0mlha549VJmcJJLuQzEgumrGIQ+hd+EjDsw4fw8 qAMA== X-Forwarded-Encrypted: i=1; AJvYcCWCHIJZIaNwC0u4Rm1432BWEOQ8ufaG7vhBvK79kp8piNFbZ+fufxHX5I63+Appv+DMg2Fw49SUUocjlkjS0Q6MAm+6tT7efxEV9tRO6yGz3tYIDqUHGGRVzk8BUZ15sZc/EwlN4reY X-Gm-Message-State: AOJu0YyP3cYuh6wsEWNzyAB2IMxUiJNDscV0J/fQSPsVdxZRibxcZiPM qnXGD5kYL0YScnWxcjj8yJeGnEkGyUd+t8xYgqSAcuJ92DT2AFOYQCMsXQ== X-Google-Smtp-Source: AGHT+IFHLm7IU2p83vb2gx+K5EKm7HQ/WiO1JOj+Qus0le7+FIaREqjV4iFyWKLqCKC5C0wD9NhvUQ== X-Received: by 2002:a17:906:5589:b0:a6e:feb8:eb15 with SMTP id a640c23a62f3a-a6efeb8f4f8mr283786166b.38.1717976319585; Sun, 09 Jun 2024 16:38:39 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:39 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 08/15] iio: chemical: bme680: Allocate IIO device before chip initialization Date: Mon, 10 Jun 2024 01:38:19 +0200 Message-Id: <20240609233826.330516-9-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 493d190f4461..7dfe4bf2f2ae 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -837,25 +837,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; @@ -877,6 +858,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 Sun Jun 9 23:38:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691416 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 6F88574060; Sun, 9 Jun 2024 23:38:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976324; cv=none; b=PxuCVHzqK3LMrXnA7dVZF10vkWw4k17gmwUNecEh2XZkRnqCtujje7rJ8SPTNj97LIaqHf6NhSRw3epDnALCpTVOdAm3rIawVgg1jCcXM5CiG9Afx27Mo2biHZQglKKuy3ipq4ngvnxEE338XLGOKUIpYymyLsHtU2Se0DHQ174= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976324; c=relaxed/simple; bh=r2yI9dn0gEm1yR0bBip9V2giKbeGMxeemtfmLYE2FpM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C1jWKKck9LrQdc3szzesXDYKSNghvd1KUNlLYFnYqPZQ5hQeWlIi+2wpQxjZc5Hp74pWPX7d5H4FecWCodNNca16ft91kGf789PPW5zpx60w6Q62M4Vu2NvJ8Tn5X+wuSKdWlupRR7cwDgdk4HtZjWR/lT5dICdpHjJRw36pEdg= 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=Dio+v5MM; arc=none smtp.client-ip=209.85.208.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="Dio+v5MM" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5751bcb3139so4606831a12.1; Sun, 09 Jun 2024 16:38:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976321; x=1718581121; 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=b4YRfCh6nI5u0cnoU4dc0MnEyl+bZMsTTF5DckI6cPc=; b=Dio+v5MM5ZA49mDPdd9S9Pba7b8s4WxUpa/y1oBagbuSH9qQnHUzc8AdqKlXDhcAx7 Q7QBSlvYHsq4i2m3hWQZiQ9eSFCgmkFeMXOLgjLwXmTF5Ee7nb7GCCuGE155YdWYOm/H 6fylMqeQRERxbeOIkXsH4427deUkbt6Q4kjhWTuFlm+6iETsh+LDLCGbX79KivS33jJS YbAn8Yap2pRQRvecSOuGzB89/YrGdZjTbfAthL34RC+Tab+UQPH44iBaYtBcyhsrxGMf Skk15tpBxlOb96R4daFOknN//+OUlfMQI+V5xKd1kSnMlkmslQC1rS8OjfnPOjo/7WV6 S8Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976321; x=1718581121; 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=b4YRfCh6nI5u0cnoU4dc0MnEyl+bZMsTTF5DckI6cPc=; b=Z7laSEtsUqte7FS2lWcdqjtwK/vPoi1yAXQ4FyyHD6N3mp7ozyRc7ayyy5+6nJHowC y2xJzIMmIKpvKhkk4HTc/uvNP/Cv6Ssi6UeV84X4a0K89n+V8hu5di8pNbmawWNqZsem H/VHC6DdMQpL8JhMfWgtjE6DkxovXw+3Qqok1YDMdOtpSpsg+3+OtjE4ZkhIY7qJy/u+ izi7W7kEn+B5gK3iC46hi6ban3V+0ozv36TO4HME8oR+1bdj9eKO9ruOLW8h5DkKzkS+ ZVHFE5MfU6pgR7cDueIdb4tfXm+wECFnNrM4Yknj8nf1bn0R+5A5pKG497szN4juqaDw Hekw== X-Forwarded-Encrypted: i=1; AJvYcCX4RWk3wCaNSo5wEfnBI6xf4nP21qNQiNpaR7LCYoNCwyqmReblWAfdGJX+kx+XBWVXIEnTniSQQca48sDryQ7rSw+x4Ib1qWhs3TGSsQ02GYF+TC6+fOHBd1ZzTjKUCpUb855Phcy+ X-Gm-Message-State: AOJu0Yzx388l+Hs1kGJGVfedkf52ZrlNDqicaS4jtLNizh316nW6314R 2lKnUsrIxu5MxL+/RJI80uE6WibnKdIzDAAI+ZCsKIJdvIk+fngO X-Google-Smtp-Source: AGHT+IGo1LPSdfKL8RuiD+tQ4vy+Ss8Kw8LWyD4CDue3jwEpzeTujOb7m5c3r8MHYRbrhziLfHvFHA== X-Received: by 2002:a17:906:c106:b0:a6f:1e88:d48f with SMTP id a640c23a62f3a-a6f1e88d574mr104007466b.62.1717976320655; Sun, 09 Jun 2024 16:38:40 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:40 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 09/15] iio: chemical: bme680: Add read buffers in read/write buffer union Date: Mon, 10 Jun 2024 01:38:20 +0200 Message-Id: <20240609233826.330516-10-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 the union which handles all the device read/write buffers. 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 | 45 +++++++++++++++--------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 8d0f53c05d7d..7d0ff294725a 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -56,6 +56,13 @@ #define BME680_GAS_MEAS_BIT BIT(6) #define BME680_MEAS_BIT BIT(5) +#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 7dfe4bf2f2ae..415816a6cc9b 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -111,6 +111,9 @@ struct bme680_data { s32 t_fine; 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]; @@ -449,7 +452,6 @@ static u8 bme680_oversampling_to_reg(u8 val) static int bme680_wait_for_eoc(struct bme680_data *data) { struct device *dev = regmap_get_device(data->regmap); - unsigned int check; int ret; /* * (Sum of oversampling ratios * time per oversampling) + @@ -462,16 +464,16 @@ static int bme680_wait_for_eoc(struct bme680_data *data) usleep_range(wait_eoc_us, wait_eoc_us + 100); - ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &check); + ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &data->check); if (ret) { dev_err(dev, "failed to read measurement status register.\n"); return ret; } - if (check & BME680_MEAS_BIT) { + if (data->check & BME680_MEAS_BIT) { dev_err(dev, "Device measurement cycle incomplete.\n"); return -EBUSY; } - if (!(check & BME680_NEW_DATA_BIT)) { + if (!(data->check & BME680_NEW_DATA_BIT)) { dev_err(dev, "No new data available from the device.\n"); return -ENODATA; } @@ -560,7 +562,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; @@ -574,13 +575,14 @@ static int bme680_read_temp(struct bme680_data *data, int *val) return ret; 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"); @@ -606,7 +608,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 */ @@ -615,13 +616,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"); @@ -638,7 +640,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; @@ -648,13 +649,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"); @@ -672,8 +673,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; @@ -693,19 +692,20 @@ static int bme680_read_gas(struct bme680_data *data, if (ret) return ret; - 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 = FIELD_GET(BME680_ADC_GAS_RES, gas_regs_val); /* @@ -834,7 +834,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)); @@ -865,15 +864,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 Sun Jun 9 23:38:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691417 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 8D91D74410; Sun, 9 Jun 2024 23:38:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976325; cv=none; b=aRH1l6KC06nW4yPUPIFaxownGP4GY4qZaoX7c/JUhzSujeX7kYkr55EamoqRY57eyOj8EdSC6mgBSXAdU0RJc3CiwKiimBeAK34I1aR4scRXJlJSAq+N782DTQTI+fG6age2R81a4bZDRid8qUg3TO9utJFdMsYjKbhcDNBLWyI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976325; c=relaxed/simple; bh=Z5vCLOtayG12+oURNPul0+eUnfkY1Ez/Lqwna0p6jj0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UDMCwVP/xyKn2RRz/7I95rnbmJR84sJAs/Bzc5zonUZYvZcH8QIkAIA/0D52efh0Qf4lFtJPuW/axwEjfYtmDpESOlspb6eVRHqFnTq+P70FF/ece7Zop0pkEegSU6s6tekN6I/sWz7j5iiuaETykinARGruZKZHREvDzVymyuE= 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=NkF2fHIY; arc=none smtp.client-ip=209.85.218.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="NkF2fHIY" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a6f1c4800easo59288166b.3; Sun, 09 Jun 2024 16:38:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976322; x=1718581122; 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=xsbnqsAhFK7wuZ2DJC+e/vk6WotV4BxUYJD8eztjyM4=; b=NkF2fHIYjGhV3XlRsGWF/pMiyBBGk6VGurdyQoGQ5u2rPkyJLq8V6bxmZAl967JT/H r/mpgb7LQq8EkkJOBu4gtdDIKJ74vCSij/9SKRhOX5ZZNe3Xw7OAKcUjzWB6Sl0ycD6m ONO+DuxafGnLY1xCbQ5N5ywgnjaUGz2La2KjVNmzNDQa7Jxv/HojdlykNTmSVZ+vl/hq dokhYo3T+b8T55kXRimsPm3kJXTd8FgP0S6cpYT/ZnVEjKmQ7qtyC5IFoJYH8aNsRZxQ o97Yk3SQiJSTnoMPie3kkg06XHJIMWaKb0lILGr6vNRjj0iIUcVgCrSyKYPLRflvwUp8 HVRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976322; x=1718581122; 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=xsbnqsAhFK7wuZ2DJC+e/vk6WotV4BxUYJD8eztjyM4=; b=YR+UP1/RE7Qj65ILcrNR7Xmi6tLzO/a3cZlS81vLl8wqomMg4q1eOHYvS/7mKAq1ig RQGAqYNlbcV8yPCYOHL1MBFiKrwnuNEPXS+HTUM6RqVub+wnB9fugzNwC2gVx7jwg7N9 yZ53vs3VyoN2RoATcNi81LhirDyBcaUM4nH6WBNQzpKYEstI17JwLxfzoFLgrGBtw3wf KYqjvdh8f0AxsK/6xJzgsTIm0TGmKS1GSYxNJitW59xTHFyw/kNfVHcD6VfTCFU/aNzW r7UiJsOjPIPpEZU8SDjM6KviIJ6NE/kPPBuNaNAdD77xXDxI2tkKfizpApz6Yzb+soug 6Vbw== X-Forwarded-Encrypted: i=1; AJvYcCU4CrXhwbrdgcHuk31w0fv41TjgLeNyGjmLDkmIbPv92Fj9Kfzv9H87lUdYtlbdxzxZAxhRhJWACyX+zcqZ15FCqQFaRs5C/tbCN/hv42yKcMekMV8t8Y2fkTnhuo0bVygGKMPSwkjx X-Gm-Message-State: AOJu0YzGRk2vIlFs1M3xcGzdMMBYD9cWprFNCVaKjc1utHx9IkGeVFsi qEMy/N4uyulTT7FskQut/FJu/CUrEH87j4MyYS0Rx73XUS3gxFwx X-Google-Smtp-Source: AGHT+IElQCic8ok5twKsuh/dSk23KfKcO6iepCxu3HeNIJbYt/XVGNBX1igmIR6WHLZc2gY3NgLkew== X-Received: by 2002:a17:906:25d3:b0:a6f:18ee:7932 with SMTP id a640c23a62f3a-a6f18ee7a35mr115533766b.20.1717976321864; Sun, 09 Jun 2024 16:38:41 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:41 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 10/15] iio: chemical: bme680: Make error checks consistent Date: Mon, 10 Jun 2024 01:38:21 +0200 Message-Id: <20240609233826.330516-11-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In the majority of the error checks after a regmap_{read,write}() operation the following coding style is used: ret = regmap_{read,write}(data->regmap, ...); if (ret < 0) { dev_err(dev, ...); return ret; } In this particular case it was different so change it for consistency. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 415816a6cc9b..a54460fddc91 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -517,10 +517,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) From patchwork Sun Jun 9 23:38:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691418 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4CC5757EB; Sun, 9 Jun 2024 23:38:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976326; cv=none; b=t8oIA8X51MuV77Q/hi407UYLX8EN6r5Vz+Pa7H2282Dnt3RiW3A0lZUErD6hOTeiwwAfXVuiO5F+cairIVBDvdCVv8g1fX5ikm76+/kE77I2iSjcbVrkiagF5ckvoPR2sB25gC1M0MQZ2UcKfc0wIJn/KzxtayObS6YJzDkwP3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976326; c=relaxed/simple; bh=RAiHcJ9tHa+nC+dRPDlW+bAqYvbDn5cPKJAZ7OBuvNA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=M7wSSRNmG0qTNp97q9WQCC347uHrInbVveiwrLpjSh72Ny1ml/1UHBFb7gDQ+uhpCch2dkyUhV8Hwda7eHwYH0+NioW0F7YlMQ6gOq4z68T4pgWifYJs6EXHv8sqyB1UcXIOsS9PLN7dIVmiZMFP3ABZ+XXG3NWeaDtP4dCYmvQ= 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=dxS+UQab; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dxS+UQab" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-a6f1dc06298so45344366b.1; Sun, 09 Jun 2024 16:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976323; x=1718581123; 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=KrA4sW4L1vNj/722AeitV6Faiop+SaS3a8sMsMKTUK4=; b=dxS+UQabA6wdwXo58la+2+6NDjyiz24wXZrk+IgpvWMKSVuPLXLEurfMdxHwfAsCZA 4sfATpTYKFU54jD0Z1VrAUW2HCQtDwQhSaBm2FTXyaYuJ9hB71L8fQ/SLrJbHb4gRl/b qHjJMpmcPtFYrxTj+akcFr0940ALJA15bsu9go4xIC1YMA2CeiOlQ9xIqCot0OLDTXul uRAxEf0DgGFxSQYgWqB8rupGl/1UwXyq/slKiJcnTwFtppsJGznVTrIaA5oPlDwAi5oD NDJYfUyV1/oy3ZpLT37thGzsu9vIQsgId+Qe7djTsna6hkGMvY/bJdqp5EbRd1vxkaKz qh/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976323; x=1718581123; 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=KrA4sW4L1vNj/722AeitV6Faiop+SaS3a8sMsMKTUK4=; b=QSUAVs/N3StI3Ay1LUblvJQXpob1hJVH1tKHcIeU7jp+PnPadB8J3x6vYg85VJYKps BPkBubLxjiYuCum2YWe7uX2BAa8QjvJjPfC2+V6dLt7TZGBwEEyRxVWCgDej5F1fVyOD sIhCWml3mHEgj+kQZwo4CLKRzLSOZJntyQP9J+YWVLKbx9QEA0tylGnOlcO0T5ANQwNB u07k+XmppV9+YVRBhBaAqXN6aFPTqOczV6CMkdoNADyR/tQg44mO7M4Ip9Z43o0s2sUH pKNTTUarNhM9WN8vEjlxRZRMN2gQRpw+42ldXaWYaJRtIdi+TGTc0+dLqk2eZTJSi7RI ebkw== X-Forwarded-Encrypted: i=1; AJvYcCVyZuu/qe4NK8WkQUIfD0mfCMp2bx28XeJRrOUYm/Y4gSUXGbAVw7HtB8D6eoav0vRmk64lquYcVF8UtFDXCgbfp3AvrGoyqeh/LkPej8JO3fPT0MDyfH2mswGsoFkDTaNm3cNZHTgI X-Gm-Message-State: AOJu0YxwPGFmit4YlhA/XjnDJTTWOGq0p+wyrpLd06kxYE2lc0QryECU fRC33Idp/F9KCF5CuPILu/DnmbuQWFfLtvB1YZ0vl38OjrGRhLW2fDdgsQ== X-Google-Smtp-Source: AGHT+IGjaQwY7Q/KXmsNgV0fDaTuO9+3AAizakP30iJJAnZoT87Bm+2VP/gv2MZWVSZaLd9hro9O/Q== X-Received: by 2002:a17:907:7290:b0:a6f:1e97:b17e with SMTP id a640c23a62f3a-a6f1e97b2bemr99639066b.76.1717976322955; Sun, 09 Jun 2024 16:38:42 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:42 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 11/15] iio: chemical: bme680: Modify startup procedure Date: Mon, 10 Jun 2024 01:38:22 +0200 Message-Id: <20240609233826.330516-12-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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]. Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L162 # [1] Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L44 # [2] Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L53 # [3] Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L60 # [4] Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L640 # [5] Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L294 # [6] Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 2 ++ drivers/iio/chemical/bme680_core.c | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 7d0ff294725a..b2c547ac8d34 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -63,6 +63,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 a54460fddc91..0390c298fdd8 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -531,6 +531,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 */ @@ -866,6 +871,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"); @@ -878,22 +885,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 Sun Jun 9 23:38:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691419 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 B14A67603F; Sun, 9 Jun 2024 23:38:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976327; cv=none; b=tOC0VCIvP5iSyC4lVipHa+h/t0Iy4VgjHWLu8tLya6YTiBq+uuslo1bBQ0kfJfk+KGaq3ww/C0CzhuXZtp9gG3QmNx86jBtT0BdJuyPWy5YFgeZqFn97nMq8VzVYwEtCdTEHLZMNNo4QtPUyY06iN7OtnSLmQcTtvs5XVQr+Rbs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976327; c=relaxed/simple; bh=v/aOwIvmgfHwNIU70Q9N6/ID1xtbp2EUX/VBKJ4uSIo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RsG++5YUf+SSvmDmlJrMImUZFLqi2qmCvxb0uxWsY0U2hJHxT46nrko+U/5+Gf6Wx0/iQLHgvz04zg6KjDs0QYheN2AKBUaiNGfcwx2bj60k+uL66ZlW3iQ+altykR/1E+Hla6+Ut4zDrt0mJKVGfTUfpNRp6pUDhOAjaZOIZsc= 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=iQ8+cx3w; arc=none smtp.client-ip=209.85.208.43 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="iQ8+cx3w" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-57c7ec8f1fcso651113a12.0; Sun, 09 Jun 2024 16:38:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976324; x=1718581124; 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=dgvwNQnXyFmRcVDABKMNh6lBKNiuu39ffT9szVloPkE=; b=iQ8+cx3w4XJpKT8DWiLI6bAswMBMYjm+qBUq/Z3gFBjw5G5B05do7tdrIzrewz5X9O nScBzWnDA8vPDK6lsvLBas+jMb6LcnMAj9TnJRf0jMY8gnjc3biyOe1vwq3wL8++SHH9 O2ftOkzH2WhBSCjdcYCwbxIcQjTEEr6FEjBC/M2VFiwTkZmWI2ROkNgFEV9he5P/ItQy nqS1/Iaio9If3NIQvkw6U1ub/1FX6ATrH6xdzcylAj6LGi+drssu4DwQdbCDcztOqf0f QgH4cc5a9LVuZIlY762eGBvkJ0abJPNku3jet3q1LnSwZnsdtUECezXs9PcJCvLxGDdP U40Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976324; x=1718581124; 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=dgvwNQnXyFmRcVDABKMNh6lBKNiuu39ffT9szVloPkE=; b=UlO4w2G3DQJ+bY8jLEhifANC8j9HDNFQ+ezUdmdBZ7k7vePcdC3Nr5Dy0EC4BWdDaA RkWDNszLd/LIHnnMUTQyqdQo8N66Tpao+5/lrqr+xh0HFvl4MbfhOit1reV0QLGkynNe oIUdwkRaEVIPJ7jvHFb4HYuhjoN6r3PxdbeJg599J3E2RlVhg4u+tKRbY6bn5d0tPINd MkKyTiUKg/2lJ7sxyDqjl+74FMGg2ZS34LUK4bRcKel3nNPxvCiN7xwbIWFjIuGmOCXK /oI/htrnY7mBaqzuq5kAA5fPOX48I8Ni8PFE3O+5rUAkp4gN+Ixqfl224wifp30T0e01 KL9Q== X-Forwarded-Encrypted: i=1; AJvYcCW094e9kvjvsicNF28W/4WEJG/blPLn06UumxgcngE84aFe/zrOYkGM11BWcLP357FpXvdJkgFVPa22TIyC2XTvKt+LdlsodwIHMJPAT9u0ztGMAGfFo/ewo4AFwO3geycL+VaG2e2/ X-Gm-Message-State: AOJu0Yxs8YeOGlcWITzMyfj4iLevavhj2Ega/EVUkmL9DMvfAr/1WQej WCriaOzkzy/zQ5q+ou+vgtzDjBvTfafBXJPn/1aZpQEsxG6nSweO X-Google-Smtp-Source: AGHT+IGKY4Oom8DrqciFksBMZsLFQb+n8sZ2wbOLqy2/xNIne4o5Cz+csy1SXbJ7wT3Rl5PqoWRnIQ== X-Received: by 2002:a17:907:5c4:b0:a67:a2e0:9dcc with SMTP id a640c23a62f3a-a6cd56108ebmr674134866b.5.1717976324116; Sun, 09 Jun 2024 16:38:44 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:43 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 12/15] iio: chemical: bme680: Move probe errors to dev_err_probe() Date: Mon, 10 Jun 2024 01:38:23 +0200 Message-Id: <20240609233826.330516-13-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 multiple cases in the probe function that dev_err_probe() fits the needs, so use it. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 0390c298fdd8..b357871ef601 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -866,18 +866,14 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, ret = regmap_write(regmap, BME680_REG_SOFT_RESET, BME680_CMD_SOFTRESET); - if (ret < 0) { - dev_err(dev, "Failed to reset chip\n"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to reset chip\n"); 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"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, "Error reading chip ID\n"); if (data->check != BME680_CHIP_ID_VAL) { dev_err(dev, "Wrong chip ID, got %x expected %x\n", @@ -887,22 +883,19 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, ret = bme680_read_calib(data, &data->bme680); if (ret < 0) { - dev_err(dev, + return dev_err_probe(dev, ret, "failed to read calibration coefficients at probe\n"); - return ret; } ret = bme680_chip_config(data); - if (ret < 0) { - dev_err(dev, "failed to set chip_config data\n"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, + "failed to set chip_config data\n"); ret = bme680_gas_config(data); - if (ret < 0) { - dev_err(dev, "failed to set gas config data\n"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, + "failed to set gas config data\n"); return devm_iio_device_register(dev, indio_dev); } From patchwork Sun Jun 9 23:38:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691420 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 E05BE770E1; Sun, 9 Jun 2024 23:38:46 +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=1717976328; cv=none; b=HV2kX6mdLtU7AHta+6pp11V4Ix0kj7oJp3TXKzgjQawxPFLVoARAPns8rm7e+PXcRvMpPpQQHZkhQOQuJLPFbmF9iLul68n88aQAlJCG+rSGBPjJYjWFwBUcCIDWpcBUe6w2E4ooSMsVvk/VXNh+XmRLe3cOo4JzDUCEhDpt0Fo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976328; c=relaxed/simple; bh=gcq9Yl8ckJVcNxRzmgJTXwGhADygY+Q2ZVzkBeW2Hhc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Z1mvz+wf8nhfYZ48ns+NdVti9ycTGB7ZHceBN5dEC11+vQIQbEkBWEoaTtRy8Fs4ckzOPKo/rwt6MMDetyleQUvFNIDUVbD3AWsSgQ2RjzcPjO4bD/gTJSvoAobPUrfBr9ZoDVKsMLoboxCQzase4oWR73IjmcdANY/kfzfA7as= 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=Epa9FWE1; 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="Epa9FWE1" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a6f09eaf420so136707766b.3; Sun, 09 Jun 2024 16:38:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976325; x=1718581125; 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=fBfiQOFs6JnmYnZ4Lv87OrPaVWKaEYAjVyPQYQiqi2s=; b=Epa9FWE17CRjMPy7qYdA0z6TBpSGRa5SOQltlIxya/BzdCDIy9Z0iMbr0vokakUarN n++3XFKdd7/IeKOcPaC7lM0cZoawgFAnBwmJTWpknK9tM9hFy2SGrcKUZvE/8xMOW2PU ny4pcqQH6f2ikvDVcuA+X0H2wCNCSoH5S8PDP/0lfMMma5C52PEavyinkxwLRL3Ha6cD B6tGnwck2m1fjnuezKWSGvL+tJXrMFA3yk9l7wzkC8sMv6hWlU5kaCxETSuoFcaf9Iy4 35eILWyMeo3gRyRLiCTGB+uEGCDPhshMBtwGspLHikYJjGxNdiVa4gP05hueDLNRN8h/ pIhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976325; x=1718581125; 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=fBfiQOFs6JnmYnZ4Lv87OrPaVWKaEYAjVyPQYQiqi2s=; b=jmaQjDONPtX0Uv+JRh/xgohBpjEF+kb44KzpSxGr2qgYlERJ3njDGqgEv5pQt7+4Cu nMPksc9hsrOM9cEZ06ctGz/FX6PGcAnP+K3xyxwuyDRE9yA25I/p4KTzQ3b61XmdLIQE gGqGJn6PhX9QdHQVkTNUkSFoff0X6moinaIUofxMA//q9x3xNavWrbJ2Ho+cX9Df9nFj 3Ov2ZrsVgqpJuqTTPy+OYGFkBObtPkHS7aR0HnEfI9tJ0XKHk1V8Ucw1ABBaSo+kt+kU ekhm0oDbZsU244Vo0V28NQxd6hY2ZzH8Gt5fxdZyn1fhUQxIQT2vGdW8E+IrrdiXD+UU op9w== X-Forwarded-Encrypted: i=1; AJvYcCU44B2B3douh3VsEWDBsvjItvJRoAfI+UXUctNfa0ug/HMJLT5Sd3keGaTNpBCCilxpICWMprQ8ScXM4UP+8oRNGLDgXQxUWZCrPG31mXg+oAr59IYMtYQU06U5UL7fnnqArL8jNp3s X-Gm-Message-State: AOJu0YxDG5EUiMJpya+CaXMn0Gz8rSjINISSDcskZc18AgM2m1OHiHjI 3HyeztaEycJaDRJmi471h0+I2GozGqCsSjIxsIHHCdtYk+BZraDeTG0yPw== X-Google-Smtp-Source: AGHT+IFfL8JwlJOQdE8caYhaAUZTDqEYvbRvblTKBXSp8DQ9rEFqcU3yh5UyQvEZWB8t69UGGFOlMw== X-Received: by 2002:a17:907:9711:b0:a63:5745:e3f4 with SMTP id a640c23a62f3a-a6cdbd0e290mr626674166b.65.1717976325138; Sun, 09 Jun 2024 16:38:45 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:44 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 13/15] iio: chemical: bme680: Remove redundant gas configuration Date: Mon, 10 Jun 2024 01:38:24 +0200 Message-Id: <20240609233826.330516-14-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 b357871ef601..d08f32ecd139 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -683,13 +683,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 Sun Jun 9 23:38:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691421 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.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 EEC027711B; Sun, 9 Jun 2024 23:38:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976329; cv=none; b=WVFPeRH0RXeuqRoyJ1TzwSJNL3MChT1E776wCxtdHz/9bB/QwnLnTS/5qJ+eNjUIX/CX6YliDu01Rk+SRR/sFtPD3HRTwdZq3KkeeTdgOcfzsIaZOqbG7JnW81Rpb2md6uFRQJOno/kUz/pteM7jb7gE920EY2e7oxoGFx7WD/w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976329; c=relaxed/simple; bh=pyZuPXm2ItgrGo2VXzIW1bQXYmpwhbi7eJKFUlZlLF8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tTvd2Un2qPAUpk/3GqkFv83flZTsM0goVJQsvjOME8xL0O6zbIjfgUGoy0cZKOzP+SpvPJ2vBoL7MO+E2ezhQtAJ3UmpnVDiDc+lUQAplZR2ZDbt59geYmX3Up36Tf3izZJR6zH//4yvzP/GVF21k+OGcvmIEv3ClqFfD6GXIeU= 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=GOvSRHzZ; arc=none smtp.client-ip=209.85.218.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="GOvSRHzZ" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a626919d19dso872201866b.0; Sun, 09 Jun 2024 16:38:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976326; x=1718581126; 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=OZdGB+N8Qb/Ym+/tq2ItIDp+gfuN/NoNCXBQdBAKy9M=; b=GOvSRHzZOz/aWW+ZYQpqODk3SAiN9NShgFLC0rJlRaEyyTVZ3eI1KSL2sX2o1Q+jum 1j41dtqZvka4fwTe+LUg2P+DM/f4t4BuFPRusUmmPCKsa1WzthQxu+TVmpIVtcfDBGKb hQCvMrPp0bMlyhVntBQxtFJsgN0fWUPmXh1KlrOOCgekFonNd+DnZ5U1OcfRzbTdLsiI qtiaSqWJsnaBiBLlPcmlmYoK4sjsNsfKIghjipokDovlPzZi7ZS7wlb2v05hrtQAnVkh Dcr/+rgYvqs3sCA778sDVKxXerdizxvlOQEuz1OzCZrgTPd5zACbkpbrMajmtjQ0Nh7d 8m3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976326; x=1718581126; 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=OZdGB+N8Qb/Ym+/tq2ItIDp+gfuN/NoNCXBQdBAKy9M=; b=UtOIdM/MVCWYklgqOlER43FED0X3rLMjXF6ZIsWTAA3pSYiV0g+AYqWCntjYYzcfuJ ASQzFzdoNLBcuhoMgwB849GFF+hSgbsSUu2wlpleH6xz5jXJRv4wRbDZrKObZOBoK3Jb Wyd0NgBJ3O9po5xH98EkbRCb+338QqN7Nb0KT+5Ec1fQy6rqkw7Mo9Xf0KIXjJ7F8k0I JtmsZdkVJi3/K6pv7Yo7UrVybqZ3p4Qgtcngd+TFDBLSiNDHyg5iGsu35TBPxdNy98rr 85VXmwICwG78t7/ByKC8rXTC4mFsOmplo99WqJGgR6ayg2IG9g1qJPDEilQQk4ZjGVKl iQwA== X-Forwarded-Encrypted: i=1; AJvYcCVc0bYd4mTBkq0fZcU33ks18dyJvNOxBAVMjvUgXVzeaalcctLDES4etzjFJKPetPt2gr3+aPESzwZdP7rPtXjKfSHHDuz3/Nt+rW+zBr6k8uG4FxBd0NC+yMIdnZ1n8POinj1lyP/w X-Gm-Message-State: AOJu0Ywqmo9CLOQH14SaDSTR9Z9Bv+eWfK+3n0hGfA/w2elhrhuGDbO+ CKf4mu/Yd/l/5lcXQWYaJyGS3tYICGvMylehwAlXKs0QWev+pGDR X-Google-Smtp-Source: AGHT+IFY3lQ64flh1OTu3wq0lj8diCwLRjAxKHIbSd9pPSFHaZpDXyDzARpEX9M7FMbTG/EhKMUHDw== X-Received: by 2002:a17:906:6bd0:b0:a6e:ff5b:8051 with SMTP id a640c23a62f3a-a6eff5b8527mr313151966b.6.1717976326303; Sun, 09 Jun 2024 16:38:46 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:45 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 14/15] iio: chemical: bme680: Move forced mode setup in ->read_raw() Date: Mon, 10 Jun 2024 01:38:25 +0200 Message-Id: <20240609233826.330516-15-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index d08f32ecd139..3785b4d014db 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -572,15 +572,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; - - ret = bme680_wait_for_eoc(data); - if (ret) - return ret; - ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB, data->buf, BME680_TEMP_NUM_BYTES); if (ret < 0) { @@ -683,15 +674,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; - - ret = bme680_wait_for_eoc(data); - if (ret) - return ret; - 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"); @@ -730,9 +712,19 @@ 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; + + ret = bme680_wait_for_eoc(data); + if (ret) + return ret; + switch (mask) { case IIO_CHAN_INFO_PROCESSED: switch (chan->type) { From patchwork Sun Jun 9 23:38:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13691422 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.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 6610378C7F; Sun, 9 Jun 2024 23:38:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976331; cv=none; b=Exlyt7eA6M1OpNXvji83NUW59eEG4MTwbLnEoJ22mALNGfw/ZKG1qiqkvJcv0R9A/rj0YhmfJ7hffiUZFT2++LI9hJGMLdH7OsyzjDi52ZGCyZ57TcUXhQOrl/Pq60mwHWvfFNE9h3SEdx8iHq8V0I/664ZjsjpjGQoL46E4l0s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717976331; c=relaxed/simple; bh=Iou4F9RJM4PwzosKBnAYk1GMGXASb/8baFQGdyRT1wc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BLIJWYRwec3ZVuHVhYEs6XChhv7GmkmLlAtHEi7yI1+bSeIcWsgOQ/VSc627/8RDhC+/3dzSocq2e0U+LT6omheHAD8j2pMug81vr7qP0zUnALkMwpyxgucSzu2c6rhtz4A9z5ShZJ8kWFHznZQ1r9w4/rFd6cBQjMrhbrArgJw= 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=BgarhGYb; arc=none smtp.client-ip=209.85.167.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="BgarhGYb" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-52c804e092dso1526655e87.2; Sun, 09 Jun 2024 16:38:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717976328; x=1718581128; 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=0egzXWT2ZQuyQdr6VZp63nYNKTmr6cvgl0qSrcR7pFs=; b=BgarhGYb3UQy/0SVlNTPQtJ3Lte6WwiRoXSYo81prVdd0UW8vRgFVOljsDC1xbyNJv knAYO7iViPjDECv4WDITXYu5JonryIF7B/jCWtA80R198SHuJTXre0VcvY6ob3Rkinq4 G+YREhtka/VxRmUzCaCJaIDsB38VXaFvzUqRKonBXE5GgpdQT3qYDwMFqILRJ9FAE6Lt SMbqn9lopL7E/tqmUKPNBpmRbAzCUYYg23rJ5SZKo+MZVTnFpy9G3bYQpWx1iw1Hl8lU G14/bEjumR5XvmYJdsOnLlNqn0nqh9oppmw31LLdY/NtxfkrYSjaxYh6LQmS3YCdX9s/ 80GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717976328; x=1718581128; 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=0egzXWT2ZQuyQdr6VZp63nYNKTmr6cvgl0qSrcR7pFs=; b=riSmSTT9krNmx0DPI8Pjb/evXAAz5ktLevUDDNKAxzuQa5e63s/yz6ERdkGkOBIZIi oYgif3XAeU72rlmfXmp2v+MTPv1PJHKjukENyk/QhJ6MqST2P7GcT1Qh3WBTubl/sRmr 52sISV77j/j6IrsPFT+9yFNJXAthtgdZpNuy5gazIqrWbobN6OObccaRNMsUMzp3+9Qv ExxRF9fTRO/o/Kvw5QluzshJq0ILg5MMVqQRpb7l16vrF94l19pO4FP9y+unNRbyW8XE 7DxO2rMXkxy6d1hgH2CPab+6311WMHUbvBSpKv9i3TC0LyZm8DehtKhED9kItx76HKnM T4DQ== X-Forwarded-Encrypted: i=1; AJvYcCVEp+91ha+sFgM1R1nTtZkYxHS4s57QU4Tet9vYuRyDSlYV+LrlpKjwUZ56hgy/xzqclRIXzShSDLcfjYjueYvBsOz7RwW5CbWrGofsBB0u8WaADdU46tWjNCTCcMZk95YUqvMTEmkH X-Gm-Message-State: AOJu0YzMDt+Cq5TqscSqmejzUXg05UDIoaNrOe/guL0vknrQZvbr3unM 9RPafplNmjOQFZWd4RdlOKRO8eDV7/IelDzJ2Co1AJJtTD3deM9Z6J16HQ== X-Google-Smtp-Source: AGHT+IF0eN9z6LRY5iPkPNZ3Wtn9QHxRVnOvQjBuo/4QfIAZkAdGCBGR8AjMyY4p+B6vJnHN6QqlZw== X-Received: by 2002:ac2:54a9:0:b0:52c:816c:28cd with SMTP id 2adb3069b0e04-52c816c2966mr2837480e87.37.1717976327552; Sun, 09 Jun 2024 16:38:47 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:635a:738f:880f:9ea5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f20bb1abesm46063366b.172.2024.06.09.16.38.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:38:46 -0700 (PDT) From: Vasileios Amoiridis To: jic23@kernel.org Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, mike.looijmans@topic.nl, vassilisamir@gmail.com Subject: [PATCH v3 15/15] iio: chemical: bme680: Refactorize reading functions Date: Mon, 10 Jun 2024 01:38:26 +0200 Message-Id: <20240609233826.330516-16-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com> References: <20240609233826.330516-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 3785b4d014db..74ac887d8d8e 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; union { u8 buf[3]; @@ -237,6 +232,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 @@ -244,12 +264,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) @@ -259,10 +277,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 */ +} + +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; +} - return calc_temp; +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; } /* @@ -273,12 +333,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); @@ -306,6 +366,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 @@ -314,12 +398,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 * @@ -567,68 +651,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; } @@ -636,30 +687,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;