From nobody Sun Feb 8 05:28:32 2026 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 056F034677D for ; Tue, 6 Jan 2026 19:36:31 +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=1767728194; cv=none; b=cK6GzqvRO8Jxe2xRW00VrkpZHvfn7NS0sF9Dx57HhWD305fCRuMefuIYtLnKSR4FLjdwSFSB5k/np3aYWwPTYTSk5kZxT+znENkDyE5hvkZ17u11JpXXRsRdo0R5NTUZe6bz8h+NQA2/H5nuDdZy5EoBkOgdFC5C2ppF7FxnpgQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767728194; c=relaxed/simple; bh=WaRLC/LKB8KfQ8m6QmS1keARdD2yuloMro4ENkodzwI=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gETAasdoBS0SMBGMbz8apTlZe7qm16KWfI4Ttmj/YmOMcApw/DhFzTpe1IU7NfeUey5GSfXyT5pWI7eyji4cgp5EyE12AUMpj+mg+juEtuFtCmjVKfRNVV4X9WRBtRWXjc1wsEHI4tJBNk0YvNnOtsx3PW/tDZTHDfz6d80Vadk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=Oq1kLvlJ; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="Oq1kLvlJ" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b736d883ac4so257572366b.2 for ; Tue, 06 Jan 2026 11:36:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1767728190; x=1768332990; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Bb+Tlc3jb7LZ1pkOWndTPOI/2IP/EUewgrKRR5gtT2U=; b=Oq1kLvlJSwks3x2Q0qVc9jsdqgYwpObnY+cv4FeNvyNrczyOMIHaZe3wt8LdP+pfrA H9FU8jx1Xl3HMNplQwx92LbkNi961Bd+NEbU3Saai0xutt9iSRDGeJp3TRbAsrYNwH5x 8DPEIcm0qMtnlj8D9TjceN4aDGd0hgVu2Cjz88UkupmyGfWLn5sIWnmHTdbTTT+Iiacm ko6A780elkj6lWFQIsdLL+m8F/yDQHi57KXK7oodTqyQYXV+qTYq1Q71ZNXPDliPWLf/ GTB73NRUFhVU78pHRz77d+X4XzHHJeB4Ax2V8oIE2DsQcGiexM9KiE7fzJa3bordiNGg ePVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767728190; x=1768332990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Bb+Tlc3jb7LZ1pkOWndTPOI/2IP/EUewgrKRR5gtT2U=; b=HA44FP67xBdAuEGRunmWEtK7UdGM8m081ZWBYTnkFQzq3QmAmVLyvJw7T7wVYGuz3e pEB4+iUJyGbKG0EYMyZX5yKfHEKCC3/8bZsWfm8GFgX+1PZ3loa27ESIaktuiDbVQHQ1 rBboUTU0CtKPI3Qi2vj1Z3k+IxTrPQ4YY17TwndHlA/3mAJLzOGZflbCdzcjG3ASjzQA GYBnikOvMWBg3maE60rhCEA2cmhMRfyfYVkxqiCo2qNiA+92qVRFloeAWSlWncKNrvgF RlRhBk22hfSEoHSg+RcqwPArZQj99TvrUI+bb+X7toL4HYdZVKjqq+WAU2BtzspqvFwE 1XhA== X-Forwarded-Encrypted: i=1; AJvYcCVHC2WY4XyGmooQrJAi6x79NxgOwDWFIWoOTz1naPsmixvTPVC58a/hB1DeY5+/NFTNL6aei80jwKIFUpU=@vger.kernel.org X-Gm-Message-State: AOJu0Yww/zwwUgoq1dRsdwfJXj286QVRPhOiXyoJdH5DR1xQFrAxM3b+ ErGJq3/fppu1XDuJfYSwtfVKQH5hCeR+s9kFaWrR+UuGH/T8UTkuNfUwdEL8imlUsZM= X-Gm-Gg: AY/fxX6SdoR54O6VB9da7roJOwA3cVV5vqwNYqs2XcINMsuFQRSeJK6QewvM0jWbfGC QevoCOB5o5hxybDtJWxezdYpXEdkxhLtea8QmlGgeZ8WMDln9bP2dVVYzxQzjZD/D2BQBBMq6Em gojHVnZcN1VtXnIl+jFrDRpytWh8Ir1mCxfqg46eAN9NePy7O1Ik3aQN3VMvYt2A92LxDA13jB/ DEZbuMQLeQZYAaDG3jOpApsK4MgYv58Ns86x/RGh81AxyEGGz/iY+ZtTXjdlE6NptIT1LoYsGn1 AGv49J4NP+bHNiOWc7jW4STKcvVILuDerBxhnI79tzn2etadq02n8aPNdwJQ2xA1+vJ+5cM3GvY aOx0t0jN0c7t7LzxWtAQqFuZDoYX/TkTKeR7ow6Kbyu/HqV5pz5YfSPAEwLPEr9KA++ZSCXkN0N 1pcN1txctIaFgOR/GqcbQY46mproaF/kOAM43A84FSvA== X-Google-Smtp-Source: AGHT+IGCYGZv1+EuEqiTmc9CY6BlIdxkQvrXOvTZ/kOF9KR7ymxOR0EpQj/kfGXBdvzSr9jogyN5pg== X-Received: by 2002:a17:906:4fd1:b0:b76:63b8:7394 with SMTP id a640c23a62f3a-b8444fd4e55mr25601166b.51.1767728190318; Tue, 06 Jan 2026 11:36:30 -0800 (PST) Received: from localhost (mob-176-245-131-134.net.vodafone.it. [176.245.131.134]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a56962esm305666066b.66.2026.01.06.11.36.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jan 2026 11:36:30 -0800 (PST) From: Francesco Lavra To: Ramona Gradinariu , Antoniu Miclaus , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] iio: accel: adxl380: Avoid reading more entries than present in FIFO Date: Tue, 6 Jan 2026 20:36:26 +0100 Message-Id: <20260106193627.3989930-2-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260106193627.3989930-1-flavra@baylibre.com> References: <20260106193627.3989930-1-flavra@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1303; i=flavra@baylibre.com; h=from:subject; bh=WaRLC/LKB8KfQ8m6QmS1keARdD2yuloMro4ENkodzwI=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpXWPR2hQ3ON2IvPxHXv6h78kYLyQPz2AuvKbM+ x9+Rhi/CVaJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaV1j0QAKCRDt8TtzzpQ2 XzK+C/4uJuTc7ynmXkN/n+yWO4184teeKdM8kPe//wSUfqaqsl/JcxuVV89hTO9+YwUoDCmitk6 ABIxy4laLeKzZDmS/1iZHWllLh6rjRXelfuoW6rY3n6BK413id5Zi33EFTWBYB1PwWImlRaupql BnZa6o/V475sBUtIR+ClDIdL+SEgtXrHvAWgxUQzBjbA8m6q7kUYpsz9lktLDX6i39y9LYgD0HJ wxrGA4AnrRxls5tfSAorM//EJNPo42nevMBTF4YiS+4qnwwNHZIfU90cry6mc3P3HpXdQiAhpZ7 Wk6Z6A3CFwNZydPtUUEwl9FQ7wh7BNxOpZxtLSPZnG5plN0qFb0uQFZgCLNdzT6V51sc0A5qavy uGltoPvZMiuX5fLsVy5LymGE22L+812DgdQmO1tHIHJiEnb/fVRLEzGJDAh/ix3kZdq1NzLMaKs z0/pl9gEXGx2jhSj4SieYn5JcqdFitfU8HQJu97WrDvtweZ92KAbltme8eI0Wze9aTlsc= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The interrupt handler reads FIFO entries in batches of N samples, where N is the number of scan elements that have been enabled. However, the sensor fills the FIFO one sample at a time, even when more than one channel is enabled. Therefore,the number of entries reported by the FIFO status registers may not be a multiple of N; if this number is not a multiple, the number of entries read from the FIFO may exceed the number of entries actually present. To fix the above issue, round down the number of FIFO entries read from the status registers so that it is always a multiple of N. Fixes: df36de13677a ("iio: accel: add ADXL380 driver") Signed-off-by: Francesco Lavra --- drivers/iio/accel/adxl380.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/iio/accel/adxl380.c b/drivers/iio/accel/adxl380.c index aef5109c1ddd..9f6c0e02575a 100644 --- a/drivers/iio/accel/adxl380.c +++ b/drivers/iio/accel/adxl380.c @@ -949,6 +949,7 @@ static irqreturn_t adxl380_irq_handler(int irq, void *= p) if (ret) return IRQ_HANDLED; =20 + fifo_entries =3D rounddown(fifo_entries, st->fifo_set_size); for (i =3D 0; i < fifo_entries; i +=3D st->fifo_set_size) { ret =3D regmap_noinc_read(st->regmap, ADXL380_FIFO_DATA, &st->fifo_buf[i], --=20 2.39.5 From nobody Sun Feb 8 05:28:32 2026 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 F2B2E346794 for ; Tue, 6 Jan 2026 19:36:32 +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=1767728194; cv=none; b=O6BE8VsrqAuV0PuwkUXjhwlmi0Rw+0GanGbBWCgE0dvADPV+zTJuVbkbK8xtufDI+gd01wAGCSZ7JuhaMkGN5vbMP/pBahivlWfWflb4qGg0ySHQ97Bo2WA8tJiO4NeLI/ikfVkhxvaKw5ulSDrTlw+eyAUzSFHZ+Nj00SrGQQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767728194; c=relaxed/simple; bh=Hv+4Td7imHc66YvbfhKCd05nmjS6AFCfOJi3FGBPJHk=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ttm3c761oBI2bA2Zwe6FQIP1c0282Ft6QD8pYxTE4YuWPSGL/DX0UTDPWCIpoYk2t8corSU7u4WkgHSkCCR91iahv679/WfwZ/zhHFvHAGFrNhQYcvToJV60yq8VveLRlE8tKIajPFGqpKojDEQ9k8HE5luyufWZhdpTclGJ8I4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=Er+Ha+Tl; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="Er+Ha+Tl" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b8427c74ef3so198770366b.2 for ; Tue, 06 Jan 2026 11:36:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1767728191; x=1768332991; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=fIsy4zlRCSb3g+IcnxxPTLfEgVdaWceO+4E7k1hxNNo=; b=Er+Ha+Tlojob9s9XC5br9NWpvRdnk2YnuwWg1t9KDOpOrudDEELpMgQk5vgdGLQ71U aIYzfREKIvnDkElHraFxfpiC2MZED1379NGYJEaTN1SWLGdsy+GQXEoFM45N6QheGpS7 mhqDrtCw2dcqb+2Z3p5WP+QJc4Ca8d0NT8OO7JaF4wkjJJM3XAtQnmdCv2pMtluBv/mf XAzS02/MMmLwWUiZ6qtdCvTzQroxRO5A7kYo+S7kwQg3xyqG24kSie0nQPwIcGZ4XfdA +7N66fH8OVgCZuQgi6qX55nXmPdHr0fxgXCQ0B3W2DS5Nl72CHnslXBUV+XGpPrdUPTX rUJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767728191; x=1768332991; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=fIsy4zlRCSb3g+IcnxxPTLfEgVdaWceO+4E7k1hxNNo=; b=PvfyovjiDB30/NVE1BpNueAs44ZVlb6PG+QKej4TSwENke4IeU3fPTZSu5daNBmuTf lBBjKQOM4tdQOc2Y0hSyGoCqOUqsshK/JCJXl3xQYhmkG8lSEOkDLBOQPpXTfyQM1Dn2 tORhsTaH+NGuqiiueVYb3f430i8MXj0WXI7XFnyLSPLShykwcT+K0a5v/dWIhrYBm96H 67BK+FumpXx5F9dmIV6q+cpq4ETAjAJOSQNWz8dswmawAm73fg3SODkhpDQ6a77hEbdg PP0o9i+DmvJME+X79ImAp5m6mpOtIhbbLv6kPKgjoltLQmmquA8BzTJ78S90628hFikS bRDw== X-Forwarded-Encrypted: i=1; AJvYcCWUWD+4AUIrXU+HfHNDVTTATYbF+cnpK9/pHNCi89lsgMfhLO/WSKCxJ+6FIod8kq2nSHmMijxzNQrQ9/c=@vger.kernel.org X-Gm-Message-State: AOJu0YzxReDvczw0rrbWHp6pqHe8FLjBp4N6U7Et2aIxWy/4mVXUEAEi WnvwwX6W2LUfGOBUOHCC2/QGBz/+1zVZRqO6PAgilAnuditFwLXpIIamUUweqB40EWE= X-Gm-Gg: AY/fxX7ECvOUI84glV1MYpdN9Sxw1LYYt3d6n+Aqcp+5SCVks/P2iDf6XRRdnQQvavR UGIBwmMyX/IsRpuO9N07Szux67I9exIZskk3MOCamZ8A36dsFx2bqtaSVValQDMFwCvoJUkUHBR OAc1y+GDM5hUCbA/p/r5dCyiuMROYLY5/IoNjYOF/1zpOgpNFJRPoT+NQlZfpy7iEo+KEsPnhQh /zV89BSmduC6TAYQiCN00SMrZfzonkF1w5mCvTAXeh4yxKJCuoDz5mGd5goJtjzqjKIJpOa603e d5DpALRpAndgGtkunfTXVrbNNWM5UD4/gixppFBnRr+bA777gMzk4dThcqysE6867S+OgXcvn8k NPMiFztC4DmHCf8UhClRGu1JIvVwkr5mW6zbn116Dmi0Pj/1s+Ct4HKnxtkApH3Pl5JHDtwj0BP 3X+p/mISaFIm4TV8KX7JXO5Gh1VD9dd+YQfBVUqa6Z0w== X-Google-Smtp-Source: AGHT+IGHslxzKv8h3YydnagEsr9OTmsVNjwXar8tIg+Hw3tJSVZ8OjYLZtqr3XlA6LOtw/xV5bqxKw== X-Received: by 2002:a17:907:6e93:b0:b83:ee0d:e03d with SMTP id a640c23a62f3a-b84451bd516mr21119266b.19.1767728191386; Tue, 06 Jan 2026 11:36:31 -0800 (PST) Received: from localhost (mob-176-245-131-134.net.vodafone.it. [176.245.131.134]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a4cfe60sm295763366b.45.2026.01.06.11.36.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jan 2026 11:36:31 -0800 (PST) From: Francesco Lavra To: Ramona Gradinariu , Antoniu Miclaus , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] iio: accel: adxl380: Optimize reading of FIFO entries in interrupt handler Date: Tue, 6 Jan 2026 20:36:27 +0100 Message-Id: <20260106193627.3989930-3-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260106193627.3989930-1-flavra@baylibre.com> References: <20260106193627.3989930-1-flavra@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1312; i=flavra@baylibre.com; h=from:subject; bh=Hv+4Td7imHc66YvbfhKCd05nmjS6AFCfOJi3FGBPJHk=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpXWPSYNm/sCZ9PlbzOgzKR/J/Va7BlVRGafiJd saURpEKC3SJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaV1j0gAKCRDt8TtzzpQ2 XxlPDACiqss/sHDs48h4kpmUERyNxijtJvnCjBHO33SfXSAs7jjEWrMrKHS9ITWFXoZJjGOI4AG sVALL9CguQQfN2MGEM/TgU0zl9stW2EYuQtzRW/pOVZQMFe4YKciuOFApFT0GEgZ0OjE1Qh393c bryd6QLemeKFUEr+EF0Jm1k1vBerexWSyO3wBEdUPVpAYUuXgInt7wlOPJxLQyhtsrkJSVW/qGm bN4NDm8c8kgAVcQnXTB1rSy5XNBsV+namcukcFp/GXniX0XGJPj2wa2yI+K5p4eKMXIVneVDVSn ot2zTckodOO/PYvhMwIMz+UwpVRhc8xHvA4FSf1Cc9QSe78AhciT602i2JYN4pqCsrqJxkphR90 5xbb75uGInjlSsW+6kv7bnBJB56zol1s3mqNH8sdT7g2NekHAkC5Xqf5vcFs9NpgLY2qaDQjTOC RkgQxQq2uFySwfhTvoNhGZOB6ufhw5MaS8d4lv2nUqarFlWMBrJrASUZ8ciRcPtuhUcnY= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In order to minimize the time required for transferring FIFO data from the sensor to the host machine, perform the read from the FIFO in a single call to regmap_bulk_read(). This allows reading acceleration data for all 3 axes at 16 kHz sampling frequency using a 1MHz I2C bus frequency. Signed-off-by: Francesco Lavra --- drivers/iio/accel/adxl380.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/iio/accel/adxl380.c b/drivers/iio/accel/adxl380.c index 9f6c0e02575a..ce3643c5deb8 100644 --- a/drivers/iio/accel/adxl380.c +++ b/drivers/iio/accel/adxl380.c @@ -950,14 +950,12 @@ static irqreturn_t adxl380_irq_handler(int irq, void = *p) return IRQ_HANDLED; =20 fifo_entries =3D rounddown(fifo_entries, st->fifo_set_size); - for (i =3D 0; i < fifo_entries; i +=3D st->fifo_set_size) { - ret =3D regmap_noinc_read(st->regmap, ADXL380_FIFO_DATA, - &st->fifo_buf[i], - 2 * st->fifo_set_size); - if (ret) - return IRQ_HANDLED; + ret =3D regmap_noinc_read(st->regmap, ADXL380_FIFO_DATA, + &st->fifo_buf, 2 * fifo_entries); + if (ret) + return IRQ_HANDLED; + for (i =3D 0; i < fifo_entries; i +=3D st->fifo_set_size) iio_push_to_buffers(indio_dev, &st->fifo_buf[i]); - } =20 return IRQ_HANDLED; } --=20 2.39.5