public inbox for linux-gpio@vger.kernel.org
 help / color / mirror / Atom feed
From: "Mathieu Dubois-Briand" <mathieu.dubois-briand@bootlin.com>
To: "Dmitry Torokhov" <dmitry.torokhov@gmail.com>
Cc: "Lee Jones" <lee@kernel.org>, "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Kamel Bouhara" <kamel.bouhara@bootlin.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Michael Walle" <mwalle@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-input@vger.kernel.org,
	linux-pwm@vger.kernel.org, andriy.shevchenko@intel.com,
	"Grégory Clement" <gregory.clement@bootlin.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v6 10/12] input: keyboard: Add support for MAX7360 keypad
Date: Thu, 10 Apr 2025 13:29:35 +0200	[thread overview]
Message-ID: <D92X9ZK07SIK.124N9HG8W7QEI@bootlin.com> (raw)
In-Reply-To: <chhnkepvlbiv6xvgh5zso526xsp4zk7tgzsqzoqe7b5jmvdyrw@afio6lmx55zv>

On Wed Apr 9, 2025 at 8:40 PM CEST, Dmitry Torokhov wrote:
> Hi Mathieu,
>
> On Wed, Apr 09, 2025 at 04:55:57PM +0200, Mathieu Dubois-Briand wrote:
> ...
>> +static irqreturn_t max7360_keypad_irq(int irq, void *data)
>> +{
>> +	struct max7360_keypad *max7360_keypad = data;
>> +	unsigned int val;
>> +	unsigned int row, col;
>> +	unsigned int release;
>> +	unsigned int code;
>> +	int ret;
>
> int error;
>

Ok using error on all similar cases.

>> +
>> +	do {
>> +		ret = regmap_read(max7360_keypad->regmap, MAX7360_REG_KEYFIFO, &val);
>> +		if (ret) {
>> +			dev_err(&max7360_keypad->input->dev, "Failed to read max7360 FIFO");
>
> This will return name pf the input device, whereas logging name of the
> platform device (representing the hardware device) would be much more
> interesting. You can either use max7360_keypad->input->dev.parent, or,
> better yet, add *dev pointer to struct max7360_keypad.
>

Makes sense, thanks.

> ...
>
>> +static int max7360_keypad_build_keymap(struct max7360_keypad *max7360_keypad)
>> +{
>> +	struct input_dev *input_dev = max7360_keypad->input;
>> +	struct device *dev = input_dev->dev.parent->parent;
>> +	struct matrix_keymap_data keymap_data;
>> +	const char *propname = "linux,keymap";
>> +	unsigned int max_keys;
>> +	int size;
>> +	int ret;
>> +
>> +	size = device_property_count_u32(dev, propname);
>> +	if (size <= 0) {
>> +		dev_err(dev, "missing or malformed property %s: %d\n", propname, size);
>> +		return size < 0 ? size : -EINVAL;
>> +	}
>> +
>> +	max_keys = max7360_keypad->cols * max7360_keypad->rows;
>> +	if (size > max_keys) {
>> +		dev_err(dev, "%s size overflow (%d vs max %u)\n", propname, size, max_keys);
>> +		return -EINVAL;
>> +	}
>> +
>> +	u32 *keys __free(kfree) = kmalloc_array(size, sizeof(*keys), GFP_KERNEL);
>> +	if (!keys)
>> +		return -ENOMEM;
>> +
>> +	ret = device_property_read_u32_array(dev, propname, keys, size);
>> +	if (ret) {
>> +		dev_err(dev, "failed to read %s property: %d\n", propname, ret);
>> +		return ret;
>> +	}
>> +
>> +	keymap_data.keymap = keys;
>> +	keymap_data.keymap_size = size;
>> +	ret = matrix_keypad_build_keymap(&keymap_data, NULL, max7360_keypad->rows, max7360_keypad->cols,
>> +					 max7360_keypad->keycodes, max7360_keypad->input);
>
> What if it fails? Error handling please.

Yes, forgot to return ret just below. Not adding logs as in most cases
matrix_keypad_build_keymap() will already print some logs. OK with that?

>
> Also, it looks like you are repeating what matrix_keypad_build_keymap()
> is already doing. If you pass NULL as keymap data, won't it do the right
> thing?
>

No, because matrix_keypad_parse_keymap() is using input_dev->dev.parent
and this device will not have any associated device tree node. It should
use input_dev->dev.parent->parent to get correct values.

There is a discussion ongoing about using device_set_of_node_from_dev(),
so the MFD child device reuse the node of the parent. But I tried to
avoid using it here, as I was able to come with another solution.
Discussion is in the thread of the pinctrl driver (patch #3).

Another solution would be to modify matrix_keypad_parse_keymap(),
allowing to pass a custom device. But again, I tried to avoid doing this
modification just for my own need.

> ...
>
> Thanks.

Ok with all other comments.

Thanks for your review.
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2025-04-10 11:29 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-09 14:55 [PATCH v6 00/12] Add support for MAX7360 Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 01/12] dt-bindings: mfd: gpio: Add MAX7360 Mathieu Dubois-Briand
2025-04-09 15:22   ` [External] : " ALOK TIWARI
2025-04-10  7:55     ` Lee Jones
2025-04-10  8:19     ` Mathieu Dubois-Briand
2025-04-09 20:58   ` Dmitry Torokhov
2025-04-10  8:22     ` Mathieu Dubois-Briand
2025-04-11 16:05   ` Rob Herring (Arm)
2025-04-15 11:24     ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 02/12] mfd: Add max7360 support mathieu.dubois-briand
2025-04-17 18:16   ` Andy Shevchenko
2025-04-18 15:39     ` Mathieu Dubois-Briand
2025-04-18 15:52   ` Christophe JAILLET
2025-04-18 16:20     ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 03/12] pinctrl: Add MAX7360 pinctrl driver Mathieu Dubois-Briand
2025-04-09 15:03   ` Mathieu Dubois-Briand
2025-04-09 16:32     ` Andy Shevchenko
2025-04-10  8:37       ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 04/12] pwm: max7360: Add MAX7360 PWM support mathieu.dubois-briand
2025-04-09 17:00   ` Andy Shevchenko
2025-04-10  8:48     ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 05/12] regmap: irq: Remove unreachable goto Mathieu Dubois-Briand
2025-04-09 15:19   ` Mark Brown
2025-04-09 15:21     ` Mark Brown
2025-04-10  8:53       ` Mathieu Dubois-Briand
2025-04-09 15:38     ` Andy Shevchenko
2025-04-09 15:46       ` Mark Brown
2025-04-09 16:00         ` Andy Shevchenko
2025-04-09 16:32           ` Mark Brown
2025-04-09 16:45             ` Andy Shevchenko
2025-04-09 17:16               ` Dmitry Torokhov
2025-04-10 18:43                 ` Andy Shevchenko
2025-04-09 15:56       ` Andy Shevchenko
2025-04-19 10:38     ` Uwe Kleine-König
2025-04-23 12:41     ` Mathieu Dubois-Briand
2025-04-23 12:42       ` Mark Brown
2025-04-09 15:40   ` Andy Shevchenko
2025-04-09 14:55 ` [PATCH v6 06/12] regmap: irq: Add support for chips without separate IRQ status Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 07/12] gpio: regmap: Allow to allocate regmap-irq device Mathieu Dubois-Briand
2025-04-09 16:39   ` Andy Shevchenko
2025-04-10  9:03     ` Mathieu Dubois-Briand
2025-04-14 10:29       ` Andy Shevchenko
2025-04-09 14:55 ` [PATCH v6 08/12] gpio: regmap: Allow to provide init_valid_mask callback Mathieu Dubois-Briand
2025-04-09 17:02   ` Andy Shevchenko
2025-04-10 10:03     ` Mathieu Dubois-Briand
2025-04-15 22:15   ` Linus Walleij
2025-04-09 14:55 ` [PATCH v6 09/12] gpio: max7360: Add MAX7360 gpio support Mathieu Dubois-Briand
2025-04-17 12:41   ` Bartosz Golaszewski
2025-04-17 18:13   ` Andy Shevchenko
2025-04-18 15:26     ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 10/12] input: keyboard: Add support for MAX7360 keypad Mathieu Dubois-Briand
2025-04-09 18:40   ` Dmitry Torokhov
2025-04-10 11:29     ` Mathieu Dubois-Briand [this message]
2025-04-09 14:55 ` [PATCH v6 11/12] input: misc: Add support for MAX7360 rotary Mathieu Dubois-Briand
2025-04-09 19:17   ` Dmitry Torokhov
2025-04-10 11:36     ` Mathieu Dubois-Briand
2025-04-09 14:55 ` [PATCH v6 12/12] MAINTAINERS: Add entry on MAX7360 driver Mathieu Dubois-Briand

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=D92X9ZK07SIK.124N9HG8W7QEI@bootlin.com \
    --to=mathieu.dubois-briand@bootlin.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=brgl@bgdev.pl \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=dakr@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@bootlin.com \
    --cc=kamel.bouhara@bootlin.com \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mwalle@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=ukleinek@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox