From: Dixit Parmar <dixitparmar19@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 1/2] iio: magnetometer: add support for Infineon TLV493D 3D Magentic sensor
Date: Tue, 29 Jul 2025 08:57:30 +0530 [thread overview]
Message-ID: <aIg_ohWU7QICMbMy@dixit> (raw)
In-Reply-To: <20250727133852.371111bc@jic23-huawei>
On Sun, Jul 27, 2025 at 01:38:52PM +0100, Jonathan Cameron wrote:
> On Sat, 26 Jul 2025 15:44:03 -0500
> David Lechner <dlechner@baylibre.com> wrote:
>
> > On 7/26/25 4:37 AM, Dixit Parmar wrote:
> > > The Infineon TLV493D is a Low-Power 3D Magnetic Sensor. The Sensor
> > > applications includes joysticks, control elements (white goods,
> > > multifunction knops), or electric meters (anti tampering) and any
> > > other application that requires accurate angular measurements at
> > > low power consumptions.
> > >
> > > The Sensor is configured over I2C, and as part of Sensor measurement
> > > data it provides 3-Axis magnetic fields and temperature core measurement.
> > >
> > > The driver supports raw value read and buffered input via external trigger
> > > to allow streaming values with the same sensing timestamp.
> > >
> > > The device can be configured in to different operating modes by optional
> > > device-tree "mode" property. Also, the temperature sensing part requires
> > > raw offset captured at 25°C and that can be specified by "temp-offset"
> > > optional device-tree property.
> > >
> > > While sensor has interrupt pin multiplexed with I2C SCL pin. But for bus
> > > configurations interrupt(INT) is not recommended, unless timing constraints
> > > between I2C data transfers and interrupt pulses are monitored and aligned.
> > >
> > > The Sensor's I2C register map and mode information is described in product
> > > User Manual[1].
> > >
> > > Datasheet: https://www.infineon.com/assets/row/public/documents/24/49/infineon-tlv493d-a1b6-datasheet-en.pdf
> > > [1] https://www.mouser.com/pdfDocs/Infineon-TLV493D-A1B6_3DMagnetic-UserManual-v01_03-EN.pdf
> > >
> > > Signed-off-by: Dixit Parmar <dixitparmar19@gmail.com>
>
> > > +static const struct regmap_config tlv493d_regmap_config = {
> > > + .reg_bits = 8,
> > > + .val_bits = 8,
> > > + .max_register = TLV493D_RD_REG_RES3,
> > > + .volatile_table = &tlv493d_volatile_regs,
> > > +};
> > > +
> > > +static int tlv493d_probe(struct i2c_client *client)
> > > +{
> > > + struct device *dev = &client->dev;
> > > + struct iio_dev *indio_dev;
> > > + struct tlv493d_data *data;
> > > + int ret;
> > > +
> > > + indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
> > > + if (!indio_dev)
> > > + return -ENOMEM;
> > > +
> > > + data = iio_priv(indio_dev);
> > > + data->dev = dev;
> > > + data->client = client;
> > > + i2c_set_clientdata(client, indio_dev);
> >
> > There is not i2c_get_clientdata(), so I don't think we need this.
> There's a dev_get_drvdata() that pairs with this in suspend and resume.
>
> I kind of wish the bus specific accessor would go away but there
> is too much history behind them :(
>
Thank you for the confirmation. Will keep it.
> > > +static int tlv493d_runtime_suspend(struct device *dev)
> > > +{
> > > + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> > > + struct tlv493d_data *data = iio_priv(indio_dev);
> > > +
> > > + return tlv493d_set_operating_mode(data, TLV493D_OP_MODE_POWERDOWN);
> > > +}
> > > +
> > > +static int tlv493d_runtime_resume(struct device *dev)
> > > +{
> > > + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> > > + struct tlv493d_data *data = iio_priv(indio_dev);
> > > +
> > > + return tlv493d_set_operating_mode(data, data->mode);
> > > +}
> > > +
> > > +static DEFINE_RUNTIME_DEV_PM_OPS(tlv493d_pm_ops,
> > > + tlv493d_runtime_suspend, tlv493d_runtime_resume, NULL);
> > > +
> > > +static const struct i2c_device_id tlv493d_id[] = {
> > > + { "tlv493d" },
> > > + { }
> > > +};
> > > +MODULE_DEVICE_TABLE(i2c, tlv493d_id);
> > > +
> > > +static const struct of_device_id tlv493d_of_match[] = {
> > > + { .compatible = "infineon,tlv493d-a1b6", },
> > > + { }
> > > +};
> > > +MODULE_DEVICE_TABLE(of, tlv493d_of_match);
> > > +
> > > +static struct i2c_driver tlv493d_driver = {
> > > + .driver = {
> > > + .name = "tlv493d",
> > > + .of_match_table = tlv493d_of_match,
> > > + .pm = pm_ptr(&tlv493d_pm_ops),
> > > + },
> > > + .probe = tlv493d_probe,
> > > + .id_table = tlv493d_id,
> > > +};
> > > +
> > > +module_i2c_driver(tlv493d_driver);
> > > +
> > > +MODULE_LICENSE("GPL");
> > > +MODULE_DESCRIPTION("Infineon TLV493D Low-Power 3D Magnetic Sensor");
> > > +MODULE_AUTHOR("Dixit Parmar <dixitparmar19@gmail.com>");
> > >
> >
>
next prev parent reply other threads:[~2025-07-29 3:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-26 9:37 [PATCH 0/2] iio: magnetometer: add support for Infineon TLV493D 3D Magnetic Sensor Dixit Parmar
2025-07-26 9:37 ` [PATCH 1/2] iio: magnetometer: add support for Infineon TLV493D 3D Magentic sensor Dixit Parmar
2025-07-26 20:44 ` David Lechner
2025-07-27 12:38 ` Jonathan Cameron
2025-07-29 3:27 ` Dixit Parmar [this message]
2025-07-29 3:26 ` Dixit Parmar
2025-07-29 7:49 ` Andy Shevchenko
2025-07-29 18:47 ` Jonathan Cameron
2025-07-29 18:51 ` David Lechner
2025-07-26 22:03 ` Christophe JAILLET
2025-07-29 3:28 ` Dixit Parmar
2025-07-27 13:05 ` Jonathan Cameron
2025-07-29 3:49 ` Dixit Parmar
2025-07-29 19:05 ` Jonathan Cameron
2025-07-30 3:44 ` Dixit Parmar
2025-07-31 13:04 ` Jonathan Cameron
2025-07-26 9:37 ` [PATCH 2/2] dt-bindings: iio: magnetometer: document Infineon TLV493D 3D Magnetic sensor Dixit Parmar
2025-07-26 20:43 ` David Lechner
2025-07-29 3:03 ` Dixit Parmar
2025-07-27 2:09 ` kernel test robot
2025-07-27 9:23 ` Krzysztof Kozlowski
2025-07-29 3:05 ` Dixit Parmar
2025-07-27 20:27 ` Rob Herring (Arm)
2025-07-29 3:09 ` Dixit Parmar
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=aIg_ohWU7QICMbMy@dixit \
--to=dixitparmar19@gmail.com \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=robh@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.