From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Vitor Soares <Vitor.Soares@synopsys.com>
Cc: Joao.Pinto@synopsys.com, rafael@kernel.org,
linux-iio@vger.kernel.org, gregkh@linuxfoundation.org,
bbrezillon@kernel.org, linux-kernel@vger.kernel.org,
broonie@kernel.org, linux-i2c@vger.kernel.org,
lorenzo.bianconi83@gmail.com, linux-i3c@lists.infradead.org
Subject: Re: [PATCH v2 3/3] iio: imu: st_lsm6dsx: add i3c basic support for LSM6DSO and LSM6DSR
Date: Thu, 6 Jun 2019 18:58:43 +0200 [thread overview]
Message-ID: <20190606165841.GA10356@localhost.localdomain> (raw)
In-Reply-To: <6195f3cd21636a5f85c0107b5c3b217be868a4b9.1559831663.git.vitor.soares@synopsys.com>
[-- Attachment #1.1: Type: text/plain, Size: 3890 bytes --]
> For today the st_lsm6dsx driver support LSM6DSO and LSM6DSR sensor only in
> spi and i2c mode.
>
> The LSM6DSO and LSM6DSR are also i3c capable so lets give i3c support to
> them.
>
> Signed-off-by: Vitor Soares <vitor.soares@synopsys.com>
> ---
Hi Vitor,
just a nit inline, but you can add my acked-by for st_lsm6dsx part in v3
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
Regards,
Lorenzo
> Changes in v2:
> Add support for LSM6DSR
> Set pm_ops to st_lsm6dsx_pm_ops
>
> drivers/iio/imu/st_lsm6dsx/Kconfig | 8 ++-
> drivers/iio/imu/st_lsm6dsx/Makefile | 1 +
> drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i3c.c | 76 +++++++++++++++++++++++++++++
> 3 files changed, 84 insertions(+), 1 deletion(-)
> create mode 100644 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i3c.c
>
> diff --git a/drivers/iio/imu/st_lsm6dsx/Kconfig b/drivers/iio/imu/st_lsm6dsx/Kconfig
> index 002a423..8115936 100644
> --- a/drivers/iio/imu/st_lsm6dsx/Kconfig
> +++ b/drivers/iio/imu/st_lsm6dsx/Kconfig
> @@ -2,11 +2,12 @@
>
> config IIO_ST_LSM6DSX
> tristate "ST_LSM6DSx driver for STM 6-axis IMU MEMS sensors"
> - depends on (I2C || SPI)
> + depends on (I2C || SPI || I3C)
> select IIO_BUFFER
> select IIO_KFIFO_BUF
> select IIO_ST_LSM6DSX_I2C if (I2C)
> select IIO_ST_LSM6DSX_SPI if (SPI_MASTER)
> + select IIO_ST_LSM6DSX_I3C if (I3C)
> help
> Say yes here to build support for STMicroelectronics LSM6DSx imu
> sensor. Supported devices: lsm6ds3, lsm6ds3h, lsm6dsl, lsm6dsm,
> @@ -24,3 +25,8 @@ config IIO_ST_LSM6DSX_SPI
> tristate
> depends on IIO_ST_LSM6DSX
> select REGMAP_SPI
> +
[...]
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/i3c/device.h>
> +#include <linux/i3c/master.h>
> +#include <linux/slab.h>
> +#include <linux/of.h>
> +#include <linux/regmap.h>
> +
> +#include "st_lsm6dsx.h"
> +
> +#define NAME_SIZE 32
> +
> +struct st_lsm6dsx_i3c_data {
> + const char name[NAME_SIZE];
> + enum st_lsm6dsx_hw_id id;
> +};
> +
> +enum st_lsm6dsx_i3c_data_id {
> + ST_LSM6DSO_I3C_DATA_ID,
> + ST_LSM6DSR_I3C_DATA_ID,
> +};
do we really need them? maybe just use hw_data[n] adding a comment to indicate
the related sensor defining st_lsm6dsx_i3c_ids[]
> +
> +static const struct st_lsm6dsx_i3c_data hw_data[] = {
> + { ST_LSM6DSO_DEV_NAME, ST_LSM6DSO_ID },
> + { ST_LSM6DSR_DEV_NAME, ST_LSM6DSR_ID },
> +};
> +
> +static const struct regmap_config st_lsm6dsx_i3c_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> +};
> +
> +static int st_lsm6dsx_i3c_probe(struct i3c_device *i3cdev)
> +{
> + const struct i3c_device_id *id = i3c_get_device_id(i3cdev);
> + const struct st_lsm6dsx_i3c_data *hw_data = id->data;
> + struct regmap *regmap;
> +
> + regmap = devm_regmap_init_i3c(i3cdev, &st_lsm6dsx_i3c_regmap_config);
> + if (IS_ERR(regmap)) {
> + dev_err(&i3cdev->dev, "Failed to register i3c regmap %d\n",
> + (int)PTR_ERR(regmap));
> + return PTR_ERR(regmap);
> + }
> +
> + return st_lsm6dsx_probe(&i3cdev->dev, 0, hw_data->id,
> + hw_data->name, regmap);
> +}
> +
> +static const struct i3c_device_id st_lsm6dsx_i3c_ids[] = {
> + I3C_DEVICE(0x0104, 0x006C, &hw_data[ST_LSM6DSO_I3C_DATA_ID]),
> + I3C_DEVICE(0x0104, 0x006B, &hw_data[ST_LSM6DSR_I3C_DATA_ID]),
> + { /* sentinel */ },
> +};
> +MODULE_DEVICE_TABLE(i3c, st_lsm6dsx_i3c_ids);
> +
> +static struct i3c_driver st_lsm6dsx_driver = {
> + .driver = {
> + .name = "st_lsm6dsx_i3c",
> + .pm = &st_lsm6dsx_pm_ops,
> + },
> + .probe = st_lsm6dsx_i3c_probe,
> + .id_table = st_lsm6dsx_i3c_ids,
> +};
> +module_i3c_driver(st_lsm6dsx_driver);
> +
> +MODULE_AUTHOR("Vitor Soares <vitor.soares@synopsys.com>");
> +MODULE_DESCRIPTION("STMicroelectronics st_lsm6dsx i3c driver");
> +MODULE_LICENSE("GPL v2");
> --
> 2.7.4
>
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
[-- Attachment #2: Type: text/plain, Size: 155 bytes --]
_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
WARNING: multiple messages have this Message-ID (diff)
From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Vitor Soares <Vitor.Soares@synopsys.com>
Cc: linux-iio@vger.kernel.org, linux-i2c@vger.kernel.org,
linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org,
broonie@kernel.org, gregkh@linuxfoundation.org,
rafael@kernel.org, bbrezillon@kernel.org,
Joao.Pinto@synopsys.com, lorenzo.bianconi83@gmail.com
Subject: Re: [PATCH v2 3/3] iio: imu: st_lsm6dsx: add i3c basic support for LSM6DSO and LSM6DSR
Date: Thu, 6 Jun 2019 18:58:43 +0200 [thread overview]
Message-ID: <20190606165841.GA10356@localhost.localdomain> (raw)
In-Reply-To: <6195f3cd21636a5f85c0107b5c3b217be868a4b9.1559831663.git.vitor.soares@synopsys.com>
[-- Attachment #1: Type: text/plain, Size: 3890 bytes --]
> For today the st_lsm6dsx driver support LSM6DSO and LSM6DSR sensor only in
> spi and i2c mode.
>
> The LSM6DSO and LSM6DSR are also i3c capable so lets give i3c support to
> them.
>
> Signed-off-by: Vitor Soares <vitor.soares@synopsys.com>
> ---
Hi Vitor,
just a nit inline, but you can add my acked-by for st_lsm6dsx part in v3
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
Regards,
Lorenzo
> Changes in v2:
> Add support for LSM6DSR
> Set pm_ops to st_lsm6dsx_pm_ops
>
> drivers/iio/imu/st_lsm6dsx/Kconfig | 8 ++-
> drivers/iio/imu/st_lsm6dsx/Makefile | 1 +
> drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i3c.c | 76 +++++++++++++++++++++++++++++
> 3 files changed, 84 insertions(+), 1 deletion(-)
> create mode 100644 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i3c.c
>
> diff --git a/drivers/iio/imu/st_lsm6dsx/Kconfig b/drivers/iio/imu/st_lsm6dsx/Kconfig
> index 002a423..8115936 100644
> --- a/drivers/iio/imu/st_lsm6dsx/Kconfig
> +++ b/drivers/iio/imu/st_lsm6dsx/Kconfig
> @@ -2,11 +2,12 @@
>
> config IIO_ST_LSM6DSX
> tristate "ST_LSM6DSx driver for STM 6-axis IMU MEMS sensors"
> - depends on (I2C || SPI)
> + depends on (I2C || SPI || I3C)
> select IIO_BUFFER
> select IIO_KFIFO_BUF
> select IIO_ST_LSM6DSX_I2C if (I2C)
> select IIO_ST_LSM6DSX_SPI if (SPI_MASTER)
> + select IIO_ST_LSM6DSX_I3C if (I3C)
> help
> Say yes here to build support for STMicroelectronics LSM6DSx imu
> sensor. Supported devices: lsm6ds3, lsm6ds3h, lsm6dsl, lsm6dsm,
> @@ -24,3 +25,8 @@ config IIO_ST_LSM6DSX_SPI
> tristate
> depends on IIO_ST_LSM6DSX
> select REGMAP_SPI
> +
[...]
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/i3c/device.h>
> +#include <linux/i3c/master.h>
> +#include <linux/slab.h>
> +#include <linux/of.h>
> +#include <linux/regmap.h>
> +
> +#include "st_lsm6dsx.h"
> +
> +#define NAME_SIZE 32
> +
> +struct st_lsm6dsx_i3c_data {
> + const char name[NAME_SIZE];
> + enum st_lsm6dsx_hw_id id;
> +};
> +
> +enum st_lsm6dsx_i3c_data_id {
> + ST_LSM6DSO_I3C_DATA_ID,
> + ST_LSM6DSR_I3C_DATA_ID,
> +};
do we really need them? maybe just use hw_data[n] adding a comment to indicate
the related sensor defining st_lsm6dsx_i3c_ids[]
> +
> +static const struct st_lsm6dsx_i3c_data hw_data[] = {
> + { ST_LSM6DSO_DEV_NAME, ST_LSM6DSO_ID },
> + { ST_LSM6DSR_DEV_NAME, ST_LSM6DSR_ID },
> +};
> +
> +static const struct regmap_config st_lsm6dsx_i3c_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> +};
> +
> +static int st_lsm6dsx_i3c_probe(struct i3c_device *i3cdev)
> +{
> + const struct i3c_device_id *id = i3c_get_device_id(i3cdev);
> + const struct st_lsm6dsx_i3c_data *hw_data = id->data;
> + struct regmap *regmap;
> +
> + regmap = devm_regmap_init_i3c(i3cdev, &st_lsm6dsx_i3c_regmap_config);
> + if (IS_ERR(regmap)) {
> + dev_err(&i3cdev->dev, "Failed to register i3c regmap %d\n",
> + (int)PTR_ERR(regmap));
> + return PTR_ERR(regmap);
> + }
> +
> + return st_lsm6dsx_probe(&i3cdev->dev, 0, hw_data->id,
> + hw_data->name, regmap);
> +}
> +
> +static const struct i3c_device_id st_lsm6dsx_i3c_ids[] = {
> + I3C_DEVICE(0x0104, 0x006C, &hw_data[ST_LSM6DSO_I3C_DATA_ID]),
> + I3C_DEVICE(0x0104, 0x006B, &hw_data[ST_LSM6DSR_I3C_DATA_ID]),
> + { /* sentinel */ },
> +};
> +MODULE_DEVICE_TABLE(i3c, st_lsm6dsx_i3c_ids);
> +
> +static struct i3c_driver st_lsm6dsx_driver = {
> + .driver = {
> + .name = "st_lsm6dsx_i3c",
> + .pm = &st_lsm6dsx_pm_ops,
> + },
> + .probe = st_lsm6dsx_i3c_probe,
> + .id_table = st_lsm6dsx_i3c_ids,
> +};
> +module_i3c_driver(st_lsm6dsx_driver);
> +
> +MODULE_AUTHOR("Vitor Soares <vitor.soares@synopsys.com>");
> +MODULE_DESCRIPTION("STMicroelectronics st_lsm6dsx i3c driver");
> +MODULE_LICENSE("GPL v2");
> --
> 2.7.4
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2019-06-06 18:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-06 15:12 [PATCH v2 0/3] Add ST lsm6dso i3c support Vitor Soares
2019-06-06 15:12 ` Vitor Soares
2019-06-06 15:12 ` [PATCH v2 1/3] regmap: add i3c bus support Vitor Soares
2019-06-06 15:12 ` Vitor Soares
2019-06-07 12:25 ` Mark Brown
2019-06-07 12:25 ` Mark Brown
2019-06-07 12:27 ` Applied "regmap: add i3c bus support" to the regmap tree Mark Brown
2019-06-07 12:27 ` Mark Brown
2019-06-07 12:27 ` Mark Brown
2019-06-06 15:12 ` [PATCH v2 2/3] i3c: add i3c_get_device_id helper Vitor Soares
2019-06-06 15:12 ` Vitor Soares
2019-06-06 15:17 ` Boris Brezillon
2019-06-06 15:17 ` Boris Brezillon
2019-06-06 16:58 ` Vitor Soares
2019-06-06 16:58 ` Vitor Soares
2019-06-06 15:12 ` [PATCH v2 3/3] iio: imu: st_lsm6dsx: add i3c basic support for LSM6DSO and LSM6DSR Vitor Soares
2019-06-06 15:12 ` Vitor Soares
2019-06-06 16:58 ` Lorenzo Bianconi [this message]
2019-06-06 16:58 ` Lorenzo Bianconi
2019-06-06 17:21 ` Boris Brezillon
2019-06-06 17:21 ` Boris Brezillon
2019-06-06 17:50 ` Lorenzo Bianconi
2019-06-06 17:50 ` Lorenzo Bianconi
2019-06-06 16:25 ` [PATCH v2 0/3] Add ST lsm6dso i3c support Wolfram Sang
2019-06-06 16:25 ` Wolfram Sang
2019-06-06 16:42 ` Vitor Soares
2019-06-06 16:42 ` Vitor Soares
2019-06-06 18:01 ` Wolfram Sang
2019-06-06 18:01 ` Wolfram Sang
2019-06-11 11:42 ` Vitor Soares
2019-06-11 11:42 ` Vitor Soares
2019-06-13 18:38 ` Mark Brown
2019-06-13 18:38 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190606165841.GA10356@localhost.localdomain \
--to=lorenzo@kernel.org \
--cc=Joao.Pinto@synopsys.com \
--cc=Vitor.Soares@synopsys.com \
--cc=bbrezillon@kernel.org \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo.bianconi83@gmail.com \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.