From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC61414A4F9; Sun, 5 Oct 2025 13:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; cv=none; b=txwPaq9GUAJvbfFUD57j29i2AC/F3W69DfROiFsxjxbBxNI0alLNMkaCUBni/7oFACvXtr4Q0Vy80KkF5YYbjNszmJ5EWsRxcUAKYaVGHINw7mZrWUNiUo5CXiHunS64RsY15792F/kMxhLX8wqmXHzGWLJGipWNST8KX5OcyRE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; c=relaxed/simple; bh=OMns8uwPd30PiioGzxoymRaskS8waCyzQdNMCb4kWtE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U5BaLcYtQx7RMgV2ZZdaNipJTCI5todi75SLhPUiwtbetDYGu0DeCGgccGUCkgO4RBqpHwCD+8+MULuUHO4CupqOhI5CYZqwkI1895JrwAtn5eXPme2MNKHdq3AKZJMVHU80eDK0015V8mhFzzMyWvQgSqFBj0A3ZMwhn+dU+uI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=vwiDgmR9; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="vwiDgmR9" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 080A0173BE9; Sun, 05 Oct 2025 16:13:00 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669980; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ba9SmFFFThBt2H7cUfDPWfYs13rpomHUEj5ezt6iOfY=; b=vwiDgmR9HjItH8IYsqFoRvqrjZPFu5X7teeiR9V2r6CWpaQMDvSSAe49H95tkH9G3e01mO +9DCM00Qa7y1ZR3/Wp7yHsqJVomR6yv/zTmauxzAMyDEfmBu8nmWqbE1SEADKMnAgXrZIh Nd2Tjoxh7NOCjm4RLdPn8cz0f89lpGjkEEP+gfLRJCv2EU5cPKvX45iKDry2TQAqCmFQzz Qu5a1tVIgScqABciPfi/ai8fMJluOOGffcnVd4d9aoCMCjlw0+NUcE3gyieMEcYV7d8Mdh PQFUmy+P27zic+bBfMvORAFZy04L/xSJ5fANaBYI6Qn/K59/vJx7FZuEDMB7SQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:10 +0300 Subject: [PATCH v4 01/19] iio: accel: bma220: remove incorrect kernel-doc marking Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-1-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=814; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=OMns8uwPd30PiioGzxoymRaskS8waCyzQdNMCb4kWtE=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgprQTBEQUFvQmRDc25wMk02U1dNQnl5WmlBR 2ppYnE2aitBaXlMZGZpbnhBRC9haWZib251VlFhbDYyYkdCaHlWClBtYWg5ZGRNY29rQ013UUFB UW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGpCUUpvNG02dUFBb0oKRUhRcko2ZGp Pa2xqT2xFUUFLZnBaN1g0di9aY3N5UVpCNTJ0dmRFWTlNelhJRWZDWEhmWVlOWk1lRzJqZ2g2YQ phRm9RRGZqTS9GNWlMZjMxRlFUc3AxWWpPZWdaMC9ibENiLzJiRUM4WUhKcW02WGd3bWhGK3ZhO XlJQzI2WkltCkFycnhRd0I3UWM1Nzk1NEsyMjVjVXRnSTFuU3RwcEt1ZXVjV3MzSGVIRDQyRWpF N0x2bTZmTkV5a0tpQXZPWEsKcmpxeXprWXJhK0dWYlZ6RVRSWGZBUmZ3bDc3UmIxTkVzS3hZeDE 2Nmo5TkNuZE1taFFoQkZtWEFoNkVkd29jNApERkJROW9EcHN2YjFrdWpGQkxpUTAyM29jc0tQUm IxRk9FVWJvN0lyY1lvVWxZVFAyYVc4SjBhSDJ6dE40Q0Q0CjJHMlRVa1ZpQ1RtM1l0ZEVDaHExW nJtME5CT29YeER1UFhaQmN5VnhYRjhKRnZlWXczclFjbzgzdTJ6cHdlUnUKWXBvR2I5UkN2VDly Sk0wcjJTM1lkc0dTcm96bk40citKUHcvaHh6bmw0U2xhYXYrUlBpYWdQZlhIS0MwN1JvZAoyUG1 FRTFuVFdDNmZjS3VqSlRXM2JjOGhnTDNqR2JRRkFaKzR4blhHdTk2VjRxMkRwSGs3cEIzSjBDVz l2Snh6CkJEcFFCVExvQzMrd0kwdGhqT0VwVHdDaHoxUmxzWUhocHcxdmpVbE96ZE9mc1hZR0Zob jgxTjJKUUtWVU9zd3YKMGNwWDJWMlZLb3poUGRpMCtQUzJDRnZWeFo4OHZYdWRwQndIaHhHQmRu OVVBU2dScVduTmZIQWZpT2NucUZhQgovTnFjTUlJc1R0TWZGMndkVzl6QVc0UFpYekRGckNuK1l zWDlyU3Q2bXRNT21TcllVZzhKeUMycFJyd3IKPWJtZHQKLS0tLS1FTkQgUEdQIE1FU1NBR0UtLS 0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Remove incorrect use of kernel-doc marking. Signed-off-by: Petre Rodan --- v4 - split from bigger patch (Andy) --- drivers/iio/accel/bma220_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 01592eebf05bb6b002d44c41cca1d2dd5f28350c..505ad70912571ba629f91e56a92= 898d8320e976f 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -223,7 +223,7 @@ static int bma220_power(struct spi_device *spi, bool up) { int i, ret; =20 - /** + /* * The chip can be suspended/woken up by a simple register read. * So, we need up to 2 register reads of the suspend register * to make sure that the device is in the desired state. --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A5A633F6; Sun, 5 Oct 2025 13:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; cv=none; b=fkkDn9ZtSds46nePgt+wOrNvpAag6PdZuaDcz8Lrt4fh3d2YVTtsaymOfuyf6XlQTnQWrStDi/wHNPISTtipL6YyhYu/e1gHICa/oECPq4rUQ6R5zd96b1yUEkQZmDzzA88XgDvx1vA0Adw4uUePPw0eN/CKgkVTLgs+L1YtSHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; c=relaxed/simple; bh=lPdxT7BEzBkZbVxtujGv7kOjBTVD+u3N8hkcIrx1tsQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TzhJjcid1QRp66qA8RPqKBf/vcWgrLmsjSIRLhXBnW66C6cLtdlsAIXsJlLnQmToPgTjgNs3PCRxSZcU732L82oveeZ3x2ZNjXmIl99/TcQVobHwlwOXNGv+naaFV+f08bxAxE3HNFvUVp2izvTd6k2zTCJ5UYRF/i9LiYgdCeQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=aL2BHVkW; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="aL2BHVkW" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 67B1C173BEA; Sun, 05 Oct 2025 16:13:00 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669980; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hU41F5YDKDkY7Pw/sw1GEykpXxg62NNVsZkcQUwVt5s=; b=aL2BHVkWtjNXv7TsAqTTLPk02X4jAETxgggQNvPErAO8qaz3MzGYfxQXGILIavIVSjIR8c ZC83aGuWy/4EMxjPaDcrtYL346UUqaoLwF6ym/JiPnQFlyDdtEJjwrxTt4FtJElS2G2B5G M3KZIpmaJeSbPLhTSdFaUOKevK5ap15atEhHSlZJYbHyBCmJsod1rnUyWu/WSVdjmyEPBy bG2CmXLQyhgKVFEeIbjkGgzzCP5TLE8eTdT/pfe7PNF9M6E/EGN+9V2zi1mVXoX2Mr21C9 An5LpDOvjg+W76RMNH85TN8d/RfdNbuOB5oi8wu8YY5fdikK4ajQi604sRQRPA== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:11 +0300 Subject: [PATCH v4 02/19] iio: accel: bma220: relax constraints during probe() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-2-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1067; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=lPdxT7BEzBkZbVxtujGv7kOjBTVD+u3N8hkcIrx1tsQ=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnJHVDNtVXNYMXR2eDdXbCtZOTlxVkErCk45NlN1WXpqam5lWThZZnZO QXR5VDRrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNnh BQW9KRUhRcko2ZGpPa2xqV2trUC8wRDZScnhZdHFKYlZwU0pkdkRnVVRPVXJuUFNwZkl4MTZBSQ paYlZjbW1ab001QUx4YlhmYjl4VjlJaDV4WWtaWi80NTdLT3krWVlFakxKU3FZMm5MVkxzS01qS FFFNXF0ZTJzClI3d2YrVHh1NVVsWXAzc282NVNORjB2K21wZGZZcjFYMU04ZVNuQU5vUFpjekxm ajVZbUFMV25OVy9YcFVFR3cKUVMzTU5EWmlzY0dYcHFieUo1QVRQQmoybEZobzd2K0U3M1ZhYzU xWUREZWdIR1dtUkhsSS9SQ2RoM3hJRVBiaApTcC9tc2dMOW0wMkJUUFQ3U01QUUd6WDZQVzdoYm xHSGV4N1NtN3RZOHl6UGFOVkhPK3NOdHM4d0ZTNU9BNzFwCmdKVXdKUjVHK2lRRFZnblA3TFJKO DZGVjFXRzNKZzdpOGFtTEtZWm9LOHh6WUhHaVVWMXhWNkhMTlYrQ05PUEQKd1U4MFVOejErSVh1 ekRaMzNXeWFKb05HalR4U09XanlMcGYvZk5KRTBtb0pOcTMxU1ZZdVhuQitFcGp6NzJzQwowb0V qZVRob0l5ZnU2TkJMK0Z6QjUybitDVktkQWEyblNucExpS080bWUydURwQXhnRVJBc3lwMVZvdk hqT0tRCnAvcTE3UU11S0VYMnJqTlp0bEdObmlxVERqSDU4T1FUNFQzNTJHU21PZTRIa1hHdkx3R TQvb0dhSzR5eFhRK3QKVXpiM0luY0c0eWliVWRUQVVEL3NERlJkcko2ak4ydnU4VFltY1NOY3Fo UWFqQ1ZsM1BkdFhzQlZoNXU4YjZWRwpuR21Ddk1TczVaSDBDSDZVaWpyajk5eWZ3VDZ0aUlxUFV NcFlsam9MYmkyQXN1Z2pKTU95NUZ0cmtBaFNIc3lPCjRReHNGM0hyZUMwcm9nPT0KPTdpcXkKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Do not return error if the chip id being read is not the expected one. Signed-off-by: Petre Rodan --- v4 - split from bigger patch (Jonathan) --- drivers/iio/accel/bma220_spi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 505ad70912571ba629f91e56a92898d8320e976f..02ee6b4d51c0816a88ac258f0e5= 107111ec2a2bc 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -202,10 +202,15 @@ static const struct iio_info bma220_info =3D { static int bma220_init(struct spi_device *spi) { int ret; + struct device *dev =3D &spi->dev; =20 ret =3D bma220_read_reg(spi, BMA220_REG_ID); + if (ret < 0) + return dev_err_probe(dev, ret, + "Failed to read chip id register\n"); + if (ret !=3D BMA220_CHIP_ID) - return -ENODEV; + dev_info(dev, "Unknown chip found: 0x%02x\n", ret); =20 /* Make sure the chip is powered on */ ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC5C913BC0C; Sun, 5 Oct 2025 13:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; cv=none; b=HQqb7cf3gPhNWTQIebf5V5ZZaXsILEKiJPwaGhmocId3efReDMKnejjuw73jmNi8JsyFgF/5bidCRyDGnQKZWjxIiu3XO4mKFHXxjlP7FA1N+p/5miLGOJUZkPy+9Dag+RHk6fqD+HmvmJuFpUYO8R4YEt3qV0PwtDXokPzeEEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670415; c=relaxed/simple; bh=SNhbxKclOKr8qZtB+edcMSy2LI4wWi2Pgm22C0Nbp+w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gg45ha/PZnlFDtg5GLo1xmPjoxdMd1RJINumeA1xuO9AQNyCl3BbHjsLKbj7PfK79vYTpHEgSqPosFkhHzOXxLbMimYw9JJpESJXPCJG7UNOgWUzWWXNSV9pHAgjNfmrz3HeAAzm9Xzq1xDz1a5foiEbLXDFPc+1iuUCJhe8YIg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=JJoXx3ea; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="JJoXx3ea" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id C426D173BEB; Sun, 05 Oct 2025 16:13:00 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669981; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pW6byNvJFW64sJMN/ca6XK7BnGpgRLCEvucnRjd3ONk=; b=JJoXx3eaZ5q8lIJquexTf/QLVQBiIDOG4h9yAiqUXYQLtmjtQrLhNKyhCIEAtgIy7zlqs0 I1TwsFY/xI4SwLGEUw+m7jhchxFav/FHtJiTQwCdLRYg32q33NliTc49hi0uOSL7LYpyHF 6nrbXDFsyOs8vkWp6Xaq/DOupEPxsiPNJkPmQaJtzjWf3RacLtS1Hyc5aD0zpOVOyRIJTw bt+DTr9DNRKft/jFx/MgXv8Fn3kPegZV/7ezQwEEv5zdZoXm5Vju4EakoJ7kAwmlfU6IhX v9AjsT3obtvH6UIq5jGHw5tFhVZz80S6cQAy7r/pHF211GQRfH5KWNjenjNUYg== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:12 +0300 Subject: [PATCH v4 03/19] iio: accel: bma220: cleanup license string Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-3-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=873; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=SNhbxKclOKr8qZtB+edcMSy2LI4wWi2Pgm22C0Nbp+w=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnJOaXA4ekYrZ3RuSVNnZ05LOGNhZ2tqCjlnNUs0eVptbXFuODdqeUpa dnlLcm9rQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNnp BQW9KRUhRcko2ZGpPa2xqaFJ3UC9pTmQ3bXJwN2psT2tjczYwL2VXMlc0Vi8rRWNLM2Y3NDhwTg p6VW9KNnpySFhmU1BzS0lrMjZpcGp4c3dwMWpFOUxrR252Z1hzd3ZmYWhkOThvVWp0bFZvUGdIY kVZckVBQzdUClJrSFl0WWVnTFFxSUNrM1pISkIwbGFVbVA5d3N3M3E0c0V0ellNcFVnb3F4TmlO eXppQXlranBEVnZ2amh0QnAKaEVHdHFmNWNZQjRUcFJ3VGRKbGVpYVlyclJvdXBWQ01QamYzLzJ GMlJCbEgyaFRESWVBS25WNVRtZ0RBeDdBeApRbEZhOVdRemhNakNndU1HWnBIa0xLR1JoOTduZ0 dna3F4UDUySklsM0dsd2hhbkNXTC9tTER5RTNVWkF1VFpHCno5cERkNWtSd0l6SzFCc2h0ZWw5N lBzRkpXTlBtbEdRNy9ETFJWcmdDdVNlZk1mMkF6eFlVdW1IOElHd3BiOG0KcGZpZHY4NXZKZVlZ Zk5BZGtYQU1HL0xGK09wMTgxeEw4ejRPV29pVXkrVEFMb1kycFVWejA0MXZlSUN4U3ZLWQpSa2Z ETWhNZTQ3c3BmYUI2dUQ4c0IrM3Q5VWdyWGY2RG8xaHBMdEh4VDQyaFF3alZiQUpacGVveE5yek dDN090CnZVT1c5NG85YndOSDluRk5uOGthRGUzRkpDbUFMYnMvQkFRVXdvV3NyZXB5N0xqZDh4U Vh2bjdXa01jWGZPcUQKdnFLbExST1JrVzV2MGc4WjQ3VTVzYXB3OG9KVWtMVUNIdmkyaEZMNmI3 bWcvbkZPYVFBRDI5a2ozVTd2V0o1OAo1VUdFRXpKaWM1cmdLNUFjNkwxSVNKbWErcUo3T25yVnJ EWGROZGhMYkNEeHlqTUxSOWdGK1dlS2lJaWhpUW9CCnZ6UC9SVGdaNVdVbkZ3PT0KPWpwQTcKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Fix checkpatch warning about use of "GPL v2" license: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") Signed-off-by: Petre Rodan --- v4 - split from bigger patch (Andy) --- drivers/iio/accel/bma220_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 02ee6b4d51c0816a88ac258f0e5107111ec2a2bc..8c313debc1dff7f4bae7c165bc5= 55ee190996291 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -332,4 +332,4 @@ module_spi_driver(bma220_driver); =20 MODULE_AUTHOR("Tiberiu Breana "); MODULE_DESCRIPTION("BMA220 acceleration sensor driver"); -MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL"); --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A5E57262F; Sun, 5 Oct 2025 13:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670416; cv=none; b=nTNWe6DMEERyCuurBXSALrYnDgkpXgi4jhrUqLjlF77wscfUjl9dYM2M5I8kgfHYMygJnlbQOk2wGaeJymtvfErwSFrOnkgq6p9I7dyXVx3yXe0VBernJZw1BVz1h8YC4c6EaUE1t0EJ11RpMxctGJH6xzWbDkJkxBXOwHR6iOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759670416; c=relaxed/simple; bh=ZStNtnEoYdfEbR3uu3+8+mqIenUQ1N3Oztdq+aRQtGc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q1kQC20Xf2VPUAblKSiSAgBCbNk9RBFS7HEw4tzx2daUbJ6dyrLW5aWbV8wVHx4XvuCzvL//+02LnhE9MHc8ja5JTMZJmEnTe/Lrghz8syYLmPV9JiBExbGBpvRQF+wUHC0bp0rNBThkp4B4MHzYXE0JZfRjY6NMy662P/mtqhY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=eAIyKqeu; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="eAIyKqeu" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 66F74173BEC; Sun, 05 Oct 2025 16:13:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669981; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/p4iPPjtngh6Ss7ODkaKYCF+f3L1GxI5+ozT/nhNihw=; b=eAIyKqeuO9l0QjYFZxuGGLs1VDZyw2v23yI6YwnOH0YPcJteQidgdy1Fh+7WBovWpyQ02F P13hYqEyB99jIyVwdYNXxEb3wZkW1X4/6r2iHtwDbP6qD0H3TUMIJvZBzzS9vU287ka8f1 UuLN/k3sbZBKOiSFj/QYjjtQOSUeYlX6uRrFc6TsyDUQ2oYyRtguJTMxUhc1kYbKBZWQjb XsiGYmAnfjJl4fN/QYHnqUbZZmnS2Jz7jSN4OSfJ0nBqqofvjICRktuC9L2DLr1w837Pl2 kiqnYn9f04O2YM3rlkiGqlcvkrS258y/JRdFNWikRdKa6RDZx99YKTmsYXK2EQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:13 +0300 Subject: [PATCH v4 04/19] iio: accel: bma220: shorten spi->dev calls Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-4-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1656; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=ZStNtnEoYdfEbR3uu3+8+mqIenUQ1N3Oztdq+aRQtGc=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnJYekhsZkRwY1lKdFF4aFR5MXFjVG53CitpR0NhZlI4ek4rT0VzWUcz UVpNTFlrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNjF BQW9KRUhRcko2ZGpPa2xqMkVvUC8wMVZoYlFjL0dpdjJmekJObkhQWWFNcjNLT1RUdGxubFo3aw pibUhCWGUzaFhIbytQRTNCVXV2VEluUzM4aEVqUHR3Q0FtTnNkaTAxZndvYTkrK2llSHMwc1ZRR Wkyb2VYbytDCjdCTW9veHBzeXovcXJmVy9WakE5eXJ3M3phblpWUXQrS2NUVmRTVWNWTzhORXMr RzZaK1NHcUlmWnZ0QTh6a2EKT3gwZVhnRjU5LytpMzg0NGllaE1nQkpEM1J3K0hxemFhVFIwSnJ qU1B6MCt6UklZcEJmaVJGSU5BWFQwNTFLWQpzM0cvTzJWUGJQR25JWEZ1VnlBS21TNFZUY0ljWT VUV1FjeHJhSWZsUEpYT0QwaXVEWnVzbWZwd3ZGRUUzUXAzCmdMcDhIY1EreGY2MXZpNDVhSWFQU k1MRVB5TlFKekY2QmFRSUg0S2lOQXNrMXN5MGFjSzZPdE5jeTc0OWVuR2YKclE2VzYrNytTczNC d1lHQkpEanFuWi9aMDhmakJxbks1ZDJOdkdRSkJnNTF2aWtIMmgwZTdTaUtyQVpCRlJkeApuU2h pdHNhR3R0d3BkMUlKYUtRNnUxcEtXL3l3bDZvYXF6SWtKMzRkMkZqUlBWem1hbUovRnVhdnRZdl ZTWmNECjhya0hRTGdhanZDcXRpcWZIVTZ4S01YNGFaS0J0b1lEZUM0K0FWclRLbFEyMUhiK0FoY kZKVm1jQ0VvMUZyZlMKTVZzZmlSWG1rcFJoUklRUVhUZVZQa3dHclJhUURSR1RJUndaYjJsNVYv MDVRTmFhdlVuYzJXL1RjQ1pJaDVldwpYTlp4bHFNVnQ3L0Q0VFJ4b2U0c25CcEZNVEVIbHVCNXB pYVo2Q3duZW5iL1hXUS9jRU5pdnZENWpEMGhnS24xCnN5ajBXTmVVbjZFWExBPT0KPW1iK28KLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Provide functions easier access to device struct. Signed-off-by: Petre Rodan --- v4 - split from bigger patch (Andy) --- drivers/iio/accel/bma220_spi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 8c313debc1dff7f4bae7c165bc555ee190996291..a5d2906321ae5fc67c0e1dc4465= 1833c5e7fcb39 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -258,8 +258,9 @@ static int bma220_probe(struct spi_device *spi) int ret; struct iio_dev *indio_dev; struct bma220_data *data; + struct device *dev =3D &spi->dev; =20 - indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*data)); + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; =20 @@ -278,19 +279,19 @@ static int bma220_probe(struct spi_device *spi) if (ret) return ret; =20 - ret =3D devm_add_action_or_reset(&spi->dev, bma220_deinit, spi); + ret =3D devm_add_action_or_reset(dev, bma220_deinit, spi); if (ret) return ret; =20 - ret =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, iio_pollfunc_store_time, bma220_trigger_handler, NULL); if (ret < 0) { - dev_err(&spi->dev, "iio triggered buffer setup failed\n"); + dev_err(dev, "iio triggered buffer setup failed\n"); return ret; } =20 - return devm_iio_device_register(&spi->dev, indio_dev); + return devm_iio_device_register(dev, indio_dev); } =20 static int bma220_suspend(struct device *dev) --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3EF2A274B48; Sun, 5 Oct 2025 13:13:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=IzskPOfvYAFH3I4EGQIMc5g/T1IIeRIamwfCyzPqmX9heUg8gxIyEGRJYRR/WPZANIffF4NdxBMEz7rb8rBaSTFX2aKvDuDrpzeC027BTulzn3hJ9kaPx+ktPhWHvw0aG8N+YQ3akcOmFSK3mU7N5d4Wrd0Y3Mk0hGyyrfe738A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=bESRm6KHeFdhIgKWEqzxTGSHEOvBjPJPD6ZECPUFHo8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BG4XgqTW4RGoGgpQEAKYfyYNEnep3sEh/P6lG44PH4Tu4kD/xZDC+ORGmsstRh0tCJynpPGquF6LIsgZbxQnNmkmruY055g7N95rAf9sVrZs4Bi6y4ZsFRekW0hB7GhNiCX6Xsq0yifaCHj/nifJYUv9kJw9lQRB3D0xSn5LHk8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Eb3x5DVQ; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Eb3x5DVQ" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id CB481173BED; Sun, 05 Oct 2025 16:13:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wpf7JvsHD7foLXPGXmmVPDrW1g+beJLPvpuHuZ2gqQw=; b=Eb3x5DVQ5tHaInwqi+m4NtL4zLlXtRIbntjyTLXkZZMeyb0OfQmXXu/NJ9eMHj5NXwvarW TqDLnN1dZE4P4bJwemeYu2eua0JEnL30IcefSa+xyKFAXuPhRBj0mg5lj+BlkaBpuN/caA QJXM1bCh1QB2ZVhl2a0X6A3/iM3vCnjyacHW4VM1Ay5wsA9tQbdtpNpiIBrTRTRZXSDox1 k2KGAGbWIWgDs+dLdYUPqaeUCTixSf+z227Fs8Sw49UHn5BySPddemRkcd2lDP629sGvr3 npoQFq8BcOed22kujhr1WcJQ5lagSwjz1q5CSVSsiusr4/KYPrbc5WzQ9f/sXA== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:14 +0300 Subject: [PATCH v4 05/19] iio: accel: bma220: move bma220_power function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-5-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2068; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=bESRm6KHeFdhIgKWEqzxTGSHEOvBjPJPD6ZECPUFHo8=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnJiS2FtUlo3aDNqeFQ0QkdkUlhNaVNICnR6SStiZTRZcW5Ma1JIOEQ1 UDFCNElrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNjJ BQW9KRUhRcko2ZGpPa2xqZ0p3UC8ybXUvUFV5ZjZsMjhLdnc1TWI1Wks1UkxGalBFNUdJejZKOA pLbzk2NFBUVW9TUmx3SDRGZ2l1dHI5NDBXcWZsRVRnZjFyQzZGeDh3REo1WnpKemhDdk4zVDgrM Go5bkdLakw2CkxrR04vSEZEN2hhREZlb0tUSW1vNWoyMnREc29HZEU2TW5tUmloZ1NqdmNuVExJ azlmTk9TaUVseEtsR1IyZkQKQk5UN1BxeHphSDNobFo0QXk1Q3kzUS9OY3lDTnZ3MjVMLzlqTkN xNzlRWVhERmFOQmRIbEFhd3dNSGRBenJuNApVZ2hiMVBXYWttYVRZTjJEWFdRZjRKSlU1RE9END dWUnFiU2tKOThnWkd0UFJrbG1maXBlOVJjcGZ5VDFCWTVmCmdwL0xTTWZZN3V4bmtjM3pDRW13c lJLWjhGQW5jK2JyRE1JMDlsNlhCNm1oT09Sd1pwR094VDhrVFNvbGxacWMKRTZaRWpWeXJucUNN cTFLOTkxUGdUQ0FPSFpLUVBUZzk5cFpzMWtBQ2o5c3ZwWGQvMXBLYktQb0U2bDF6Q3RMWgovQlR FMnlSdU1hMkJqVUF6QVFKTnVZQUF1bmtQUm04Q1NucWFaOXNLelpKc0RPRmord2JtNzFRMnAxdC 9QeEZiCkpkc3pwbnlRREVJWmF0bGV2dmlYNkI1cTZGVzgyc0tvV1NKaHRQOGJyYlRqZ25kc0dVU DR2TS9MQkNMeWl3aDQKbUNxcXNxMXQxdEgyWVVONUtDUlR2ZGJBTUtQNU5uSEY2T1pzbU9CT2RN dHFmZUlINjFNeVVaSlBYS08xS1J6OAo4dzNwVDliWHNrVDRRUGxJRlNSY2IrZXZiM1pTOHJoZm4 va0s0RVJvN05EVGsyb0tSejZ0VlVPODVORi9naGV1CnY0VVBpZVp0dGhvbTZBPT0KPUxvM3MKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Move bma220_power() before bma220_init() as a precursor to a patch that removes code duplication. Signed-off-by: Petre Rodan --- v3->v4 - unsigned i (Andy) --- drivers/iio/accel/bma220_spi.c | 49 +++++++++++++++++++++-----------------= ---- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index a5d2906321ae5fc67c0e1dc44651833c5e7fcb39..45ac0d7ee27de65b204bd2766f2= 6024e4ed57f4c 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -199,6 +199,31 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 +static int bma220_power(struct spi_device *spi, bool up) +{ + int ret; + unsigned int i; + + /* + * The chip can be suspended/woken up by a simple register read. + * So, we need up to 2 register reads of the suspend register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + return 0; + + if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + return 0; + } + + return -EBUSY; +} + static int bma220_init(struct spi_device *spi) { int ret; @@ -224,30 +249,6 @@ static int bma220_init(struct spi_device *spi) return 0; } =20 -static int bma220_power(struct spi_device *spi, bool up) -{ - int i, ret; - - /* - * The chip can be suspended/woken up by a simple register read. - * So, we need up to 2 register reads of the suspend register - * to make sure that the device is in the desired state. - */ - for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) - return 0; - - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) - return 0; - } - - return -EBUSY; -} - static void bma220_deinit(void *spi) { bma220_power(spi, false); --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AEDF126C1E; Sun, 5 Oct 2025 13:13:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; cv=none; b=hJq+iJL7ANdLmx+VvplmV9GgC27nxdBdMBg20tCPICidS0BjMZAigBOzqzNMsRfZELmL3YW7DM9/zcl6g7Hf5YPNQU9jnoZeVs0lNyEDVgzEjZJqBhHZUfRUXybWmxv6xBCr+rTt4zargsPOJrjEzbzV+SULVhqCO92ErLJcTZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; c=relaxed/simple; bh=C0F73d6hMVogz9A12rZ7wDVv13XpjXh1c3qpPf7hvvY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PtwVDrHcppJGpBYqKKw+/L2xeCbgKiA8GZj45/a5jtEizCXsDpCsDQrY1FcNZN8UFTAS/T7lBxovWJ1hx9n5g93ODINZLV1Phfy7USJroGWWnK3Xe01vBda//y5rNutyhqojhAuEfkKZim4ad/sZdbNMP/CCOUsTW/EZDBj7yBE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=b31aQgtm; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="b31aQgtm" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 35EC5173BEE; Sun, 05 Oct 2025 16:13:02 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OoiqpWVlQyMaOvts+6yO0xpiCDX0J7fmEVwzjWDN/Ug=; b=b31aQgtmQUUEhddkwvyNdIZDTUEjViOatIR2pwa8tJNYpQIkQl+k40PcdXc5TdBzj3xsfv 4nFX7gMLCIcyojzf4lacqbjIdRpXdCgUhuXk80TzHTs2kOC2h4LD8JHexauuxoy0/v79Dq n+jW3x38baVjw+k335yq0xUgZ2F1AhuxiMgM3TSk8XL9TllQWtWR5veu+POhrSU348bTGW KOGSW8aAxLEFNzI1CBpWWkFS90VAMo8dZoorXHeGsYfSMNWTPF9sCvp+0YZoGTtVyeboa4 GCFdIjNWBiCNDTKEmK/XLDIiGwyR+zqCeezB8/Q4EUU9a/eVjpYRGyBl7oPO7g== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:15 +0300 Subject: [PATCH v4 06/19] iio: accel: bma220: cleanup includes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-6-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=758; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=C0F73d6hMVogz9A12rZ7wDVv13XpjXh1c3qpPf7hvvY=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnJzYkxzcTdQSS81cmtKSnNJTGdGYXk5CjJac2JCbDJEME1RQS90SE5M QnlBV0lrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNjd BQW9KRUhRcko2ZGpPa2xqamU4UUFLUlpCR2VBR2E4UzhIRTZhMjlxNklaVEM0d3JmU0JsemZmbQ pjR3JTci8yZWlnMXhiRFo3bFlVRWswVTk3S1hPajZqaUlHc3ZIR1BCZnBoVkpXTkpYRUxRano3V TliUEswRWE2CnBYamU5UEliVUNrWDJJaldQME96Y2FvazBldFpZc0o4NDlqdndLUmppL0xjVDlk T0tNTFVLcjQ0c3dNTnRPR0QKV0ozZjVrV0x6YWx4R2Y5ZER2QjMrejFXT24vbEppajlaU3pOY1h ldlpqbDRaMjR5ZDhEWVFQZGE3YUJXamhnSgpURVBkVldZb1VKQ3B3bzZwQmV5dmpzbVk1b3MyRW RBZGkrdXlhSWtrZlE5UDJVbUU1QS9KUUV4aGdpVEdZUUtlCmN0MGZxTHh1b2VobWp0elJvUWNIN VJPcFppSldCSmphWTBDRlJjamN5TGI0U2tQTVluWHEvNEhNZUpGbU56SjcKUHRoaVRPMlVubTZW SURCU3NhTzJnazlYRVZBZGFZbHgxeGh1NjAyQ3dZYXA5bmpDQ1FXZ3R4dVVDQ3dvWTYyawpIOWF TSHI1TVJnTzI0UU0raEhwQXZLMUF3VGlPVWRFMUkrNFRZK2NKYjl1MnJKVXBwdDFxT25QNUllWm w3R2YvCjdST01lbUxpSUNnSTRUdWdqS2NoOGpDdGprR0w2Z3RqNFQvbk5uVEwzVGhBVkxuam8rV mQzZFh3ci9JKzFzcUIKWDN1eVloT0RRQU9zek1Md0RoRVNUWkhoM0FRTkU0STg3alBxTDhzMXV5 V0JMbXVVSUpRR2ozTWd2Mm1Lb1BPVgpySHN3VTZMZlY1Y2tCM1FlOW9jVUtrUW85SHd1Z2FJZzN 4ZUdHNSt2OXEyT0lpdHk5QlVRMittSWkwek92S1dzCjRtMDFFY2FwZ2dZa3ZBPT0KPTZnVU0KLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Tweak includes based on requirements. Signed-off-by: Petre Rodan --- v4 split from bigger patch (Andy) --- drivers/iio/accel/bma220_spi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 45ac0d7ee27de65b204bd2766f26024e4ed57f4c..abff24a48e5aaa5efb05cdf1924= ffea24f4da4c5 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -6,9 +6,10 @@ */ =20 #include -#include #include #include +#include +#include #include #include =20 --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D69526B77A; Sun, 5 Oct 2025 13:13:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669994; cv=none; b=cA167e7Uyg8sIcw12Hxlk1SK9Dqhk8Ql9Nc3nYgFA21ej90ZW1YPWo08cNt+yuNkbaRDzvPEU9cIlIr1BTV8FZlFSgFOUXTembrk9v0yU4kMlnTvuZGHDHGoVOZLqFFd+rJXqNAkcrCVDx+Ft5PkL3FM56QBwQ19e5/fNU+LFTg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669994; c=relaxed/simple; bh=jro1VObDw/+YJ067lwEIyPUj7p3ellBKy+TVENoHWU8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=blwERTJx5c9DFzACvR/J0H2lM+yfHGVORxxYr7q5Wz5EXX771GqLc6ESbu/JyWbvCoNOMmIZZH8kDQA03NVrR1bn6XsnZ0U3zsgWfk9fPQ3Fv/8/cd/e5xPEDyQ1ypURoDIgswXqSTi5gUHnTWLA5XRidpmFF+qhraVqjIxcf9U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=sA9kx2Z0; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="sA9kx2Z0" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 98D3F173BEF; Sun, 05 Oct 2025 16:13:02 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9CTKqybKYjFXq99qQgQ1VpGJT0bjDAKu41fSxOEQb0Q=; b=sA9kx2Z0iQTIEl0GCimTHVD6fYuxxH8ily59fg2pmKR6u+rKa/gvwl8TaYNgS+Jyq5Vv/N k+6U8xM5KBARVoXRivxEfvOH1MMvzgIgfT2UzOcGNNKpjnf8Lc7i5dpCwV5Xo6cLl7uLqj iAYg7nZS3cJrvKUJ7b421yGdQKPmVGNFIOfnCELfkGzlQqk5BDt5jOC7qGEKVzsgOb2atR TVusx+l4oz0Sb0tbz/mo0RXa2VuOthZU97wKZvRvGtddWPf1k3Rs/XMnoosjocfo7pcvnu 2g5GSrkzsRTashzd6wxd7WW3pFWwCSQCxk6xRVKwQdP1XH46PSlpFITQ+xM1HQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:16 +0300 Subject: [PATCH v4 07/19] iio: accel: bma220: split original driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-7-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=21441; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=jro1VObDw/+YJ067lwEIyPUj7p3ellBKy+TVENoHWU8=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnIxaVN6OE5ZZDFMbmp0MXlhV2pNYlBwClgvNlgzNFdGTDlDNmNZMWF0 RTFlcklrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNjl BQW9KRUhRcko2ZGpPa2xqVEY0UC9STm15SG9xT0k5MFZ1djZkYzRqTWJBb0xoSERkemkyMjJUVw pDWk1QVXM3NXA4M2hhVjM5dmlROUxoVTJuUkZ2K1ZiOHA4L1pjNXlIOU1JU0tlUktMVTh3My85N W9pbDJ3bU9FClg0YXV4VnVBSDh1aGEwVEswRVFMc0wrWEpibnAyeE1ONlJoSkNjMGRnNEJtaE1p V21YTTRpSmlwTDg5c21HUVEKSitQVE5EdDFzcjl6UmtkUUVXNXY4V0swNi90U2NibENCSjNHVnB VMTlhZURKY3lsVWFMNDVwUkQ1akRPQ3VKMwpiZC9kTkRoTC9PZ3NobGhWUmtrdWNpMmVxaTlDbX Q0STgrSnpyOTBsV0RHN2hlMExyWTFzUEQwREtOeStTdkpuCkhCcTZRMXk5T1p2SHdtc2R4Rm42T nZRRGtiR1BEUEtFcmYvNDJEWVZVeER3R3VrdGpTZmxlUy9pTnFNTjJpRTIKdkRrSGl3VVlWekU2 U29PdDJKZnVpRXdxY3U5RElrTzlzcm1JenVxRkR1UFdKdGV0MXVDU1VzT2lHZVR2Tkl2RQpTNjB 5aGZBTlozcVVOQnY3SC9Yc0QwNC96cUtqRi96R3ZhQXRabEw2TElBb3NmNnArUjUyeWhkMDB3Q2 QvMFVvCjErc2pnemMwdTNVd3ZHRnZBRmZFV3ZmUkN5SU9QTU1tcllnSjFLcUFYRVhjZ2FrRXJqV XJCMVZsYStSOURyUFkKaVlNYWxIQXY1dlI0K25qQ1Q3bkQ2elBhYUFOZWpCeTZKL2h2UXYydWFK clI2YnJQd3VSdkQ2WkE1b0ovTHJQNApyK2ZXcHYxNzA2ZFZjaHF5aXZsQVdRWVdIY0h5a0UvbUx SOU5FaG9pdEdJWFUzdkVrWldtbXFXNmNrSDErZ2xaCmdnRjRDNHVHSm1BbXdRPT0KPWYvWXoKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 In preparation for the i2c module, move the original code into multiple source files without any other functional change. Create the additional bma220_core module which currently is not providing an abstracted bus type (this will change with the regmap patch). Fix a few includes in the context of this patch. Signed-off-by: Petre Rodan --- v1->v2 - split out open firmware table modification into separate patch - bma220_write_raw() exits without dev_err() based on similar feedback from David - change includes in bma220.h (Jonathan) - include bma220.h in bma220_core.c (Jonathan) - add mutex.h and pm.h includes to bma220_core.c - cleanup struct spacing in bma220_spi.c v2->v3 - keep depends on SPI (David) - fix a few includes in bma220_spi.c (Jonathan) v2->v3 - keep depends on SPI (David) - fix a few includes in bma220_spi.c (Jonathan) - mention new includes in commit body (Jonathan) v4 move some of the changes into precursor patches (01-07) (Andy) --- drivers/iio/accel/Kconfig | 8 +- drivers/iio/accel/Makefile | 3 +- drivers/iio/accel/bma220.h | 18 +++ drivers/iio/accel/bma220_core.c | 319 ++++++++++++++++++++++++++++++++++++= ++++ drivers/iio/accel/bma220_spi.c | 314 ++----------------------------------= --- 5 files changed, 357 insertions(+), 305 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 8c3f7cf55d5fa432a4d4662b184a46cd59c3ebca..4648be329917a3054615ed32415= 6d67f53baefb6 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -221,12 +221,18 @@ config BMA220 depends on SPI select IIO_BUFFER select IIO_TRIGGERED_BUFFER + select BMA220_SPI if SPI help Say yes here to add support for the Bosch BMA220 triaxial acceleration sensor. =20 To compile this driver as a module, choose M here: the - module will be called bma220_spi. + module will be called bma220_core and you will also get + bma220_spi if SPI is enabled. + +config BMA220_SPI + tristate + depends on BMA220 =20 config BMA400 tristate "Bosch BMA400 3-Axis Accelerometer Driver" diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile index ca8569e25aba31c3ae3437abf8506addbf5edffa..56a9f848f7f913633bc2a628c1a= c5c9190774b9d 100644 --- a/drivers/iio/accel/Makefile +++ b/drivers/iio/accel/Makefile @@ -25,7 +25,8 @@ obj-$(CONFIG_ADXL380) +=3D adxl380.o obj-$(CONFIG_ADXL380_I2C) +=3D adxl380_i2c.o obj-$(CONFIG_ADXL380_SPI) +=3D adxl380_spi.o obj-$(CONFIG_BMA180) +=3D bma180.o -obj-$(CONFIG_BMA220) +=3D bma220_spi.o +obj-$(CONFIG_BMA220) +=3D bma220_core.o +obj-$(CONFIG_BMA220_SPI) +=3D bma220_spi.o obj-$(CONFIG_BMA400) +=3D bma400_core.o obj-$(CONFIG_BMA400_I2C) +=3D bma400_i2c.o obj-$(CONFIG_BMA400_SPI) +=3D bma400_spi.o diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h new file mode 100644 index 0000000000000000000000000000000000000000..dea34244b4fc4971841dc60d79d= b6c7db27bea20 --- /dev/null +++ b/drivers/iio/accel/bma220.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Forward declarations needed by the bma220 sources. + * + * Copyright 2025 Petre Rodan + */ + +#ifndef _BMA220_H +#define _BMA220_H + +#include + +extern const struct dev_pm_ops bma220_pm_ops; +struct spi_device; + +int bma220_common_probe(struct spi_device *dev); + +#endif diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c new file mode 100644 index 0000000000000000000000000000000000000000..00fe1064486aa469f7ad1559302= 7c7ec86197365 --- /dev/null +++ b/drivers/iio/accel/bma220_core.c @@ -0,0 +1,319 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * BMA220 Digital triaxial acceleration sensor driver + * + * Copyright (c) 2016,2020 Intel Corporation. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "bma220.h" + +#define BMA220_REG_ID 0x00 +#define BMA220_REG_ACCEL_X 0x02 +#define BMA220_REG_ACCEL_Y 0x03 +#define BMA220_REG_ACCEL_Z 0x04 +#define BMA220_REG_RANGE 0x11 +#define BMA220_REG_SUSPEND 0x18 + +#define BMA220_CHIP_ID 0xDD +#define BMA220_READ_MASK BIT(7) +#define BMA220_RANGE_MASK GENMASK(1, 0) +#define BMA220_SUSPEND_SLEEP 0xFF +#define BMA220_SUSPEND_WAKE 0x00 + +#define BMA220_DEVICE_NAME "bma220" + +#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ + .type =3D IIO_ACCEL, \ + .address =3D reg, \ + .modified =3D 1, \ + .channel2 =3D IIO_MOD_##axis, \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ + .scan_index =3D index, \ + .scan_type =3D { \ + .sign =3D 's', \ + .realbits =3D 6, \ + .storagebits =3D 8, \ + .shift =3D 2, \ + .endianness =3D IIO_CPU, \ + }, \ +} + +enum bma220_axis { + AXIS_X, + AXIS_Y, + AXIS_Z, +}; + +static const int bma220_scale_table[][2] =3D { + {0, 623000}, {1, 248000}, {2, 491000}, {4, 983000}, +}; + +struct bma220_data { + struct spi_device *spi_device; + struct mutex lock; + struct { + s8 chans[3]; + /* Ensure timestamp is naturally aligned. */ + aligned_s64 timestamp; + } scan; + u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); +}; + +static const struct iio_chan_spec bma220_channels[] =3D { + BMA220_ACCEL_CHANNEL(0, BMA220_REG_ACCEL_X, X), + BMA220_ACCEL_CHANNEL(1, BMA220_REG_ACCEL_Y, Y), + BMA220_ACCEL_CHANNEL(2, BMA220_REG_ACCEL_Z, Z), + IIO_CHAN_SOFT_TIMESTAMP(3), +}; + +static inline int bma220_read_reg(struct spi_device *spi, u8 reg) +{ + return spi_w8r8(spi, reg | BMA220_READ_MASK); +} + +static const unsigned long bma220_accel_scan_masks[] =3D { + BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), + 0 +}; + +static irqreturn_t bma220_trigger_handler(int irq, void *p) +{ + int ret; + struct iio_poll_func *pf =3D p; + struct iio_dev *indio_dev =3D pf->indio_dev; + struct bma220_data *data =3D iio_priv(indio_dev); + struct spi_device *spi =3D data->spi_device; + + mutex_lock(&data->lock); + data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; + ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, + ARRAY_SIZE(bma220_channels) - 1); + if (ret < 0) + goto err; + + iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), + pf->timestamp); +err: + mutex_unlock(&data->lock); + iio_trigger_notify_done(indio_dev->trig); + + return IRQ_HANDLED; +} + +static int bma220_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + int ret; + u8 range_idx; + struct bma220_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_RAW: + ret =3D bma220_read_reg(data->spi_device, chan->address); + if (ret < 0) + return -EINVAL; + *val =3D sign_extend32(ret >> chan->scan_type.shift, + chan->scan_type.realbits - 1); + return IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); + if (ret < 0) + return ret; + range_idx =3D ret & BMA220_RANGE_MASK; + *val =3D bma220_scale_table[range_idx][0]; + *val2 =3D bma220_scale_table[range_idx][1]; + return IIO_VAL_INT_PLUS_MICRO; + } + + return -EINVAL; +} + +static int bma220_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + int i; + int ret; + int index =3D -1; + struct bma220_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_SCALE: + for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) + if (val =3D=3D bma220_scale_table[i][0] && + val2 =3D=3D bma220_scale_table[i][1]) { + index =3D i; + break; + } + if (index < 0) + return -EINVAL; + + mutex_lock(&data->lock); + data->tx_buf[0] =3D BMA220_REG_RANGE; + data->tx_buf[1] =3D index; + ret =3D spi_write(data->spi_device, data->tx_buf, + sizeof(data->tx_buf)); + if (ret < 0) + return ret; + mutex_unlock(&data->lock); + + return 0; + } + + return -EINVAL; +} + +static int bma220_read_avail(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + const int **vals, int *type, int *length, + long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_SCALE: + *vals =3D (int *)bma220_scale_table; + *type =3D IIO_VAL_INT_PLUS_MICRO; + *length =3D ARRAY_SIZE(bma220_scale_table) * 2; + return IIO_AVAIL_LIST; + default: + return -EINVAL; + } +} + +static const struct iio_info bma220_info =3D { + .read_raw =3D bma220_read_raw, + .write_raw =3D bma220_write_raw, + .read_avail =3D bma220_read_avail, +}; + +static int bma220_power(struct spi_device *spi, bool up) +{ + int ret; + unsigned int i; + + /* + * The chip can be suspended/woken up by a simple register read. + * So, we need up to 2 register reads of the suspend register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + return 0; + + if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + return 0; + } + + return -EBUSY; +} + +static int bma220_init(struct spi_device *spi) +{ + int ret; + struct device *dev =3D &spi->dev; + + ret =3D bma220_read_reg(spi, BMA220_REG_ID); + if (ret < 0) + return dev_err_probe(dev, ret, + "Failed to read chip id register\n"); + + if (ret !=3D BMA220_CHIP_ID) + dev_info(dev, "Unknown chip found: 0x%02x\n", ret); + + /* Make sure the chip is powered on */ + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret =3D=3D BMA220_SUSPEND_WAKE) + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + if (ret =3D=3D BMA220_SUSPEND_WAKE) + return -EBUSY; + + return 0; +} + +static void bma220_deinit(void *spi) +{ + bma220_power(spi, false); +} + +int bma220_common_probe(struct spi_device *spi) +{ + int ret; + struct iio_dev *indio_dev; + struct bma220_data *data; + struct device *dev =3D &spi->dev; + + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); + if (!indio_dev) + return -ENOMEM; + + data =3D iio_priv(indio_dev); + data->spi_device =3D spi; + mutex_init(&data->lock); + + indio_dev->info =3D &bma220_info; + indio_dev->name =3D BMA220_DEVICE_NAME; + indio_dev->modes =3D INDIO_DIRECT_MODE; + indio_dev->channels =3D bma220_channels; + indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); + indio_dev->available_scan_masks =3D bma220_accel_scan_masks; + + ret =3D bma220_init(data->spi_device); + if (ret) + return ret; + + ret =3D devm_add_action_or_reset(dev, bma220_deinit, spi); + if (ret) + return ret; + + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, + iio_pollfunc_store_time, + bma220_trigger_handler, NULL); + if (ret < 0) { + dev_err(dev, "iio triggered buffer setup failed\n"); + return ret; + } + + return devm_iio_device_register(dev, indio_dev); +} +EXPORT_SYMBOL_NS(bma220_common_probe, "IIO_BOSCH_BMA220"); + +static int bma220_suspend(struct device *dev) +{ + struct spi_device *spi =3D to_spi_device(dev); + + return bma220_power(spi, false); +} + +static int bma220_resume(struct device *dev) +{ + struct spi_device *spi =3D to_spi_device(dev); + + return bma220_power(spi, true); +} +EXPORT_NS_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume, + IIO_BOSCH_BMA220); + +MODULE_AUTHOR("Tiberiu Breana "); +MODULE_DESCRIPTION("BMA220 acceleration sensor driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index abff24a48e5aaa5efb05cdf1924ffea24f4da4c5..70b8bd94895e95936c7294271b5= d46d9ec9903c6 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -5,334 +5,42 @@ * Copyright (c) 2016,2020 Intel Corporation. */ =20 -#include +#include #include #include -#include -#include #include #include =20 -#include -#include -#include -#include -#include +#include "bma220.h" =20 -#define BMA220_REG_ID 0x00 -#define BMA220_REG_ACCEL_X 0x02 -#define BMA220_REG_ACCEL_Y 0x03 -#define BMA220_REG_ACCEL_Z 0x04 -#define BMA220_REG_RANGE 0x11 -#define BMA220_REG_SUSPEND 0x18 - -#define BMA220_CHIP_ID 0xDD -#define BMA220_READ_MASK BIT(7) -#define BMA220_RANGE_MASK GENMASK(1, 0) -#define BMA220_SUSPEND_SLEEP 0xFF -#define BMA220_SUSPEND_WAKE 0x00 - -#define BMA220_DEVICE_NAME "bma220" - -#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ - .type =3D IIO_ACCEL, \ - .address =3D reg, \ - .modified =3D 1, \ - .channel2 =3D IIO_MOD_##axis, \ - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ - .scan_index =3D index, \ - .scan_type =3D { \ - .sign =3D 's', \ - .realbits =3D 6, \ - .storagebits =3D 8, \ - .shift =3D 2, \ - .endianness =3D IIO_CPU, \ - }, \ -} - -enum bma220_axis { - AXIS_X, - AXIS_Y, - AXIS_Z, -}; - -static const int bma220_scale_table[][2] =3D { - {0, 623000}, {1, 248000}, {2, 491000}, {4, 983000}, -}; - -struct bma220_data { - struct spi_device *spi_device; - struct mutex lock; - struct { - s8 chans[3]; - /* Ensure timestamp is naturally aligned. */ - aligned_s64 timestamp; - } scan; - u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); -}; - -static const struct iio_chan_spec bma220_channels[] =3D { - BMA220_ACCEL_CHANNEL(0, BMA220_REG_ACCEL_X, X), - BMA220_ACCEL_CHANNEL(1, BMA220_REG_ACCEL_Y, Y), - BMA220_ACCEL_CHANNEL(2, BMA220_REG_ACCEL_Z, Z), - IIO_CHAN_SOFT_TIMESTAMP(3), -}; - -static inline int bma220_read_reg(struct spi_device *spi, u8 reg) +static int bma220_spi_probe(struct spi_device *spi) { - return spi_w8r8(spi, reg | BMA220_READ_MASK); -} - -static const unsigned long bma220_accel_scan_masks[] =3D { - BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), - 0 -}; - -static irqreturn_t bma220_trigger_handler(int irq, void *p) -{ - int ret; - struct iio_poll_func *pf =3D p; - struct iio_dev *indio_dev =3D pf->indio_dev; - struct bma220_data *data =3D iio_priv(indio_dev); - struct spi_device *spi =3D data->spi_device; - - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; - ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, - ARRAY_SIZE(bma220_channels) - 1); - if (ret < 0) - goto err; - - iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), - pf->timestamp); -err: - mutex_unlock(&data->lock); - iio_trigger_notify_done(indio_dev->trig); - - return IRQ_HANDLED; -} - -static int bma220_read_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int *val, int *val2, long mask) -{ - int ret; - u8 range_idx; - struct bma220_data *data =3D iio_priv(indio_dev); - - switch (mask) { - case IIO_CHAN_INFO_RAW: - ret =3D bma220_read_reg(data->spi_device, chan->address); - if (ret < 0) - return -EINVAL; - *val =3D sign_extend32(ret >> chan->scan_type.shift, - chan->scan_type.realbits - 1); - return IIO_VAL_INT; - case IIO_CHAN_INFO_SCALE: - ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); - if (ret < 0) - return ret; - range_idx =3D ret & BMA220_RANGE_MASK; - *val =3D bma220_scale_table[range_idx][0]; - *val2 =3D bma220_scale_table[range_idx][1]; - return IIO_VAL_INT_PLUS_MICRO; - } - - return -EINVAL; -} - -static int bma220_write_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int val, int val2, long mask) -{ - int i; - int ret; - int index =3D -1; - struct bma220_data *data =3D iio_priv(indio_dev); - - switch (mask) { - case IIO_CHAN_INFO_SCALE: - for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) - if (val =3D=3D bma220_scale_table[i][0] && - val2 =3D=3D bma220_scale_table[i][1]) { - index =3D i; - break; - } - if (index < 0) - return -EINVAL; - - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_RANGE; - data->tx_buf[1] =3D index; - ret =3D spi_write(data->spi_device, data->tx_buf, - sizeof(data->tx_buf)); - if (ret < 0) - dev_err(&data->spi_device->dev, - "failed to set measurement range\n"); - mutex_unlock(&data->lock); - - return 0; - } - - return -EINVAL; -} - -static int bma220_read_avail(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - const int **vals, int *type, int *length, - long mask) -{ - switch (mask) { - case IIO_CHAN_INFO_SCALE: - *vals =3D (int *)bma220_scale_table; - *type =3D IIO_VAL_INT_PLUS_MICRO; - *length =3D ARRAY_SIZE(bma220_scale_table) * 2; - return IIO_AVAIL_LIST; - default: - return -EINVAL; - } -} - -static const struct iio_info bma220_info =3D { - .read_raw =3D bma220_read_raw, - .write_raw =3D bma220_write_raw, - .read_avail =3D bma220_read_avail, -}; - -static int bma220_power(struct spi_device *spi, bool up) -{ - int ret; - unsigned int i; - - /* - * The chip can be suspended/woken up by a simple register read. - * So, we need up to 2 register reads of the suspend register - * to make sure that the device is in the desired state. - */ - for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) - return 0; - - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) - return 0; - } - - return -EBUSY; -} - -static int bma220_init(struct spi_device *spi) -{ - int ret; - struct device *dev =3D &spi->dev; - - ret =3D bma220_read_reg(spi, BMA220_REG_ID); - if (ret < 0) - return dev_err_probe(dev, ret, - "Failed to read chip id register\n"); - - if (ret !=3D BMA220_CHIP_ID) - dev_info(dev, "Unknown chip found: 0x%02x\n", ret); - - /* Make sure the chip is powered on */ - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret =3D=3D BMA220_SUSPEND_WAKE) - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - if (ret =3D=3D BMA220_SUSPEND_WAKE) - return -EBUSY; - - return 0; -} - -static void bma220_deinit(void *spi) -{ - bma220_power(spi, false); -} - -static int bma220_probe(struct spi_device *spi) -{ - int ret; - struct iio_dev *indio_dev; - struct bma220_data *data; - struct device *dev =3D &spi->dev; - - indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); - if (!indio_dev) - return -ENOMEM; - - data =3D iio_priv(indio_dev); - data->spi_device =3D spi; - mutex_init(&data->lock); - - indio_dev->info =3D &bma220_info; - indio_dev->name =3D BMA220_DEVICE_NAME; - indio_dev->modes =3D INDIO_DIRECT_MODE; - indio_dev->channels =3D bma220_channels; - indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); - indio_dev->available_scan_masks =3D bma220_accel_scan_masks; - - ret =3D bma220_init(data->spi_device); - if (ret) - return ret; - - ret =3D devm_add_action_or_reset(dev, bma220_deinit, spi); - if (ret) - return ret; - - ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, - iio_pollfunc_store_time, - bma220_trigger_handler, NULL); - if (ret < 0) { - dev_err(dev, "iio triggered buffer setup failed\n"); - return ret; - } - - return devm_iio_device_register(dev, indio_dev); -} - -static int bma220_suspend(struct device *dev) -{ - struct spi_device *spi =3D to_spi_device(dev); - - return bma220_power(spi, false); -} - -static int bma220_resume(struct device *dev) -{ - struct spi_device *spi =3D to_spi_device(dev); - - return bma220_power(spi, true); + return bma220_common_probe(spi); } -static DEFINE_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resu= me); =20 static const struct spi_device_id bma220_spi_id[] =3D { - {"bma220", 0}, + { "bma220", 0 }, { } }; =20 static const struct acpi_device_id bma220_acpi_id[] =3D { - {"BMA0220", 0}, + { "BMA0220", 0 }, { } }; MODULE_DEVICE_TABLE(spi, bma220_spi_id); =20 -static struct spi_driver bma220_driver =3D { +static struct spi_driver bma220_spi_driver =3D { .driver =3D { .name =3D "bma220_spi", .pm =3D pm_sleep_ptr(&bma220_pm_ops), .acpi_match_table =3D bma220_acpi_id, }, - .probe =3D bma220_probe, + .probe =3D bma220_spi_probe, .id_table =3D bma220_spi_id, }; -module_spi_driver(bma220_driver); +module_spi_driver(bma220_spi_driver); =20 MODULE_AUTHOR("Tiberiu Breana "); -MODULE_DESCRIPTION("BMA220 acceleration sensor driver"); +MODULE_DESCRIPTION("BMA220 triaxial acceleration sensor spi driver"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("IIO_BOSCH_BMA220"); --=20 2.49.1 From nobody Tue Dec 16 21:34:04 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AE9133F6; Sun, 5 Oct 2025 13:13:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=mNa/R2xx5WEqDmo3tt/D3xSBUINt5QARFhOVoeZaDRnC+gc3PGBH5beWui3fyIozcMLPJ8UEEuL15BKVZ8A7JaWRfiQ+Rtj/ybZzu6unr0MdXhUrKuKJzuS7dxpbyWZ9zH7N/Wj2jVEVo0Z+VsRqSR9EGpzf81TdjWw2ebPCfyU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=5/XfvJp4Y6Yq/N8C+B/o3JZ8g5dHnkgbBjHiVhe9JUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PFsWdDykp9b7JnuEnnKSEGtqCUuCo81dZ5HKm/1AzTeKWkpmtrgBLkdiBYefZkDWukg3I+BuJ5FiJskDrGDMwSjjvD3IHt4kvStAb8w5BIEZ/IebdXkkI/yLEqUTNa6/p4gQlYk8431cJ/inx6UkgydQ+WVNNH6tyTsORx+M7sY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Z26lJTRy; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Z26lJTRy" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 0053C173BF0; Sun, 05 Oct 2025 16:13:02 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669983; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lxiCY43M3Gj57Duou16z3WaMK3SnqKfSKKYcNrmg2+s=; b=Z26lJTRyGrcL0oSf+du+hc+hlT0/Ktin1Y/HCGBvR9La30xDztVRiBpR2dT8yQz2h68HVr DYYKYEobep454p0DLUSJ8W9p6N7RtMPzc0NS7BM3cHsaLU9S8U7z8AWcQ8FNSov7mOBet6 Ibe2XYl+SDvF/EbfWyGdeWph1yFh2z/MIisBx7kbc+utVpWt6GTfUevt0PHX0Ub7UVU4N4 DUYJROJc5Hpcc6GP6C/HaYD8YKZFLP7cp3NQRB4E6dmxM3jqIsgDVXXThty3t+V8/j46Du NUlhF+/goYoa0UHfwxawEc6Q3SiI9bECdHgje+tBKx5nAmlRNgY4mzbX4aq9+w== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:17 +0300 Subject: [PATCH v4 08/19] iio: accel: bma220: add open firmware table Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-8-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1060; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=5/XfvJp4Y6Yq/N8C+B/o3JZ8g5dHnkgbBjHiVhe9JUM=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnIvRmZDVjh3VWI1UGJaWWswSnRKYm02CkdOZUF5a3RiZVJuMkZIL3cz Vnd4Y1lrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtNi9 BQW9KRUhRcko2ZGpPa2xqb2JZUC8ydk5oT29PT2wyQlBCN0ZZVzJaeUhibkdBU2N3NzFQSTZRbQ psbFhzVTFvdTFhUVBndTVkaVd2OXpIWnZkdWU2ZUt6Sm1LQ2ZDWFNyY3ZjUmQvbk9PVWVrTXF2O Vg2NURuRVQvCmRoOUtBaUo0UFVadVlOQzZIQjVrd3VvNk95VFFwOXRYc3RNMnFab3Zvai9MSlEx VkJIajNsYmNncUdjd3lUZFMKWHpPQ09PUXNtL3JDcVQxTkdzcTZoeDdRck9uR2tZa0JVdklxZU0 1Z2FVd1Y5V0IwYW1uVmJQUjIzbklhS1ZZbgoyekR2aEhuT0VDWGxkeXB0QkNKSkFCYVJHckc0eG tEeTJZaVFWK3llV2R0cVRha2MyRUg0UlhhVUkrOGQ5UDZWCnVsRmJnNjcyaTRDcExvNGh5Y2dsW kxBTnY3d0NQN1ZIT0picU9ISTM2MVBGcEJ1dlVSaUVXNlZKMVRCcnJLbXIKcWlIY0FZemdsbXVL amREQzFoUEVQNE5TaStZODVML0xraUtzNllwejNVM0lreVNpNzVlYnE4djAwaVFmY0JYZApabk5 pQTE5cDdxOHV0WkpmY3c3U0VoWXB5STlwNkI2NjBnWlRoZGlmRGEvTUk3bzk1bGVoK0krTHNMV0 95VUlYCkFXMU01Z0FkYzU3eDdmSFk5d05nRFV5d0FnU1Q3ek9OdjVxWUdka25RUS8yNmY3NTdVS FVucWtYb3ZhVVgwVFEKcmNZMnNjZ2FTSFpaQ2MyakRYNjE5UFRRZTBaVitlbHNXUTlIWmxEWTNZ WDVPVXBpWkxBQnMvbU1YYzF0R3lpTgpaV2FxSlFBYm9WQkpYYXNEN3pMUzE2VVhOVVQrZ2dCY09 WbUFRMnZMZ2pKdFBJVXR5clMxUmV2ZFFQRlNWWVpjCldaMEo3bFFLSWtzbEtBPT0KPW9RZzAKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add open firmware entry to the spi driver. Signed-off-by: Petre Rodan --- v1->v2 split from bigger patch v3->v4 no change --- drivers/iio/accel/bma220_spi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 70b8bd94895e95936c7294271b5d46d9ec9903c6..b27592591d2817e2c3f3780f430= 7e3a76c7e06cb 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -29,10 +29,17 @@ static const struct acpi_device_id bma220_acpi_id[] =3D= { }; MODULE_DEVICE_TABLE(spi, bma220_spi_id); =20 +static const struct of_device_id bma220_of_spi_match[] =3D { + { .compatible =3D "bosch,bma220" }, + { } +}; +MODULE_DEVICE_TABLE(of, bma220_of_spi_match); + static struct spi_driver bma220_spi_driver =3D { .driver =3D { .name =3D "bma220_spi", .pm =3D pm_sleep_ptr(&bma220_pm_ops), + .of_match_table =3D bma220_of_spi_match, .acpi_match_table =3D bma220_acpi_id, }, .probe =3D bma220_spi_probe, --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7B6A283686; Sun, 5 Oct 2025 13:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=A2YejSghOOFVqFYg5tt1gZ/ydeVZ1BVJR09YPKWPIdOP4xiS2osNMSjx6XnF77IT8hMD2O615PEzOQ9aAFiHPE1xuzQGqtgQ8bACZHqqP9ehiKV7mVTdpwd4GUTqkaY+RXYCAlUSWkIvVK1tPPCCTWWhWItGg4t8QpstFR67Q2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=LuCJZM/jN53ejkozJ69nN3jU/QPkJ9tObGcdGNKx6tg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MJ6VRWg4TqILujbMDD56R/d6orz7XwprNfV2vHEzLn73Q/qaprgoK1zsJ3oRMcrjMorU2LF04EtpdGFdUII2bIpzzwEug4EaSPxjzF/h/ozUnKtFkEvTxAoodE1z6zwy3M4BxmfTqGJ5akufGKLNke8XOtLw9wGlTP2pXGipSfk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=pkxUFbHg; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="pkxUFbHg" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 61097173BF1; Sun, 05 Oct 2025 16:13:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669983; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mtorqI5mnDoCA0h5EA2rtzMVb6sATjCW1L6xPWDz/Mw=; b=pkxUFbHg8KOqV1NzQG7O4IpvU3JG+C/+DAJssPlBEldfNmV7MEHt1CachGwqT5gSTVVqDn EvgowXY3ULQLqz4v0GOFEhYCgyRzVEMxKLZDjUoAbuNd/U9RamjqRIaCR3fdWRdC7K2HR0 +/xaPFo9iKq5cJRotp3RRuZ9dxgsnKQeEJwfiGw7SqBRBxBp6fBxLymzJyQhVFoHLmhUqr 7FUdF6QW+Y400hUJl0gejqt2TKINqcVWP0KPXCOJudRJlUooC1hpt6ol0gDIxSJQAJ4cXw q6ERVlg6aKcLmdq3bWyYIOH8ZSXHn5TMF9GEwPo6g15YIamu1tXl3pJJ3wuI4w== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:18 +0300 Subject: [PATCH v4 09/19] iio: accel: bma220: turn power supplies on Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-9-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1213; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=LuCJZM/jN53ejkozJ69nN3jU/QPkJ9tObGcdGNKx6tg=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnNQY0gzVDN4MUJJTGdMREZhbW1GcStqCjBUdFI0U2wzeFVnVHdPR1ow TUV4RG9rQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN0R BQW9KRUhRcko2ZGpPa2xqc044UC9BekJlRHhtUUljdHZzVEIyT016UElMTG9LRGFaelVBaGgvcA pwblp0UGJXeXpDWHlobmJITU90L0hzMzRsWlFhTVBzcURhSTZEeEJuTW5DbjBWcVpxSk0rMU5Sa 1N6V3NzSkp3ClNNUE5TTjFYem5GVjRPYlZZdHVqZXZ0WkJnYzRJSFh0Zm1tSWdwb1laWFA2UHdH cGJ4WjNKRDBhaGpuRk9CMFYKMGxhK3duY1Zoc0xXMXcwdVI5MTNYRW5ISkwrVzdtZGF6U1NwUjF XY3c1dTdQV2taYnpxTEZQSkp5TzJ6WGs1MAppbEFzM0JIbjEyVDA0RWJieUJOaVp5MlB3aUc2a1 RKUWIydkx3bnhhNDJveTI3NHJBNXliUWtDVG5zaDZ1ZTdECjBtaVpicWtGTTNFN2xsdWpYTGxQb 0xmSEZZUE51S3RacVlOa1BVV3ZsQlAzZ0t4L2FMc0VDUGFIREZ1UUpxUWEKTUVWenIrMlF2dENt bUxFZVJUc2p2Q25KbWtsbXhXQkRhV2xqQythbDc4ZXROdEVxNnp0ZzVIYy96K1hsVEliUwpDaVR YWlhLcXVIMk9nMDQzZXRsYUZIT3htMFFYQlFnT3NxeHNmUzNHb1hGYnZBSjk0RXNNODJoRENHUl g2NGNECnhmeU5wbUVadXhIbVRoZjBnV0hVL1kzM1ZxTGdoSzNkZkRLWXBXVmxNbE5qUXJiQlVqc 294WXFWWDZzKzcreEEKaG9NMStNT2JUQWlvdU8zemU5RGYrNzNLeTc4cSsxdjk0dkgyYk9iVGtZ TGU2UVlZZEtaQytNOHQxNG5wbjhjeQpvTGZnYXo1TTZaSDc0ejM4WkFBZHA2Y3hzM0FXeTcxRXN IN1dsL1FxWFNrc3cwcnJjUE5FN3dIMW91VnRLRGFyCitOYzd2Q3d0Sk1Zc3BBPT0KPThyY1kKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add devm_regulator_bulk_get_enable() to device probe(). Signed-off-by: Petre Rodan --- v1->v2 split from larger patch v2->v3 change commit desc (Jonathan) v4 dev ptr (Andy) --- drivers/iio/accel/bma220_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 00fe1064486aa469f7ad15593027c7ec86197365..319a3d6867ee5ac2da64c9baf02= a760865302ee8 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include =20 @@ -230,6 +231,12 @@ static int bma220_init(struct spi_device *spi) { int ret; struct device *dev =3D &spi->dev; + static const char * const regulator_names[] =3D { "vddd", "vddio", "vdda"= }; + + ret =3D devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(regulator_names), + regulator_names); + if (ret) + return dev_err_probe(dev, ret, "Failed to get regulators\n"); =20 ret =3D bma220_read_reg(spi, BMA220_REG_ID); if (ret < 0) --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A92BC2836B5; Sun, 5 Oct 2025 13:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; cv=none; b=GT8FyToJyBQBMN1OBCJ3GgN/JlKhh2YW8iy58iQV8KEYGDTv0hE0s7FnFx2D4RCalrr9kWSiJroOnFhhUPbZJ1iBsaJ+Ibc7nV8oa9NJal1URA32MkgNxfI2LvFO906PIPLHtO2v/eocFX8DCLlD7KmkMMD7EL7xD+bIUzn/9is= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; c=relaxed/simple; bh=9z9iaV0kcIBckzkASDSpSEvlASqUUDNUq9wXYBNiKd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JMypHTj8WdwHxkGn+3/83NTNA3hRCRlSM0hjTVjk9IDRwsp5tyaE/1IWASER1cWZZg9/2toE+5FeyC5bCKM/PdyB05y7gxdZsa1s+WdWRBqc+DyGUg9+DXEUzKSlKuoFd1g4vtt+BP9ZO1fWtChfsSEUQpPFsuG1GeIF1J12Rf0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=lVcVGMPe; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="lVcVGMPe" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id BDDAE173BF2; Sun, 05 Oct 2025 16:13:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5N3QOAb8TA2ZdEDRy0PgYLrjDQo06YJfWtZNDbxgXUQ=; b=lVcVGMPe1tI0RAaFaRFUfcSfh8XoXoV7Wko+eszLbpCmY1Ppr2uF2q5hK97Jm8Ebq6/l/U z9fo8pjREZLa4a0K9D8S43ZdV7L5gt+QY3kVA0j+kGU7dzdn6Ujp2nKmQJgcCFlr/XXeln RJyAckflkypyE+zzolkt68T2zZ/bwC+QMctHAE5ruBqZbaeCsPnh25LRsK79/22EAcJTz/ YS3IjyXKRVmSyU/oKeLOGVkjRjIMFu6xlbJsvD7ii64O6nFRkG8p8hKlnGkKzZpt1J0c6X +RVlOXylFirdiBH8FO7AWKvYjC2uk+BeLaLfKToUqSH9NLllSlCQX006/dAInw== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:19 +0300 Subject: [PATCH v4 10/19] iio: accel: bma220: reset registers during init stage Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-10-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2605; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=9z9iaV0kcIBckzkASDSpSEvlASqUUDNUq9wXYBNiKd8=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgprQTBEQUFvQmRDc25wMk02U1dNQnl5WmlBR 2ppYnNTalNmajEwcHZwenNWb2pTd2pxUnVrUGpkMzZ3ZFQ4emVQCkZ3eDlIZEd3dklrQ013UUFB UW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGpCUUpvNG03RUFBb0oKRUhRcko2ZGp Pa2xqMzQ4UUFKa1NGM2F0SVZjS3hxRXVkVFNSNlhRR0lHdUR0Wkh4QVRjTjBLWkNjSFBMVXZFYQ p2eVRxb096TFl4czY1WVBIYitKYWpyclM4MGt6eW9LMUswb0lTSnBuQnVBV0lueUVEcFRNSFFzd Dk3S1duY2wzCk8rMEpPMjFUNDhDUjVLV2FyYUtuaWlSaVF3QWl4R0NIM0F3b3h2NGYzZEJNUWgy UURDV1NoN01lQmxRYzlWeWkKbGhCZG9BSi93bDM5VXFqOHdOdGM2ZHhkMFJpbFR1Zi9iVTdJUDh oa2RrbW5FeTRJZ2RhTWQ2TlRTU2hnTHhURQpsVDh5MWtkMS9qb3VsZmpXSzAwOUJDSzRibDVLbj dJUkhma29KUFVacENNMHFJZ2dPcUthQU5vTFV3NzdnT1FZCk1HYU1LY3Bpb1NFZkNhQmxCci9QM 2RYREtRWVpmK2ZiM3BOZzVTYkVXaVJsSVlhbDNDNVdSQTh2YUhUTVlFczYKcTR5S1ZTWGZ1a0o3 M3dXZTZ2dlVJbGpNUVNNVlluTUZnOHVPaEQ4WUMrL1ZZbVQ2eWJKWnFFT3BWNnVqUUJHeApOYTl aNEcxYzgwV3J6UkRXNis4K0lnMHoxVDVSMUVaMS8zeSswMEpac0ZML2M3eE1hOWNiOWo5Kzhrdl FwSzk1CklYYzJuUmEwejFuUjNER1hFc0ZiNWxrbEpGV2NGZys2ZFFnVEV5VmR0aTFUelBhWVE4N mszOG5nUEJBY2I4SkQKSTc0VXdCeFBhM3RiNjBXekdCckliMjJpYTE1aXhzZjZMSWVuNC9sU2oy akQ4OEtnTEhvZzNnWHh5U3NHT2VLeQpWUGdXQnZWblloQ2pIalFEQTl0eDVkMnlWcGJKMkEvMVd SL1I2bTNtb0FMODFHb1VFdDBMSU5DWEF6TGYKPUpiR2kKLS0tLS1FTkQgUEdQIE1FU1NBR0UtLS 0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Bring all configuration registers to default values during device probe(). Remove trivial code duplication regarding bma220_power() in _init() Signed-off-by: Petre Rodan --- v4 dev ptr (Andy) --- drivers/iio/accel/bma220_core.c | 44 +++++++++++++++++++++++++++++++++----= ---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 319a3d6867ee5ac2da64c9baf02a760865302ee8..1b118a9fce3f16f0cd805a68b98= 87c6eaf24973a 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -28,12 +28,15 @@ #define BMA220_REG_ACCEL_Z 0x04 #define BMA220_REG_RANGE 0x11 #define BMA220_REG_SUSPEND 0x18 +#define BMA220_REG_SOFTRESET 0x19 =20 #define BMA220_CHIP_ID 0xDD #define BMA220_READ_MASK BIT(7) #define BMA220_RANGE_MASK GENMASK(1, 0) #define BMA220_SUSPEND_SLEEP 0xFF #define BMA220_SUSPEND_WAKE 0x00 +#define BMA220_RESET_MODE 0xFF +#define BMA220_NONRESET_MODE 0x00 =20 #define BMA220_DEVICE_NAME "bma220" =20 @@ -202,6 +205,31 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 +static int bma220_reset(struct spi_device *spi, bool up) +{ + int ret; + unsigned int i; + + /* + * The chip can be reset by a simple register read. + * We need up to 2 register reads of the softreset register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SOFTRESET); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_RESET_MODE) + return 0; + + if (!up && ret =3D=3D BMA220_NONRESET_MODE) + return 0; + } + + return -EBUSY; +} + static int bma220_power(struct spi_device *spi, bool up) { int ret; @@ -246,14 +274,14 @@ static int bma220_init(struct spi_device *spi) if (ret !=3D BMA220_CHIP_ID) dev_info(dev, "Unknown chip found: 0x%02x\n", ret); =20 - /* Make sure the chip is powered on */ - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret =3D=3D BMA220_SUSPEND_WAKE) - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - if (ret =3D=3D BMA220_SUSPEND_WAKE) - return -EBUSY; + /* Make sure the chip is powered on and config registers are reset */ + ret =3D bma220_power(spi, true); + if (ret) + return dev_err_probe(dev, ret, "Failed to power-on chip\n"); + + ret =3D bma220_reset(spi, true); + if (ret) + return dev_err_probe(dev, ret, "Failed to soft reset chip\n"); =20 return 0; } --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B15E72874E0; Sun, 5 Oct 2025 13:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; cv=none; b=YqVOec6sloOkTI+aqyfowUCIiawVrQLHwUQrkZejA33IiSHOuzr8cniavUdEI10RHGfqSdruxVi8Lm8uIBnP54sLguR2/KSWW/ZMF2w+yX3LMN+x2NQ7FBvQJfWQ/1cAXafeREMJ3VTyzwtV0qLUDEDNiKGYYZ7XIQnDQ9/Qehg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669992; c=relaxed/simple; bh=WYAk4xK9TcHQO+TISTFVKxZcSfvOy87cgNMD+pjBtjQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KIrWnPpaQ2jqEwwdlH3U2phZ1wkCTVbktqpB71FFepioQwZFfUHW/eLUR3JS+1fPiDEOeaVRhQffXFKYEzawW4MPvcTdAX3jzKUA2hSw0+2kznv3/++XrNkMdYsuZdG1O/kyCbYHbyxdDY2Bd0poeQERWa72S8XYEVpIM3sEHaA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=OoOfreDv; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="OoOfreDv" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 2390B173BF3; Sun, 05 Oct 2025 16:13:04 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PzA+0Ggxa72v3ATdFvgDPZQKXibCoX2v71s6OVwgWaQ=; b=OoOfreDvvGNTD1kz+NVGkVD8iYPpBQoCItAAk0KmoEJCqJceYgJaMcYwP5EbrItLCkf/8l 2GJiv1Gi2rQsR3SpnqWXFKjN+ZgNA37jUUFOeQRO5q5iie8DqrujChPpW9TLBQ7c7v0CYH 3iD8NxY6r2if8DaZeO7wb60KJyLMqQOYgEMHQ2JBkeutR71rGtO4NBUm6XVR4dzkjKrmIy 0NldVkKGvpfRV6b91ZGeIl+GadYsnNVtZEKLWt6PLkd65jfW+05wVnlq+Lgv9cJOTXjFXF Ydb9c/hC957aqCFzqi96IA/lmKdYe9RzdUOSolT31gNZ/wKW7khPolkWehkNIg== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:20 +0300 Subject: [PATCH v4 11/19] iio: accel: bma220: migrate to regmap API Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-11-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16055; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=WYAk4xK9TcHQO+TISTFVKxZcSfvOy87cgNMD+pjBtjQ=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnNaR284OWYvSUJwQXNWdmxJNWw0b3FFCjFWNmtaWXVWY2t4WFp1dTNa VTNUOFlrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN0d BQW9KRUhRcko2ZGpPa2xqdGgwUUFKWlVjY0w0dnBQa1IvVWJzWUdqeG1vMkQ5bG5CcnIxUHQ2ZQ p1VWdNM1ZyQ2RnbEU5ZDdqQml3bTJPMkt1Vi9qRHVLV3VtcnpYSlRPcTVnZnIzVGpJTklUTEg4e W9oaW5jM3NzCnlQblpSTVJha0NCZ3FHblVsc3ZYS3ZWZWx6TDRmOGJ1b1VMSlArOE1KaWRzNnhU Z09NcmdFUVpxN0lEL2VYSEwKSHowTmw2MDhnWnBZc0dtVHdwd3dKc1QwUE51ZFFGY2E5dW9LKzh YbWk3U2dxaVFNU3JpUWxBUjNnNWFIKzZ0MAorQ2tqVVZ3N3d5YWZ6Wkx4ajErMEN0ODRUSU1JaV FiY1Ztb3ZndE91K1U2a0dPV1NjbkZDK0VRRTlTODU0Z0JTClJvYlRpRlpSdHVKbWV2bFFlYmd2a VkvZXRlM0I1ZDB1ZVFoOS9rUGtGdlRIRkNvK0hWY1A4L1NFMldURk1YcUUKSnExTDRNN3VpWXRY WUErdlR4TGRhZCtVWmw4d01XUDRsVVQvMlBwNDRaNVovV3paUjY3cGJBRWtaOCtOdUovcApFK3E 4ZVFKSlAyZlJnclY3Sm5JNFdkOUY3Ui9FQTZjcUQ1YmxVY0FVOTZUVGpoVjR2K0pVTjJTa0xQUV BydXpKCmVzYzRQUTlVWU5lZTEvQmhIZDBVM1lNcXlmdkVDVCtnZHBGV0ViNnhBVHFEM0tITFZNS Ct5Si8rV0x6VXVmdmcKdWlOZkFDQXRZazhMQm1zS05TQWhPMGk0RDhqMVU2NHFhZnk5VzJUTGVm RDBpRE10Qno0RHJPeVFwVkZQS1owdApReVN4eDFSdHc2Qk1QQUZqU3pCa2ExZW5xSjBHekRYc1B lQWFRVGQwc3VOdXVqQWhUU21WT3RKdmNEbE5KRW81ClhkQ3FuSTk2UkJzb3hBPT0KPTE0bUIKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Switch to regmap API. Signed-off-by: Petre Rodan --- v1->v2 - split out into more patches (Jonathan) v2->v3 - split out into even more patches (Jonathan) - use dev_err_probe() (Jonathan) v4 remove dev from priv struct (Andy) --- drivers/iio/accel/Kconfig | 2 + drivers/iio/accel/bma220.h | 7 +- drivers/iio/accel/bma220_core.c | 231 +++++++++++++++++++++++++++---------= ---- drivers/iio/accel/bma220_spi.c | 10 +- 4 files changed, 173 insertions(+), 77 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 4648be329917a3054615ed324156d67f53baefb6..988fe4b1f9a52c2e671ea30d859= 0f25ee1685ac7 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -219,6 +219,7 @@ config BMA180 config BMA220 tristate "Bosch BMA220 3-Axis Accelerometer Driver" depends on SPI + select REGMAP select IIO_BUFFER select IIO_TRIGGERED_BUFFER select BMA220_SPI if SPI @@ -232,6 +233,7 @@ config BMA220 =20 config BMA220_SPI tristate + select REGMAP_SPI depends on BMA220 =20 config BMA400 diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h index dea34244b4fc4971841dc60d79db6c7db27bea20..695f491bc5a03008f26fe8602ba= 633456159fb1d 100644 --- a/drivers/iio/accel/bma220.h +++ b/drivers/iio/accel/bma220.h @@ -9,10 +9,13 @@ #define _BMA220_H =20 #include +#include =20 +struct device; + +extern const struct regmap_config bma220_spi_regmap_config; extern const struct dev_pm_ops bma220_pm_ops; -struct spi_device; =20 -int bma220_common_probe(struct spi_device *dev); +int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq= ); =20 #endif diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 1b118a9fce3f16f0cd805a68b9887c6eaf24973a..7b1e87c6932a3a6698651e528fb= 8182c03a2432e 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -3,16 +3,20 @@ * BMA220 Digital triaxial acceleration sensor driver * * Copyright (c) 2016,2020 Intel Corporation. + * Copyright (c) 2025 Petre Rodan */ =20 #include +#include +#include +#include #include #include #include #include +#include #include #include -#include =20 #include #include @@ -23,16 +27,63 @@ #include "bma220.h" =20 #define BMA220_REG_ID 0x00 +#define BMA220_REG_REVISION_ID 0x01 #define BMA220_REG_ACCEL_X 0x02 #define BMA220_REG_ACCEL_Y 0x03 #define BMA220_REG_ACCEL_Z 0x04 +#define BMA220_REG_CONF0 0x05 +#define BMA220_HIGH_DUR_MSK GENMASK(5, 0) +#define BMA220_HIGH_HY_MSK GENMASK(7, 6) +#define BMA220_REG_CONF1 0x06 +#define BMA220_HIGH_TH_MSK GENMASK(3, 0) +#define BMA220_LOW_TH_MSK GENMASK(7, 4) +#define BMA220_REG_CONF2 0x07 +#define BMA220_LOW_DUR_MSK GENMASK(5, 0) +#define BMA220_LOW_HY_MSK GENMASK(7, 6) +#define BMA220_REG_CONF3 0x08 +#define BMA220_TT_DUR_MSK GENMASK(2, 0) +#define BMA220_TT_TH_MSK GENMASK(6, 3) +#define BMA220_REG_CONF4 0x09 +#define BMA220_SLOPE_DUR_MSK GENMASK(1, 0) +#define BMA220_SLOPE_TH_MSK GENMASK(5, 2) +#define BMA220_REG_CONF5 0x0a +#define BMA220_TIP_EN_MSK BIT(4) +#define BMA220_REG_IF0 0x0b +#define BMA220_REG_IF1 0x0c +#define BMA220_IF_SLOPE BIT(0) +#define BMA220_IF_DRDY BIT(1) +#define BMA220_IF_HIGH BIT(2) +#define BMA220_IF_LOW BIT(3) +#define BMA220_IF_TT BIT(4) +#define BMA220_REG_IE0 0x0d +#define BMA220_INT_EN_TAP_Z_MSK BIT(0) +#define BMA220_INT_EN_TAP_Y_MSK BIT(1) +#define BMA220_INT_EN_TAP_X_MSK BIT(2) +#define BMA220_INT_EN_SLOPE_Z_MSK BIT(3) +#define BMA220_INT_EN_SLOPE_Y_MSK BIT(4) +#define BMA220_INT_EN_SLOPE_X_MSK BIT(5) +#define BMA220_INT_EN_DRDY_MSK BIT(7) +#define BMA220_REG_IE1 0x0e +#define BMA220_INT_EN_HIGH_Z_MSK BIT(0) +#define BMA220_INT_EN_HIGH_Y_MSK BIT(1) +#define BMA220_INT_EN_HIGH_X_MSK BIT(2) +#define BMA220_INT_EN_LOW_MSK BIT(3) +#define BMA220_INT_LATCH_MSK GENMASK(6, 4) +#define BMA220_INT_RST_MSK BIT(7) +#define BMA220_REG_IE2 0x0f +#define BMA220_REG_FILTER 0x10 +#define BMA220_FILTER_MASK GENMASK(3, 0) #define BMA220_REG_RANGE 0x11 +#define BMA220_RANGE_MASK GENMASK(1, 0) +#define BMA220_REG_WDT 0x17 +#define BMA220_WDT_MASK GENMASK(2, 1) +#define BMA220_WDT_OFF 0x0 +#define BMA220_WDT_1MS 0x2 +#define BMA220_WDT_10MS 0x3 #define BMA220_REG_SUSPEND 0x18 #define BMA220_REG_SOFTRESET 0x19 =20 #define BMA220_CHIP_ID 0xDD -#define BMA220_READ_MASK BIT(7) -#define BMA220_RANGE_MASK GENMASK(1, 0) #define BMA220_SUSPEND_SLEEP 0xFF #define BMA220_SUSPEND_WAKE 0x00 #define BMA220_RESET_MODE 0xFF @@ -68,14 +119,14 @@ static const int bma220_scale_table[][2] =3D { }; =20 struct bma220_data { - struct spi_device *spi_device; + struct regmap *regmap; struct mutex lock; + u8 range_idx; struct { s8 chans[3]; /* Ensure timestamp is naturally aligned. */ aligned_s64 timestamp; - } scan; - u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); + } scan __aligned(IIO_DMA_MINALIGN); }; =20 static const struct iio_chan_spec bma220_channels[] =3D { @@ -85,35 +136,57 @@ static const struct iio_chan_spec bma220_channels[] = =3D { IIO_CHAN_SOFT_TIMESTAMP(3), }; =20 -static inline int bma220_read_reg(struct spi_device *spi, u8 reg) -{ - return spi_w8r8(spi, reg | BMA220_READ_MASK); -} - static const unsigned long bma220_accel_scan_masks[] =3D { BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), 0 }; =20 +static bool bma220_is_writable_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case BMA220_REG_CONF0: + case BMA220_REG_CONF1: + case BMA220_REG_CONF2: + case BMA220_REG_CONF3: + case BMA220_REG_CONF4: + case BMA220_REG_CONF5: + case BMA220_REG_IE0: + case BMA220_REG_IE1: + case BMA220_REG_IE2: + case BMA220_REG_FILTER: + case BMA220_REG_RANGE: + case BMA220_REG_WDT: + return true; + default: + return false; + } +} + +const struct regmap_config bma220_spi_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .read_flag_mask =3D BIT(7), + .max_register =3D BMA220_REG_SOFTRESET, + .cache_type =3D REGCACHE_NONE, + .writeable_reg =3D bma220_is_writable_reg, +}; +EXPORT_SYMBOL_NS_GPL(bma220_spi_regmap_config, "IIO_BOSCH_BMA220"); + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; struct iio_poll_func *pf =3D p; struct iio_dev *indio_dev =3D pf->indio_dev; struct bma220_data *data =3D iio_priv(indio_dev); - struct spi_device *spi =3D data->spi_device; =20 - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; - ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, - ARRAY_SIZE(bma220_channels) - 1); + ret =3D regmap_bulk_read(data->regmap, BMA220_REG_ACCEL_X, + &data->scan.chans, + sizeof(data->scan.chans)); if (ret < 0) - goto err; + return IRQ_NONE; =20 iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), pf->timestamp); -err: - mutex_unlock(&data->lock); iio_trigger_notify_done(indio_dev->trig); =20 return IRQ_HANDLED; @@ -124,24 +197,24 @@ static int bma220_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { int ret; - u8 range_idx; + u8 index; + unsigned int reg; struct bma220_data *data =3D iio_priv(indio_dev); =20 + guard(mutex)(&data->lock); + switch (mask) { case IIO_CHAN_INFO_RAW: - ret =3D bma220_read_reg(data->spi_device, chan->address); + ret =3D regmap_read(data->regmap, chan->address, ®); if (ret < 0) return -EINVAL; - *val =3D sign_extend32(ret >> chan->scan_type.shift, + *val =3D sign_extend32(reg >> chan->scan_type.shift, chan->scan_type.realbits - 1); return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: - ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); - if (ret < 0) - return ret; - range_idx =3D ret & BMA220_RANGE_MASK; - *val =3D bma220_scale_table[range_idx][0]; - *val2 =3D bma220_scale_table[range_idx][1]; + index =3D data->range_idx; + *val =3D bma220_scale_table[index][0]; + *val2 =3D bma220_scale_table[index][1]; return IIO_VAL_INT_PLUS_MICRO; } =20 @@ -157,6 +230,8 @@ static int bma220_write_raw(struct iio_dev *indio_dev, int index =3D -1; struct bma220_data *data =3D iio_priv(indio_dev); =20 + guard(mutex)(&data->lock); + switch (mask) { case IIO_CHAN_INFO_SCALE: for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) @@ -168,14 +243,12 @@ static int bma220_write_raw(struct iio_dev *indio_dev, if (index < 0) return -EINVAL; =20 - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_RANGE; - data->tx_buf[1] =3D index; - ret =3D spi_write(data->spi_device, data->tx_buf, - sizeof(data->tx_buf)); + ret =3D regmap_update_bits(data->regmap, BMA220_REG_RANGE, + BMA220_RANGE_MASK, + FIELD_PREP(BMA220_RANGE_MASK, index)); if (ret < 0) return ret; - mutex_unlock(&data->lock); + data->range_idx =3D index; =20 return 0; } @@ -205,10 +278,10 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 -static int bma220_reset(struct spi_device *spi, bool up) +static int bma220_reset(struct bma220_data *data, bool up) { int ret; - unsigned int i; + unsigned int i, val; =20 /* * The chip can be reset by a simple register read. @@ -216,24 +289,24 @@ static int bma220_reset(struct spi_device *spi, bool = up) * to make sure that the device is in the desired state. */ for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SOFTRESET); + ret =3D regmap_read(data->regmap, BMA220_REG_SOFTRESET, &val); if (ret < 0) return ret; =20 - if (up && ret =3D=3D BMA220_RESET_MODE) + if (up && val =3D=3D BMA220_RESET_MODE) return 0; =20 - if (!up && ret =3D=3D BMA220_NONRESET_MODE) + if (!up && val =3D=3D BMA220_NONRESET_MODE) return 0; } =20 return -EBUSY; } =20 -static int bma220_power(struct spi_device *spi, bool up) +static int bma220_power(struct bma220_data *data, bool up) { int ret; - unsigned int i; + unsigned int i, val; =20 /* * The chip can be suspended/woken up by a simple register read. @@ -241,70 +314,84 @@ static int bma220_power(struct spi_device *spi, bool = up) * to make sure that the device is in the desired state. */ for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + ret =3D regmap_read(data->regmap, BMA220_REG_SUSPEND, &val); if (ret < 0) return ret; =20 - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + if (up && val =3D=3D BMA220_SUSPEND_SLEEP) return 0; =20 - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + if (!up && val =3D=3D BMA220_SUSPEND_WAKE) return 0; } =20 return -EBUSY; } =20 -static int bma220_init(struct spi_device *spi) +static int bma220_init(struct device *dev, struct bma220_data *data) { int ret; - struct device *dev =3D &spi->dev; + unsigned int val; static const char * const regulator_names[] =3D { "vddd", "vddio", "vdda"= }; =20 - ret =3D devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(regulator_names), + ret =3D devm_regulator_bulk_get_enable(dev, + ARRAY_SIZE(regulator_names), regulator_names); if (ret) return dev_err_probe(dev, ret, "Failed to get regulators\n"); =20 - ret =3D bma220_read_reg(spi, BMA220_REG_ID); - if (ret < 0) + ret =3D regmap_read(data->regmap, BMA220_REG_ID, &val); + if (ret) return dev_err_probe(dev, ret, "Failed to read chip id register\n"); =20 - if (ret !=3D BMA220_CHIP_ID) - dev_info(dev, "Unknown chip found: 0x%02x\n", ret); + if (val !=3D BMA220_CHIP_ID) + dev_info(dev, "Unknown chip found: 0x%02x\n", val); =20 - /* Make sure the chip is powered on and config registers are reset */ - ret =3D bma220_power(spi, true); + ret =3D bma220_power(data, true); if (ret) return dev_err_probe(dev, ret, "Failed to power-on chip\n"); =20 - ret =3D bma220_reset(spi, true); + ret =3D bma220_reset(data, true); if (ret) return dev_err_probe(dev, ret, "Failed to soft reset chip\n"); =20 return 0; } =20 -static void bma220_deinit(void *spi) +static void bma220_deinit(void *data_ptr) { - bma220_power(spi, false); + struct bma220_data *data =3D data_ptr; + int ret; + struct device *dev =3D regmap_get_device(data->regmap); + + ret =3D bma220_power(data, false); + if (ret) + dev_warn(dev, + "Failed to put device into suspend mode (%pe)\n", + ERR_PTR(ret)); } =20 -int bma220_common_probe(struct spi_device *spi) +int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq) { int ret; struct iio_dev *indio_dev; struct bma220_data *data; - struct device *dev =3D &spi->dev; =20 indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; =20 data =3D iio_priv(indio_dev); - data->spi_device =3D spi; - mutex_init(&data->lock); + data->regmap =3D regmap; + + ret =3D bma220_init(dev, data); + if (ret) + return ret; + + ret =3D devm_mutex_init(dev, &data->lock); + if (ret) + return ret; =20 indio_dev->info =3D &bma220_info; indio_dev->name =3D BMA220_DEVICE_NAME; @@ -313,38 +400,34 @@ int bma220_common_probe(struct spi_device *spi) indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); indio_dev->available_scan_masks =3D bma220_accel_scan_masks; =20 - ret =3D bma220_init(data->spi_device); - if (ret) - return ret; - - ret =3D devm_add_action_or_reset(dev, bma220_deinit, spi); + ret =3D devm_add_action_or_reset(dev, bma220_deinit, data); if (ret) return ret; =20 ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, iio_pollfunc_store_time, bma220_trigger_handler, NULL); - if (ret < 0) { - dev_err(dev, "iio triggered buffer setup failed\n"); - return ret; - } + if (ret < 0) + dev_err_probe(dev, ret, "iio triggered buffer setup failed\n"); =20 return devm_iio_device_register(dev, indio_dev); } -EXPORT_SYMBOL_NS(bma220_common_probe, "IIO_BOSCH_BMA220"); +EXPORT_SYMBOL_NS_GPL(bma220_common_probe, "IIO_BOSCH_BMA220"); =20 static int bma220_suspend(struct device *dev) { - struct spi_device *spi =3D to_spi_device(dev); + struct iio_dev *indio_dev =3D dev_get_drvdata(dev); + struct bma220_data *data =3D iio_priv(indio_dev); =20 - return bma220_power(spi, false); + return bma220_power(data, false); } =20 static int bma220_resume(struct device *dev) { - struct spi_device *spi =3D to_spi_device(dev); + struct iio_dev *indio_dev =3D dev_get_drvdata(dev); + struct bma220_data *data =3D iio_priv(indio_dev); =20 - return bma220_power(spi, true); + return bma220_power(data, true); } EXPORT_NS_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume, IIO_BOSCH_BMA220); diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index b27592591d2817e2c3f3780f4307e3a76c7e06cb..8990155ac0cd36ace08d1192b4d= da3c275ad675e 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include =20 @@ -15,7 +16,14 @@ =20 static int bma220_spi_probe(struct spi_device *spi) { - return bma220_common_probe(spi); + struct regmap *regmap; + + regmap =3D devm_regmap_init_spi(spi, &bma220_spi_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(&spi->dev, PTR_ERR(regmap), + "failed to create regmap\n"); + + return bma220_common_probe(&spi->dev, regmap, spi->irq); } =20 static const struct spi_device_id bma220_spi_id[] =3D { --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2D15287505; Sun, 5 Oct 2025 13:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=mxJOSkWdLpyu9d3ToPpUAjf7U3vRTknB0Oi2MNtRX/wGoj9bnz3Lwy5fzy3XLGNTpvuNrM4bMPwdDD0rJi8FCc1WiZGSDr5iDGeLAun3FTUk46kWofLRfz20yQkecbLzvtawUw97SSLJQcoFAM9+qHfJEB76SvurV4acojG4OB0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=NK+OVoMg3HwVpi5UC0omZz7JzNDOklhW7hbKH6XaTbs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PdUsrfsOzU916A6tkokdsnK4KSTBeGijf0rR7djBCiNaaKZje+GgODrScamJjI0d9fR2SIeu2TKJ4lfNJLnCVwZ3WnE2kbedTM16hnz2d76YpYXw6XshigEyCa0a4i3Xi3CvqYIxkU952ZkLgRxtC1qFuFtQsance1lNShuGQYQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=joS7s66D; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="joS7s66D" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 7AC94173BF4; Sun, 05 Oct 2025 16:13:04 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y8Ndz0LJuGnEylU2rvOMSC7o8y9spIn/Fg/srnTHOLM=; b=joS7s66DpnYVQ4dtiOGV6fDC6BVHVEIZIpmpgu6q/NjUK+pdtm/gkZUQVnnXADrc3nExdK MoiSROqKwN8nFwrMjP4qYJ9gex6SUuss1kUoHvuDFI/6OpAsbBBq9mEsiZyi3Jx4AR66q7 B8O8MGOG+AbAAZsYN8u1ZKH2wbO+egimceLFKjZlDxD4cLDWY3XaS+gtjVbANkBour5+rt 1zmtaZHyZcSpZvpdJeFtD1QVSXS3/PcGp5RcIP5FG7UCIWQXx8WT53Np60M7deZ/7ltypF qXAjD33NMpLfkV1AOWQdZhP2CqwKxfbSuT/DWXFOgOfji8CXHxR86wIJgOa6EA== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:21 +0300 Subject: [PATCH v4 12/19] iio: accel: bma220: populate buffer ts in trigger handler Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-12-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1448; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=NK+OVoMg3HwVpi5UC0omZz7JzNDOklhW7hbKH6XaTbs=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnNqWjE0ZDROS0NnaytPdXcwNndxQXFqCm1VN08vOFFraEIrTkd2MG1X N2dSNTRrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN0l BQW9KRUhRcko2ZGpPa2xqZE1BUC8yYVc1NFZCWXo0Tk5ZYnFyWWZaZ2Q1c2NadUF0TXk4SnhCMg pGR1IrUUI1TEZBeDZ2bnFpbFFzbG5PRi9PVE5RbzNVSTY1ZkxMKzVXYWJ6aTBaRHgwSFJ6Nlc0N nFJMXVLbEpUClBiRnZoVXNFdFI0MnN3d3lTeWhpNmpyVlMzdVc0WHVnN0hJNHVDYkd4VjhmdDdJ T0E5L0Rja1U1S2k0Q1lBOXcKLzFyU0ZmRFloWHM3US9JaW1sVFp4VEY4RDArMEJLWC96OCtCTkh UR29SQ3k1RytYd3QwMVBFOEl3N1NTWndOdwpWRGYxSGQ5WmdFa2ljL1g3VTdOWS9tZXh3RWhiL3 dYR1NLRS9Ja0EveDZrOWVwUVd0SXVlNWh2b0toVk5pT3VDCkdMM2NKMkVXeVRCTlRuZFdkRDIzY 2xTdWpLQVh0TUZraFhtcmJiNi94QUtmdnk4VXk3ejRFOUFuMFBhZ3lUQVUKQkNwTlgzVUt3V25S VlZWOHV5SWhKb0YvSWd1bFBGMDBGMXFrdEZENW00ejhDNXlod1hIL0V3YVc2SUwrYzhlYwpnS1V UQnhKdTdNQUhkSnZMRVVKSFg0LzkzaHhkYTY3UmxrK0NyVEJNZkJCUlI1TnFSdlY2V0ZXMVZOZy 9qT0t3CnZqOFBURmVNTnEzRmw1NFlYSEUyQlFLcTQxQmVmeDcreThHVWJoa3pnYXp2L3FTTHZmU XR3cFp4NHpxRUZ6elQKVUJ5VXpyNFJteWdVL3B0RlloOFc4Qzh5Ukg0b2FrRFVzL0hmbXIvamU0 ZU9SaGdjR3NMZkhBR0R4cTUvRGpETAp0NGtRRlhnTFVtc2dRVGQvalVBVzRCbWFMNE9pVUFrK3h HY3lFcFlISmJhMXozT0xQR1ZrTkNJYXQ1MXdXdDEyCmkvdmkwa0ZndzdJWVBRPT0KPWx0ZTAKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Populate buffer timestamps in trigger handler since not all triggers can run the top half handler that provides pf->timestamp. Fixes failing unit test that triggers based on the INT signal. Signed-off-by: Petre Rodan --- v2->v3 split out from bigger patch (Jonathan) v4 more verbose commit msg (Jonathan) --- drivers/iio/accel/bma220_core.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 7b1e87c6932a3a6698651e528fb8182c03a2432e..ec7409db83f81882043653cd70e= 3205500348994 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -186,7 +186,7 @@ static irqreturn_t bma220_trigger_handler(int irq, void= *p) return IRQ_NONE; =20 iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), - pf->timestamp); + iio_get_time_ns(indio_dev)); iio_trigger_notify_done(indio_dev->trig); =20 return IRQ_HANDLED; @@ -404,8 +404,7 @@ int bma220_common_probe(struct device *dev, struct regm= ap *regmap, int irq) if (ret) return ret; =20 - ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, - iio_pollfunc_store_time, + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, NULL, bma220_trigger_handler, NULL); if (ret < 0) dev_err_probe(dev, ret, "iio triggered buffer setup failed\n"); --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 452C128750A; Sun, 5 Oct 2025 13:13:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=d3+YoBAjjP/jqhpw3wz+/+2NI4kKhMS0ppunvSBnW7XCRDWdN38UghevTZuh4HhTkdLdGSpjTP0VXwwtjO5asBPtGuD74Y4vNfR5kflkDVJXIllzsXp+XWECsZ5sMyABhR/2A+CtQHkgvkcUUrljv1dTd0/EbOaKKkuiTAKmlB4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=cyIwHzJpXiF0lnO56Fe7DP00gI3Dt9lMyBGQjSBtKf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jpeEJxrWuOkcvuJ+DoHcyMykCjRFc/8/RWqHKhXgclJ2ygvtE6I2lDGbPqBFrSxuFvWS4AwBaIo7kQtpaXlEPxccF/OFlnFWwrcDBWdyW9OlR/WNYw35POKgar19TjT1vK2Kx2WTXLq84k/0iX+rFgfwLQ1Ok+f1hFt4/fN4ik0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=TNS7YHpS; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="TNS7YHpS" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id DB05F173BF5; Sun, 05 Oct 2025 16:13:04 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0ig6cfnWRkgfelBCCLV7Q+x6GfztCv5+stowMKlE0kY=; b=TNS7YHpSXvGg6Pp+jgewKDXVYfTAKSJtOKg5ltORKbF74Q8JZaMBT8dnDTDB+JLC5K1P07 v7NVEkXSumCgw7NyEEHl29hFEWIucw8/CkT2DHGIzj5b2dZI62af7CrY3LdEgoBrI5Nrko H1+AMRqM8klssEj/cWpQSONaEKWQ+rdchLTXZxorf2vhj7GPPlVAkcRlMRLxS4nEFCdUYn ht6scOBeuT4GNuX6x+1u3HMu0bHysPdmr4SuLUEGq7rDyIJ1EQcu6hOH4JVzVS4gqrbAan WrU/GYKQg6QZBnAwWI7ot0Ocb0BhpuA/VJYdZ3WT6UU1OAFqmFCuXSCk8xV27w== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:22 +0300 Subject: [PATCH v4 13/19] iio: accel: bma220: use find_match_table fct Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-13-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1645; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=cyIwHzJpXiF0lnO56Fe7DP00gI3Dt9lMyBGQjSBtKf0=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnNxd1J6SldiYWJTNnkzdmkremVwY1VHCnVoRmhNM0VoQXJrY2gvTHUx dnB4bzRrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN0t BQW9KRUhRcko2ZGpPa2xqRkdvUUFKcWNzb2pDTjE0emV3UDRTa084bVNOR0RndFQxdm5XaGdvUg pCNWpPUjZIb3FmT2hOM1pVcHJvMFZpS2lnWERmUEhSTnRGajRXMWlhT0hLd0swVUJZVERZNHkxd lFzQjdCa3lMCk1HaHl2RnRKVk1wMk5rNkVqRFoyeXJ2VCtkclM3TUlpMkMxMHN0TjdSaUJ1OWtj WUUzcllLYm42bTlXWFNYd1YKOXJMdFN5UnZqTTdEYnZBbDNLV2tRQUN4ZjhxWUtxRnBYZXB6dG9 uekUrckFCNFhLeFhwb2RkajAyZWpyT2JaRgpNcGNzZEhTbDU0dkF2MEpHZWtHbHpPWVJmNk96N2 hncjRCNWpScHRBTTkwOEcrWTNQR1RlL081Q012ei9kNnJqCmRkbWtoOXBUZUs1M2diYVpMZEpLS 3FQcGxQYW56bXdabi9xWFB0OWgrNUtTQmtxVTVxRGtxbGtVVXE2ekdYT2IKUWZaS2I5MVo4NVNz SVp0N0ZLbWRxdFY1eXc5ZlhSVm54eDFIU1BvZVB2ZjBCZnVMSW5QVDlyaWN3dFd2aGhteQprQTV RSEhnRVFqRTZYWjE2TTJDNi9WL2VSOWorb3ZtbSt4MXVOSnhBMTJlWHh6R0ZLR3Jsd2RzL2tqND UwNUQwCklaTmNNRnhxS1ZtOFlvYUU3TnByUE5wZnVKRFdVYUl0ZlQrckdRWmovdjRza0pKNVBsa GpMNjU3ckkzSk9IcUMKYStqTmowMG5KdDY5ZjZsQTJqUjBnODdNUCtrMUtLVWx0R09kemd3ZUta bUFjY1VjNlBPY096NWVrWEJwZGkyZQpGRm1VM3BlQ3NVSVgxWDFuTXp4Y2gwcmRrazI3eXhwWFd 5V1VDZGlLUUdheTVOOTh5SWdzbmZoSEhUWVRRaXNnCnMyYnRTSVVJMFpNcEJRPT0KPXp6TysKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Clean up the code a bit by using a find_match_table function. Signed-off-by: Petre Rodan --- v2->v3 split out from bigger patch (Jonathan) v4 no change --- drivers/iio/accel/bma220_core.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index ec7409db83f81882043653cd70e3205500348994..42d5acce0a8387734d932c77fec= 9777a7a01f774 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -221,11 +221,23 @@ static int bma220_read_raw(struct iio_dev *indio_dev, return -EINVAL; } =20 +static int bma220_find_match_2dt(const int (*tbl)[2], const int n, + const int val, const int val2) +{ + int i; + + for (i =3D 0; i < n; i++) { + if (tbl[i][0] =3D=3D val && tbl[i][1] =3D=3D val2) + return i; + } + + return -EINVAL; +} + static int bma220_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { - int i; int ret; int index =3D -1; struct bma220_data *data =3D iio_priv(indio_dev); @@ -234,12 +246,9 @@ static int bma220_write_raw(struct iio_dev *indio_dev, =20 switch (mask) { case IIO_CHAN_INFO_SCALE: - for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) - if (val =3D=3D bma220_scale_table[i][0] && - val2 =3D=3D bma220_scale_table[i][1]) { - index =3D i; - break; - } + index =3D bma220_find_match_2dt(bma220_scale_table, + ARRAY_SIZE(bma220_scale_table), + val, val2); if (index < 0) return -EINVAL; =20 --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46A1F287510; Sun, 5 Oct 2025 13:13:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; cv=none; b=GnpZCixzBCjS2m6KQBupa9qW8AkNmlPVzS4ZvgheoKNpaaroR8C0uvARg/W2wi5PQWolpeRAjGW69EuPLBie9p0B2r3OUeZ0cwyK06a+RcVp+dUnIzgazJik8uaHqUOQYRdt30vEADPtVAYZqHN7ZTvQl2HJ6cDLNpO5b8nKs10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669993; c=relaxed/simple; bh=fyAWAVu6a0MWVYQ7REnDBgC+wstOmeT/eyll7jggynk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iUcgKFNSdmbdM3yfVnRX69qpD5HPQLoc7pkxajVeTsxmqkHUlrbbCf4Shu2gO4q0F5E85coWNswI/AWZOqXPMsqu6kFhSmT2HYcaMhvr8GD7ll6SJ1a7TdlURlozLGXfgM3MX5xiOdAd7TXbVA2x7QFjK23IGOyKR4E9zcSkXHA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=JViYTM8m; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="JViYTM8m" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 4B01F173BF6; Sun, 05 Oct 2025 16:13:05 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IO1S6QvsJTbfcwfXyZeDa2iI8KrYmWc+Tp8aFfdD3Es=; b=JViYTM8mULS+EObL7smmxNSNtPW2LthkzDV/i6BwtYW5FPHkBOrZ1yYiAYHjYsSDXR9W9p LuQX3bMmPqXbntwNMidQFtIyu4GfbLNGdp3o/8QT3YmV8dSccfkkqi5q7ZYMEJXTu9xVdS 9plXAMt2LoqywWA2Wu/ZwaPtXcuWAiGPhVO02AwBhY2gVtzQgNE6QIF8njnnNpEWfTaFIK RnrvgbU5y1IFSiSiiGa0hZ0HvE0Zh+/j8mIJH+WbardrWty6tAbJ9Qf0+SfSxNdx1EDeZQ vFlcQTsF2+EY29loS8g3XtPBcMsEWGon5nmjpCBu330tmwnzM+VuW9mD/HbBFw== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:23 +0300 Subject: [PATCH v4 14/19] iio: accel: bma220: add i2c module Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-14-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5774; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=fyAWAVu6a0MWVYQ7REnDBgC+wstOmeT/eyll7jggynk=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnM4OXpaTEdWaHZrNVZ5UURyUUFLQjcwCmQxWjhNRFR5eTVyZnhiZ2ov MUt0SDRrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1B BQW9KRUhRcko2ZGpPa2xqNklvUC8wSER6eGJQVG1XNjAxZkg4RFhtcmY5amVKQVJhaFRSRnA4Tw piemZDOWNnRnhPSzB2UlpBblh3OW4vaXpxS2FGMnRUK2kyZ24zU1g2NWxQRStmSWdoWHdxeDg1d UhWMjBmbmNyClh6L0FoY3dyd3QvMjR4aW01OHJRbjVRWUs5UE5aM0lWVEhrNUcvNGZjcmk2NWQx VTRzZVkwNWxPTjRIUjhkeGUKUmlYWFNJSXJWZmk3R0tLbkZYU1RSWU9qMEEyZ2RhaVZwbVNscjZ DZmFEdGRDb1dVNzRWUTFLTnI0bkdNTjFuawpnQUJSS0laRDFTK0ZhQzNVdWh4TTRVL3ZaQUdtej d4MytoQ00ySGd1UGZmaUhETzI2QWVCdENIL1pjRWE5MmdiCmpmQXlVZ3NqTzNwOVZwanVNVThoQ XluWmtsSlMzUVZNNndQOW9iT1p1QklxNXdDcnZ0bFNnNWc3M1pCbWZBeTIKQ1o4M0s3Y1VCZm00 K3FxVUlQTEcyNW9CRVRmN09oSU1Tc3ZMdGhZRjV1bFZ3dnJRU29GM0d5U0s0eUJhT2ZrcgpnOGU 5ZTdCZkVvV3IydXBiQ2hjYnBMQmV5UGxEblh1RndIeUtUbEFNTHg0NGQ2WERRK0FMUlNwVm9OQ3 BuRExzCnZFTUJEeHNWMVBkLzF2eVdCSmNIMjVIaUlUK0VKZE1FbFdrQS9yZmJvclptZTB0NFM0U U15YlRPdCtxNkdJY1cKcjliUld5V2lSU3VLdmhYTWZGNUE4UEhKZlVMQVJweS8xOUFIaXVVcU40 NFFDUWl5TVpWaFlRM3Vqb3JMWnZ6RQpyejJMakdjeWhNVWpmTGdKMHovLzJxdWxhdVAzUkttK3k 3UE4wdFFRT2ZkQjJEVk1ic0tZcFNaSHMvU2FZVVlqCmhiWmlNRFVWZkg4cTJ3PT0KPW1RZ2IKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add the bma220_i2c module. Note that this kernel module transparently shifts all register addresses 1 bit to the left, so all functions will operate based on the SPI memory map. Signed-off-by: Petre Rodan --- v1->v2 no change v2->v3 - depends I2C || SPI (David) - change extern const struct order (David) - remove unused includes (David) v4 no change --- drivers/iio/accel/Kconfig | 11 ++++++-- drivers/iio/accel/Makefile | 1 + drivers/iio/accel/bma220.h | 1 + drivers/iio/accel/bma220_core.c | 18 +++++++++++++ drivers/iio/accel/bma220_i2c.c | 58 +++++++++++++++++++++++++++++++++++++= ++++ 5 files changed, 87 insertions(+), 2 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 988fe4b1f9a52c2e671ea30d8590f25ee1685ac7..76911278fb217bd3e429c427b87= 3fb7eae26420e 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -218,10 +218,11 @@ config BMA180 =20 config BMA220 tristate "Bosch BMA220 3-Axis Accelerometer Driver" - depends on SPI + depends on I2C || SPI select REGMAP select IIO_BUFFER select IIO_TRIGGERED_BUFFER + select BMA220_I2C if I2C select BMA220_SPI if SPI help Say yes here to add support for the Bosch BMA220 triaxial @@ -229,7 +230,13 @@ config BMA220 =20 To compile this driver as a module, choose M here: the module will be called bma220_core and you will also get - bma220_spi if SPI is enabled. + bma220_i2c if I2C is enabled and bma220_spi if SPI is + enabled. + +config BMA220_I2C + tristate + select REGMAP_I2C + depends on BMA220 =20 config BMA220_SPI tristate diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile index 56a9f848f7f913633bc2a628c1ac5c9190774b9d..fa440a85928398fee927081f605= 595ba9fbc4ad9 100644 --- a/drivers/iio/accel/Makefile +++ b/drivers/iio/accel/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_ADXL380_I2C) +=3D adxl380_i2c.o obj-$(CONFIG_ADXL380_SPI) +=3D adxl380_spi.o obj-$(CONFIG_BMA180) +=3D bma180.o obj-$(CONFIG_BMA220) +=3D bma220_core.o +obj-$(CONFIG_BMA220_I2C) +=3D bma220_i2c.o obj-$(CONFIG_BMA220_SPI) +=3D bma220_spi.o obj-$(CONFIG_BMA400) +=3D bma400_core.o obj-$(CONFIG_BMA400_I2C) +=3D bma400_i2c.o diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h index 695f491bc5a03008f26fe8602ba633456159fb1d..e53ca63de54b4e81df0908b11d0= fb7f03a86dbdc 100644 --- a/drivers/iio/accel/bma220.h +++ b/drivers/iio/accel/bma220.h @@ -13,6 +13,7 @@ =20 struct device; =20 +extern const struct regmap_config bma220_i2c_regmap_config; extern const struct regmap_config bma220_spi_regmap_config; extern const struct dev_pm_ops bma220_pm_ops; =20 diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 42d5acce0a8387734d932c77fec9777a7a01f774..a3faf1f5ec6d79f2c6105697b40= 4d6eb1f4501db 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -172,6 +172,24 @@ const struct regmap_config bma220_spi_regmap_config = =3D { }; EXPORT_SYMBOL_NS_GPL(bma220_spi_regmap_config, "IIO_BOSCH_BMA220"); =20 +/* + * Based on the datasheet the memory map differs between the SPI and the I= 2C + * implementations. I2C register addresses are simply shifted to the left + * by 1 bit yet the register size remains unchanged. + * This driver employs the SPI memory map to correlate register names to + * addresses regardless of the bus type. + */ + +const struct regmap_config bma220_i2c_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .reg_shift =3D -1, + .max_register =3D BMA220_REG_SOFTRESET, + .cache_type =3D REGCACHE_NONE, + .writeable_reg =3D bma220_is_writable_reg, +}; +EXPORT_SYMBOL_NS_GPL(bma220_i2c_regmap_config, "IIO_BOSCH_BMA220"); + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; diff --git a/drivers/iio/accel/bma220_i2c.c b/drivers/iio/accel/bma220_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..5dc7c38f53b3173ff43ca29b631= 32ec44e672cde --- /dev/null +++ b/drivers/iio/accel/bma220_i2c.c @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Bosch triaxial acceleration sensor + * + * Copyright (c) 2025 Petre Rodan + * + * Datasheet: https://media.digikey.com/pdf/Data%20Sheets/Bosch/BMA220.pdf + * I2C address is either 0x0b or 0x0a depending on CSB (pin 10) + */ + +#include +#include +#include +#include +#include +#include + +#include "bma220.h" + +static int bma220_i2c_probe(struct i2c_client *client) +{ + struct regmap *regmap; + + regmap =3D devm_regmap_init_i2c(client, &bma220_i2c_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(&client->dev, PTR_ERR(regmap), + "failed to create regmap\n"); + + return bma220_common_probe(&client->dev, regmap, client->irq); +} + +static const struct of_device_id bma220_i2c_match[] =3D { + { .compatible =3D "bosch,bma220" }, + { } +}; +MODULE_DEVICE_TABLE(of, bma220_i2c_match); + +static const struct i2c_device_id bma220_i2c_id[] =3D { + { "bma220" }, + { } +}; +MODULE_DEVICE_TABLE(i2c, bma220_i2c_id); + +static struct i2c_driver bma220_i2c_driver =3D { + .driver =3D { + .name =3D "bma220_i2c", + .pm =3D pm_sleep_ptr(&bma220_pm_ops), + .of_match_table =3D bma220_i2c_match, + }, + .probe =3D bma220_i2c_probe, + .id_table =3D bma220_i2c_id, +}; +module_i2c_driver(bma220_i2c_driver); + +MODULE_AUTHOR("Petre Rodan "); +MODULE_DESCRIPTION("Bosch triaxial acceleration sensor i2c driver"); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("IIO_BOSCH_BMA220"); --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25AB128AAF9; Sun, 5 Oct 2025 13:13:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669997; cv=none; b=OFFZRuYPC2wAQOOAgz5emKGTfbvoz1iPo+8WrDBtFDhGDn1tehHhi65snmzG46Kv88PNpy8oeo16ULj+Xh6rHXvlFHevSXgiH21vynW7OenS1zgoiLtvXUHS1Jbbxvd6AHnP+90ZfNbTR8fq15KnRBunvoeuyIAxc6ZzRgC+D7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669997; c=relaxed/simple; bh=1PNswrNq1+RwvS/M7dRpzM5A+EzBOkH3teLiLfbT8C8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SoZ92lmmokIEvrKBqAL3dB+MHvB8Fth4MyRUq3SjDWr+ITB3mY2VXayANBCl+xP7NON9y80ewtGtDkS2WpzjXszWJsbzrOQSriE5NWDJvPPaNf0W7yIno8eGjNKxzgvtqL+4j3y7EkDInv7KGnxghqktizpKHc1q081A8Brdp8A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=LVI2kd9w; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="LVI2kd9w" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id C0121173BF7; Sun, 05 Oct 2025 16:13:05 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DDEOtfTru/Ogw9pyS3SwcWFlvIzmPM6wcAxTmLyFrWM=; b=LVI2kd9wWQOq5UwQsQ27LdUd59lBSQr6ph1dZVYwfzRTQSyO0ADfWetQCJJxowG1J53Cj8 PpKJU4qHBMTTtJUF3xgiumJH772hXQy7wHaSdWrLX49Xi24+opxTWIEFNevGlQcrl8ftSA Tvxbw2e1N4j9aGBgfilIZKfaQGeAzgBHykd96DHEc1m4LkVtba/0pSg2+tVT5/tUhVIMOm a1v8H0VAgRBf9nK+bMpo+cHeSJETDZ2QA4tHKkHdjp6mH/klM4OppmT9n8lHbUrYOKEYoS 4U1bShK5zx0wrS4AJicmwWO0/FC6ZIh/O3mrDZ9C0QetvYDExRIkmvoiYyHpRQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:24 +0300 Subject: [PATCH v4 15/19] iio: accel: bma220: add i2c watchdog feature Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-15-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1800; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=1PNswrNq1+RwvS/M7dRpzM5A+EzBOkH3teLiLfbT8C8=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnRLODF5dkQ1L1NBSGdna3lRd240SGNJCk9jUUNVdDE1Q1RzdWNQQkUr OWZPS1lrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1N BQW9KRUhRcko2ZGpPa2xqVCtnUC8xV1NwTlpkbTdxVExMTDgzMS9HL1VZSlhpZThqL3ZGVDV0Zg pJNERsOE04cFFmSXpRWjlWc0ZGcmh5dU9LaTRvMktvb0tJQlZiYi9tZGhBd2piUkpKdkhEWkprc XdmaTFmSGZRClRESWZmdGRLWm1lZi95Z1R2NzFiRjZSaHVWeHlaUFdnazBJZmozZG1UUHNhMndH Z0tLcHNjY0FHRkJWM212WlYKRDRIajE2SldWZDQwL0EvbDQ4MmRrY1ZLcjJJdEtta0hsNFNzN0x tQm5CSlB2WFNzUVBER3dUZ2FJOHlxemtONgpWckhPbkZJRVBuNFNROXd2NWZNWXZJRityVjVLK1 RzWWZmWDNOSFJlVnM2Z0E5YXBFbkhQYTVKUEdKNUw2RUNqClZoQWN4Wk1JQ2p1Q0hzRWZMeHJYM nZpTzF5U3FMTGI1UjJqeGFkZGJScGMzOHhjYnpXcFEwZ3hpdk8za3h0ZmMKQitmSDNrN0gxY1FD QWtxUXc5N1A5Vy9GNFprVkpRTzk1UjNkV3hRR2dOSDRqVW1oL2xJVHVMMU1sbC9BOTJkVgpmWWU xMEI2eTlxSTRMajBraVBOZmVSRCtIN3VjcVVuRERxaDd6anVCMnFPRkhiTmpqcXJ5N3VRSG1BUl JoUEhmCjI2NGlYcWV6bGNXaE0xTzlEVzNnWGpRRkpWZ3c4U05iY25hTnZrWUF4UElCS3hPT0VoQ XZjUE5DbERGcU5Hc2IKUG5ka0s3d0RmZ091dmRTMGhrRnRDdmNodEJja2JFSy8rSEtWQUFPTWNm UGEvVDdUR1k3MmtRUTFjb0l2Qm95bQpPWVE1UUw2SHArOVl5bWlWMWdBRjZYMDNLZUQySCtPcEV YcTdET1JDQ2o1RVBRbzR5aFRXWWVJY3pBU1NOWnpKCjVZY2N1aVFVY3VFZlFRPT0KPTdvS1UKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Sometimes the sensor gets stuck and enters a condition in which it pulls SDA low, thus making the entire i2c bus unusable. This problem is mitigated by activating a 1ms watchdog implemented in the sensor. Signed-off-by: Petre Rodan --- v1->v2 - hardcode 1ms timer watchdog to any i2c-based sensor instead of configuring a dt-based property - rename bma220_wdt() to bma220_set_wdt() v2->v4 no change --- drivers/iio/accel/bma220_core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index a3faf1f5ec6d79f2c6105697b404d6eb1f4501db..a957751be40c63c25963283be81= 3db97f73bf004 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -355,6 +356,12 @@ static int bma220_power(struct bma220_data *data, bool= up) return -EBUSY; } =20 +static int bma220_set_wdt(struct bma220_data *data, const u8 val) +{ + return regmap_update_bits(data->regmap, BMA220_REG_WDT, BMA220_WDT_MASK, + FIELD_PREP(BMA220_WDT_MASK, val)); +} + static int bma220_init(struct device *dev, struct bma220_data *data) { int ret; @@ -383,6 +390,13 @@ static int bma220_init(struct device *dev, struct bma2= 20_data *data) if (ret) return dev_err_probe(dev, ret, "Failed to soft reset chip\n"); =20 + if (i2c_verify_client(dev)) { + ret =3D bma220_set_wdt(data, BMA220_WDT_1MS); + if (ret) + return dev_err_probe(dev, ret, + "Failed to set i2c watchdog\n"); + } + return 0; } =20 --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25B8E28AB0B; Sun, 5 Oct 2025 13:13:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669997; cv=none; b=kKE2RDULLWs85yx4OSl8JQ1/Bhuokd6asE3kvqTaJ6IU+Qe9NoOXR1W0CufgcplG7PWbTT5pNeNpCl2kQWvCWUX6/eZYfKVCWk4YnSK4dNDai1cFYEVUd2fyek3I2Ts4X91nP+sasx+GVlaGdWfYzz8g+dQiqyuVkvgLF2tp07I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669997; c=relaxed/simple; bh=Hji0AFsKY2VMUvZORR8uShWfZuQyHGjgdcQlOTjd/X0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EX34Syf6m3ocV/dDCurNkebsy7RL07PXE9g1yEAjRCDo9zLw2TRo1aaKNFnO1XyjBHZKOASt0+XY9CscX5v4N3z+tuSvy5lp4QY8RkcGGzbE3t5gr5eAKUwhvwXmD9FCQdoqB3tPY6v28p/GAK1/STn9LE4+AG4kAHJBMv2N38c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Dw8Naqmq; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Dw8Naqmq" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 268DC173BF8; Sun, 05 Oct 2025 16:13:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RZCd1LuoKLbW/Yf0spyzgrKJD68T+psOsCJqcg637YA=; b=Dw8NaqmqYjpvbQqFesznwq1jEcTiGtFEYM1AWwmuJ37SC7eA9ryvwIGKkrmB/i28O5cAn7 xEOrGLgGYobKaVlBCbXPuFxqKjwoQSMHACjjChGA9cSyaeUXzHdNlxmlOuEORcpBojcLTx wkL+BL0+6l/tDhAbdWuDj+9I6iFqyVamBUeQWxAEncQzMtDw5PS7vP7C5P3cdmlfPIBLKA KmCTU4pQgxvTmXFgN2V8tDvQqDpXmrYOD3uewdrEivvaDJGZaUvP4+rO9nSXuJTJ+WJtbu n4bB/KwG5iKfULIBFG5sVutwSq+W/jWzbuVwuPAbeNHSt89RNDuGZx1C2VvVyQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:25 +0300 Subject: [PATCH v4 16/19] iio: accel: bma220: add interrupt trigger Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-16-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3564; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=Hji0AFsKY2VMUvZORR8uShWfZuQyHGjgdcQlOTjd/X0=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnRXMUNKTURKSmQzejMvVG9QcXJ6RW1vCmhlSFI0WGdTOE14THVaalQy azMzRklrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1Z BQW9KRUhRcko2ZGpPa2xqU2lvUC8xVVoxYyttUUREM3prMENnODlkdi9kTEtDQmFBYWdCZm9QMQ pQd1NUeHk5akJXVUllVURlaVd6Y2RqNHpTSGtKL2dFa2dBMTF0MDh1M0RrYjlUaTlLUkhCVGF4S nlidkdQUWYzCkpocEJnYTlQM2JGbFM3d2U3ZDBVRFhYajREY2dGSldoZk95UkxXWE5iN2VQcmVY ek9lR0FaVklMU1BqRXc2MGEKZVI4OERsbkVDcmpTL2h4bGhsUkRYck5RdE1jclRFYWNkeWMrcHB iSzVrbHFaQVduYlpnVUFyaTBuc1ozRHIycgpNdGx0ODhBa3lVMmJtTSt4VDc5ckE1bkJ6M3ZHWT JiRTB4aEtybk9WSmVYVWp5Vkx4WVZwTmJsRStlcVZ1OThiCkVhM1RsS1ZaWTQvMmdnVTNvNzE5c ExURGx2NHMzRDUwRk45dTJWRVUwM1hFR2x6K0pobGd3VUhLR2J2N2dmcUkKblR5V0NNV3VpR2cx NU95YU8yWmpzakQ3V2Y2bHhWVFQrNGhPUytpUkJJZGx0aFQ4Nno2aHlYNVhuQXFsKzFYUgpOMDg vN1dsMjlhS3RmMXFYSzdRVEppM09qN0lSZHBSY1lVNGt4MzdLdjlmOTJmcEZqd3B3ZVg2RUZMMX BVUDJuCjdObXREMjBHcXFmU2xheXVrejladUtHQ2p5Mzl6cnpnZ0VGMXZWeHBwcndiNk9DNWNXS VBDemJuZFlKQkhzMnkKYnJnS1JlY0tSWjBvZTJvcWxQZG9YMUd1NUt3UW1pRUdwSXRWZ1Z1WVFn WVRGck9lcjVxL05BcElBSWVjalBFaApacnAxN3VtSDBpaVk1MUVMY1ZjbWxkMmVxQkFNb2cxOTR lSXFseFAydDFPVDRSRllSaFBFTTdEaUVvRjBsOWg0CmIxT09rbVQ5WUhRbkRBPT0KPVh5S3EKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add interrupt trigger. Signed-off-by: Petre Rodan --- v1->v2 no change, just patch split v2->v3 replace regmap_bulk_read with regmap_read (Jonathan) (I just realized BMA220_REG_IF0 is never used, even by future event patches) v4 fix compilation err --- drivers/iio/accel/bma220_core.c | 58 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 58 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index a957751be40c63c25963283be813db97f73bf004..8f0cbd0aacb92a21afc57aaa350= 547d0c767d4b6 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include =20 @@ -123,6 +124,7 @@ struct bma220_data { struct regmap *regmap; struct mutex lock; u8 range_idx; + struct iio_trigger *trig; struct { s8 chans[3]; /* Ensure timestamp is naturally aligned. */ @@ -191,6 +193,22 @@ const struct regmap_config bma220_i2c_regmap_config = =3D { }; EXPORT_SYMBOL_NS_GPL(bma220_i2c_regmap_config, "IIO_BOSCH_BMA220"); =20 +static int bma220_data_rdy_trigger_set_state(struct iio_trigger *trig, + bool state) +{ + struct iio_dev *indio_dev =3D iio_trigger_get_drvdata(trig); + struct bma220_data *data =3D iio_priv(indio_dev); + + return regmap_update_bits(data->regmap, BMA220_REG_IE0, + BMA220_INT_EN_DRDY_MSK, + FIELD_PREP(BMA220_INT_EN_DRDY_MSK, state)); +} + +static const struct iio_trigger_ops bma220_trigger_ops =3D { + .set_trigger_state =3D &bma220_data_rdy_trigger_set_state, + .validate_device =3D &iio_trigger_validate_own_device, +}; + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; @@ -413,6 +431,23 @@ static void bma220_deinit(void *data_ptr) ERR_PTR(ret)); } =20 +static irqreturn_t bma220_irq_handler(int irq, void *private) +{ + struct iio_dev *indio_dev =3D private; + struct bma220_data *data =3D iio_priv(indio_dev); + int ret; + unsigned int bma220_reg_if1; + + ret =3D regmap_read(data->regmap, BMA220_REG_IF1, &bma220_reg_if1); + if (ret) + return IRQ_NONE; + + if (FIELD_GET(BMA220_IF_DRDY, bma220_reg_if1)) + iio_trigger_poll_nested(data->trig); + + return IRQ_HANDLED; +} + int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq) { int ret; @@ -441,6 +476,29 @@ int bma220_common_probe(struct device *dev, struct reg= map *regmap, int irq) indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); indio_dev->available_scan_masks =3D bma220_accel_scan_masks; =20 + if (irq > 0) { + data->trig =3D devm_iio_trigger_alloc(dev, "%s-dev%d", + indio_dev->name, + iio_device_id(indio_dev)); + if (!data->trig) + return -ENOMEM; + + data->trig->ops =3D &bma220_trigger_ops; + iio_trigger_set_drvdata(data->trig, indio_dev); + + ret =3D devm_iio_trigger_register(dev, data->trig); + if (ret) + return dev_err_probe(dev, ret, + "iio trigger register fail\n"); + indio_dev->trig =3D iio_trigger_get(data->trig); + ret =3D devm_request_threaded_irq(dev, irq, NULL, + &bma220_irq_handler, IRQF_ONESHOT, + indio_dev->name, indio_dev); + if (ret) + return dev_err_probe(dev, ret, + "request irq %d failed\n", irq); + } + ret =3D devm_add_action_or_reset(dev, bma220_deinit, data); if (ret) return ret; --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 259D52882CC; Sun, 5 Oct 2025 13:13:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; cv=none; b=GyPg5KXodtQcV4CJ8GSK1gpGQjDy6AHJEpBQtzI/3mjruT7y4tS+roBRXEhYyL/FnsXdrqbjTdQQCwhk3S/t4A0rZrzQEe9djALDnnkV8f0Pwv+zCB9JoMxKhK/QPVB8/PR+oeTZaBX/SEOJbXBuJAhAiJvAH//XtqXP6OKPxKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; c=relaxed/simple; bh=Cr5yCqlqwxcx8TbSWAbTEX7W4rNpVRq41ROaWboQjtM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HyOIy9YXPwd9PKcqyB1Opo7+ntZAdNyNXH/4CMSx3shGtFUNTfMROGVbt95utP1jHwUhfbyfz/tVdI/RqnSGV4+wk/hcumCxapnQIAO4c6u9YAKeYnZv/YvPblarnMuTQN3czUu991OXao7CJC51YVht4upTwXCZvB2xDzFAo9s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=JMeH+6Cd; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="JMeH+6Cd" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 7E576173BF9; Sun, 05 Oct 2025 16:13:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y29vDzVout/ALq4vqu39VhS/cwV3LKAo3f/aaUbkGGc=; b=JMeH+6CdvHcg2O5LuLb8gXdp6L/Plj3syLkL6GmEtLuiAMNRAxO9uSperDED44JTp8nP51 SpILXfquIt/Nn4ZPKFqqKBiFng4nBpRyMYtoYaLI9Qez48oufp7gC5pvzTPsC+Ygo6pKmA s84WxvI57bQahk0FZx9cxE6fplYpx7qY0JuBVYkbrsIshaFtq7OU6pvf7hhx9o+MWV37fR t1BNllHlT8PXocnaz+DCdF/MRnVBMezuN2Qj/2Euo38fiDElh4gZGXGUvUYbrzv7t1LzVx 8Ceo4MHmYqBrJ5MlJcw/d+Ixw24Qr3nRJ6Nogr37w3bMwNIwnjy7QTqkFA2k7Q== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:26 +0300 Subject: [PATCH v4 17/19] iio: accel: bma220: add LPF cut-off frequency mapping Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-17-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4224; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=Cr5yCqlqwxcx8TbSWAbTEX7W4rNpVRq41ROaWboQjtM=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnRiVFpFWUdibEZuT0pHWGExa09LVDY0ClZiZ2hCTWY0QWFZQWR5VkNv QVlWNm9rQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1d BQW9KRUhRcko2ZGpPa2xqcU5FUUFKMzNOMkxNbUljUmJwRzFoeVhzQ2R4Wms1Rm85RkZUeGtRRQ plTWZlQzJQKzdXdDFJdS9lUTc5YUJ5K3FlQ0Z4aXVUK0h3MEZ2eUphaSs5SFZDVlc0RzkxK3VCM 08rUlVXbWJaClhJZGQ4UGluc05CVVNDODBtSERraXJ4QUp0R2FHK2JRakNuNUR2NnNZazIwcmJl OXVmYmZjNWpIOE8yZ0dHaWkKazd2eGVVTlpQK2ZNUHVsWTFhYU91cnlDNURxb3N2Z2M1WU1HU2E 1SzRabkFneG1KRXU0bXU4cWkxcjJzVmVWUApRRFErWkNobUhtUjAvdEg5aXdjb1gwbVJneTNZaU hUNC91allMQ0xGMVRmeVFmcHlVSUozZFdYdHdVeVVqb1d6ClNTS3BOOTJQb2l5dHZtQndxRnd3d jRzRDR4TFU5SDlORnNrZmRLVkNyNDI3TDlEOVZDSDg3Zk0vS1doa1RsNFIKbnFGa1k2MWxRNnF5 b2lVWmlaemF2Y3h1dUNyaFd2dXViUFpnZ3FMVzVOSk1OdmNQREpBSzQ1SzNwMVdmaTNMZAoxZG1 ENks3cHM4S3J3d3pEUWlMeUxkU3FaaTdrWWljNldsY2l4YkJoOGs3VmxESGg4clZVbk0wbno5Yy s4dXlkCnJLWkZVNTFnVituQkU5QlRNNnM3MnIyS0x5djlGNExVVmZjc1BySGtqNlNkOTFoOFBIT FBsUk8xYlJ6QWZXdzQKZTRLangrSnB5d005bFU3Nlo3OWRwUE4wZmpQZzEyVHdncDF1OXVRQm0x SmhkT1p5L0taVzY3Y291VGlWTmVoRwpGZVYycWE0OEZ6RDVSNThrNU16MGY1dEpkcXdCcmcwbTN kT2x4TzJjVUxpUUZ1Q2VmUGg3b2VEVDBFZjEzOGVNClJTNzZVcjN4eFhzNEVBPT0KPThMSWMKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add mapping for the low pass filter cut-off frequency. Make valid values visible for both the cut-off frequency and the scale. Signed-off-by: Petre Rodan --- v1->v2 rename variables to include unit capitalization (dB, Hz) v2->v3 make comment one-liner (Jonathan) v4 no change --- drivers/iio/accel/bma220_core.c | 59 +++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 8f0cbd0aacb92a21afc57aaa350547d0c767d4b6..7109759e28397d2660f17707124= a8803a254cb14 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -93,13 +93,23 @@ =20 #define BMA220_DEVICE_NAME "bma220" =20 +#define BMA220_COF_1000Hz 0x0 +#define BMA220_COF_500Hz 0x1 +#define BMA220_COF_250Hz 0x2 +#define BMA220_COF_125Hz 0x3 +#define BMA220_COF_64Hz 0x4 +#define BMA220_COF_32Hz 0x5 + #define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ .type =3D IIO_ACCEL, \ .address =3D reg, \ .modified =3D 1, \ .channel2 =3D IIO_MOD_##axis, \ .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY), \ + .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE) |\ + BIT(IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY), \ .scan_index =3D index, \ .scan_type =3D { \ .sign =3D 's', \ @@ -123,6 +133,7 @@ static const int bma220_scale_table[][2] =3D { struct bma220_data { struct regmap *regmap; struct mutex lock; + u8 lpf_3dB_freq_idx; u8 range_idx; struct iio_trigger *trig; struct { @@ -139,6 +150,16 @@ static const struct iio_chan_spec bma220_channels[] = =3D { IIO_CHAN_SOFT_TIMESTAMP(3), }; =20 +/* Available cut-off frequencies of the low pass filter in Hz. */ +static const int bma220_lpf_3dB_freq_Hz_table[] =3D { + [BMA220_COF_1000Hz] =3D 1000, + [BMA220_COF_500Hz] =3D 500, + [BMA220_COF_250Hz] =3D 250, + [BMA220_COF_125Hz] =3D 125, + [BMA220_COF_64Hz] =3D 64, + [BMA220_COF_32Hz] =3D 32, +}; + static const unsigned long bma220_accel_scan_masks[] =3D { BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), 0 @@ -253,6 +274,10 @@ static int bma220_read_raw(struct iio_dev *indio_dev, *val =3D bma220_scale_table[index][0]; *val2 =3D bma220_scale_table[index][1]; return IIO_VAL_INT_PLUS_MICRO; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + index =3D data->lpf_3dB_freq_idx; + *val =3D bma220_lpf_3dB_freq_Hz_table[index]; + return IIO_VAL_INT; } =20 return -EINVAL; @@ -271,6 +296,18 @@ static int bma220_find_match_2dt(const int (*tbl)[2], = const int n, return -EINVAL; } =20 +static int bma220_find_match(const int *arr, const int n, const int val) +{ + int i; + + for (i =3D 0; i < n; i++) { + if (arr[i] =3D=3D val) + return i; + } + + return -EINVAL; +} + static int bma220_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) @@ -296,6 +333,21 @@ static int bma220_write_raw(struct iio_dev *indio_dev, return ret; data->range_idx =3D index; =20 + return 0; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + index =3D bma220_find_match(bma220_lpf_3dB_freq_Hz_table, + ARRAY_SIZE(bma220_lpf_3dB_freq_Hz_table), + val); + if (index < 0) + return -EINVAL; + + ret =3D regmap_update_bits(data->regmap, BMA220_REG_FILTER, + BMA220_FILTER_MASK, + FIELD_PREP(BMA220_FILTER_MASK, index)); + if (ret < 0) + return ret; + data->lpf_3dB_freq_idx =3D index; + return 0; } =20 @@ -313,6 +365,11 @@ static int bma220_read_avail(struct iio_dev *indio_dev, *type =3D IIO_VAL_INT_PLUS_MICRO; *length =3D ARRAY_SIZE(bma220_scale_table) * 2; return IIO_AVAIL_LIST; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + *vals =3D (const int *)bma220_lpf_3dB_freq_Hz_table; + *type =3D IIO_VAL_INT; + *length =3D ARRAY_SIZE(bma220_lpf_3dB_freq_Hz_table); + return IIO_AVAIL_LIST; default: return -EINVAL; } --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25CBE28AB16; Sun, 5 Oct 2025 13:13:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; cv=none; b=bLMiKgR0EEjH7FVvoPXBI/B1hDdvbZW5t50vKyy2MZ9Bjh7GRh8lezbzQOCBn/XwCKk+nc/BYMzrgMP4joAK5fhinuPKJVQ0Sh60UYrv+UV9sH1f5+tidp/PPO8wJt4Z0d9PgS73mbV5Zb09TW9YPluuzYqVOj6/fRuYXpX9Zhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; c=relaxed/simple; bh=d1J2MNB/TSp8FJmqC3xqo6geozDAbsIUbv2aGaGqnDE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nRvx0OiouEP07gq3pzQVJsC9dFEL9K+wCErN84is/dsokVtqFRcR66wTiC/acbxhcqpQtXSi40lthbF8RxhQ3amT9PWcFYPoBkFp+ixbMDxSH5QmWufR4dR6PinTxIRj2ktXZ5VqKNV/o3EKSYZnHVJRmj+IUtGzCtkNukWt9ZI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Kk0cSCzu; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Kk0cSCzu" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id DB0AF173BFA; Sun, 05 Oct 2025 16:13:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669987; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vfj7hLAQv6FGVYQz9sUHDZRVmbR0mVyLAK+ZlMSvlxA=; b=Kk0cSCzumsjr94CMFaWFIRjOQK0W+xLsew6U3d76apbLEDJjGdcSLUHJWdID28n+/QT33M DW+ess2uAYVdOs3MpmuDMWST6q/wlxdgC6IgDZMkGz5qBLwhkijXTIc5dxkHfapDGLSX1Y CwBnoOK9CUcbJ4Hhi+WFYxZLCr1dUHh4GrQIQhyM7BQeeHp2W1QmQaqPBZEGBO76twwbVi 1FbVrUe9/iiSRub76sV6tjrICWdz+7oJylJPhuxuBl4UHTwsdDKqFF3sN1cpHMmchRFI9O P06bXVJVfLYHtt3juyxFCAwr9T0Lkcz5GI/AEfc+HcruL1BakbJalMJ5a7OqzQ== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:27 +0300 Subject: [PATCH v4 18/19] iio: accel: bma220: add debugfs reg access Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-18-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1189; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=d1J2MNB/TSp8FJmqC3xqo6geozDAbsIUbv2aGaGqnDE=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnRldVdVRUdOK3l4RnByWXFiUzVPMmVXCis0MWJzZ0FqT2FMM01MeXZN SmdvTElrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1h BQW9KRUhRcko2ZGpPa2xqRUg4UUFLSW1OeXN1bGxNamt4eFZ2Nm9VcWNOelAwb2JnWjZkN2E3Vw ovRmhFdnRBQk4zNXdWZm5welFIVEJwWjQ1NXozNzBiOE1McDBHRlovZDAxZTRVRUpLb1dXcEkyQ nBTeHIyTDJECldaRDNqTElaWHNDQTVBN1hBSjhCeVVjamgxTnVFRUlnQVdNbGF1QklnMndBV01j V3I0VTBxbVRKSXF3YTduTlYKSGNkZWphbWtheE41NVUzNUU2QVdhZUhrOHZnK0hCUFlTWWxLYjV GMmZJNTQ4Y2RhcUZ5UlJ6RXBJQmFnYTQ2awpTRU93NTNYV215cjBqL1E5L0NrQnN5WHhYTm9GRz ZGaGJZaDI1TXlSZ0piTzJqT0dhekVScHh1RzJnL1RHakllCk5qYkpZcEJnQnM1azl4T1BVbjNBS mNWbGRTSlVQRkdudk1WVFhDZGVBRFlWL0lvVUQ5ckhwdjRrZU9kTEtULysKS2FJTEVjc3hvQ2Vr MjhXQTBLZkFGeHFSMzIvdFlvWEYzQWxkU081Uk5JMWY3RHZ3eVErZ1NFT2gydHd2SlNPVApkYnh KYVY0bVJIR2FaQmNQbXFza1NwYWl0WkpuaFRPRUdqUGdhTy9iRzR6NnlFL052dWVaK3MwaTQ3NW xJdTJUCkQ1RFloK3VEcDdEOW9RaGEyZTRhK3ZEeFFIak0zcDhtVlErc1FWM2RsNElNMDlQeGRwT GhTNUVLRVNUWGdOZU8KUEtoZWtyakhOYVg3NTNiVnFEdS9HQUhCOTlQMXprNC9aUjZhbUdpdjFh Z2dmejNUeFYwYjZmUENwRFNFSWladAo4akpFcDF1R2N2aHc3dTBWeTFXVGJGQ2VUc0UzWnB5d25 IVVRTem9BTzRHOXJ5NHhOTkRRN002UHArT0pMa05sCk9jZUQ2emhicXNzaGNBPT0KPXdxRlMKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Allow read/write access to sensor registers for use in unit-tests. Signed-off-by: Petre Rodan --- v1->v4 no change --- drivers/iio/accel/bma220_core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 7109759e28397d2660f17707124a8803a254cb14..0d6c301b1c47a04cfca5bae157f= 8ce6144f0b854 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -375,10 +375,21 @@ static int bma220_read_avail(struct iio_dev *indio_de= v, } } =20 +static int bma220_reg_access(struct iio_dev *indio_dev, unsigned int reg, + unsigned int writeval, unsigned int *readval) +{ + struct bma220_data *data =3D iio_priv(indio_dev); + + if (readval) + return regmap_read(data->regmap, reg, readval); + return regmap_write(data->regmap, reg, writeval); +} + static const struct iio_info bma220_info =3D { .read_raw =3D bma220_read_raw, .write_raw =3D bma220_write_raw, .read_avail =3D bma220_read_avail, + .debugfs_reg_access =3D &bma220_reg_access, }; =20 static int bma220_reset(struct bma220_data *data, bool up) --=20 2.49.1 From nobody Tue Dec 16 21:34:05 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FAEB28B7DB; Sun, 5 Oct 2025 13:13:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; cv=none; b=M8VWzvQti/pYkgEtDLUZJtE97HXjwfnAuOGkg93IcZaOBbgNxmsa4EBoKmsyLhu92It2QVfQ5BwvpWcl7FelgIcrFwp8qInDxkTP+dOYPiXUAg9va2BnmieubMpp2il6lCafUzhtpSQgkLwgbkBGpypD/tmDL9blDkr+xjp7jPI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759669996; c=relaxed/simple; bh=xT46Cce4/dW01Wkd6hR7JdNM2ioVp7UZkscnuhppnKs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hfw24jWZTv/RnIRBVeu/zO82ddfappC8Wz5tMUEUq/21/rTYNZFAMGWeFOyW2S4hBJC0+HNEX/kr/aM/+rYJ+iQ14HXiVKXpSX68FgrEFIC+2xyllQQuH+gX9oc9w/B1tuUsGs+TgnJfmSJrA9LZLMxHcuLETlmgQGoew6VCPWQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=4qluBTJP; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="4qluBTJP" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 3C94C173BFB; Sun, 05 Oct 2025 16:13:07 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1759669987; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qfU83ZAAwmHQCQ6ye4cqw1fNFt2YVAaZF6JclQgw5IE=; b=4qluBTJPb5KKneOnDG8SzbGXn9ihMRLTzUNwwc+4D9TM582OesJuHf9OqE1Pp9Q03TwfOy U3Pnrs/4hJk70/KweAYhfP6RpSCMGab4DBEoRg072iTXqczZHdJzquu7TSSZkyekeOUQB/ J6FmSe+XDK42YbCzugy1hnNERHqpgw7DXZPJ68o5uxP5dJEFO+vmBiQ+dPqcFC1deyGdFa hDDGkShhkVjRsUNW6givlt/QF5ngcw+TyB4iVLbaBa1QNISFxdJl1UZ49/xOqMg6uJRfPj Hy3+AIk17VEhh0O8u6hyxAk9GZ3MTrt3evOWWBARJK3s/q75PCJ2tx6KMcxjcA== From: Petre Rodan Date: Sun, 05 Oct 2025 16:12:28 +0300 Subject: [PATCH v4 19/19] iio: accel: bma220: add maintainer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251005-b4-bma220_improvements-v4-19-0f449ba31585@subdimension.ro> References: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> In-Reply-To: <20251005-b4-bma220_improvements-v4-0-0f449ba31585@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=875; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=xT46Cce4/dW01Wkd6hR7JdNM2ioVp7UZkscnuhppnKs=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFwTDlrQTBEQUFvQmRDc25wM k02U1dNQnl5WmlBR2ppYnRtQ3hKam81ZUpwV2lvTldOdFJRUHNvClg5Q05BNVpkSk44NUhpZi9j dk8wZ0lrQ013UUFBUW9BSFJZaEJCb2ltQncrRGJ4UXBFNmlkM1FySjZkak9rbGoKQlFKbzRtN1p BQW9KRUhRcko2ZGpPa2xqTWxRUUFLU2lkUHVwUVM4RHdMbmhDRW9iMW53K0lSMWtwcVVsVm9Cdw piOUg5emhnazIrMEdEZkN3RmMySnd6WkU2QlNuSGRTcm9LRjZjTTg3Qlh1WGJGSlB0cTMyMUVGW UM5NU9lSmZVCmJHOEliMDkycFJxY01QOVpWdnFmRG1BSGo1NHgyNTg3djQ5TEdGaTI3bnB4aTRM d1Mvdk1pektBQUpzV3NhSFoKUE0xb2xNVHkxV1h6VitMakhZM3dDVTIwbTFabVpTc3IyeFN2c3d Ram45MU9Ra2cxRXM2S2JGWG50L2pYVW5xUgo0dDdhcXhWVHpvckVVUUlyYVVVeStxeFA3V1Mwc1 cyV0NIZkZxWkprWEVCWDJPZFhvYllLTkNiRVYxY1hzb0dTCi9SZVJsZ2RKcHhtNTFXRldQV3lTb mFBTXNSNmRSWG1sSmsrNHVIdDFsODhXclU4bUxGbG9TT2s2aVYxT1dUa2cKRFAzU2JjQnpPK2pr TWNhT1FEUjNoUmZIM3U3WjlXaFFIQjFTUVhnU0NWeFJIUXpIeG53R1V1cmJTWmwvbXNKYgpxMU9 Ra283Z2V1V1F0VTV4NEI5Vk9nMGF5ZFpEZitaM1gxa3N4UjFnZlVjdEl2TVk4QTFrZkdpZTJMZ0 MyR0NBCmJiNWZVNzdSeUIrS0s3S0VEU2R3K08vMnhHeHJNcDdnNEpOMERrMENyRTRraDlmOUcwT UdJTnJ0RjcyR2JRdTUKcDlFbjkzbEtYZ0pFSDZSTWFMbnpiMGd2TWs3cHRGeFNBcXMvalhLOXh0 LytNNDhzdjErMXorYXJPTGV2SFFWcgo4YjI5MWFYTTBqaTR0czFNNkdoNG9tbjZCUStxbkNzWEZ 5ckM3RDZ1Z0UzTDJNZm5meHBMYWJ1Z1ZJUTQ2dVI0CjlUT1lkTUtCOGR3aGNRPT0KPStkWFIKLS 0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo= X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add maintainer for this driver. Signed-off-by: Petre Rodan --- v1->v4 no change --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index f090c2f6e63a0d255a025885cc4573f5802ef159..aaeb4ae6fd2282264da7e61b6fc= 32c00fc90a5ae 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4402,6 +4402,13 @@ F: include/net/bond* F: include/uapi/linux/if_bonding.h F: tools/testing/selftests/drivers/net/bonding/ =20 +BOSCH SENSORTEC BMA220 ACCELEROMETER IIO DRIVER +M: Petre Rodan +L: linux-iio@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml +F: drivers/iio/accel/bma220* + BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER M: Dan Robertson L: linux-iio@vger.kernel.org --=20 2.49.1