From patchwork Thu Jun 6 21:22:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688967 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F9AD1DFD1; Thu, 6 Jun 2024 21:23:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709037; cv=none; b=pXSKPnar5sUWLeivc3kcvyQKEzx3lxlktqSd2BpjwFvH8tDOE5xGby0cfRvPVuThP0vntdWWposz6OccTzM2CGUx4Ty4vYOk6Hqs1IdfCd1j5LJyKbC1KPDGgpsOWbwSbojqgZN4082Rnog+WAEl/MEyZzvVijh76rWjcJloYgk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709037; c=relaxed/simple; bh=m2IKnODjMy+OgGSHaDEHUWLLYrgrKmuucnLbTK0kx/I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nca1S7qvHEsZsBHr780qiZpRII2hIzoD4cV4wojxfvgdDkhFWNUbhP2NZJxDnwDHn7WnPETwAcKen8Pv+KMhDVUlxSV5mJfpsVUf9hiz2tiwgpE8aA9Tnl1a7/Hzbbq70jJIB4lbQOOTppg8UIrhH0HDVNsAOVrns6ev2VpTgWs= 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=PVVtiyy0; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PVVtiyy0" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-52b83225088so1738366e87.3; Thu, 06 Jun 2024 14:23:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709034; x=1718313834; 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=4JruR15ozbEHNR1YoZsNkt40bHl56igHmevH/tHHXsU=; b=PVVtiyy06qkKHGS06BdLceAmLh0gW11b44Xb0udYNukisrkiWOhqtTJwNElPexVHUc TLeRI/DnAIAL0U703/V9psJANsMhbtowLimpdmkUKl+za3pFineKS0zwZpDircvbEp9f KRFyqeJQMA7JxxSgZJV9gX+rTRr/+ikM2cPWX8V6dRZGTQV7t8/EDcbxeKG/LA2gENZ4 OPZOdHbr3H0+gGZkTwYroZ7sHoOdcrDbwv2epfDplqoVNrPeAZ4XQohtaQ4xUL2ivWz6 +nI8W/JzLFUTttTl70AAgV6/tADNLEVH4vWV0lw9bQWJQtQjpg2rlN3ZW1GATHLnk77c 8g5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709034; x=1718313834; 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=4JruR15ozbEHNR1YoZsNkt40bHl56igHmevH/tHHXsU=; b=roFZIKPQ9rIrznjCzCoWJiWitjUZPA/l6sTTGMrAf3LkkaxRVaQ1Jcs0/fe4rYyqMd WUYumVE/oPR74pezy5RrSUbLZQkdAbdj6p8+ZzKtRxLY9gnnewL44ZAsdD/nnC+lL9Ns gCxiy8uN6VYQTgXVi8mYgoW4/zWlUwJkFQBmLw0hicGGdFl83AvtUkK+5VHJhH9ZFTYX w7gq+obPa1SbjWjNtohzmhGxrf1V3/QqwhPzmwCzSAhRwIq9jdqTTIqRwvnkH7wuU0Bt L2zUBbe8Ao5zDKfrpK0XLG5y/OBS0P3sXzhB53PXvM9m2fnzp9XdCriYObYTBJkYqo2Y yDpw== X-Forwarded-Encrypted: i=1; AJvYcCVHZEQ8iKh6/4IfwrDEgIWkwx+RWWTtRGtqaSe3ZZ9L52lFTZyfxvoOL5bsO0bx17gckVm1lABQ8JzZ84211l5YbdyviHzpW+5eieJ+syiFI6L/4Q7ZlO5GwqvKz1JkV9JB2OZ96idy X-Gm-Message-State: AOJu0Yy0fLklzsJMYBY4QtIczFibwXm09FjToQVCSobht94hiVmqtVAH 5EJPlOg6ChtIXLTxMA6r4wfsy6ozhwSI9iZfMZkr4/rIEEsrBSw4 X-Google-Smtp-Source: AGHT+IG3OHlUVX6gOhLLBiGaM4fS38vrvGZDcgO1+ONoR+imGU+E4UulwZfDHk8ZWrxkltai9JhF+A== X-Received: by 2002:a05:6512:e91:b0:52b:8417:fa95 with SMTP id 2adb3069b0e04-52bb9f85437mr522455e87.41.1717709034124; Thu, 06 Jun 2024 14:23:54 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:53 -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 v2 01/19] iio: chemical: bme680: Fix pressure value output Date: Thu, 6 Jun 2024 23:22:53 +0200 Message-Id: <20240606212313.207550-2-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The IIO standard units are measured in kPa while the driver is using hPa. Apart from checking the userspace value itself, it is mentioned also in the Bosch API [1] that the pressure value is in Pascal. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x_defs.h#L742 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) base-commit: b3019fcdeb286b2cfe45e44bccb44dbcd8ff66dd diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index ef5e0e46fd34..2c40c13fe97a 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -678,7 +678,7 @@ static int bme680_read_press(struct bme680_data *data, } *val = bme680_compensate_press(data, adc_press); - *val2 = 100; + *val2 = 1000; return IIO_VAL_FRACTIONAL; } From patchwork Thu Jun 6 21:22:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688968 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 85E49199392; Thu, 6 Jun 2024 21:23:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709039; cv=none; b=bdOCavXgXgK2ec93RZOoIAXX1Lipzf1rdVW6h53qDxidQWvqEu9H9HynMzCg6l4FeJcjSpUgjUowstpb1tGp0M/PHUv3blhRSpYlGb/QSKr5ILCwxuWtHqH0lodgcXXjduN26Phf0kpZlmNZ1Sh4YHd6vjIbcX8zdJmAwhsIkpY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709039; c=relaxed/simple; bh=Dljol5I7T/go7JkK7rwB5Fp4x25iV/GPuVNSd59Dbgk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NuNeBTYEh4IInYEeQLAmw6vPip1Eo7MX9bTO/I2cPesiriUij0XQGhXL6x0Mdb+nogZnQCNWDpsTe52eGm9TgfrjL9Ixb2SF+xlV3TdqmPyz5mkq4ZgHs9n+m39L7/tSBpYhDI1duHh6+KmgxquIWHZ2f6ZNTXuiz697UOHacpE= 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=ino8Fiag; arc=none smtp.client-ip=209.85.167.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ino8Fiag" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-52b82d57963so1760900e87.2; Thu, 06 Jun 2024 14:23:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709036; x=1718313836; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+dGq+BBpr+rlxUS0WQliGQuIKZph55HlIZAdnOOG0UE=; b=ino8FiagLcy46SegtcPY8nb6y2jNEF6UVMleXC9q4cDfvIZWfgzRKXkn+BM5eTDcjQ mu8eoNrG3o/+N17225L1JT18MFxHD2enpyo21qoIuPOiLHlO+PJuRhcDIL+qNkoQSM45 PCH9F5knMxtYrd5dlBQhlEGJwUubvA3H5rl54o6bTdM242Ybf/TKEOFEYCBlsQysZbJy 6Z5iVCB8ARe6ryrONFAtvcBc25PmMirCn9cKR9ABAVbOctMpMJaL5EfzGT7aiRtSepC+ vRe+JxatG2B0GyMcUPN0zOb79nWOg4Nr6SpvBc0uOo97FIvcuU1BJC/Px463kDSbrzIp 8kQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709036; x=1718313836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+dGq+BBpr+rlxUS0WQliGQuIKZph55HlIZAdnOOG0UE=; b=FgxiCYk3D1FfNdoRKo9FvTGshY7aSLoC2B5T0QgXftfRfBbofHqi+STgwu2CaPS8Ui T8LZXx9IXYUTnztFjFw73lNhEnQCB7lOLxkcXxIKn6BJHUTMF4vlF+TOO8iKJB+eaBXg hVlLgcUjVPG6JUDyPTpGfcDg0dACO7/tVkbMOzJ3Q+BmgNoZcsH0//yS+CY70N9vboEM 8YOyQNPfCrwC7Xw1y33olQJ9CbKfiYom9UuOHm6vGKET1pvAx/xKC5JrpFQh4pDmBEEc mTtDOpiAO2L6sWIHeop/iadXFbPwBcTK2RM2Sc6aY3Rguqr4MYksXbjNzS+/xNhkiWOV 3LEQ== X-Forwarded-Encrypted: i=1; AJvYcCUxemhawRGkbYQXrVAnvUCsIp4dMPeLaEhTveb4zSICa2VJoOIM/fxGs/UAAcVd+9/3cN7PO+FHNLckFYRYOZo3/P1J+HnsAW++uC5+MV0zz6ynXDVVR5Fdcp3fhsRL2+egbpjSmOm7 X-Gm-Message-State: AOJu0YzU057oeUAXE32vlyJ/6enCx2TZ4B0Uap6sb2x7vNVrJ8T717cL dXTNMln/VYYq8pzw/qHcwOaSWYFwY3gypeD+CL1fiJxKyA9kUzYT X-Google-Smtp-Source: AGHT+IG2fR0i4Jjx3Hr0jiynNCushCg+9/YAUwMZQZl79/hqqcORmHCLbs9zUVPfHfqZ745ECsDDoA== X-Received: by 2002:a05:6512:238f:b0:52b:84bd:344f with SMTP id 2adb3069b0e04-52bb9fc5ae4mr552041e87.53.1717709035417; Thu, 06 Jun 2024 14:23:55 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:54 -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 v2 02/19] iio: chemical: bme680: Fix calibration data variable Date: Thu, 6 Jun 2024 23:22:54 +0200 Message-Id: <20240606212313.207550-3-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 According to the BME68x Sensor API [1], the h6 calibration data variable should be an unsigned integer of size 8. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x_defs.h#L789 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 2c40c13fe97a..812829841733 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -38,7 +38,7 @@ struct bme680_calib { s8 par_h3; s8 par_h4; s8 par_h5; - s8 par_h6; + u8 par_h6; s8 par_h7; s8 par_gh1; s16 par_gh2; From patchwork Thu Jun 6 21:22:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688969 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 5E34D199E81; Thu, 6 Jun 2024 21:23:58 +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=1717709040; cv=none; b=RNNBffXOEEIpuRtQnuxxtBm3o4rrulcWExVpF/IDcPWh5mIOVAxm0h/BXVL2gANkgMJSoS6YxKZdL12nSoj9AQEIbAJO0X0TnenOvdECjsqBbEPNDAtt2O5dKLO7vWICxv7eD1rNZ8n69iTU1H/RvJ6N47lPTX10pI3rYXKMz5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709040; c=relaxed/simple; bh=01VTqY+UiDyJ+F6bLOiuC/A6F1/dAPjefl3eUzDwQxc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dyJBBG7w/U0qTiP9kjqRHGaWZW80tC3pqmNbT/8rle4BdDLB8e4B2F4F2DmghhoOlH5ETE9kBzBfCSa7pkuwH/ZHzt5Xf8udf7xj3EK/zbl+oBeYZSQiQ/quPe5fQZAVK6qSowpd+J/3LhF6TyQJLazu1KsRO5wr1jvTNEwJON4= 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=c3pjqCcb; 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="c3pjqCcb" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a689ad8d1f6so185092866b.2; Thu, 06 Jun 2024 14:23:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709037; x=1718313837; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LFkYxgR+bMKdGkSXBR5z1iRX3ThnVE2piXmkmWSpRvg=; b=c3pjqCcbwyMItEjdbbCfDaMUCQas1PzJsiyGmXOoKwpTr39OE4aPDt6atlLTYeSuHA fGaWWaNKWMxJ5WZ3Cf9RBqStlYMj8sC1e8V4d7rp+DxKqOixP9reME1UVJLG2A1AK5ha M7LjUFGfCikymfXkg11RsdaJJJu2ZKB1ApOOKs3ZH4dUX9rAn+MsDUsD050v+vekNLV2 LJArbrvgYAMaSceeMAfmgH5PtPPDC8PcHla0fyG5dkV/THKnIvzv8BmCekzOqARNa+L8 XOv/Vihwop8nOZOMXUGmigvocgiN0f81Yy6xFriiGnLN+kspy0Uwt8oyLsq7y2ThUK0i O8ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709037; x=1718313837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LFkYxgR+bMKdGkSXBR5z1iRX3ThnVE2piXmkmWSpRvg=; b=i9E/5lAWxljCoAYUyVFC8NeoO6v3KdvarIAdpMEaQ4kF7Ao3Nwe5xcL5IsBuHlrY74 K3hoFDXGgonSBMWVyzrdPucIVOfGaIPwoR7oh+mDWwDG4pF7oVxazbbSAWlzTOgt6F3+ LwFCt7uF//+bPzinN3iPLnLEX+sI3P43zclvb6vkeYf9sk7JKLfVVDbU3qjsMRlRNukC /A6MA/ein1iGbP0TwSofS45oQ8QVNAX5JMJ/UskX8NbGE3g8wzwaeW45mrMcq66MBpI0 7K+yppFtI86w6bf37wq53H6K3RAPjmFK8clKsgHEAoSuAj2W+GygACO8XidNDKGPanIp EaJQ== X-Forwarded-Encrypted: i=1; AJvYcCWaAyLdz/ZAMrxjTi35pT/cNozmd2mz35U90FLZgKTq+fM4wpVvppDSUp6FGAQVA9pwYuoaUUKop3OO4o9kG0S0/KvrVk8qtNW+za6R6MhmovnhXqLdC7Ou37zovMuHH8pKWThsZafy X-Gm-Message-State: AOJu0YwB+u120/oR7ixsb9EN3a1eb+mKA5JOMFCy7Q9ZVRjSKKgGNLcz nbW4Jkn6sQOUBqNNmcp1nzrWH/cvq8bz/BCTUWTAIRjXlyKJDOT3lFo5EC5tyuE= X-Google-Smtp-Source: AGHT+IFkFVTzqO9wt7+zowZbuHmqyW/PRJLLlrOoZnjBwhAVQVBK8JcGDwoCBrl6oWmrcuaaOuwUDQ== X-Received: by 2002:a17:906:f802:b0:a61:c462:c612 with SMTP id a640c23a62f3a-a6cdaa0f583mr45906366b.53.1717709036595; Thu, 06 Jun 2024 14:23:56 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:56 -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 v2 03/19] iio: chemical: bme680: Fix overflows in compensate() functions Date: Thu, 6 Jun 2024 23:22:55 +0200 Message-Id: <20240606212313.207550-4-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 There are cases in the compensate functions of the driver that there could be overflows of variables due to bit shifting ops. These implications were initially discussed here [1] and they were mentioned in log message of Commit 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor"). [1]: https://lore.kernel.org/linux-iio/20180728114028.3c1bbe81@archlinux/ Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680_core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 812829841733..5db48f6d646c 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -342,10 +342,10 @@ static s16 bme680_compensate_temp(struct bme680_data *data, if (!calib->par_t2) bme680_read_calib(data, calib); - var1 = (adc_temp >> 3) - (calib->par_t1 << 1); + var1 = (adc_temp >> 3) - ((s32)calib->par_t1 << 1); var2 = (var1 * calib->par_t2) >> 11; var3 = ((var1 >> 1) * (var1 >> 1)) >> 12; - var3 = (var3 * (calib->par_t3 << 4)) >> 14; + var3 = (var3 * ((s32)calib->par_t3 << 4)) >> 14; data->t_fine = var2 + var3; calc_temp = (data->t_fine * 5 + 128) >> 8; @@ -368,9 +368,9 @@ static u32 bme680_compensate_press(struct bme680_data *data, var1 = (data->t_fine >> 1) - 64000; var2 = ((((var1 >> 2) * (var1 >> 2)) >> 11) * calib->par_p6) >> 2; var2 = var2 + (var1 * calib->par_p5 << 1); - var2 = (var2 >> 2) + (calib->par_p4 << 16); + var2 = (var2 >> 2) + ((s32)calib->par_p4 << 16); var1 = (((((var1 >> 2) * (var1 >> 2)) >> 13) * - (calib->par_p3 << 5)) >> 3) + + ((s32)calib->par_p3 << 5)) >> 3) + ((calib->par_p2 * var1) >> 1); var1 = var1 >> 18; var1 = ((32768 + var1) * calib->par_p1) >> 15; @@ -388,7 +388,7 @@ static u32 bme680_compensate_press(struct bme680_data *data, var3 = ((press_comp >> 8) * (press_comp >> 8) * (press_comp >> 8) * calib->par_p10) >> 17; - press_comp += (var1 + var2 + var3 + (calib->par_p7 << 7)) >> 4; + press_comp += (var1 + var2 + var3 + ((s32)calib->par_p7 << 7)) >> 4; return press_comp; } @@ -414,7 +414,7 @@ static u32 bme680_compensate_humid(struct bme680_data *data, (((temp_scaled * ((temp_scaled * calib->par_h5) / 100)) >> 6) / 100) + (1 << 14))) >> 10; var3 = var1 * var2; - var4 = calib->par_h6 << 7; + var4 = (s32)calib->par_h6 << 7; var4 = (var4 + ((temp_scaled * calib->par_h7) / 100)) >> 4; var5 = ((var3 >> 14) * (var3 >> 14)) >> 10; var6 = (var4 * var5) >> 1; From patchwork Thu Jun 6 21:22:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.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 1D636199EA6; Thu, 6 Jun 2024 21:23:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709040; cv=none; b=VjVZXx0sFB2adYQS8ZY+M2oxFdojBTm+cO0P9EtkE7qHox3DFxeGMMA6cGTYNzUyC9oLyfni9h+LTATGJunLhtH02gPfzAx32CG3P0s3gUSPz1xyfDrLJORuIxUszO01R+Q2uOr3d5bx86+ND7btNVHRzFiawrG5lJCDljo5vMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709040; c=relaxed/simple; bh=G+wiotSXKZcg++7yKvAwTOIUfX5xJOJl6Q/Dy/ME73I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZhiqCBdtdDjwppxFAJZypgIlK4l3+ynxwrN8qb+7j/MAvByPEQbXo8Q9KBARyn3eR+YJR3Q5p0IWNYmxkqeW+JXFP609hVlwKylhM2xflOlETKTupoaPzBojAQA2rSvQfzIEk4B0OWhYyc8xXoBCuq1GK/2JEp+5Fj6mxq5ZOo4= 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=ZBXBm0sA; arc=none smtp.client-ip=209.85.128.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="ZBXBm0sA" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4214f52b810so17983005e9.1; Thu, 06 Jun 2024 14:23:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709037; x=1718313837; 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=XdKudJ8sQ9GAJhWY55rXwQitu4hCnSMzh79rjzP2BTI=; b=ZBXBm0sAWsUFSYtVjM7NA9JWvf7s2dLmZHNisA1j0MNmfUrZIC/BBgme/mvaGi4vkM rrg8ugEyQgmG8vsmqHo0tLGi8tl6hHPcOBMH5dnC1yaeDRnhFlNAZYB6ktVhQ3GgmITI /P62jhd98nZWwLPOa+VgcLRrAYrtqefmC8oC7L93ygFjfcc8lu0q5jVVSXEDbLgqIQl3 j7AggGhfZQpTEzxxPa9wR/Fkp24wFzEg70wIekysHefCemLOUagFuyyh9InRBrZgpaCM f1mexlWmM9DeXbnFzrn14oFzYAOUNK2s8yqk4Ti1Lc6Rmnh4RuyWqeHVYhQmAXtgDN4t 5UsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709037; x=1718313837; 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=XdKudJ8sQ9GAJhWY55rXwQitu4hCnSMzh79rjzP2BTI=; b=jIYkQb0VRoA7wfJxO3byeXVKz0ZU7BU7y/ELFLvfJvggu/p533sXctwTHZ3ImgaKHP 0cMSDDPxUZnBNZurc1aTJBtMY8PYLQ/w+L+h7ljXc4U2WSAqPriYWe1zK5NQZqnvy1Ry hpm3mEa6tRh4bsqvk5klQfJj7HtnBcTnx+01ZbOSika8DC4WWWXPH3N1jwq9dBYpFltn EL6pGSVev9Ifn/SDf+0PR952w3SknmHFICtEGFACiDJdUZJbYg4d66EG49lPJxMi3odL hpwY/D56Or7nHJoCkHTmcEko2/3UJx2RGRNoC4V0818jkn5Pu/f4/Vfe6PPf7mih0BZX bBPw== X-Forwarded-Encrypted: i=1; AJvYcCXTBwaLDiMZKCbxxqk4sk8Z+7aSVAXLPP/ElsfIO1Ns/NZbsdPXDbwCb+swGnFU50SkXbYCGkAcNH0HXPn6nW0nUKB9DsDFpgzAVt4FMI9UkuoKZBFLw4lmx/SGnpW6o+ntmWa8intO X-Gm-Message-State: AOJu0YxE+nD2vtSCfCsO+7RQMqFQCtnRHW6SIPiJysyl5wMgxYxIesAf f6kTggJ8/3OqckP0LhfPnZHNm4OUDO8Py+J4QAXyJPvlvi9VsUVHQUMM+9GcBZ4= X-Google-Smtp-Source: AGHT+IECtjVjvQ7tGvHnICpHzvSyy7CbplUSFdmcv/KOvtGplWJvKsweztIDOUn8YK5mWPtcMNfvZw== X-Received: by 2002:a05:600c:384f:b0:421:5d4a:7286 with SMTP id 5b1f17b1804b1-421649fbb37mr8858805e9.14.1717709037536; Thu, 06 Jun 2024 14:23:57 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:57 -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 v2 04/19] iio: chemical: bme680: Fix sensor data read operation Date: Thu, 6 Jun 2024 23:22:56 +0200 Message-Id: <20240606212313.207550-5-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 A read operation is happening as follows: a) Set sensor to forced mode b) Sensor measures values and update data registers and sleeps again c) Read data registers In the current implementation the read operation happens immediately after the sensor is set to forced mode so the sensor does not have the time to update properly the registers. This leads to the following 2 problems: 1) The first ever value which is read by the register is always wrong 2) Every read operation, puts the register into forced mode and reads the data that were calculated in the previous conversion. This behaviour was tested in 2 ways: 1) The internal meas_status_0 register was read before and after every read operation in order to verify that the data were ready even before the register was set to forced mode and also to check that after the forced mode was set the new data were not yet ready. 2) Physically changing the temperature and measuring the temperature This commit adds the waiting time in between the set of the forced mode and the read of the data. The function is taken from the Bosch BME68x Sensor API [1]. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L490 Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor") Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 2 ++ drivers/iio/chemical/bme680_core.c | 46 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/drivers/iio/chemical/bme680.h b/drivers/iio/chemical/bme680.h index 4edc5d21cb9f..f959252a4fe6 100644 --- a/drivers/iio/chemical/bme680.h +++ b/drivers/iio/chemical/bme680.h @@ -54,7 +54,9 @@ #define BME680_NB_CONV_MASK GENMASK(3, 0) #define BME680_REG_MEAS_STAT_0 0x1D +#define BME680_NEW_DATA_BIT BIT(7) #define BME680_GAS_MEAS_BIT BIT(6) +#define BME680_MEAS_BIT BIT(5) /* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c index 5db48f6d646c..500f56834b01 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -532,6 +533,43 @@ static u8 bme680_oversampling_to_reg(u8 val) return ilog2(val) + 1; } +/* + * Taken from Bosch BME680 API: + * https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L490 + */ +static int bme680_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) + + * TPH measurement + gas measurement + wait transition from forced mode + * + heater duration + */ + int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press + + data->oversampling_humid) * 1936) + (477 * 4) + + (477 * 5) + 1000 + (data->heater_dur * 1000); + + usleep_range(wait_eoc_us, wait_eoc_us + 100); + + ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &check); + if (ret) { + dev_err(dev, "failed to read measurement status register.\n"); + return ret; + } + if (check & BME680_MEAS_BIT) { + dev_err(dev, "Device measurement cycle incomplete.\n"); + return -EBUSY; + } + if (!(check & BME680_NEW_DATA_BIT)) { + dev_err(dev, "No new data available from the device.\n"); + return -ENODATA; + } + + return 0; +} + static int bme680_chip_config(struct bme680_data *data) { struct device *dev = regmap_get_device(data->regmap); @@ -622,6 +660,10 @@ static int bme680_read_temp(struct bme680_data *data, int *val) 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, &tmp, 3); if (ret < 0) { @@ -738,6 +780,10 @@ static int bme680_read_gas(struct bme680_data *data, 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, &check); if (check & BME680_GAS_MEAS_BIT) { dev_err(dev, "gas measurement incomplete\n"); From patchwork Thu Jun 6 21:22:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688971 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DE8819A2A2; Thu, 6 Jun 2024 21:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709041; cv=none; b=GIC3qRawUPzmlPdVsOLtr6G2ytAbIizJnBvjCSJP+IVhzVn2EC0SL3uArkZacs5MMHooaG99z7x0Ib3CnxC6JaAEvGVqq2I7dLtp7NWPgzpv3TmqXcecJ7gy9Y08I+sWvzBLW5JSqXicwdI3a9oeFknCnXZbvj1onf5jI1ODZLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709041; c=relaxed/simple; bh=VXhsELu79O6/4D7jTvGtQAsy/KeKycEo9+kGErRd458=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lPwZm4XmBHmf4jVyNYfY7a1u10o+Blf5lh85RbFdY5Y//C8pXvuSsH8lwjC9qAo9AeZhPsyq/lxtqq1wQ/0BjulirFTq7ZIrLHo4J0bXFGKFzITBJK+nkJk1QKnkFXi4bHvHPeh/yi6YGTsJIg5gm/2Nh9C0MowOGMUg4xdLi7s= 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=J5U27s3v; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J5U27s3v" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a68fc86acfaso230242366b.1; Thu, 06 Jun 2024 14:24:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709039; x=1718313839; 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=2hN5ntj/0ZGGtAfqb0KFVxTijixC5F46w1n62pNbLRE=; b=J5U27s3vPQRyNlqyAbHOpsvicMDXTOgLnzwXCOUiDL5HjTSyP1k9Kr3YYze4XJDrEL iuf4fBRSy3xXYWoPYYkrkuAa+H2wivMIEW21vhVlxzihx7B1TeoKcTmcdgSo3WHUBGNB VtQWXiclq0xxpx+IHmPhbRP5jsSPMaYrXYHPnEi7lhu4Jb5f1LXMT6/neN7bcRhWfxup 3NCwK3NXLE83CMIEFxw/AgQvNmWaQBt9FYF7Dqj/oFNOdve34XJNew34NAsS4vnIJs0Y nCrMQaJrr4EFpt//hLsXDingYDCfxqP8OzQoObhVbcBp7FFEZb8bBDh4kjMGVbbgSHBd 6qtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709039; x=1718313839; 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=2hN5ntj/0ZGGtAfqb0KFVxTijixC5F46w1n62pNbLRE=; b=i2tqopHzGe9aPkgN1bZEMGPy9R/BNXc/d1URJ18nQxeWowqwe+CWCdDUl3gKoI7KTb 1MqI9EQeraO/Pg+5+yh7nlx31CXujKm/TnB2sYfPFDeUVyYwlUgNNQbwPQzLntVwk2Xp +3VFanVvkfu78Qfy1PxCTAzZR9Zle9FCINWRwYpS5GITuqhupIVZ2NaBK0OzmuQTvJEc oUO/0aMGlKQz5AM8VcDX26FtTKbnxX4fRUsej5C8quQWr7pDRLS1CTVoZrQQDwbhVf1r txitUkXOY45SP14yzGTfTslwqfzoXpxEuYLbWZzk73DDOSy2rcLNnyuDMCCA/vuNePq5 IN8A== X-Forwarded-Encrypted: i=1; AJvYcCW5hdORi68gg6XtUZH26KrdtsKk0t3117GPTO0oKHy0MljcEgMQvlInHOn9u7rvE9gHbRtUMTt4+nugtmdjd9W05BWOeyGSft5hn5QT9jh4vot+K/w08uoHvzmISeuU2M+WRPKKPPQd X-Gm-Message-State: AOJu0YzIpDCUZaDwSMcQCcnxlv4kPuopRVyJf7cLpQ1XuXbEkILB/Ihr kI6Nl9hSavJpK79Xg5E7kBOwi3vzSjQBdbO4vZOJ0jRqLFCK+NmO X-Google-Smtp-Source: AGHT+IHt2gQfKQoEPTTNV6KWs3NWZrn06ijxs/zDdLNa+0TL8OUN42rl/VbHuFwt2zyvIQQVMhrYzQ== X-Received: by 2002:a17:906:adcf:b0:a67:490a:8162 with SMTP id a640c23a62f3a-a6cba4a1fb9mr66285166b.13.1717709038619; Thu, 06 Jun 2024 14:23:58 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:58 -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 v2 05/19] iio: chemical: bme680: Fix typo in define Date: Thu, 6 Jun 2024 23:22:57 +0200 Message-Id: <20240606212313.207550-6-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 500f56834b01..66177f7e94a8 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -738,7 +738,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 Thu Jun 6 21:22:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688972 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 630F819AA54; Thu, 6 Jun 2024 21:24:01 +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=1717709043; cv=none; b=uVXoOdmML4eMJhGB9wL/LoBbjPq08AEDf3xNs2okEYpKfplfC5rKyMQcGpaThbjlksfSztISjceolLoV/MtKBNaQ7qeqIyFUSSZ2bdnJqHB8IySGhuOql0AZDjfx0csAiW14QhyLqtB2uJsFX0ZtEzlZw1FRW2QCjFSsVlf7CCo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709043; c=relaxed/simple; bh=g9twr9QrxCTTdu0zJBHxxTeAILNtpGb898errfNyCCQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qu+TzW5xlzV418uFa+CeFy94KRFMDVXM9lxs3yz2koBUbR2pf5aeMlmWiBoeIzu2zI1P4MXm2coKk2e/lHPHis4jXysLVWtYSQxTPF8Vo7ZDeiK0zrHc+Fqaz1QE0rV3tXygTW6kd5N+YsL7Hapx+q33dozMl7cMvHbtcjQhl90= 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=eaVjqnJ6; 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="eaVjqnJ6" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-a6265d3ba8fso144248266b.0; Thu, 06 Jun 2024 14:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709040; x=1718313840; 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=+OSdOUMA3z39M416e40JdCwmRgGwxEfBXKuQ8gzxx2k=; b=eaVjqnJ6DiT7ZJLMD1jsZTLRtsCWSDu5DS8/uJCemZnqIrMlIDxFvLVw1iBdj2dIR4 MSc7u2HcHXaDGlMRBun1FH8Dj0NicNCD1vnS/eaWBvVkSUiEukTCcAuqTthsnz6nL87R kmqskfOw6SYZwpzIeehl2jedmidvVwMh6zspVjy/OZetVBRpsgj1rnF1Qd9/n6nZPgKn g2o8sl/7kS9ewqOMWDVPO2tPh1okuFtfe9Gt+YIdvsLQvS8If5ps3VDGViLbT1/yGDdF YZ1l+hfqyyJCNexh3bqpXAGJDF4rJi1f3as2xugEStb/IRQkwlijWs5JSlV605G9Kfej lJGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709040; x=1718313840; 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=+OSdOUMA3z39M416e40JdCwmRgGwxEfBXKuQ8gzxx2k=; b=Nv0XUPUO4RBTuLSmQWHget9myf1Q8y1nkeZn8Uh6XdoV8RIoGLTJbVcZVScnH1vOQz J6kXrN2N9PdnASI4q6J/HTRyz4yt2ix6A0DL3YRO5HnCqXxV4H2JC4N11h8tiNEppVNe 2VaJysRpbRFAhOyjiVep5nWW5uEWeE7xcvKFJF1jxSdOzlKeoffUru5W/qkXgGMQgWj8 E4vJ+WuNizBjC40nwxPPPAqNspI3kbrzfc+catLiGerh33c4Apoe2GQHzRe9oCdJ4iZn q93aAQWbez5y5Lcx6RnreKs3xwdQ48OzX1FXo6uVBcNVrWiP1YPPmoNWFvIw6NDkPZuh AVkQ== X-Forwarded-Encrypted: i=1; AJvYcCUZgE3oz5sGK3PGeRFstbykjT2vhzd0ZtnbqU5zkJkKUEGsp1B+QeNU+sN2a5XquzsjnxETtxZwVL8Xwh/t+1eYjB8uwYTtE2FFYRMFEJeRrucpPqcdhc8RYQhStC5ODoEi/8FS7s1k X-Gm-Message-State: AOJu0YxPfEnTEm2gXblk7QSflc3tK1G/TQn571e+kyVfFplkHLjf/Ccp q5u5XLwZQ0/2semUPFRCs14VML8revbXNPDAuwG3Ivb+fhIFWnJ5 X-Google-Smtp-Source: AGHT+IEL0DUXlsnNtajjJkmgaI2vl2OIpOI/Uk/FYocQS41twowjsfd9VxqfXNypbDGodNM9BXdBxg== X-Received: by 2002:a17:906:557:b0:a68:ce70:61f7 with SMTP id a640c23a62f3a-a6cd5bdc179mr45214066b.17.1717709039705; Thu, 06 Jun 2024 14:23:59 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.23.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:23:59 -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 v2 06/19] iio: chemical: bme680: Fix read/write ops to device by adding mutexes Date: Thu, 6 Jun 2024 23:22:58 +0200 Message-Id: <20240606212313.207550-7-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 66177f7e94a8..92359032254a 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -52,6 +53,7 @@ struct bme680_calib { struct bme680_data { struct regmap *regmap; struct bme680_calib bme680; + struct mutex lock; u8 oversampling_temp; u8 oversampling_press; u8 oversampling_humid; @@ -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 Thu Jun 6 21:22:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688973 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E97319AA76; Thu, 6 Jun 2024 21:24:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709044; cv=none; b=H10OhSSngirxfCXpxh20PUsfM0bM73rqMgDEjlHCNHE0Hwb+JRZbCj7feibplwGC/ZCRlu3CqfZy/nHRTzEA7bKKPtxpWyGzhWodZA6U4WJlHcO0CbwpJZyK1vXLzIijSJxJgyvsoDiT1e3VigbfN+oalYb/+0qALaY1KjYtvKg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709044; c=relaxed/simple; bh=XRjEdmjbl3tze6WqILeOK/Eq4Lz2TZ780ENtcA87L6M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=axssteXlNry8rRvDCfXRSFq+kksnSu73ae8uPJhWiMtopMg62apfvmIsA5w1Kn6uQQ3tSgB5dBUGb0OGNJociCf/Dygp3fD5hY5qs2bjM5kB5SOgPKMJHyGmKaTSYRV9gtDa/NAF0e+LqwYZ5q7gtXJ7Dq6+kNgv0CyAyhqIrsc= 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=AcR6tosv; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AcR6tosv" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-57a30b3a6cbso1838686a12.1; Thu, 06 Jun 2024 14:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709041; x=1718313841; 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=CkKE8KGpoBxtr96EwcylIF0dTKX3Ea9TXgIZr2Hk6I4=; b=AcR6tosv2uowIZiN79OgZqE/DlIg8xTLsLFxFnnPKL6R1M+YPvXmCSPPYxKh22LAdM U9tulh1F2GcYod17kbC6UCFk60e4MFrLUMAnhFqhmRqr0DB2rx0XH++oxBiglFMqyXTu A8D2KS8KaMnnAuP2yLkb2Fv9e/9VSWyXiaMOUijvRI1NOXe8Qwe8Pg446KNzd50Zaoc7 7skGWkY0AbLv9q1/Ymg+uWb4PwwLM7rlb9EPI5Pn2mbBICv6D562o6yv8L5ktPSeMOhM SXSpMTUYyhKzchmvM10cVhhoJ+h9ocdYpvIPCWWlepEmsBofrFAlcoL6j/TnI9plsYte nZRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709041; x=1718313841; 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=CkKE8KGpoBxtr96EwcylIF0dTKX3Ea9TXgIZr2Hk6I4=; b=jIGp6FNc13Mkau1yWnu7pFCqvetcjDCGYwaBRKsD9tisK19/gf3Jdld5zBQW3PtuVu 99tfK7+4Pc9DBqIwTuoivZtulLCY9J6ilYI6Cy0Z4A9V77HIwfSuucCQPIqmAgbtaw3I pE/EoUtJSB0TzeaWZyrTHaezZn556VwkcPPsf6W96A4irdQDbjrVISDIJeWVh9oVfSuC /WgeTMFzJsOwiciwB9B5eUvqHkpYneGFQfArGs4BVwC8WRGvdyShcxX6IlR0SmVuDd56 dFohNKfcUn0NJMlyGPFEugZXgjjnwB46eVsrhtHtVMosBfqcJoWQgx4AE7f//YAwSfgA KLYg== X-Forwarded-Encrypted: i=1; AJvYcCXRjA1tg4NmRw60VKdsMP1UYSjNDktiMU2d2xof1du/mq8h6pUzay4Y4cx/P3O6IgKgvBtEtYBkxVZXlpaCb4KZmvi3JEwcV6zfdWf8WipwcT7JQJo8KSGCLj8gJs6NlDY0IBd3Lbw2 X-Gm-Message-State: AOJu0YzePHmq4QIm1LW9Mz3ruVjfuezDiQlD/Pf8SweQIp3tusFlW9os ptkFVtlFxneIkkpEnrwBrGs2fUV2EtT4fTRhl12Nh6GHi7dFPZjo X-Google-Smtp-Source: AGHT+IH6yk6WxvT6aFN/dXKSVGI9afrPiiB7CvqU4TJYrzJdlt7UvHLyk+iiMH95jh+qTP76LxkFkQ== X-Received: by 2002:a17:906:22d0:b0:a68:ed0b:8924 with SMTP id a640c23a62f3a-a6cd560fab8mr45684566b.16.1717709040805; Thu, 06 Jun 2024 14:24:00 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:00 -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 v2 07/19] iio: chemical: bme680: Drop unnecessary casts and correct adc data types Date: Thu, 6 Jun 2024 23:22:59 +0200 Message-Id: <20240606212313.207550-8-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 92359032254a..acca2e516157 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 Thu Jun 6 21:23:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688978 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C2FF19AD5F; Thu, 6 Jun 2024 21:24:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709049; cv=none; b=aZ3LPyqcF5woys6tbxpJFNnnLcQ36FM7VBy5RMEDO3R32G3Qa38uSoy0nhE9GAjjmbBmio++9/ISNTMfgm5EGo6/WhVGDaw3VMk0v5RrrWdH28nonUbTTT5VGNYfFqmiOxkY2C7x/PhZ12ds+a3wPFQgM0dYqDNP9H/86zivu30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709049; c=relaxed/simple; bh=CSMmb3T0fKDhA6MFNEPevOEvIzmO0a2jl7kzoeqyjXw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mv//QljKqGhEquPlP/j0fOv4IXO6z7gqijrlSegHXbcPS0yt4z7LSVxp/AJQdPJN58gsGBwbAX4h5B1vOOZwejkL3AtrsHTxn47XPI8Mg0I3WCwrKYthpbdRDStghAnAjM7K16NhHE2cell2bXzIq9dxK++PhFE+QBJA9zq4EKc= 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=nbefpSuB; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nbefpSuB" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a62ef52e837so190895966b.3; Thu, 06 Jun 2024 14:24:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709042; x=1718313842; 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=hzTbYlq74oj4OjHFQuy8JjHg0rPUKiRwywLTZbcw5Ko=; b=nbefpSuBoqIKaf0CWmkiEH+l0W1216XUgGnZNhkW0xET9qCp/xtO31uoZMe6fKbxSu A38uF7s4VWkZnCIqaB+0GXJ5Y7kKUAG6PHG9G8cBVOjErG7hTui5ZM2DStm9rraMgKjR NZ55h//qsNMcHfFFY2HibuCArjhKqROYjTT/reCQiI+ribyv02tsClmZaME7Ppr6waVY 1/A2obSKt/poBoEYQkAxvThCgQmwCJbB7bx2KKgTtIX88pocuXu1so/K5CV7FxvYg7qC VQWRPJWfUb/26sqE9wfXi+2LXzSsH7KQDu0P5WvBBwND71Jk6TWZYsSD5ttHKWdOAZmZ 6qhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709042; x=1718313842; 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=hzTbYlq74oj4OjHFQuy8JjHg0rPUKiRwywLTZbcw5Ko=; b=oDW46lGPcY4wNWrdl6pJw68PRH7e9nwQW1Jt3c51ctVr5LPrK7bcSQJBJfs8zXkJoM 40+Hn5xGhRTRbxIObEav286Jm3mZrH4hBXysKXD5y/Ehjwv1lm4Gt+8caTXfYnRXNAx8 mhN3IjLvYO/Jlv8K5rVKBh8S3t16OJFplQIISyfdCLczcAUApW6bMICDBkbct9kzb616 l7MLdGEs0lfhPwCaPGLs3QeFrE5hwI56LKUPjgV7GDmdW+tymiilI4YXHBQL92RTU/fz M87NllY53zJ5aKjzPh8m5D1xCSuLuiU8/D1evtFtyiFZ/7++yo4+s2oFdm9CPTgO83LV RTOw== X-Forwarded-Encrypted: i=1; AJvYcCUDgMiZgJP5Puet1mr8H/bcJfMLLXL/9Efp90+WGRtMusXYmehKWtF5JLxH58JlGTed/0tVwI667fMTrTFXSNe602qZCEpa1cYNr1a5uB3gVttSyqBLLld0LGHvai0227fCfHSYM3xU X-Gm-Message-State: AOJu0YzNNilgGdEPuHBg/iZSon56NNm4R4vpdiGVBy+VoHnzKCnO2vuN bQliRYioThzABPwJBBCgd1j8gilSx6QzIk5HEPCsf//wBk4mDTHaEf9NTpm+gaQ= X-Google-Smtp-Source: AGHT+IE8xe4OBvlY4TYeSQhFK7N8gYwFryZIvAEO/SzEyRG9zPrcx9kx1VBK9QNnNhHE5fSuNVgDcg== X-Received: by 2002:a17:907:7295:b0:a69:1122:7c51 with SMTP id a640c23a62f3a-a6cdc0e7a1fmr64739766b.75.1717709041696; Thu, 06 Jun 2024 14:24:01 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:01 -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 v2 08/19] iio: chemical: bme680: Remove remaining ACPI-only stuff Date: Thu, 6 Jun 2024 23:23:00 +0200 Message-Id: <20240606212313.207550-9-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 acca2e516157..1956b456141d 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 Thu Jun 6 21:23:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688974 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7EFAA19AD8E; Thu, 6 Jun 2024 21:24:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709046; cv=none; b=UBzGbd0czd1LkOwj9UckqcHgztr/1LJ0WBJqCalta7CwoBiU9qGNsCsFZWCJwMHGaZETTZr246o2rW5l77HmTde80aHprlHTAavWFzLf1i01zBIcHeunTzcFlLE6JBmRFQU0ojX0v2lqosBj+grcXszJR+Hp0QtTTlrXyI4KqFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709046; c=relaxed/simple; bh=S+y06tbyb7l3dmgkW15C3vV7SWVp7fWDI/UrIz94VYM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Q1wvwQuy/4/K+ObVQb8vnR1k7m5bJWd3dDpw2NSzb1HBzza45OrM5/GUsIIPiNN/rdl1G/0cMxNGY/KF95j7HqtojpUssMcMF1bBm+GbxYjiTe0s271UCsTL9MJj+RQ80X/IF1cbRNJPgGM50bKbNRXkGdxkFAr/hHPGyt68yLU= 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=Un3sXB7l; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Un3sXB7l" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-35dc7d0387cso1688530f8f.1; Thu, 06 Jun 2024 14:24:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709043; x=1718313843; 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=7nTflblya1f+VabXtxA0V93oe5w2CEdoB3bLkUiVHVo=; b=Un3sXB7l+0yhDt8vb3N/eFrfWM2WTKnSLWmYNQxS/+9X0xNzIduSQkpbEKaGTVgH1B rJ5Hc/FmVWqPgHPYxbHQ4thl8HIFtilkB5TEP+Q8HUJ5j+pQLCEcigIqoNGNcuNHy+Pb toxKt0jr7JLIIdqZuNGhf8IUu7YhnkTyCKwTgD15etQWqLVFxoZzYNEepjt8Uls36BFC A2rU+g+DyEmfuDRtPQSOZBYo1KxFUk0b/V9Qffx1bWnPv90I2pEgworZI2jVgeNuHe/Q SeLINYHut2Ej8/nPzReAuO25kixTuvMzhWY1QaXiWANSRgC/QVjr3TvBWcmRbkikxkpq l2rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709043; x=1718313843; 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=7nTflblya1f+VabXtxA0V93oe5w2CEdoB3bLkUiVHVo=; b=a1H3tM3B/8HTQalKlcrtcs7/3D0sjYoexVW4oAmOXwYHcs/KJ1tFBdohwOabmbgOJ9 obmSi1moDBxXLjKRZPAxOuLOIS1JCA8oioWRkMkMtPbflh3z3Cp29gtKvENBW0n9UiaJ AykDMOCXgtNkLui0C4X07ki74+wBq4Iu1qRUk4HSVXsStwzKA7m5onXrYpfu+g/JdNzN EXa5cSfad+LIEkVQAWWT+VHZJnO/xed1G5HTvB+odx2t6JyfhyVZdmr4HxA1h1Lq93mM 6bF+XsR2VHg+c31zMR3UBzsWgY080Py01xTdtk+QJmXRuENNSXozStdPmjMx+tYkr966 rLTw== X-Forwarded-Encrypted: i=1; AJvYcCUN8wat4c9aiHPUX8IOPPRVXXjzofdH29Yb+oA3WEvrqgG0W76jnpU7uEWvmZs4Cx3EEm6ZhqE/WaQzmCNlyS6G0zDdSUKNOmJq/AU/gK15T1fcIf+hZMEUWDDwt9vrYtWwlZ7T79tP X-Gm-Message-State: AOJu0YwcmkH7w+qYycnqNiQUPThbw4xkSdcvuA5OuA79sqfyi32JE9bo N2s+V4IApjOOKZC6+HPdRowdq6Y4WSxA57zkwEcl/I6qOETWCEnda4fFV2QIf5E= X-Google-Smtp-Source: AGHT+IEhei8E3j3fhgmh1LA9eZSVtqHZRMkkpskKPk6xmds0uJgcd5ZdN3j4g43CYBu/wt8w8PbQBA== X-Received: by 2002:a05:600c:1383:b0:420:182e:eb46 with SMTP id 5b1f17b1804b1-42164a44859mr10364955e9.38.1717709042735; Thu, 06 Jun 2024 14:24:02 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:02 -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 v2 09/19] iio: chemical: bme680: Sort headers alphabetically Date: Thu, 6 Jun 2024 23:23:01 +0200 Message-Id: <20240606212313.207550-10-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 1956b456141d..2466398aad05 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 Thu Jun 6 21:23:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688975 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 6A93B19ADB5; Thu, 6 Jun 2024 21:24:05 +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=1717709047; cv=none; b=svuopflRvI8Qq5DmvAqE6c8p4P/G9WjxBtgP24oO3fXhm29njmgaNyRspcW6gLKdXywM0/MeMjfzU0q3qmWtU+k0bmfoa96OXE0OMl+y4VHy5wQT1jiByE/FL0kRJ3XylggHfMYQYlZb4xONw/GvQPbpbuE/UyMrpf67cfvb6vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709047; c=relaxed/simple; bh=Ta7SqwQrXrbENkewVxz0Ak99cgbEAJm3C02JLKjUyfg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e5yi31ZmKpTAM1APWCrNIMCtkJj85ON5cJcqouCOmj4CQULHzlmyuNl+0/YBCfsgDefeyrZoPF+cG37hBwpRxRuKsJ8s061raFkddIFvB6DqinE3/4pxZY6Us/vWFdkvXMg7rY4FLeH4R1kk6PPpVA2ajOHS+w0lheQ1Kj9KT9o= 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=g1fP3k70; 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="g1fP3k70" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-a68bf84d747so139052866b.3; Thu, 06 Jun 2024 14:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709044; x=1718313844; 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=I+duZJpyTdjjpnaYpux8CIQijG0wZW+zlVh+jOIL25Y=; b=g1fP3k70imxQ4cxUb7CriR42U/NVSubCOxi3VlJCGpXv3ASljbcsDkLyxaS0nIC160 Mcy3QKBLa69wZJq7BtyRCkbTrUpRMNnDGVwGiUyBnFe4ySDVmzbcBlbcv0hlqgZe66m1 sV0DWvtTrV/mTBX+uewn8tQ4x9Re3r24kBaab/ksTjLc1tgWxD3Nw3SKL//BYqrrHop4 D1X1g98zudZRli4fz+PG3popVjKqT+xJ3WXilCZcBDgej/yndlWrmU785G+acQgn6/1I KaRH2wn8geVfi39gc07kLSwOYvdmKc9OHoj0DnF6AiYbFZTVivQDm90P3gSRKP98iTAn rgmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709044; x=1718313844; 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=I+duZJpyTdjjpnaYpux8CIQijG0wZW+zlVh+jOIL25Y=; b=nZmmuEY2oTjNcirDu8sjZfpgqagUxgxDiWdWJ7Y2LDzIPMztguyehroS0gnGU7Y+TI MoNn9lqJ1HWpwU8UDP3OqmSXzCqkyxpY3sDmuoiBbE2gBPCVdZtf/OCj2i5kWqkedGdz upTKT6YvaOe0URi9wCMkc6EPaNWZS/m7Olcs3ru0nVOA9yABx+IdxqztzGnC7VV45td8 6jLEemoQZja6RkPm2dVYdrYA0eebOw6eldgHVjRBne+u9dvAAQVXRd9O2Jjm5V707vvI YcLam0JTdh0sNMRDT5QONj0D+5irbvw21IVLvCyIqc44YtWDBLYqZyBV6qcq5ipMlhF/ PzJg== X-Forwarded-Encrypted: i=1; AJvYcCU3Y5hSMYCioyQFl1Dk1jaP0f8Q2klUhVdG1blqSrlDtKfJNSo6nvpGeRXYZcR0/UEh3zO+YiN+rpdfoh8N4jdzuLoeCfB+8Fx0OGsOiwgexgTKQIjZWyyxoS9mWhJQP7xrXKELWg4K X-Gm-Message-State: AOJu0YzKyiBU/qaqV9LVc1o6I6K0goxWfndcOFSJ6F9hSYG/OlKOT3H6 0TdC4vqqQrYRkvfN31MO6su8m3zQGqezNhP0bD+DNCUDh8iQUUpk X-Google-Smtp-Source: AGHT+IF2AIyjpZNbSgxuHYF5scrf5EVkCY0Lz2vXJMguvEFFDK5xJ7fnkPJ9qu1t+qRXXuvZxMAIEQ== X-Received: by 2002:a17:906:aac7:b0:a65:ab25:24da with SMTP id a640c23a62f3a-a6cd6f0076bmr46409866b.22.1717709043816; Thu, 06 Jun 2024 14:24:03 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:03 -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 v2 10/19] iio: chemical: bme680: Remove duplicate register read Date: Thu, 6 Jun 2024 23:23:02 +0200 Message-Id: <20240606212313.207550-11-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 2466398aad05..c1e191ed4955 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 Thu Jun 6 21:23:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688976 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 71C8B19B3D8; Thu, 6 Jun 2024 21:24:06 +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=1717709048; cv=none; b=a9RTqPuWJGA/DEs6/nFohAlfcwnnM211efMi/fZyjCyudM+P/UqnIrlia1WlHvyyb10qgSlJ5hDZf1BOVLr3ftn0ImKfgwvQlOSPtgcPAEGffS3LmCmBHee/BdKcatMfsiTAmjKFhToE2fQV+ZptYQ/QkHB+96YtMfK/onN83nc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709048; c=relaxed/simple; bh=7kpRsJ9DR2TtBQ4nmCfHpORXQM9PIu6cwpBFG48iQ2w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UKAy5sxeDjGs9KUMDP9uCQC2QlUv8NF7mRaJ7fIJgCz0lCXkgiHrIyoxfYnR+C5mQ3vi+2uWxAdV9cpGDoMZN9+Af+psDTebwZFXXmUnfnZjaWQaaX8pgx89rQPTFSPvzNif+y4eS4y9ZVNH3M/hyLp8nPetikfPOqYp1KGDmkU= 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=kL8WOS+7; 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="kL8WOS+7" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a691bbb7031so195142266b.1; Thu, 06 Jun 2024 14:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709045; x=1718313845; 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=DJizzfNOx7HrtlwTGiipVvgYiyOjeUKSsMLHTZf2fVM=; b=kL8WOS+7RXPJVlD9C2XSl4m4rGZj+Gego0rtsSGN02WXnBfGNl5OxGY4UYC4z/k9bd vuMWHIMoThQ3wzFluiLPUPzDH+UlDg5pZn8ZGhv+2BvjiWsLoyFmHg/F9ay0Rd+WB2iq SYAgyQ/USci6j6Pp1SFM6BG2Ow+z+llMUffklZV8KtwcmiYYdauxY3JlqhZj4jgauwSS LWMaEq0OkA2qR9SQ/ERjsDpu2MiRgN1L3xxFCcMwghqgCVmg2TY6kn3UNSFwHOQAHalj FRZewEg+GdDvpr8hZkmdzjxawo1PYz4y8m5BTzswGKxOBekNor8pPa6AZGxiaX05goCq G99A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709045; x=1718313845; 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=DJizzfNOx7HrtlwTGiipVvgYiyOjeUKSsMLHTZf2fVM=; b=ZXaWXuvh71pIMRcytmfH6zZK0uK+ATMagJxVsSVljCplid3uE40CA65IJFVswafjBx RHX8R9wYDtaPrFoLh7cCOx07fEvR+149YLxIWWsfAB9B3eGn9RQq9FrXBuK6hy8UTgwZ g27mx004Nlj3+GkOXwiaV6Uw1bqgBqPzXpjDy5dW7vU/HAQ6WrGzbHbx/q6mUJh6WLl/ tWYXYt/PXKpuAr6C0DfCC/rjhDeSOiNdPATSQGBcSFwlcqrdm2K0nYwDMZYUtrA52IpP fp49vzjWV17yN8zPFABE0ZTAFf8HM9ZL36NagZal+jzDafBfeBL3eUIsLQhQz+ZCJQYb O+nw== X-Forwarded-Encrypted: i=1; AJvYcCX5o+K9Esa1sbe4Op9hSki6IcdF2S4pjizCpwrxpBr9uMYwtgh36kxeqdlV0azI1MEJaX5u2eSDeUJIsZ1LxFGh7gsgiqWART/RgZMYpS/3KG1TiZ30b+huQ+44XtDHi7/eberSGLB/ X-Gm-Message-State: AOJu0YzpYf95gqJMRucigTtD1SjX12F/kx4hNiba7iiWNyrL6zCtf5cW p5Cw+ZpjTXWMXTfHo4dI1bWCp/444O9zGu1Z+y+0PrDTLpItIXX+x50BIkR6aSE= X-Google-Smtp-Source: AGHT+IGRl86RQfdkFDmfPIjmVCRQg0QCE7alS88TOGAQYkZ5TCeoBuoY1k4+ChYPPIj/xrghJ6LTrQ== X-Received: by 2002:a17:906:b7c7:b0:a62:b36a:eafa with SMTP id a640c23a62f3a-a6cdaa0fa87mr52322966b.57.1717709044836; Thu, 06 Jun 2024 14:24:04 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:04 -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 v2 11/19] iio: chemical: bme680: Use bulk reads for calibration data Date: Thu, 6 Jun 2024 23:23:03 +0200 Message-Id: <20240606212313.207550-12-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Calibration data are located in contiguous-ish registers inside the chip. For that reason we can use bulk reads as is done as well in the BME68x Sensor API [1]. The arrays that are used for reading the data out of the sensor are located inside DMA safe buffer. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L1769 Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 28 +-- drivers/iio/chemical/bme680_core.c | 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 c1e191ed4955..f96cd4157c95 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 Thu Jun 6 21:23:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688977 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 77EE619B3FF; Thu, 6 Jun 2024 21:24:07 +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=1717709048; cv=none; b=hqBcZ6NJvNz6ie+0tPdEYVG4yrQhPgYedqS20Iu6PdsdWaKASviHzaTuCDP+bYlSDtTXylhGERG2STjtKYOS+S8lhmKdJ0PjRD77FdPFF5ErC9zACW7dB1qbf04ITygqVh1P2+SyTjmwWGs0+azw24mnUSe82NyFf0KF9UfAqXM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709048; c=relaxed/simple; bh=sYfKjrl9ZKUiAdoE6IMECebcFxxH1sMa9MbwjyeN9O8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mSiaOpXo4gbf+M20J8QMaN+wlc4Kp26ClwZg4/CrvwEgHT+2iBWu3j7ArMo4Oj7PXhISZAi2l69v1E/zoOnN3RU0dQX9ExJ9fDUUkJ119263AYGo7e/BRDD1RypqZXIrVeE4aPGlELvwd86uP0IrnTQQFqiQA1w+uFPQM1BrTEM= 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=nSmrK+eJ; 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="nSmrK+eJ" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a68fc86acfaso230258266b.1; Thu, 06 Jun 2024 14:24:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709046; x=1718313846; 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=KnwHnvW5yFZ1H4ue2cPFcV1vzyXiNyUsD+Kfb9v7TxY=; b=nSmrK+eJmoLb/H6mRTJkRvVnhkPt22p6ue+pSSTzNMJH56PhUT2/ZtOxRRe9aLJe+5 kyvxhzj3D20v8MopsqeRlh0/OYb8w0YuZpdV3xBMFWFOy3jZyLxZyl8o79ypxLGTnMHT RjZuw7dBHOxT8Uh9VqecFFgXsFUxHKu818ZMs3HG6K6jK5C3tdAlegCqldB1kcPDg6IR Xq8uAi2Zo6ptY25WHTvF6Y+/3POaPM1ZzUx5D3Z/x4VmZ8wVyPLZFv3uh5dO3AgLmEse ep9kWpDENeufwgNpTW1k4nBGMT5uM/x5cubBDtaPKntv7Js2LauDI+yUnFz7NH58ftry h77g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709046; x=1718313846; 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=KnwHnvW5yFZ1H4ue2cPFcV1vzyXiNyUsD+Kfb9v7TxY=; b=jzu2O3U6I6WqUs7LW2VkS6bHYtgVsorze8PIK/N9E0V5rffftRLAH0BvWrPILYI1W8 NcC7vsT5rXFNvW1rBYckLIdJnssmSAj4dKSzR0DWGa5zjGic3lqF6jPGi2Tn7FMmyNXK qg7MKhzsc4BTww0/mOKIUXFTwxhVxoDVHdFm+ls7yVQzj/sFaFZ+IJD4j0rJOqXWH7++ yRZlDB5NBInULSk7Ptte3wfLo72nXusM1GvIXH0atM3HJdRMZqoKLcDXfQ7mhgMCsBkh OyegAv6GbXq7No2QfTpXCDVM3ixLxvynuEb2+3DFCPYgUbqGCDj7Tbk27lO/VxrIVS9E k1KA== X-Forwarded-Encrypted: i=1; AJvYcCWiAn6oeZtvHUR/U1J+CcV+CN+XeSOu4DO7ier0xJ9qHk69AbdnexIzwFpVS9OD3n/UwTXUQ0UA+ppYnCij4r9s9e2QuZpN9Yib06uDkDLFMkE0CQDZCMhqdToXL7X/PwzsfSiDOpGC X-Gm-Message-State: AOJu0Yxp7XFAVw9WRH4/cn5YH2EOf/jYaWY4c5iSEBhYublzDfoY3mUC no6TQC7ZtJ0wt+fn0qQYPp2Yo9PK8MAhaEbEx07SE60cUpBVnSB3HptbF8W9KpE= X-Google-Smtp-Source: AGHT+IERW3+GzIMieJrPC9ajVs+Yc79VVDWip5E+OTbhafFhNWgBjeEhxlFY20Ov0kgJ11M2he9iMw== X-Received: by 2002:a17:906:e218:b0:a68:a476:6957 with SMTP id a640c23a62f3a-a6c7650a2ffmr311918066b.24.1717709045862; Thu, 06 Jun 2024 14:24:05 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:05 -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 v2 12/19] iio: chemical: bme680: Allocate IIO device before chip initialization Date: Thu, 6 Jun 2024 23:23:04 +0200 Message-Id: <20240606212313.207550-13-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 f96cd4157c95..9d33952e5d01 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 Thu Jun 6 21:23:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688979 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.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 DDE1D19CD1F; Thu, 6 Jun 2024 21:24:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709050; cv=none; b=iNy8XwqEjCJmcalgLM2OKUybyLZFVZCP3P56K/FECspE1XM8Gi2MujoEH79WEHbJJ8G/dK0jAvnKVp9H2VmJDtCHEZMUC6ZEg5w63F5DafeJTDRDNtvLhhrxvpwlPd5CLDniLvfnB5mRHdnUtWpZpYgsyWl0VN71+AUjr6lUdAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709050; c=relaxed/simple; bh=QmwDeeQRdPeRv1tG38iYJ7hw5WBCcBntJgCXUQ1vSfQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dYKLzH3VVei7xg+7L2gznmNOmux0KZ/Pa0hUT8kYCAHWOG8fOvXryT1oKtMWTBKAUaPaom9nxltnZiwaHqqYS4TCwkRUpCFJk3bGuFgD4VqIW85Rg+YxKRZP0GfgIjc7p6q8tyK2tTRUwxeI8q90e1+OU9vy1PCSCQfXKV/bSlM= 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=GmlHRW4K; arc=none smtp.client-ip=209.85.221.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="GmlHRW4K" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-35ef1e928c9so1685269f8f.3; Thu, 06 Jun 2024 14:24:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709047; x=1718313847; 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=r/Xywdqe8DkSJdukhHoCiBUq2ZHXZimgJW2gIHn3CHM=; b=GmlHRW4KjJrfPNA7hNxuh8hK7k2f5om9/qoZp+pxuYoVtAt+dR0j0vR/oSsMAeEf7r t4JC3lyCSlcMZ+uUwbDFzS5ff/w8rKSCRXqOoZNywAUHi/seIE/rlvz8nAGS0GSLHxkh /LJFz155gr3fhKU2sBWT2mdRHainnBYAR8WDvcJyTQRLSwq3VFwN5sf1krzzEbLkDOOE wHY2JpNpJoyl9m4RCF1+y7SpalbQL4jLVEyYMyFoWZlLN15AgijV4WO8g79HtWL23Yd5 q+Cr0DbI9wzKE2beMcgMNlIAd13qMN04MGmpZDbMOmQqW/zup8/8lKylRX9Iw1nQ0B7c pabw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709047; x=1718313847; 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=r/Xywdqe8DkSJdukhHoCiBUq2ZHXZimgJW2gIHn3CHM=; b=I41bjGP2QfrY69itrj8BFye2SHLYtX6z4Di8YtYypZjmDlGiL0mGp0Y1qx+0DBEPEr E6tK1iq2IEFMmRKIQix7jOFS7DYJ1JugdxWkNq1s3L/C8oNNPtO6ne3pbLEkUz8uF7iB MAxZfIuzLj9STZ21tklfTweyCj2Ecg4CYWVlxWUYBrPYSbAZQ0rc59AOzSpoV/IjRIUT Ysc3beGm12xMOLFWVphZcPsXEUL5AgokiCNBCa5DGnmiMvb4Zwmkig2RFlTjCcc+GPb6 Dt2IqKwCYlhAEdw+MSPWuqmJnjK9AVaNt75qhgT2E0fzQ977jo4CgvTIWzpV9xAiAEkx ws/Q== X-Forwarded-Encrypted: i=1; AJvYcCUxbXbxrIwdafopln99Mf5EjK8pwBy0rIbYqkzfFXOUXd/dXwr0QbS2XxZjGDfjYAGzBg4YJQyTRjSJPdUx7hUZ+z48eVUtp0ARfG+vJDqrGvN+umiTIIUSsrQn1iYcLJGJlv6j4qQl X-Gm-Message-State: AOJu0YzYOyPTbTY46v8Au+tY4C0ZdOQJFGSCngr8nASeJkZT7heOcpES j9Q3XkMIuJNgJx8TifETqibKZGdhDoe97orSbfQf/ydEYk7L4zI192nK2C2oo78= X-Google-Smtp-Source: AGHT+IEZ1yDCGHplSK/ZtTLyU1ooHMGPNodfNlUtzsLgkVqeTcYbxBv6bFhJeLId4udhTOIO+zB91Q== X-Received: by 2002:adf:fa0a:0:b0:34a:35c7:22a3 with SMTP id ffacd0b85a97d-35efed3d400mr714718f8f.20.1717709047183; Thu, 06 Jun 2024 14:24:07 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:06 -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 v2 13/19] iio: chemical: bme680: Add read buffers in DMA safe region Date: Thu, 6 Jun 2024 23:23:05 +0200 Message-Id: <20240606212313.207550-14-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Move the buffers that are used in order to read data from the device in a DMA-safe region. Also create defines for the number of bytes that are being read from the device and don't use magic numbers. Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 7 +++++ drivers/iio/chemical/bme680_core.c | 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 538696ac4205..99259d0cf13d 100644 --- a/drivers/iio/chemical/bme680_core.c +++ b/drivers/iio/chemical/bme680_core.c @@ -115,6 +115,9 @@ struct bme680_data { * transfer buffers to live in their own cache lines. */ union { + u8 buf[3]; + unsigned int check; + __be16 be16; u8 bme680_cal_buf_1[BME680_CALIB_RANGE_1_LEN]; u8 bme680_cal_buf_2[BME680_CALIB_RANGE_2_LEN]; u8 bme680_cal_buf_3[BME680_CALIB_RANGE_3_LEN]; @@ -453,7 +456,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) + @@ -466,16 +468,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; } @@ -564,7 +566,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; @@ -578,13 +579,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"); @@ -610,7 +612,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 */ @@ -619,13 +620,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"); @@ -642,7 +644,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; @@ -652,13 +653,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"); @@ -676,8 +677,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; @@ -697,19 +696,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); /* @@ -838,7 +838,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)); @@ -869,15 +868,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 Thu Jun 6 21:23:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688982 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 06DB019DF71; Thu, 6 Jun 2024 21:24:11 +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=1717709053; cv=none; b=S1GE1M95xsKi3UXk1eiIVZ2PTmpFnquLvQPVn13NJHyUCnDMtiVj42UIXqhURY86TKU22KD4DOxxkdyRHgaVqZ/mcWlAJDeoBTlIOAWJchWo92eSVmGvkXyqmRFRrFdLehoIRCqPzdwqfmXAxZsP2e85glmm2Bj212FT66RxC90= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709053; c=relaxed/simple; bh=msQ5Rd8eIGey9e76uvIlQE5lXAXhznI5XikWXS8238Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tSNqNjKcTfz37LzomTiE8qYWvUhSQ0sad+pt+CyZCZzR9WZ51JAOqKDfvTJqKjHqPuYDNLKglmGJCVQiqkAG+C6B0owHvbaDaSTroqs2sKGOBDaGj+p0WjwwHf952OdbmtRN9isFsJOUe9cBxFRwaGEUT/42RjHpXNz5fKuH2sU= 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=J5kOpqjP; 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="J5kOpqjP" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a683868f463so176583566b.0; Thu, 06 Jun 2024 14:24:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709050; x=1718313850; 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=1oWv68nrfdeiEj4L9X1NqpjcXD+oUDcRyB5rSGEHMKI=; b=J5kOpqjP8IPb9XlWYK9DFwAEZKitv3aPhDHa1Mfv6pBQpbarviO2aIT7bn1ao2sx4w 0az2ElKBf+CTgLjbEcJxyBYLn/VaULQrMJjCwx8ThlQlitzQONDuCugdjyyWNSQ4ffYR CxP0FbwWg/eQyqUoDl8eZEGEoq0fU6w3RC+P2d/ijAI8jy/l8ZFYr4Ur3TUgyUJWWoN1 EZ9aMsvuyWqThT7wN4Rycpifywnc/+SKJmi5iU8Er2HcvfHJxDVmGnEmyxY+VTmjC5F0 QQ9my6gW/vL9j0xCT8CDPPxhKoL3ZhtpY7fV8/+24JuJjsG4DjpggU9sk9ZYwtBqMz1n AFBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709050; x=1718313850; 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=1oWv68nrfdeiEj4L9X1NqpjcXD+oUDcRyB5rSGEHMKI=; b=euDB98OkK2waoYlowAqJH7QaPNCGMot7PRKi48LtCH1KBJCUCK2FqqVyrBT3LvGidj Vk0gxnapwqXV9jH4jOlwiUK0EAEwKJ7VXisANMJG6c8yW+DVe2fbhTwIvOIKUam9lqNf 9rTf1h8C+FVtbIkXroWHCjs+cG84iRzZqzyNKTDV94r2nbhs0pUzL5cSK66ZbwCweKAR mfBlFKoPGufStYUss3vUaMXZfTaa04FBqpOpdNB58YI708PdSC0KM0Mln30/+t14/mnu agUv1uIi+ztiQbLYyy8iubc/NVdyX+wc94z8S2L6LYPWTxBdxAMtpUPBqRKghiM0iaXI QcOA== X-Forwarded-Encrypted: i=1; AJvYcCUmHMWqJCCDct+Lv/4qr/yLWs0vAC6HtBQlzx3zSGUmx9DIarD1O1joX/9KACCrktO0sYPXgOeAIJFeArfaSoEgevP4hcMv8rks9HqtYV/Yo/MW0zrnA09BOuPvoGp9HEzinnQfNTHI X-Gm-Message-State: AOJu0Yyr6qfJ6U2CQHGsjimFsbAw8aNAJlP8KYQ7joWq207ZCZaih1G0 im03d1X5SltgGqSmh6bmbDa0s/qYnCJZfTUexHj0JrIHUhA3z4Hn X-Google-Smtp-Source: AGHT+IF+y0UaTExH0gksc1Ri6TPheYhfVSJkhIXGsvnG5TYhQ5nTz7Uq1zKZysTr5aXBRKjRu02FZg== X-Received: by 2002:a17:906:e2c7:b0:a66:7666:fc62 with SMTP id a640c23a62f3a-a6cd6664187mr54175666b.22.1717709050387; Thu, 06 Jun 2024 14:24:10 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:09 -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 v2 14/19] iio: chemical: bme680: Make error checks consistent Date: Thu, 6 Jun 2024 23:23:08 +0200 Message-Id: <20240606212313.207550-17-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 3c33c21b5d6a..25d128e1ddcf 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 Thu Jun 6 21:23:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688983 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 DF73219E7CC; Thu, 6 Jun 2024 21:24:12 +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=1717709054; cv=none; b=R3FDaE33LhG+WYetqF85wh/zGUKmbKGb1I2M/EPEwWP2xIMBRsi0ylHeOL2wbPfRe+DzbkHLnyfUIsB9RDmhtkh2xDtVTZu4WmmSnI9V2fd628nNepHH5t2tnapu9punPrtAk7Wa1Dt2QtChqCSsXf5s4p+Von4TkVWCxUtTM64= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709054; c=relaxed/simple; bh=kzbAH1/qm6sKoaFLom2XqF1d9lKnuwIKy3IanCKqJkM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pXC37xIX9BVk0MxTbyzFi8NYw5T3y6NAO7xuuQ6X8EjzY9q+AXv2bRkX5xgnm1/rTnKUrEJYQ70moAo1HnUsc+jjuydP16XDQ90rMQxWJ6E9iz85Y2ejG3M5HY44anF3U+ExFfYb3aF66woc87EhjoYipahyDeCcHD91OTwLFpU= 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=Pt9B9M45; 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="Pt9B9M45" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-57a677d3d79so4867838a12.1; Thu, 06 Jun 2024 14:24:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709051; x=1718313851; 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=pG8ZX4YUUuDYrxuB6YPc+RSBqPz2gypGLp3b2Zlmu98=; b=Pt9B9M45ipWvfkRQwJ3YrAX8K+FObWg5Om7w5Qr3RQNEp4GX//DdG2FD3uhXQ760vp w693tJtkDEu/RgtON9Ar2pEugCuaR1EHFcOoyazR6pwgDfYlrKYhpD/kpP1T8hUQyVE1 UL1fROxGUD1Oo9lnOpDroMIFJZ0kV+bDuoIjWnjSPFR8WVaXiJbNRn15A0lmr9rA2/ou 8RGA9zgjl7r0hyQXB18JOeMhNMk8YIWnpnLXifkP0MSZtfkF28vCy0FGsQAHw+gg7dMk OLatRqAoox8eqCWwX0F/B1UyKmj/0JzXJj8kIQ+rd3uWfWvhOkAEI/J+L2Xfy+XBZidm 9kpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709051; x=1718313851; 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=pG8ZX4YUUuDYrxuB6YPc+RSBqPz2gypGLp3b2Zlmu98=; b=dSe9tZA0i8IRrMfoi6mK1/oBBbF9EIsIwhLNLlT8Chd2AVKADOcbJSsRiH+E40jMYz D+cMJOElSXeJZxSgNOGtdwEq04/oqZ9kFFnoznIohPC/B+8Ov7nrTESYjak/0XytuhAO FgkI8y5sQOjJ/tf6THqDJ/5fklOuyzsq9cEgTsEKTxXVXbdedQ3c1JadlMnFWebkM6cC Eob2rN8+hcxZfMEfBxHAieabPQ6T6jCkfvFmtMuMazciADkYgFa0naczd/ghT3CAdDpY Sa4ziQW2cSpoI1s2xAI8MRolmU3RKmKLHqx/fXem41et6fWRR7AFImtEqxhqbASKz9TV 99Qw== X-Forwarded-Encrypted: i=1; AJvYcCVNipTXzz0hHkNt5iwsN3iFlh6xNTGtjXzK3EYTTxRWvsvhm6a4usN5IFnCPTA+u8qtbKdS0ZNWiaOpwZJ89l/lLXLwTQNlcJFqiZkKrGY7XwkpfdwazQjbRJk+/aZGjdbEd7uxAHBG X-Gm-Message-State: AOJu0YwLVsroOiTBt6ksK9jVOWH//g3nVeZW36XDNGpDdqpETiK65RNB PGutFqKJYDGAXx3MhG5nYbBPy7BMVQR3wNjB693gP2gXBJFfhvjB X-Google-Smtp-Source: AGHT+IGEGYqtlcVG1uxFAcsk+g3K137p+AuBgPOVdRT2g/mYOuB1z1TIIbqAoAVuHcc2hrcjasJwmQ== X-Received: by 2002:a17:906:7749:b0:a61:7f85:e31c with SMTP id a640c23a62f3a-a6cba5962damr67000466b.12.1717709051335; Thu, 06 Jun 2024 14:24:11 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:10 -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 v2 15/19] iio: chemical: bme680: Modify startup procedure Date: Thu, 6 Jun 2024 23:23:09 +0200 Message-Id: <20240606212313.207550-18-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-1-vassilisamir@gmail.com> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Modify the startup procedure to reflect the procedure of the Bosch BME68x Sensor API. The initial readings and configuration of the sensor need to happen in the following order: 1) Read calibration data [1,2] 2) Chip general configuration [3] 3) Gas configuration [4] After the chip configuration it is necessary to ensure that the sensor is in sleeping mode, in order to apply the gas configuration settings [5]. Also, after the soft reset, it is advised to wait for 5ms [6]. [1]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L162 [2]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L44 [3]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L53 [4]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/examples/forced_mode/forced_mode.c#L60 [5]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L640 [6]: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L294 Signed-off-by: Vasileios Amoiridis --- drivers/iio/chemical/bme680.h | 2 ++ drivers/iio/chemical/bme680_core.c | 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 25d128e1ddcf..e354eaa34d59 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 Thu Jun 6 21:23:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688984 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F5DD19E7F1; Thu, 6 Jun 2024 21:24:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709056; cv=none; b=dQPQGcLvQ7oFsk/w1LmWo6EoO8e1QnrbZzQrb8pByDRdP0tqc38bPQYCbfEUzoYGyCYdlr7rDQllBSCLSpXio1U2SbgPnYuwaxg/oWYgmRSP99dj9g4NN9+HKsTiLWUfiYXPnchw3C2IgImJCCWbSAOwNItRsB15VgFD0bf9SiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709056; c=relaxed/simple; bh=T9imSyy6LLvoVoF08Ve6NKlWM7UOFrjsrvfcBYSqe7Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pXY+KWibiJ14pNF+vnwTCLfYTM24Cu9WRNmAetSPtxF5kz2bPbon7bH9ghpj3/pNu2JCyBRD4xILhZ2XJDlxH6wvROtFcaNpaV9VgcktD3xpEdu1pNAH7tlCvDqRhzUMo2ZDv+n6VVUzfxvlP4FY0TMJDGWp1aXvxUpwZdtmIrk= 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=fJT2oDyr; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fJT2oDyr" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-57a2406f951so1754147a12.1; Thu, 06 Jun 2024 14:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709052; x=1718313852; 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=XTO4UyIg4XRLdCfjT2Pgfa2wJW48nKGzXpcm091ANf0=; b=fJT2oDyr0c9yBG8u+ooFWUoUQI7devb/kEGYFkxIdf1mOD0+RzDmbfIHEMBa472ndP wduEiIMZdWnGFGon9SFdkUl+D0gkk5PL6yw/dIVwv/B/SUncGDKL3AqiPx1Fnoc8npeK /iWr5a80GaSfrKsCi+Hl4Lpk6yxdW9ysImBRTz1gehOLv6rJ41ADMEfLRWYChtkx5WZs cUA/14/WTPwfmgSGjeABXjb7pCZP1TmzoE/HqQvyt/Owia19pWlBR93J9d6qtzA1RBYY zMLKupsPyHYJz6AOgRYL87+rGU728/fO7P1crjw+BrAVXVrj249W3AYWibGJLUyhWgrH kH0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709052; x=1718313852; 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=XTO4UyIg4XRLdCfjT2Pgfa2wJW48nKGzXpcm091ANf0=; b=TMcrvEdy6PPng8tEosWaygpy2F2lrGhOkUdGafzM4Og4gf35F0cfGEmZ/KaPr3ZrdH xklhlW4ZEftvXx31DB1nzEPEc4b9c5Zktgk73I+y4XWNmyyeHKNujutwy17NgwmHOQ4E uPbEVyOPxwfKbJfESkoWx0zCm1dkUCwh3TJXDDR/7I6lpA8P1u/gQLmbdwqGKbnc3FoZ 3vjSQgp8thgZdiC8oG29C9kp/+sTC/vk0SunaPOUfswBrzJgQCC3wBDCWqo6NNujUgXl EL6bqh6qre/a6+2ZHE3EjrlaxvjGNM/0O0rvWzMlvNQiFi5li0QIFSuCFfJ/wZAcwNOw 98IQ== X-Forwarded-Encrypted: i=1; AJvYcCVp2xKQi1+036PXIAMNn0E4Y2joHZO9SuasPjzEs8K2Nn5zxSuLYjLda1BEaFhCCFAAvMIq/ar5D76bz2UeYO4PD0BnV5EVi08azc8aLQPBuHzh2Y2Z+GprLuFK+hL8Kpa+o3nxHgJx X-Gm-Message-State: AOJu0YzSI2dpKva6JvtAOwJoFoGw0ubI42F9rvBp640oqil+CUFB4pxL X9hq6KuJYHI54wUER75V9JN5b5FSKGZzI7bc/ay4dpl9gpIia/h5 X-Google-Smtp-Source: AGHT+IGGigPx39kzEHAOvUkkKMc2vnxYGFQsA23KM9HiMfvEJzzPqurq2ZQp9uLDYA0uAxFvyW3lBQ== X-Received: by 2002:a17:906:81c3:b0:a68:baca:f120 with SMTP id a640c23a62f3a-a6cdc0e089fmr49584066b.73.1717709052164; Thu, 06 Jun 2024 14:24:12 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:11 -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 v2 16/19] iio: chemical: bme680: Move probe errors to dev_err_probe() Date: Thu, 6 Jun 2024 23:23:10 +0200 Message-Id: <20240606212313.207550-19-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 e354eaa34d59..1cf375904b8d 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 Thu Jun 6 21:23:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasileios Amoiridis X-Patchwork-Id: 13688985 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 B283C19EEA5; Thu, 6 Jun 2024 21:24:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709056; cv=none; b=DkbqT0g4eLwq+rnM7iKYCLw9DDQSKupBa+oXy+eKOac3WAQfonnKQGUss11wCSWBMxWYFeN9hbY5+uYIisI+eUgeMtbwcDQCCFMA3OVvDRQDM3BQ0VaSvTx/dd5oHrtCHjnCr4Vp0NnqZT57nVP9LyUNkDBKBeki04ACPMaxeIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709056; c=relaxed/simple; bh=zo/4rmTE9JoBy/xm1cXklprKxVVRnH90QBq8FbaD39U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RblOS0ac2xlnjpUTaOFP/BfbTR/FASZCNI+RbyfLP+y6b3ZMVZIXDbOMp/G7O8gnU2jKfXbHtRz3ZC4NWzzrMQeshl5ncktzEK441bIxpcDweRgVv8ReyVuH+yNNoK8BIx8tHbsrzbIqR2gEnGLzGWN1r5aKI6vej/0lGzyF1Zo= 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=Un8alcrf; arc=none smtp.client-ip=209.85.218.52 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="Un8alcrf" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-a691bbb7031so195152166b.1; Thu, 06 Jun 2024 14:24:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709053; x=1718313853; 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=8+d36K7Pb2rbska6Wsex45QWSR6532jz+nmimETbFxU=; b=Un8alcrfqdZvBlHQBmac8VnuAzbLVxOxrKxDuIoTVIbxwunZU4dSXryV+EsXcuTYtC Tuz3okfYhV9DFiBnpHTPyao09W6PwC25tsl7aobZPxUNOXCErNH+zl1vbWHkUsHbCx0H 7t2V0a0uI8xiu1TpgzO4QY6Xd8Z5zRtfQjOyc5BSTmwwR7QL1jrypRqkAP2OlgazVXbb wB14b4f5SHaloLDW4fzwVpNwM6j7/7D9jJ3buJ570NyK/zz4SmpKQgzpLtUBRDF6kpP+ BCy7L/4nU63FBMx7DKCvciVtB8mWBRfy7XSDCmR1kJSDJIQJXxAW2oMGHdS+LcxdRkbj mb4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709053; x=1718313853; 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=8+d36K7Pb2rbska6Wsex45QWSR6532jz+nmimETbFxU=; b=dUkbs1m1WUfHcIYYpjWG3+cyQGNOVbCpGp2UpstOZHtLQBQpqPwAZ1slS2QSm7ubU8 8L/zby0jSmJGFNux7kDVdahZtGwP54ndFtlsu06NSUYRGkl0kOo0lYK1iVlUwPtxaU/G aOkP3LP0RQ/TW80IrpfNXQT+9V1PvI/T9vjqK3DiBSUPsxNx2yhfO+C0wTRICNzjqx25 yYl7I7PNe994mS8NxRdlpcOokMSP733Su7peBKxvw41AcYGwpnMEH9mICBAsLTQ10aP6 pTXWIJaXWlT2CfQrVvSdB2jDp3x/bAhjIHcuMiMsx4mWmVGftCUTabLZ7T7CJaKLNF5r eLVQ== X-Forwarded-Encrypted: i=1; AJvYcCXfEe5SBrDetIN9s58GuOrEcUvbSxpzeSyHogYbaHlBOEPYSpdXbexDOMMvpwZphe3HkFepZhsf3CYtlqxglbXwe0vPV+7z5EiDdpyjDVygw/bVdjCzcXDKt9o4cfYAmO26E5P+adUX X-Gm-Message-State: AOJu0Yz9C4P1ax6qV5+VlLz+ZTxZmcl2+TvzOvd7NESPptcsDGXcih8P M9gcQ1UMDDwvb0HkYrsSc+mnHMKANmEXOdihY1JatXATbdTpfwe8 X-Google-Smtp-Source: AGHT+IHLSilt/A2r/qFKJ8H4jU95U4ZCru2WdtC4ojVnavbqazHbrNUmAv+w2m0RymJeUDzPWVKk6g== X-Received: by 2002:a17:906:3b87:b0:a5c:e372:222e with SMTP id a640c23a62f3a-a6cdaa07a0cmr49452566b.60.1717709053060; Thu, 06 Jun 2024 14:24:13 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:12 -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 v2 17/19] iio: chemical: bme680: Remove redundant gas configuration Date: Thu, 6 Jun 2024 23:23:11 +0200 Message-Id: <20240606212313.207550-20-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 1cf375904b8d..76b96993120f 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 Thu Jun 6 21:23: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: 13688986 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 8939819EEC4; Thu, 6 Jun 2024 21:24:15 +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=1717709057; cv=none; b=iddf1SFkc+DlXsZkBq+h4fFcis3CANn7drKP4usmMIlIjpf0hi/stANPdjYDv6QovtyD199QvAPAkqAZTgQBt80w6Lp1uR3u41Uzza8Xeh3v4DSEKwxqIeZ1/G32Pi0m3t7gxDkVPw3vGDtNY5N4BSeCzWlrr5tIhMvMCbKiZC0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709057; c=relaxed/simple; bh=XMl3CW3SWJdU+9IxGlTqy5iqqJbwXQZEMbI0sxxKmCU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Myz1ouYOeOLbdel3GBJprBunOhNk8zW81D28OnzEoNJVYzs6+t2p4E3NJYWcxO1L/idfATXBdJZjqInrpX4maI3qLCr1CxWJrwNjDLS0Vs1NdA/LIvNWJLRSmBn9tX4rin1tzC9P3otG4GwZLexgJ/Aev2SZjSWUzDz4QyTMHFk= 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=hdClElQq; 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="hdClElQq" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a68bf84d747so139063966b.3; Thu, 06 Jun 2024 14:24:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709054; x=1718313854; 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=rktH83Z8JxFjHKNqGOfzwitSgp1NA5g1Za3nobwcCto=; b=hdClElQqreDKleYOkBjIv+2zcUpcfVbME7ymxAxKRki70wf9KTisRD7jws5uyxmRRQ DfoYoR4gKyv9itBSZsomqeS3MVHF7DSe0i5jKtOe06+rbAwAK0yYYXjj/F8y77FkQAeA RvbN0ed+PYjw4tGnroG9tY6xW821k+/uBvvA7FhY8FO/zuD/NtUG6O8auq/sGL3K6nyF piG5AAvCvgOPBlANaOhUV6j1gPYJRE0DXrRtgovayD/+xWDWIhujTuvNJxg2BNCAuP+g yu6RfvzsgSWDSr6logHPK76X8I64RFoG4I03mItWh+1UF9TL06GF6ELxsgEh40CJTD5k IMvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709054; x=1718313854; 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=rktH83Z8JxFjHKNqGOfzwitSgp1NA5g1Za3nobwcCto=; b=v5D/CodtRYneMujOuWbRjznxugZPi2ExqJkFVOMeBABsO+TPY4PZkwUIXlTLMXRpXP ZRzL/igGbO8xae39ULGHV2UDXNoS7ESbuEplUWTGHhS/h7TUCn5SDy7lrWwDUzH8QuwC BgBChrEnxY+E0YGC2TcLirAeWgXnOpBLbFZRpXQcVyLYzgvQVSE9BmOxyacDxTmoC224 dbbXANwDLIPTWWF6kuoRbUV/o+LQzXzHXDBJU0J8qRA7WCQFyS2zzMR3yxj2Pp7K7Uej l6BKj4V/AGcuXoQ4T6OUwKyer3SnyzKfJlDkmyOBQSUKXNxniAioMcsD6FSVYbDCLDFS 1WaA== X-Forwarded-Encrypted: i=1; AJvYcCUHJQy5wXqvO4yv/2Yfjftsc0kOqlxlRLgXD5dOgwrd6OberzV5yN0M8fgeNvRqdRjz7TonXSjLsDxhfX3WWUjlcPdNmpv6RUCEYbQQSHKkx+UvKYF+Weh5J09/JN5F4Ubw+6m1tjCL X-Gm-Message-State: AOJu0YyMNjJcnh21VdSrSWXCdhU38nsvrCvjScEzEtHM2jjXZYyJMPWn Mh+q2hhlAC266deeM1HcYkJlu9mKruVvmWNH2F6cEAos9zhjPq5A X-Google-Smtp-Source: AGHT+IGWw4zSoOf3kLvew5vKceUopVFNZZZFv2dtC0WLRGpO7/4dB55S8cf28QGEi3FkOAh2j2wrSg== X-Received: by 2002:a17:906:bcd4:b0:a68:7b9b:5176 with SMTP id a640c23a62f3a-a6cd7d68aedmr48777766b.44.1717709053877; Thu, 06 Jun 2024 14:24:13 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:13 -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 v2 18/19] iio: chemical: bme680: Move forced mode setup in ->read_raw() Date: Thu, 6 Jun 2024 23:23:12 +0200 Message-Id: <20240606212313.207550-21-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 76b96993120f..b654a8cd31aa 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 Thu Jun 6 21:23: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: 13688987 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77A2019FA62; Thu, 6 Jun 2024 21:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709058; cv=none; b=ufY1oh3N91cHbCEdroGsLLOLFrOZwWRqx6N7H6EnlGqm7eaTjzfDyfK1bUQySBpKVoWrNW7xlkePRoLruL14CoQmv1hwUQB8ZwUA0SiPoL+GUmn4spIP0zthxSArQR1AoOfFDCjGuuAP2DKtWcvEt9RhE1JoFWFTt1ML3n71t+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717709058; c=relaxed/simple; bh=6l/EfR3cgqh3S3VvJzUDR28vFG7EdWRDt4ZKwsqOLbY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nuvC4NKNE9LD5aOqId1LKw/PqUz9kit0tXsAEk5gzn4YyF83t0uyqfEZSzJ4cGCnqSeUU4KbbplVN6RID+bQvFwfPhdUMYVSSycIy5n/aMdNhysEBQ87tU0fyyT9/KfGquTCB19ye5V6OKZyiFiXL+3CSxmbGi1t2WsfnzCXtXk= 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=E7uCAGJM; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E7uCAGJM" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a62ef52e837so190921466b.3; Thu, 06 Jun 2024 14:24:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717709055; x=1718313855; 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=33ooC5ANBEJJVDpmUZure1ncbczhQ+Pa0W0whiRBsyw=; b=E7uCAGJMKS9j0FnqEVSytsnrw/HDM5PF5j1f9xSEUfMlX5KIrEwyR93XSEwL/3CEfh T7Tiu1Rh21EnAXEgecP0G6PfT8Fjulrsk4NZ0/PBD/xHXZAEur6pLDxAAknAcSn/5YEy pGYGTRDVyUWk+uxYw1eNKsmlgYDEMxnMUerKybVBY4x99rSyX4hA6Y9HeUs/XDWH6ncT iET5h5XwVqzOOrWOdzde/9vjDNxMu9HUyvwhOdOKoIV+r2I5NNbH9BMArqLLMUKjyyCF eJbsPyqTVlVO376IwYbWopjsW4KFQAEecYehNJ5RdKDAbP+3CqhQ5jhlIkqXQnYlzb4T ChWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717709055; x=1718313855; 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=33ooC5ANBEJJVDpmUZure1ncbczhQ+Pa0W0whiRBsyw=; b=ZkwfdDYwIfOlJm2msEowsE5ji6paP45h+YjMX/la+E6VG3anvWAAexfmQ4zYLy2fdY CWSSfuWkU/OXQwCCxG6nrk6VbHBH+LxmcYHn2Wclc8e60JcNhna+FgyssGfseRT7Kytg tYBSiQ2cbGaIBJXDLxNRa8pv5g1T7LaifaGEmHRgFGHEGbpyln5g6dNMaAYhNx8SiE/c fuMFiVKjvUA+MVhoGcqd5SpfR+Yrhe3tzWp/BNTXcz4e9eJq4NTuOj8E55TvfHlHwH+C uSkf2QCTnJe9TIbD/WNUhU20IT07aAVXublPoHfcPoH45ztrlw0L6Q33eH7pHLemPqWF 3glg== X-Forwarded-Encrypted: i=1; AJvYcCVpmatXONCnpU3qCO9nvClNy6nto8VbDTuviAsICFpf5i0W54n1TO2qUtO9jeTNxmFn86PMJaSGEJBBJ2f9FHIWDpe18LvNcAzpoPCIVA0dDXqxHc18fQ6fubN7XaWOAGzcCc97KUIN X-Gm-Message-State: AOJu0YyU01G/tlqsysOKnEXnh5tMzY6pH6NAqO00nOHMEcjizsNuK4ED 1/G883s1kCsd75+P22/ZBk6KCTktHXmZqw3fnY8vJsNnk37E10HL/cPMz8z/IR0= X-Google-Smtp-Source: AGHT+IGEVWIAFtDqFpB5bqXpnD8g+pIGZNqBdhTs0RE2DM3rZMCaMNjvhi2r1vemHM1CSb6Vmlz83Q== X-Received: by 2002:a17:907:d15:b0:a68:a843:9014 with SMTP id a640c23a62f3a-a6cd665d4c7mr65496466b.18.1717709054841; Thu, 06 Jun 2024 14:24:14 -0700 (PDT) Received: from localhost.localdomain ([2a04:ee41:82:7577:28a0:434b:ab8b:94ca]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c8058272bsm146690566b.18.2024.06.06.14.24.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jun 2024 14:24:14 -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 v2 19/19] iio: chemical: bme680: Refactorize reading functions Date: Thu, 6 Jun 2024 23:23:13 +0200 Message-Id: <20240606212313.207550-22-vassilisamir@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240606212313.207550-1-vassilisamir@gmail.com> References: <20240606212313.207550-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 b654a8cd31aa..6d0069d2dfb2 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;