linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Nuno Sá" <noname.nuno@gmail.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: nuno.sa@analog.com, linux-gpio@vger.kernel.org,
	linux-pwm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-input@vger.kernel.org, "Lee Jones" <lee@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Liu Ying" <victor.liu@nxp.com>
Subject: Re: [PATCH v3 17/22] Input: adp5585: Add Analog Devices ADP5585/89 support
Date: Wed, 21 May 2025 11:06:00 +0100	[thread overview]
Message-ID: <497d549b6d055cf6402a9777c1295f5415174c86.camel@gmail.com> (raw)
In-Reply-To: <j2zueeyfq2mkr56b5pauektzqwfmo4ob32fcb7r5oavwdunsab@6knd5a6raaef>

On Tue, 2025-05-20 at 11:33 -0700, Dmitry Torokhov wrote:
> On Tue, May 20, 2025 at 09:32:53AM +0100, Nuno Sá wrote:
> > On Mon, 2025-05-19 at 15:29 -0700, Dmitry Torokhov wrote:
> > > Hi Nuno,
> > > 
> > > On Mon, May 12, 2025 at 01:39:09PM +0100, Nuno Sá via B4 Relay wrote:
> > > > +
> > > > +	for (pin = 0; pin < n_pins; pin++) {
> > > > +		if (keypad_pins[pin] >= adp5585->info->n_pins) {
> > > > +			error = dev_err_probe(dev, -EINVAL,
> > > > +					      "Invalid keypad pin(%u)
> > > > defined\n",
> > > > +					      keypad_pins[pin]);
> > > > +			goto out_free_map;
> > > > +		}
> > > > +
> > > > +		if (test_and_set_bit(keypad_pins[pin], adp5585-
> > > > >pin_usage))
> > > > {
> > > > +			error = dev_err_probe(dev, -EBUSY,
> > > > +					      "Keypad pin(%u) already
> > > > used\n",
> > > > +					      keypad_pins[pin]);
> > > > +			goto out_free_map;
> > > 
> > > This jump looked confusing, together with devm, etc. I wonder, can you
> > > move call to devm_add_action_or_reset() before the loop? It looks like
> > > it should handle completely unpopulated pin map just fine... 
> > 
> > Seemed the logical way but I agree that what you suggest makes it more
> > simpler.
> > 
> > > 
> > > > +		}
> > > > +
> > > > +		__set_bit(keypad_pins[pin], &kpad->keypad);
> > > > +	}
> > > > +
> > > > +	error = devm_add_action_or_reset(dev, adp5585_keys_pins_free,
> > > > kpad);
> > > > +	if (error)
> > > > +		return error;
> > > > +
> > > > +	/*
> > > > +	 * Note that given that we get a mask (and the HW allows it),
> > > > we
> > > > +	 * can have holes in our keypad (eg: row0, row1 and row7
> > > > enabled).
> > > > +	 * However, for the matrix parsing functions we need to pass
> > > > the
> > > > +	 * number of rows/cols as the maximum row/col used plus 1. This
> > > > +	 * pretty much means we will also have holes in our SW keypad.
> > > > +	 */
> > > > +
> > > > +	rows = find_last_bit(&kpad->keypad, kpad->info->max_rows) + 1;
> > > > +	if (rows == kpad->info->max_rows + 1)
> > > > +		return dev_err_probe(dev, -EINVAL,
> > > > +				     "Now rows defined in the
> > > > keypad!\n");
> > > > +
> > > > +	cols = find_last_bit(&kpad->keypad, kpad->info->max_cols +
> > > > kpad-
> > > > > info->max_rows);
> > > > +	if (cols < kpad->info->max_rows)
> > > > +		return dev_err_probe(dev, -EINVAL,
> > > > +				     "No columns defined in the
> > > > keypad!\n");
> > > > +
> > > > +	cols = cols + 1 - kpad->info->max_rows;
> > > > +
> > > > +	error = matrix_keypad_build_keymap(NULL, NULL, rows, cols,
> > > > +					   kpad->keycode, kpad->input);
> > > > +	if (error)
> > > > +		return error;
> > > > +
> > > > +	kpad->row_shift = get_count_order(cols);
> > > > +
> > > > +	if (device_property_read_bool(kpad->dev, "autorepeat"))
> > > > +		__set_bit(EV_REP, kpad->input->evbit);
> > > > +
> > > > +	return adp5585_keys_check_special_events(adp5585, kpad);
> > > 
> > > 	error = adp5585_keys_check_special_events(...);
> > > 	if (error)
> > > 		return error;
> > 
> > Curious, any special reason for the above? Or is just personal preference?
> 
> More of a personal preference, however there is some logic to it ;) - 
> in a function with multiple failure/return points such form allows for
> easy addition and/or movement of the code.
> 
> Thanks.

I get your point. Honestly still prefer returning right away but no strong
feelings anyways. I'll change it.

- Nuno Sá

  reply	other threads:[~2025-05-21 10:06 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-12 12:38 [PATCH v3 00/22] mfd: adp5585: support keymap events and drop legacy Input driver Nuno Sá via B4 Relay
2025-05-12 12:38 ` [PATCH v3 01/22] dt-bindings: mfd: adp5585: ease on the required properties Nuno Sá via B4 Relay
2025-05-12 12:38 ` [PATCH v3 02/22] mfd: adp5585: only add devices given in FW Nuno Sá via B4 Relay
2025-05-13 14:34   ` Lee Jones
2025-05-13 15:02     ` Nuno Sá
2025-05-13 15:19       ` Laurent Pinchart
2025-05-13 15:37         ` Nuno Sá
2025-05-13 16:12         ` Lee Jones
2025-05-12 12:38 ` [PATCH v3 03/22] mfd: adp5585: enable oscilator during probe Nuno Sá via B4 Relay
2025-05-13 14:26   ` Lee Jones
2025-05-13 14:52     ` Nuno Sá
2025-05-13 16:07       ` Lee Jones
2025-05-13 15:24   ` Laurent Pinchart
2025-05-13 15:38     ` Nuno Sá
2025-05-12 12:38 ` [PATCH v3 04/22] pwm: adp5585: don't control OSC_EN in the pwm driver Nuno Sá via B4 Relay
2025-05-13 15:26   ` Laurent Pinchart
2025-05-13 15:39     ` Nuno Sá
2025-05-13 16:04       ` Lee Jones
2025-05-12 12:38 ` [PATCH v3 05/22] mfd: adp5585: make use of MFD_CELL_NAME() Nuno Sá via B4 Relay
2025-05-13 14:39   ` Lee Jones
2025-05-13 14:50     ` Nuno Sá
2025-05-12 12:38 ` [PATCH v3 06/22] dt-bindings: mfd: adp5585: document adp5589 I/O expander Nuno Sá via B4 Relay
2025-05-12 12:38 ` [PATCH v3 07/22] mfd: adp5585: refactor how regmap defaults are handled Nuno Sá via B4 Relay
2025-05-13 15:00   ` Lee Jones
2025-05-13 15:02     ` Lee Jones
2025-05-13 15:32     ` Nuno Sá
2025-05-13 15:36       ` Laurent Pinchart
2025-05-13 16:03         ` Lee Jones
2025-05-13 15:35     ` Laurent Pinchart
2025-05-13 15:41       ` Nuno Sá
2025-05-12 12:39 ` [PATCH v3 08/22] mfd: adp5585: add support for adp5589 Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 09/22] mfd: adp5585: add a per chip reg struture Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 10/22] gpio: adp5585: add support for the adp5589 expander Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 11/22] pwm: adp5585: add support for adp5589 Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 12/22] dt-bindings: mfd: adp5585: add properties for input events Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 13/22] mfd: adp5585: add support for event handling Nuno Sá via B4 Relay
2025-05-13 15:59   ` Lee Jones
2025-05-15  5:56     ` Nuno Sá
2025-05-15  6:14     ` Nuno Sá
2025-05-12 12:39 ` [PATCH v3 14/22] mfd: adp5585: support reset and unlock events Nuno Sá via B4 Relay
2025-05-13 16:22   ` Lee Jones
2025-05-14  8:35     ` Laurent Pinchart
2025-05-14  8:46       ` Lee Jones
2025-05-15  5:46       ` Nuno Sá
2025-05-12 12:39 ` [PATCH v3 15/22] mfd: adp5585: add support for input devices Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 16/22] gpio: adp5585: support gpi events Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 17/22] Input: adp5585: Add Analog Devices ADP5585/89 support Nuno Sá via B4 Relay
2025-05-19 22:29   ` Dmitry Torokhov
2025-05-20  8:32     ` Nuno Sá
2025-05-20 18:33       ` Dmitry Torokhov
2025-05-21 10:06         ` Nuno Sá [this message]
2025-05-12 12:39 ` [PATCH v3 18/22] Input: adp5589: remove the driver Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 19/22] mfd: adp5585: support getting vdd regulator Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 20/22] dt-bindings: mfd: adp5585: document reset gpio Nuno Sá via B4 Relay
2025-05-12 12:39 ` [PATCH v3 21/22] mfd: adp5585: add support for a reset pin Nuno Sá via B4 Relay
2025-05-13 16:26   ` Lee Jones
2025-05-15  5:39     ` Nuno Sá
2025-05-12 12:39 ` [PATCH v3 22/22] pwm: adp5585: make sure to include mod_devicetable.h Nuno Sá via B4 Relay
2025-05-19 16:11   ` Uwe Kleine-König
2025-05-19 16:19     ` Nuno Sá
2025-05-14  8:25 ` [PATCH v3 00/22] mfd: adp5585: support keymap events and drop legacy Input driver Lee Jones
2025-05-14 11:04   ` Nuno Sá
2025-07-02 13:34 ` Lee Jones

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=497d549b6d055cf6402a9777c1295f5415174c86.camel@gmail.com \
    --to=noname.nuno@gmail.com \
    --cc=brgl@bgdev.pl \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=robh@kernel.org \
    --cc=ukleinek@kernel.org \
    --cc=victor.liu@nxp.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).