All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joonyoung Shim <jy0922.shim@samsung.com>
To: Tomasz Figa <t.figa@samsung.com>
Cc: linux-input@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	devicetree-discuss@lists.ozlabs.org, kyungmin.park@samsung.com,
	m.szyprowski@samsung.com, tomasz.figa@gmail.com
Subject: Re: [PATCH] input: touchscreen: mms114: Add device tree bindings
Date: Thu, 04 Oct 2012 10:21:49 +0900	[thread overview]
Message-ID: <506CE4AD.8000608@samsung.com> (raw)
In-Reply-To: <1349170427-1625-1-git-send-email-t.figa@samsung.com>

Hi, Tomasz.

On 10/02/2012 06:33 PM, Tomasz Figa wrote:
> This patch adds device tree bindings for mms114 touchscreen.
>
> Signed-off-by: Tomasz Figa <t.figa@samsung.com>
>
> ---
>   .../bindings/input/touchscreen/mms114.txt          | 34 ++++++++++++++
>   drivers/input/touchscreen/mms114.c                 | 52 +++++++++++++++++++++-
>   2 files changed, 84 insertions(+), 2 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/input/touchscreen/mms114.txt
>
> diff --git a/Documentation/devicetree/bindings/input/touchscreen/mms114.txt b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt
> new file mode 100644
> index 0000000..f89d382
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt
> @@ -0,0 +1,34 @@
> +* MELFAS MMS114 touchscreen controller
> +
> +Required properties:
> +- compatible: must be "melfas,mms114"
> +- reg: I2C address of the chip
> +- interrupts: interrupt to which the chip is connected
> +- x-size: horizontal resolution of touchscreen
> +- y-size: vertical resolution of touchscreen
> +
> +Optional properties:
> +- contact-threshold:
> +- moving-threshold:
> +- x-invert: invert X axis
> +- y-invert: invert Y axis
> +
> +Example:
> +
> +	i2c@00000000 {
> +		/* ... */
> +
> +		touchscreen@48 {
> +			compatible = "melfas,mms114";
> +			reg = <0x48>;
> +			interrupts = <39 0>;
> +			x-size = <720>;
> +			y-size = <1280>;
> +			contact-threshold = <10>;
> +			moving-threshold = <10>;
> +			x-invert;
> +			y-invert;
> +		};
> +
> +		/* ... */
> +	};
> diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c
> index 49c44bb..fb66f7a 100644
> --- a/drivers/input/touchscreen/mms114.c
> +++ b/drivers/input/touchscreen/mms114.c
> @@ -10,6 +10,7 @@
>   #include <linux/module.h>
>   #include <linux/init.h>
>   #include <linux/delay.h>
> +#include <linux/of.h>
>   #include <linux/i2c.h>
>   #include <linux/i2c/mms114.h>
>   #include <linux/input/mt.h>
> @@ -360,14 +361,55 @@ static void mms114_input_close(struct input_dev *dev)
>   	mms114_stop(data);
>   }
>   
> +static struct mms114_platform_data *mms114_parse_dt(struct device *dev)
> +{
> +	struct mms114_platform_data *pdata;
> +	struct device_node *np = dev->of_node;
> +
> +	if (!np)
> +		return NULL;
> +
> +	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> +	if (!pdata) {
> +		dev_err(dev, "failed to allocate platform data\n");
> +		return NULL;
> +	}
> +
> +	if (of_property_read_u32(np, "x-size", &pdata->x_size)) {
> +		dev_err(dev, "failed to get x-size property\n");
> +		return NULL;
> +	};
> +
> +	if (of_property_read_u32(np, "y-size", &pdata->y_size)) {
> +		dev_err(dev, "failed to get y-size property\n");
> +		return NULL;
> +	};
> +
> +	of_property_read_u32(np, "contact-threshold",
> +						&pdata->contact_threshold);
> +	of_property_read_u32(np, "moving-threshold",
> +						&pdata->moving_threshold);
> +
> +	if (of_find_property(np, "x-invert", NULL))
> +		pdata->x_invert = true;
> +	if (of_find_property(np, "y-invert", NULL))
> +		pdata->y_invert = true;
> +
> +	return pdata;
> +}

#ifdef CONFIG_OF needs.

> +
>   static int __devinit mms114_probe(struct i2c_client *client,
>   				  const struct i2c_device_id *id)
>   {
>   	struct mms114_data *data;
>   	struct input_dev *input_dev;
> +	struct mms114_platform_data *pdata = client->dev.platform_data;
>   	int error;
>   
> -	if (!client->dev.platform_data) {
> +	if (!pdata)
> +		pdata = mms114_parse_dt(&client->dev);
> +
> +	if (!pdata) {
>   		dev_err(&client->dev, "Need platform data\n");
>   		return -EINVAL;
>   	}
> @@ -389,7 +431,7 @@ static int __devinit mms114_probe(struct i2c_client *client,
>   
>   	data->client = client;
>   	data->input_dev = input_dev;
> -	data->pdata = client->dev.platform_data;
> +	data->pdata = pdata;
>   
>   	input_dev->name = "MELPAS MMS114 Touchscreen";
>   	input_dev->id.bustype = BUS_I2C;
> @@ -525,11 +567,17 @@ static const struct i2c_device_id mms114_id[] = {
>   };
>   MODULE_DEVICE_TABLE(i2c, mms114_id);
>   
> +static struct of_device_id __devinitdata mms114_dt_match[] = {
> +	{ .compatible = "melfas,mms114" },
> +	{ }
> +};
> +
>   static struct i2c_driver mms114_driver = {
>   	.driver = {
>   		.name	= "mms114",
>   		.owner	= THIS_MODULE,
>   		.pm	= &mms114_pm_ops,
> +		.of_match_table = mms114_dt_match,
>   	},
>   	.probe		= mms114_probe,
>   	.remove		= __devexit_p(mms114_remove),

      reply	other threads:[~2012-10-04  1:21 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-02  9:33 [PATCH] input: touchscreen: mms114: Add device tree bindings Tomasz Figa
2012-10-04  1:21 ` Joonyoung Shim [this message]

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=506CE4AD.8000608@samsung.com \
    --to=jy0922.shim@samsung.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=t.figa@samsung.com \
    --cc=tomasz.figa@gmail.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.