From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 B3A1C3E3386 for ; Thu, 22 Jan 2026 16:23:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769099025; cv=none; b=Z6+CqcV0WrjsxK7PShlemSD5oNInY7Wt3IB+X+i3oFxOzixNEJonYY5OMuf/b/I4biVvpn9PaVDDQJJvV0TK5BNd0nTIgzMSkKPI7KUHCqcxEjcdN8QUY1rmefk66aWjKaVjjrvtixonY+WssaoE9cq47CAId1J1btlv21A046w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769099025; c=relaxed/simple; bh=peOydqjJ+i16ib0SlpZWqOwRIa+l9gutlzJQ4Yv03Q0=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=GxomIJbRSRmkhIOvnrEpjhqKY7hFdp35VGEZRYBsR5Ep9zeH+SfNkpuXuvjYB3tBz5WBTc3AGJ96Xw/CGl/2v+Gkll9RHiZjcedOWBb9FLb0gDwyJDuKx+CkQgUqAo1FXNypA6ROyt3gvMUihDdRjPhY0IMkTwHle3kBZJp/OJ8= 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=yAAbpBaG; arc=none smtp.client-ip=209.85.128.47 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="yAAbpBaG" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47fedb7c68dso12834945e9.2 for ; Thu, 22 Jan 2026 08:23:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1769099017; x=1769703817; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=eMTzA98CAlwup6oLDFJfQBB6S6pMdvjC2IaqkckmUIQ=; b=yAAbpBaG3C5s0qzVOd7Y5DDLPAqYdBgFqkVkavW0MPPiS3myna0gaG4fi98fXBCieG 5DWVcti9Ydjbaa0bQ7XW/Ds3BcI1fssQ/ZVqci/u+DpzOSL//4XJC32w9xus+Q6ZsXds 1gVPxJfzCHqfWYJuvcb7zgKCP1o3mbyNZQ+2sevDV2NvZcxVIzK+mQ6Ig7yzlEEpr871 hQfSBzmBFyBSMSoQQu+UK+6CUVqaa9g8+AdLGwKDwXO4ALMRHDRCrbbp83gCHAlB7Kns RptWgAi20Bt1haItwig7lpD+Dre9BQopOkcPIbAddM9/erEArzEcsmcS0ZT/4hvA5UqO 2aqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769099017; x=1769703817; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eMTzA98CAlwup6oLDFJfQBB6S6pMdvjC2IaqkckmUIQ=; b=I1sAtEtA3tcDqWm+M0e0D6XAGmakgn/YePnJfH6zrNRZIpPeuUH1QiRn+v6Qs7PK/s 4Fe2epbWYM/9xQJw1A6dQi8PEgpU/BsNF+mpKPPjyYCKIvwb5YXO3+YDuI6/zYjzuCo0 sjmaDICPVvdJA+gqSUbRo1Ud/eqH6RPx2170kkmWzZJ95VrboGOZ2EnqI03X/9oroY1g oKo2N2QXFr0GcDCy3vOknORaDaS2g4tTDrAgWeB9qfEGOucB+V7xzQC2fx81NcidVff9 gJazPgyrtAC+gEuEGIrbFnTgz6ajLNNDXY3HcU4fEJfvjuITO4Pdh8iEYBkBAtq+1yfx CMjw== X-Forwarded-Encrypted: i=1; AJvYcCXqNSiuU5ALD7GXzqkS1+V6fW4TbsGPqTpHP5CuowHYCGNB7dD2C03hvQIm4vQlTmeDUPAx6ua+usdb96E=@vger.kernel.org X-Gm-Message-State: AOJu0YzImCgSc3lltzqaXtC3s4D/oW7tTcXdZ9qEE3arNdp+ehnaQxVa HbT8TacTyPAVkqFwFZa4r4ExVVRkSjL5nmnTGDk/9hcDvBzpSCrVu5WKylvzCa21mZA= X-Gm-Gg: AZuq6aIiqbCFpjsXLyOSpHa2B9t7GdxmHsM8fCmHzKDKpkVydVS2/TxGzJXfoodBWKq SkWzoURkukKfi1j4l39fyFPVqjdjJ+CRF7rXDzQb5lQloFXO9e0Zm7takJ3sscE276q58zdrgfh lcAnWDrFX3MeCfuF/96mRf1hHhjfDiU+57IvFf1lMbAq2a6uVN/5A/Irjg3uYCQaLUT8PEb2b5g k0my8dSvCIR9vXQ5OcAtatUiL0B0qlRl5N83rI4towico0oflvOkl00ZDkPSd97zoJK0vmc7Cwy CfZDX6jKMjaemDcu8V+w+R5NSETiu5gPubrEourTEuFkoYeaGm/vsfmxjL0dPzUchW9ECFJzGCy MTIm37LsxHrLxiV2iMqfO6gafCO1azr72Vt06ub9ly5XCkIOUmNolp28bMQ== X-Received: by 2002:a05:600c:820a:b0:477:9a28:b09a with SMTP id 5b1f17b1804b1-4804c8f63a2mr3667715e9.0.1769099016697; Thu, 22 Jan 2026 08:23:36 -0800 (PST) Received: from localhost ([151.57.192.129]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48047028928sm118098455e9.2.2026.01.22.08.23.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 08:23:36 -0800 (PST) From: Francesco Lavra To: Lorenzo Bianconi , 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 v5 0/4] imu: st_lsm6dsx: Add support for rotation sensor Date: Thu, 22 Jan 2026 17:23:31 +0100 Message-Id: <20260122162335.2020006-1-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 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=3165; i=flavra@baylibre.com; h=from:subject; bh=peOydqjJ+i16ib0SlpZWqOwRIa+l9gutlzJQ4Yv03Q0=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpck7i/i/WCp7wsGgvLsuNlyyvQfREGAcAiThTm pxTaJmB+CGJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaXJO4gAKCRDt8TtzzpQ2 X8QLC/oCjb7eExtIshcnNINQ1mvI70S3NSEZYlIy0Nctu2olBdZ2qNSdVn8158+q7T4dkYJfjWf osBCHKeU43XjhXuWxm7KMgxwk2/FvBrefut05iSh9D6hhcGJqmIzrmRO3DX35Nq96lrjFMBvc3n nqNHUNnXMeXfTibKRf2Z+7HzmE/w0VDh/lhi46iiZIqwQv55xJ/1+et2qdAKzASG1zR7V002F3p BHwPCgvXY0OPpvFyk+PP7AFurz6mozrR0Ng4xwhJoLxYJOD4msNISIHyg8qVskOXnoHVQEcgIFx iv14BrYmj2j87PRVfhHsRgR4JaZ2TzUL6L5KUOslejcKlT4vtQPqDM65AvgFORUty4E5iNExKe9 OEsFzfXhvQvbu+Ekt45j7+euc5L5OnPUblgqWtQAzInxiVnlDsalC925rP+nZFg+zbojD///ahU fOrCduji76fXZcZUy0NoTKeFeUV8u0HAqnmsrUQJspcJxU+qUW3+PTLuIalZn/gmX+OJA= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: 8bit This series adds support for the rotation sensor functionality present in some chips from the ST LSM6DSX IMU family. The second commit is a fix to a previous commit of mine [*] which made it to 6.19-rcX; the fix technically changes userspace, but this should be OK as long as it goes in during this release cycle. Tested on LSM6DSV16X. Changes from v4 [4]: - changed data parameter in st_lsm6dsx_push_tagged_data() to __le16 * (Andy) Changes from v3 [3]: - added patch 3 (Andy) - removed unneeded checks for negative return values in st_lsm6dsx_fusion.c (Andy) - replaced st_lsm6dsx_sf_set_page function with st_lsm6dsx_sf_page_enable/disable (Andy) - used reversed xmas tree ordering for local variables (Andy) - added parentheses to MILLI / MICRO in st_lsm6dsx_sf_write_raw (Andy) - added check for string truncation in st_lsm6dsx_sf_probe (Andy) Changes from v2 [2]: - amended description of patch 2 to point out that there are no supported gyro events (Jonathan) - removed superfluous parentheses in st_lsm6dsx_fifo_setup (Lorenzo) - added Lorenzo's acked-by tag to patch 3 - added missing checks of st_lsm6dsx_sf_set_page() return value (Jonathan) - added comment in st_lsm6dsx_sf_write_raw (Jonathan) Changes from v1 [1]: - swapped patches 1 and 2 (Jonathan) - miscellaneous stylistic changes (Andy) - fixed usage of MICRO and MILLI constants in st_lsm6dsx_sf_read_raw and st_lsm6dsx_sf_write_raw (Andy) - replaced scnprintf() with sysfs_emit_at() in st_lsm6dsx_sf_sampling_freq_avail (Andy) - replaced scnprintf() with snprintf() in st_lsm6dsx_sf_probe (Andy) - clarified in a comment in st_lsm6dsx_set_fifo_odr() that only internal sensors have a FIFO ODR configuration register (Jonathan) - modified patch 3 description to explain justification for the extra IIO device (Jonathan) - moved page lock from st_lsm6dsx_sf_set_page() to the callers (Jonathan) - s/magnetometer/gyroscope/ in patch 2 description [*] https://lore.kernel.org/linux-iio/20251017164255.1251060-3-flavra@baylibre.com/ [1] https://lore.kernel.org/linux-iio/20260109181528.154127-1-flavra@baylibre.com/T/ [2] https://lore.kernel.org/linux-iio/20260115122431.1014630-1-flavra@baylibre.com/T/ [3] https://lore.kernel.org/linux-iio/20260119100449.1559624-1-flavra@baylibre.com/T/ [4] https://lore.kernel.org/linux-iio/20260121112758.1831077-1-flavra@baylibre.com/T/ Francesco Lavra (4): iio: imu: st_lsm6dsx: Set FIFO ODR for accelerometer and gyroscope only iio: imu: st_lsm6dsx: Set buffer sampling frequency for accelerometer only iio: imu: st_lsm6dsx: Fix check for invalid samples from FIFO iio: imu: st_lsm6dsx: Add support for rotation sensor drivers/iio/imu/st_lsm6dsx/Makefile | 2 +- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 26 +- .../iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 38 ++- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 58 +++++ .../iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c | 235 ++++++++++++++++++ 5 files changed, 348 insertions(+), 11 deletions(-) create mode 100644 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c -- 2.39.5