All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: linux-input@vger.kernel.org, Viresh Kumar <viresh.kumar@st.com>,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org,
	Rob Herring <rob.herring@calxeda.com>,
	Rakesh Iyer <riyer@nvidia.com>
Subject: Re: [PATCH 2/2] Input: matrix_keymap - wire up device tree support
Date: Thu, 26 Apr 2012 09:05:18 -0600	[thread overview]
Message-ID: <4F99642E.1010305@wwwdotorg.org> (raw)
In-Reply-To: <20120426081909.GA2726@core.coreip.homeip.net>

On 04/26/2012 02:19 AM, Dmitry Torokhov wrote:
> When platform keymap is not supplied to matrix_keypad_build_keymap()
> and device tree support is enabled, try locating specified property
> and load keymap from it. If property name is not defined, try using
> "linux,keymap".
> 
> Based on earlier patch by Viresh Kumar <viresh.kumar@st.com>

I think this series looks mostly OK. A few comments below.

We don't actually have the KBC driver hooked up on any boards yet, so I
can't actually test this yet.

How will the linux,fn-keymap handling work? It looks like this code is
allocating a keymap data structure with one additional row to represent
fn-not-pressed vs. fn-pressed. I assume this will work without issue
even though the second half is not filled in. Won't this allow the
linux,keymap property entries to pass validation "if (row >= rows)" for
one more row than it should?

> diff --git a/drivers/input/keyboard/tegra-kbc.c b/drivers/input/keyboard/tegra-kbc.c

> +static int __devinit tegra_kbd_setup_keymap(struct tegra_kbc *kbc)
> +{
> +	const struct tegra_kbc_platform_data *pdata = kbc->pdata;
> +	const struct matrix_keymap_data *keymap_data = pdata->keymap_data;
> +	unsigned int keymap_rows = KBC_MAX_KEY;
> +	int retval;
> +
> +	if (pdata->use_fn_map)
> +		keymap_rows *= 2;
> +
> +	retval = matrix_keypad_build_keymap(keymap_data, NULL,
> +					    keymap_rows, KBC_MAX_COL,
> +					    kbc->keycode, kbc->idev);
> +	if (retval == -ENOSYS || retval == -ENOENT) {

This is looking for ENOSYS or ENOENT, but ...

> diff --git a/drivers/input/matrix-keymap.c b/drivers/input/matrix-keymap.c

> +static int matrix_keypad_parse_of_keymap(const char *propname,

> +	if (!np)
> +		return -ENODEV;

Here and ...

> +	prop = of_get_property(np, propname, &proplen);
> +	if (!prop) {
> +		dev_err(dev, "OF: %s property not defined in %s\n",
> +			propname, np->full_name);
> +		return -ENODEV;

Here return ENODEV instead.


  reply	other threads:[~2012-04-26 15:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-26  8:19 [PATCH 2/2] Input: matrix_keymap - wire up device tree support Dmitry Torokhov
2012-04-26 15:05 ` Stephen Warren [this message]
2012-04-30  4:19   ` Dmitry Torokhov
2012-04-30 16:00     ` Stephen Warren
2012-05-09  5:25       ` Dmitry Torokhov
2012-05-09 15:46         ` Stephen Warren

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=4F99642E.1010305@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=riyer@nvidia.com \
    --cc=rob.herring@calxeda.com \
    --cc=viresh.kumar@st.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 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.