From: Kamel BOUHARA <kamel.bouhara@bootlin.com>
To: Marco Felsch <m.felsch@pengutronix.de>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Henrik Rydberg <rydberg@bitmath.org>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Jeff LaBundy <jeff@labundy.com>,
catalin.popescu@leica-geosystems.com,
mark.satterthwaite@touchnetix.com,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Gregory Clement <gregory.clement@bootlin.com>,
bsp-development.geo@leica-geosystems.com
Subject: Re: [PATCH v16 3/3] Input: Add TouchNetix axiom i2c touchscreen driver
Date: Fri, 12 Jul 2024 10:53:59 +0200 [thread overview]
Message-ID: <2f4731ab266a091fddd819709b90d53b@bootlin.com> (raw)
In-Reply-To: <20240703182202.draa63ghijbwarcs@pengutronix.de>
Le 2024-07-03 20:22, Marco Felsch a écrit :
> Hi Kamel,
>
> thank you for the updated version please see my comment inline.
Hi Marco,
Thanks for this new review :) !
[...]
>> +
>> +struct axiom_data {
>> + struct axiom_devinfo devinfo;
>> + struct device *dev;
>> + struct gpio_desc *reset_gpio;
> ^
> The reset is done within the probe so this can be dropped.
>
Ack, thanks.
>> + struct i2c_client *client;
> ^
> The client is never used. I would either store the client or the device
> reference but not both.
Sure, nice catch, I'll just keep the device reference here.
>
>> + struct input_dev *input_dev;
>> + u32 max_report_len;
>> + u8 rx_buf[AXIOM_COMMS_MAX_USAGE_PAGES * AXIOM_COMMS_PAGE_SIZE];
>
> Is there a reason for having the rx_buf within the driver priv data?
> IMHO it's more error probe since we never set it to zero before we use
> the buffer. I would rather move the rx-buffer to the functions which
> perform the read.
Ok, there no real/technical reason to not move it to reading functions.
>
>> + struct axiom_u41_target targets[AXIOM_U41_MAX_TARGETS];
>> + struct axiom_usage_entry usage_table[AXIOM_U31_MAX_USAGES];
>> + bool usage_table_populated;
> ^
> This can be an inline helper which checks the max_report_len e.g:
>
> static inline bool axiom_usage_table_populated(struct axiom_data *ts)
> {
> return ts->max_report_len;
> }
>
Ack, just for my curiosity, is this for perfomance or clarity sake ?
>> + struct regmap *regmap;
>> + struct touchscreen_properties prop;
>> +};
>> +
[...]
>> +static int axiom_i2c_probe(struct i2c_client *client)
>> +{
>> + struct device *dev = &client->dev;
>> + struct input_dev *input_dev;
>> + struct axiom_data *ts;
>> + u32 poll_interval;
>> + int target;
>> + int error;
>> +
>> + ts = devm_kzalloc(dev, sizeof(*ts), GFP_KERNEL);
>> + if (!ts)
>> + return -ENOMEM;
>> +
>> + i2c_set_clientdata(client, ts);
>> + ts->client = client;
>> + ts->dev = dev;
>> +
>> + ts->regmap = devm_regmap_init_i2c(client, &axiom_i2c_regmap_config);
>> + error = PTR_ERR_OR_ZERO(ts->regmap);
>> + if (error) {
>> + dev_err(dev, "Failed to initialize regmap: %d\n", error);
>> + return error;
>> + }
>> +
>> + error = devm_regulator_get_enable(dev, "vddi");
>> + if (error)
>> + return dev_err_probe(&client->dev, error,
>> + "Failed to enable VDDI regulator\n");
>> +
>> + error = devm_regulator_get_enable(dev, "vdda");
>> + if (error)
>> + return dev_err_probe(&client->dev, error,
>> + "Failed to enable VDDA regulator\n");
>> +
>> + ts->reset_gpio = devm_gpiod_get_optional(dev, "reset",
>> GPIOD_OUT_HIGH);
>> + if (IS_ERR(ts->reset_gpio))
>> + return dev_err_probe(dev, PTR_ERR(ts->reset_gpio), "failed to get
>> reset GPIO\n");
>> +
>> + /* Make sure the time after a power ON sequence is meet */
>> + if (ts->reset_gpio)
>> + axiom_reset(ts->reset_gpio);
>> + else
>
> No else just:
Fixed, thanks !
>
>> + msleep(AXIOM_STARTUP_TIME_MS);
>
> msleep(AXIOM_STARTUP_TIME_MS);
>
> and drop the msleep within the axiom_reset().
>
> Regards,
> Marco
[...]
--
Kamel Bouhara, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2024-07-12 8:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-03 14:25 [PATCH v16 0/3] Input: Add TouchNetix axiom touchscreen driver Kamel Bouhara
2024-07-03 14:25 ` [PATCH v16 1/3] dt-bindings: vendor-prefixes: Add TouchNetix AS Kamel Bouhara
2024-07-03 14:25 ` [PATCH v16 2/3] dt-bindings: input: Add TouchNetix axiom touchscreen Kamel Bouhara
2024-07-03 14:25 ` [PATCH v16 3/3] Input: Add TouchNetix axiom i2c touchscreen driver Kamel Bouhara
2024-07-03 18:22 ` Marco Felsch
2024-07-12 8:53 ` Kamel BOUHARA [this message]
2024-07-07 19:20 ` Jeff LaBundy
2024-07-12 9:07 ` Kamel BOUHARA
2024-07-12 9:11 ` Kamel BOUHARA
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=2f4731ab266a091fddd819709b90d53b@bootlin.com \
--to=kamel.bouhara@bootlin.com \
--cc=bsp-development.geo@leica-geosystems.com \
--cc=catalin.popescu@leica-geosystems.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=gregory.clement@bootlin.com \
--cc=jeff@labundy.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m.felsch@pengutronix.de \
--cc=mark.satterthwaite@touchnetix.com \
--cc=robh+dt@kernel.org \
--cc=rydberg@bitmath.org \
--cc=thomas.petazzoni@bootlin.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).