From nobody Sun Feb 8 06:21:47 2026 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.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 2FEDA318133 for ; Wed, 7 Jan 2026 12:35:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767789325; cv=none; b=bH6axfnKxkFytyJVN/p9IAAJ6q+w6SuZsKbXSnjYH33fp27HLBKhhBAf8s7TREsh3otdQAm9bzQy8Xon0a9epAjD4kVGIAz1qdSl/uRq7/I193rDtR3Wk8EW1COJJW4TEEdVk//aDLXF3X3GcK9fXt10qpkQwRzN0cH6oive4M0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767789325; c=relaxed/simple; bh=zyNybYwclOAgoLMp37uQ0NnOoXvMnK5xY2bEsHaNd5Q=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=l7CSqpWiFFS4CQ9Vx+GpUgmTVjYPOf3P6xWAItVhdaH2qiEcHjh9KmKbSCH9KtNIFDkbn640ZAqCGkoRNCeb8siBu9VZhY+sCj8BQoy1+IjlGCDFbumV+DVeHue5tDDln1M62wBMgdJpNWgzAPh5hOOSgl4DlRfpZlu9IaQNN0c= 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=vMtPRhEu; arc=none smtp.client-ip=209.85.208.42 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="vMtPRhEu" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-64b83949fdaso3180207a12.2 for ; Wed, 07 Jan 2026 04:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1767789321; x=1768394121; 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=ZRMuLRBuKMDy+OE+n+VG4mSVFewbK1ysyeDDOy9wez8=; b=vMtPRhEutmy7wg0wNJIS1rY/TZiD0M1JHldyBIBmcKYdJLOupCwOfvX/w7BxNadt0u tfr9u05gaxB3FF8TraHPkrBL3EXrEJIBziInnC/VSX9px9oHMeKithAjzMOekWTdXPMe mURS+oB3jnyY2QJfgJ70HIfi+Mp5DHtY3kDu1ijJrKjBOKjHB0NZkEx1Q6nBuIr6hrMB q321kxAAiQaVGoomie4l2t5rgQZHfOW8TvJ6oEiJI/5U9Hngizk3lkU9oR+LkgFmwBzC UUGsJIbvuaf8dZw9n8hSYDHXhP0txoG1FqyF90sxEmCC6jmtKhZFtimC2DLhCKhTXypN St+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767789321; x=1768394121; 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=ZRMuLRBuKMDy+OE+n+VG4mSVFewbK1ysyeDDOy9wez8=; b=X5CAHA+mFWbTDuVwS7rcb63IKdt5m5ifcvuNr1N7e3RHscV7SHn6LF+PUUyGPmFLrj jMM+yCcVh86h0kSFkLYtgpKp8S/YCfv7joYDvfMp60T7cuTcI9w+87ID5z4Z0L5dh4eC BEHtevhxIcQxd5JmEHdl60Pz3jnMYy708kAxRAYGyEVHuU825NIM1fej6dc/fxw2rla5 EehpNaKDqFcqba35TG3t6LdY8RG+0SUWj6IR1w+PgZ+DZnsZT4Yy15L3MU/hMVK8+ZIc MtRj93x92852lzN6ribJfZSQetFb89mb+yHIhZfXd+Gtp+yE66DUENyx6P/Z3gK+mmIL rtbQ== X-Forwarded-Encrypted: i=1; AJvYcCUqssL8ngK8KpApNrb0MR9UcuHZYQUxgvcu6VfZaXs/PCt5DnyEGkicP7ion7gZPdZC4AxF10cBEy/QzJQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwVITau6J87RrchB4ks++j2r5HrleIF8uA2qwGXvOi12ijankKC /QZyc3n8hKAsi6H1Rbi+ABsb3Y48knrCriNKWmhgnRp49aswOXRAbsQAdwWkY38I1Gs= X-Gm-Gg: AY/fxX5tg4mgrkFhG0NMBunbDuYWgp7PjhfxfeBwC7xEST7J0R+qvWWEijbZg/s2JeZ xMU1aG/26R62VVIQObqH78pvgxUSJUntk49vgKNOePupZgC4MUk2En/L7E6vJ9GJG40ryMhqalB yKfTnTYRhBe2UBMYExS8rxwO/4wte1HgRkdaEDzHGd6k+tGzsJL9/VIo2SqoYYrQfPb2i21on9/ UcMqYHNGqhVcj372rUkKvrfWCieMOVx3s4Y/PZ2SnxodOKZ8kebn1sk+KKnQy1w7bzxDaWtPBF2 RZ8rPlPIBkX4QizXiwHUSbIDjq7DJNL/zrC6fRbX47fpggdqHAsdTf/8Q2zM4djWxIdgb3ara+4 G5cl4YG2VDStyjWQD/09AwNvWJso3G//wsP5afPg7DpnWdONZV7eqHAF9YJ01Dl82A7fvtc3034 OVi05o9rZVZoMSPFfhSVDDab6AsuOkrAiLGZidWC0= X-Google-Smtp-Source: AGHT+IEK837wCDq8vTB0efIIImamkMFbdXkQacFMsw+ngxZ0FIc8+0sf5pGpib7uy0EUvDT8ppdiTA== X-Received: by 2002:a17:907:3e1c:b0:b73:b0eb:16f5 with SMTP id a640c23a62f3a-b8444f4aa5amr241071766b.31.1767789321507; Wed, 07 Jan 2026 04:35:21 -0800 (PST) Received: from localhost (mob-176-245-211-45.net.vodafone.it. [176.245.211.45]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a2bc6bbsm508492166b.27.2026.01.07.04.35.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 04:35:21 -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: Store sampling frequency index in odr struct member Date: Wed, 7 Jan 2026 13:35:17 +0100 Message-Id: <20260107123518.4017292-2-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260107123518.4017292-1-flavra@baylibre.com> References: <20260107123518.4017292-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=1782; i=flavra@baylibre.com; h=from:subject; bh=zyNybYwclOAgoLMp37uQ0NnOoXvMnK5xY2bEsHaNd5Q=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpXlL/jooTA19mfEfmr2kRfl+dsgc/hX2E7zUMg PEDwK35P7+JAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaV5S/wAKCRDt8TtzzpQ2 X3VkC/9m75RAyWD2okE3IgiqJYcRP60CEb5HwVPWCCezOuLxIT2YJ6SwX/45G+QVbIPhybusbBF XoDTumgUDd375EVA8HZ5upsxEdlK0nJ+SJgIYLpYg7jku0HUDzKJKqThAQHmYngxsSPNptFad3G 2BaaqWeEw87XxO8xMrOcyiDx1CG1Famvj/6V6o3ZHSzxxBFjKNP92872aand3ApoBJfzQxY+856 iHfYTeohSW7TAbqsCPFiJGuCdvo5EjLhwGi5e5FnWmoN/4RpgdZeGr7wWbyJtA0CWanf7hTzRaf 8xsnNfvCKw+4aA6Mvbsba0GWw2FDV8Z2+SiKcsOQ9b/wII/TvCGwfgLr8HAnF9kEtzb71qZulvo zWzzuO6BD8Xj5FuwIvm56Pyc6l7jQHdXDXmP4uB5Lz/HA0DuuFYDUwarZ7rFk2sXNNDsTyU867J 48sU0YVoYOw5fUBgmxvyQEQCh7T24KIqnfEMpB5O064okGbOPAtRXtCdLjtiuZOlirlUg= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ADXL380 driver assumes that acceleration samples are always retrieved via the high-performance DSM signal path; as a result, the sampling frequency value depends exclusively on the decimation filter settings in the TRIG_CFG register. In preparation for adding support for sampling frequency values that rely on the low-power SAR signal path (on which the decimation filters are not supported), use the (currently unused) 'odr' member of struct adxl380_state to store the sampling frequency value, and when userspace requests the current frequency value, retrieve it from the struct instead of calculating it from the decimation filter settings. Signed-off-by: Francesco Lavra Reviewed-by: Nuno S=C3=A1 --- drivers/iio/accel/adxl380.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/iio/accel/adxl380.c b/drivers/iio/accel/adxl380.c index ce3643c5deb8..bbf1f88ca781 100644 --- a/drivers/iio/accel/adxl380.c +++ b/drivers/iio/accel/adxl380.c @@ -417,17 +417,7 @@ static int adxl380_read_chn(struct adxl380_state *st, = u8 addr) =20 static int adxl380_get_odr(struct adxl380_state *st, int *odr) { - int ret; - unsigned int trig_cfg, odr_idx; - - ret =3D regmap_read(st->regmap, ADXL380_TRIG_CFG_REG, &trig_cfg); - if (ret) - return ret; - - odr_idx =3D (FIELD_GET(ADXL380_TRIG_CFG_SINC_RATE_MSK, trig_cfg) << 1) | - (FIELD_GET(ADXL380_TRIG_CFG_DEC_2X_MSK, trig_cfg) & 1); - - *odr =3D st->chip_info->samp_freq_tbl[odr_idx]; + *odr =3D st->chip_info->samp_freq_tbl[st->odr]; =20 return 0; } @@ -500,6 +490,7 @@ static int adxl380_set_odr(struct adxl380_state *st, u8= odr) if (ret) return ret; =20 + st->odr =3D odr; ret =3D adxl380_set_measure_en(st, true); if (ret) return ret; --=20 2.39.5 From nobody Sun Feb 8 06:21:47 2026 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 699E131771B for ; Wed, 7 Jan 2026 12:35:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767789326; cv=none; b=RqDgNhpuSknUXQEodS75g20gJ6lD4IAmhdW5YM+5L/Lwi4eMbTlfROTVlMI02KQNSI64LMybepSH0F8ZFitmc+aVW476aTIu2pvFF3u2dBesDowZsa3rEULDp06RzirknTXhLCQG+lT/3gBr8c8/v4wIkxKWB3kuKopXb7+C6qI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767789326; c=relaxed/simple; bh=0s7F3wx9F8OanhM3tiFMaiQriDANuo8GZ/AwyAxEqkY=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kf/8W+4knohgacinYNF/JwBkFhHqnpcg6TVqhK49MbMQH08hmCpgEDcZrQ+vdfcNDXbi4cfLbDEfZVX2TF/JfnSpk6diDgti7UYFc+nK1GMz+DtYaKjoETrp+UwSXeJm7yQ50TjCsrEjj41baaYh7Xa23yZ5JSKF8tEIegtUW3A= 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=fmuL1bEo; arc=none smtp.client-ip=209.85.208.44 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="fmuL1bEo" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-6505d3b84bcso3073926a12.3 for ; Wed, 07 Jan 2026 04:35:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1767789323; x=1768394123; 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=Hb9X7ojqs7UxJ/3kF+kDP4GTNw9n7fjfq/OK20F33Hg=; b=fmuL1bEoKBUtjPdfkxS+bMHNsrBzKWzOlncCcZW8wbw77YL53D8lwJd7yU2YHaB5Gy Cu3YAfjaQCDoJaP070dbstpYlgOkVLJ2yyseeQh3xjXaL/x/GcjVzQCcGFh3Z9qmw9Jd /1cEH9i7eRdF7bu9JCHE3RWGiYCB4bGAZrKMuQWyUfT02His9YWnxxyacBSi6OoHZrcF ApLUJa8lfGoM6s/I/6S16REgemF9unZc9dDTNxj8Wy7xvlusenAcKjhSA//qo9aAyjmD 4acv659aWo4cwh0n3L5yKlYnev5ZfnDx7lCla5i2xNQBk4xnPXi7ECqAS4D+QHur6DNe xYRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767789323; x=1768394123; 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=Hb9X7ojqs7UxJ/3kF+kDP4GTNw9n7fjfq/OK20F33Hg=; b=d9R2WhkcQUYxhPeoFyxC8I2R6BdewiBLFxN7shTFABrYVJdPjf/18Dys3v1qhfEgs2 XjQDpfRyLsQBHDWEFzdkT380T0NCUalamr74igCKSM7OoXRPcUE1W3PsJe9qgWgPdCII yXQMZEpWIPAPtu3jb1s0SPMfVz6MM6rtpgtMWNn3aFEwUd0/boe1RJoaw1yIWVKawNdP pcTEPVoWhnRtCVx2nOcfsy3eFK5dX7L0AzY7zPWm7sXhfhL+gfwBIwlFgDfFQOniOsjd bx3sW2EmYgtmo5kr5p5G0QnHR4zMpKAuNuroOJFVpzxmzfTIVfz5jonxouoVfN8iU7WB YSBA== X-Forwarded-Encrypted: i=1; AJvYcCWRNxx33NTlTOv8KPgk3FQy81tsKPSUdOwN+Nwuk9aM1brlhD+0v8ypJvPStRSAklpW8xSagl7PfjUqsYc=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4x/GhPh8F1r/vmX1iRRtD6tHzcerjqhyDRwjuAw+FB6k4t9/Q AUSOfxOHj7J2HuauxwhxSO8VVNB+aCNRYicmzWSCa0Jp8oE08sh45/lb/hJVRj1Z+Kk= X-Gm-Gg: AY/fxX6WGqVzkdtT4wR8/9zWcszC/2FzuIQIl55Yp40yKWt476kJJ3J5LmNz08QkSRF UDZWTS7SysAJWXRI3m0hMFTClINKqAW2M/T/6qmtS78Xa7cLiAwYVdQpRPX1dMKVCzigjlnTEAU HoznS5bA4yYXU/GUE/uR58jyREitP4qSXdpR6R+J77b8L0XcgsQ224Z6pxL8EklRJxNi5+lzZ3o zSfq2/+lP3YhY4gnDtCmErghao2VBJvDkrxDeE2rMpGIPIaaM4sdnl9EHJaxUvn/HoRU5hOARsu 33CCIc8d8/dIj0oCJM0BcezeewFgWynUb66XxdJ9+6TUUvRYPfqWLZFuXhSZMtYSmo6ZNY7sZ9i BYgkhS4AQ91jZtx3vzYz1QEgRTgaaQGRykphWs6zcPzB6g4Qe8wWAjZPcJcb4SwCgIMs26j7t8n eBu3Fwd+tJsabeuvGy/mZIT8YZ0q7Y7OFWbHh60+s= X-Google-Smtp-Source: AGHT+IHDilfFE4eSHAWVwsGDGF+z/OqbkLKKZXP7CW7m7ovmXEdVaEkBR4XZZ0kGhIy0u76UlatFIA== X-Received: by 2002:a05:6402:518f:b0:64c:62f7:1ac4 with SMTP id 4fb4d7f45d1cf-65097e717abmr2090092a12.32.1767789322697; Wed, 07 Jan 2026 04:35:22 -0800 (PST) Received: from localhost (mob-176-245-211-45.net.vodafone.it. [176.245.211.45]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6507bf6d5absm4503713a12.33.2026.01.07.04.35.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 04:35:22 -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: Add support for 1 kHz sampling frequency Date: Wed, 7 Jan 2026 13:35:18 +0100 Message-Id: <20260107123518.4017292-3-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260107123518.4017292-1-flavra@baylibre.com> References: <20260107123518.4017292-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=5746; i=flavra@baylibre.com; h=from:subject; bh=0s7F3wx9F8OanhM3tiFMaiQriDANuo8GZ/AwyAxEqkY=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpXlMAoKv/PJe5nKgcmvrGJrBmMoq0oNO0XUSSY 1jAe2v0pFeJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaV5TAAAKCRDt8TtzzpQ2 X8GwC/49A2LyU02o9MyMvyYV2QNhlFAaB1sELziezLeqxbamqmd7pBuN+9qsVnIiFysCCH5FPd3 /KRYI9jNt2+espGVDOTTIwEncncKX3ZOAX0+SxSF2E3gwDB/l7qt2wgrLx2SsMK9wdd4yHwYjAQ EcGQuevaKUwGxcDutPHy2f2+L8TrZvGQhsiEAKdXM73+Z11pRkQSwTcePIpBRpTSN8i+albIOe3 pTnK7YgvJiTv1SJ6TS9zLAK1nkVNRlVaImiYguJMzJe8LJMR/M6k/hUk5by84OpPF3Cazgos4Hd Blc4Ogw6S3HuaFtTo+CwnJk8gUyF+oGMe4qL1pCs019UxpAWZ1qoTyXoGyRoApx1MKndYvVw+M9 95IbJQ70NeMoWQrxMl60f8ldeONLpy3rAPz+ON23C58+q4veAjoxiXe7KJRe3b9UO7TPdKjXNLd Vt2oRjfZTdJDu/jvt0TnE0uKgqOsQUSu+nMk4FsD+mFugN7CIik2uSfMFhsgHkdzdNsJE= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In sensor variants (such as ADXL380 and ADXL382) that support low-power mode, the SAR signal path allows sampling acceleration data at lower rates; more specifically, when the sensor operates in VLP mode, the sampling frequency is 1 kHz. To add support for the 1kHz sampling frequency value, modify the operating mode selection logic to take into account the sampling frequency, and configure the decimation filters only when applicable (i.e. when using a sampling frequency that relies on the DSM signal path). Signed-off-by: Francesco Lavra --- drivers/iio/accel/adxl380.c | 49 +++++++++++++++++++++++-------------- drivers/iio/accel/adxl380.h | 10 +++++++- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/drivers/iio/accel/adxl380.c b/drivers/iio/accel/adxl380.c index bbf1f88ca781..a6919dfce2e9 100644 --- a/drivers/iio/accel/adxl380.c +++ b/drivers/iio/accel/adxl380.c @@ -245,12 +245,14 @@ static int adxl380_set_measure_en(struct adxl380_stat= e *st, bool en) =20 /* * Activity/Inactivity detection available only in VLP/ULP - * mode and for devices that support low power modes. Otherwise - * go straight to measure mode (same bits as ADXL380_OP_MODE_HP). + * mode and for devices that support low power modes. */ if (st->chip_info->has_low_power && (FIELD_GET(ADXL380_ACT_EN_MSK, act_inact_ctl) || FIELD_GET(ADXL380_INACT_EN_MSK, act_inact_ctl))) + st->odr =3D ADXL380_ODR_VLP; + + if (st->odr =3D=3D ADXL380_ODR_VLP) op_mode =3D ADXL380_OP_MODE_VLP; else op_mode =3D ADXL380_OP_MODE_HP; @@ -478,17 +480,22 @@ static int adxl380_set_odr(struct adxl380_state *st, = u8 odr) if (ret) return ret; =20 - ret =3D regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG, - ADXL380_TRIG_CFG_DEC_2X_MSK, - FIELD_PREP(ADXL380_TRIG_CFG_DEC_2X_MSK, odr & 1)); - if (ret) - return ret; + if (odr >=3D ADXL380_ODR_DSM) { + u8 mul =3D odr - ADXL380_ODR_DSM; + u8 field; =20 - ret =3D regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG, - ADXL380_TRIG_CFG_SINC_RATE_MSK, - FIELD_PREP(ADXL380_TRIG_CFG_SINC_RATE_MSK, odr >> 1)); - if (ret) - return ret; + field =3D FIELD_PREP(ADXL380_TRIG_CFG_DEC_2X_MSK, mul & 1); + ret =3D regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG, + ADXL380_TRIG_CFG_DEC_2X_MSK, field); + if (ret) + return ret; + + field =3D FIELD_PREP(ADXL380_TRIG_CFG_SINC_RATE_MSK, mul >> 1); + ret =3D regmap_update_bits(st->regmap, ADXL380_TRIG_CFG_REG, + ADXL380_TRIG_CFG_SINC_RATE_MSK, field); + if (ret) + return ret; + } =20 st->odr =3D odr; ret =3D adxl380_set_measure_en(st, true); @@ -1219,9 +1226,14 @@ static int adxl380_read_avail(struct iio_dev *indio_= dev, *length =3D ARRAY_SIZE(st->chip_info->scale_tbl) * 2; return IIO_AVAIL_LIST; case IIO_CHAN_INFO_SAMP_FREQ: - *vals =3D (const int *)st->chip_info->samp_freq_tbl; + if (st->chip_info->has_low_power) { + *vals =3D st->chip_info->samp_freq_tbl; + *length =3D ADXL380_ODR_MAX; + } else { + *vals =3D st->chip_info->samp_freq_tbl + ADXL380_ODR_DSM; + *length =3D ADXL380_ODR_MAX - ADXL380_ODR_DSM; + } *type =3D IIO_VAL_INT; - *length =3D ARRAY_SIZE(st->chip_info->samp_freq_tbl); return IIO_AVAIL_LIST; case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: *vals =3D (const int *)st->lpf_tbl; @@ -1611,7 +1623,7 @@ const struct adxl380_chip_info adxl318_chip_info =3D { [ADXL380_OP_MODE_8G_RANGE] =3D { 0, 2615434 }, [ADXL380_OP_MODE_16G_RANGE] =3D { 0, 5229886 }, }, - .samp_freq_tbl =3D { 8000, 16000, 32000 }, + .samp_freq_tbl =3D { 0, 8000, 16000, 32000 }, /* * The datasheet defines an intercept of 550 LSB at 25 degC * and a sensitivity of 10.2 LSB/C. @@ -1629,7 +1641,7 @@ const struct adxl380_chip_info adxl319_chip_info =3D { [ADXL382_OP_MODE_30G_RANGE] =3D { 0, 9806650 }, [ADXL382_OP_MODE_60G_RANGE] =3D { 0, 19613300 }, }, - .samp_freq_tbl =3D { 16000, 32000, 64000 }, + .samp_freq_tbl =3D { 0, 16000, 32000, 64000 }, /* * The datasheet defines an intercept of 550 LSB at 25 degC * and a sensitivity of 10.2 LSB/C. @@ -1647,7 +1659,7 @@ const struct adxl380_chip_info adxl380_chip_info =3D { [ADXL380_OP_MODE_8G_RANGE] =3D { 0, 2615434 }, [ADXL380_OP_MODE_16G_RANGE] =3D { 0, 5229886 }, }, - .samp_freq_tbl =3D { 8000, 16000, 32000 }, + .samp_freq_tbl =3D { 1000, 8000, 16000, 32000 }, /* * The datasheet defines an intercept of 470 LSB at 25 degC * and a sensitivity of 10.2 LSB/C. @@ -1667,7 +1679,7 @@ const struct adxl380_chip_info adxl382_chip_info =3D { [ADXL382_OP_MODE_30G_RANGE] =3D { 0, 9806650 }, [ADXL382_OP_MODE_60G_RANGE] =3D { 0, 19613300 }, }, - .samp_freq_tbl =3D { 16000, 32000, 64000 }, + .samp_freq_tbl =3D { 1000, 16000, 32000, 64000 }, /* * The datasheet defines an intercept of 570 LSB at 25 degC * and a sensitivity of 10.2 LSB/C. @@ -1906,6 +1918,7 @@ int adxl380_probe(struct device *dev, struct regmap *= regmap, st->dev =3D dev; st->regmap =3D regmap; st->chip_info =3D chip_info; + st->odr =3D ADXL380_ODR_DSM; =20 mutex_init(&st->lock); =20 diff --git a/drivers/iio/accel/adxl380.h b/drivers/iio/accel/adxl380.h index e67c5aab8efc..d2c260c8b2fa 100644 --- a/drivers/iio/accel/adxl380.h +++ b/drivers/iio/accel/adxl380.h @@ -8,10 +8,18 @@ #ifndef _ADXL380_H_ #define _ADXL380_H_ =20 +enum adxl380_odr { + ADXL380_ODR_VLP, + ADXL380_ODR_DSM, + ADXL380_ODR_DSM_2X, + ADXL380_ODR_DSM_4X, + ADXL380_ODR_MAX +}; + struct adxl380_chip_info { const char *name; const int scale_tbl[3][2]; - const int samp_freq_tbl[3]; + const int samp_freq_tbl[ADXL380_ODR_MAX]; const struct iio_info *info; const int temp_offset; const u16 chip_id; --=20 2.39.5