All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>
To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Subject: [PATCH 1/5 v5] i2c/gpio: add DT support
Date: Thu, 15 Mar 2012 16:56:12 +0100	[thread overview]
Message-ID: <1331826972-14386-1-git-send-email-plagnioj@jcrosoft.com> (raw)
In-Reply-To: <1331642024-19869-1-git-send-email-plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>

To achieve DT support, we need to populate a custom platform_data in a
private struct from DT information. To simplify code, the adapter and
algorithm are also put into the private struct.

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>
Acked-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
Acked-by: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
Acked-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Nicolas Ferre <nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
---
 .../devicetree/bindings/gpio/gpio_i2c.txt          |   32 +++++++
 drivers/i2c/busses/i2c-gpio.c                      |   94 +++++++++++++++----
 2 files changed, 106 insertions(+), 20 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/gpio_i2c.txt

diff --git a/Documentation/devicetree/bindings/gpio/gpio_i2c.txt b/Documentation/devicetree/bindings/gpio/gpio_i2c.txt
new file mode 100644
index 0000000..4f8ec94
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio_i2c.txt
@@ -0,0 +1,32 @@
+Device-Tree bindings for i2c gpio driver
+
+Required properties:
+	- compatible = "i2c-gpio";
+	- gpios: sda and scl gpio
+
+
+Optional properties:
+	- i2c-gpio,sda-open-drain: sda as open drain
+	- i2c-gpio,scl-open-drain: scl as open drain
+	- i2c-gpio,scl-output-only: scl as output only
+	- i2c-gpio,delay-us: delay between GPIO operations (may depend on each platform)
+	- i2c-gpio,timeout-ms: timeout to get data
+
+Example nodes:
+
+i2c@0 {
+	compatible = "i2c-gpio";
+	gpios = <&pioA 23 0 /* sda */
+		 &pioA 24 0 /* scl */
+		>;
+	i2c-gpio,sda-open-drain;
+	i2c-gpio,scl-open-drain;
+	i2c-gpio,delay-us = <2>;	/* ~100 kHz */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	rv3029c2@56 {
+		compatible = "rv3029c2";
+		reg = <0x56>;
+	};
+};
diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index a651779..c0330a4 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -14,8 +14,15 @@
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/platform_device.h>
+#include <linux/gpio.h>
+#include <linux/of_gpio.h>
+#include <linux/of_i2c.h>
 
-#include <asm/gpio.h>
+struct i2c_gpio_private_data {
+	struct i2c_adapter adap;
+	struct i2c_algo_bit_data bit_data;
+	struct i2c_gpio_platform_data pdata;
+};
 
 /* Toggle SDA by changing the direction of the pin */
 static void i2c_gpio_setsda_dir(void *data, int state)
@@ -78,24 +85,62 @@ static int i2c_gpio_getscl(void *data)
 	return gpio_get_value(pdata->scl_pin);
 }
 
+static int __devinit of_i2c_gpio_probe(struct device_node *np,
+			     struct i2c_gpio_platform_data *pdata)
+{
+	u32 reg;
+
+	if (of_gpio_count(np) < 2)
+		return -ENODEV;
+
+	pdata->sda_pin = of_get_gpio(np, 0);
+	pdata->scl_pin = of_get_gpio(np, 1);
+
+	if (!gpio_is_valid(pdata->sda_pin) || !gpio_is_valid(pdata->scl_pin)) {
+		pr_err("%s: invalid GPIO pins, sda=%d/scl=%d\n",
+		       np->full_name, pdata->sda_pin, pdata->scl_pin);
+		return -ENODEV;
+	}
+
+	of_property_read_u32(np, "i2c-gpio,delay-us", &pdata->udelay);
+
+	if (!of_property_read_u32(np, "i2c-gpio,timeout-ms", &reg))
+		pdata->timeout = msecs_to_jiffies(reg);
+
+	pdata->sda_is_open_drain =
+		of_property_read_bool(np, "i2c-gpio,sda-open-drain");
+	pdata->scl_is_open_drain =
+		of_property_read_bool(np, "i2c-gpio,scl-open-drain");
+	pdata->scl_is_output_only =
+		of_property_read_bool(np, "i2c-gpio,scl-output-only");
+
+	return 0;
+}
+
 static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 {
+	struct i2c_gpio_private_data *priv;
 	struct i2c_gpio_platform_data *pdata;
 	struct i2c_algo_bit_data *bit_data;
 	struct i2c_adapter *adap;
 	int ret;
 
-	pdata = pdev->dev.platform_data;
-	if (!pdata)
-		return -ENXIO;
+	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+	adap = &priv->adap;
+	bit_data = &priv->bit_data;
+	pdata = &priv->pdata;
 
-	ret = -ENOMEM;
-	adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
-	if (!adap)
-		goto err_alloc_adap;
-	bit_data = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL);
-	if (!bit_data)
-		goto err_alloc_bit_data;
+	if (pdev->dev.of_node) {
+		ret = of_i2c_gpio_probe(pdev->dev.of_node, pdata);
+		if (ret)
+			return ret;
+	} else {
+		if (!pdev->dev.platform_data)
+			return -ENXIO;
+		memcpy(pdata, pdev->dev.platform_data, sizeof(*pdata));
+	}
 
 	ret = gpio_request(pdata->sda_pin, "sda");
 	if (ret)
@@ -143,6 +188,7 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 	adap->algo_data = bit_data;
 	adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
 	adap->dev.parent = &pdev->dev;
+	adap->dev.of_node = pdev->dev.of_node;
 
 	/*
 	 * If "dev->id" is negative we consider it as zero.
@@ -154,7 +200,9 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_add_bus;
 
-	platform_set_drvdata(pdev, adap);
+	of_i2c_register_devices(adap);
+
+	platform_set_drvdata(pdev, priv);
 
 	dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n",
 		 pdata->sda_pin, pdata->scl_pin,
@@ -168,34 +216,40 @@ err_add_bus:
 err_request_scl:
 	gpio_free(pdata->sda_pin);
 err_request_sda:
-	kfree(bit_data);
-err_alloc_bit_data:
-	kfree(adap);
-err_alloc_adap:
 	return ret;
 }
 
 static int __devexit i2c_gpio_remove(struct platform_device *pdev)
 {
+	struct i2c_gpio_private_data *priv;
 	struct i2c_gpio_platform_data *pdata;
 	struct i2c_adapter *adap;
 
-	adap = platform_get_drvdata(pdev);
-	pdata = pdev->dev.platform_data;
+	priv = platform_get_drvdata(pdev);
+	adap = &priv->adap;
+	pdata = &priv->pdata;
 
 	i2c_del_adapter(adap);
 	gpio_free(pdata->scl_pin);
 	gpio_free(pdata->sda_pin);
-	kfree(adap->algo_data);
-	kfree(adap);
 
 	return 0;
 }
 
+#if defined(CONFIG_OF)
+static const struct of_device_id i2c_gpio_dt_ids[] = {
+	{ .compatible = "i2c-gpio", },
+	{ /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, i2c_gpio_dt_ids);
+#endif
+
 static struct platform_driver i2c_gpio_driver = {
 	.driver		= {
 		.name	= "i2c-gpio",
 		.owner	= THIS_MODULE,
+		.of_match_table	= of_match_ptr(i2c_gpio_dt_ids),
 	},
 	.probe		= i2c_gpio_probe,
 	.remove		= __devexit_p(i2c_gpio_remove),
-- 
1.7.7

WARNING: multiple messages have this Message-ID (diff)
From: plagnioj@jcrosoft.com (Jean-Christophe PLAGNIOL-VILLARD)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5 v5] i2c/gpio: add DT support
Date: Thu, 15 Mar 2012 16:56:12 +0100	[thread overview]
Message-ID: <1331826972-14386-1-git-send-email-plagnioj@jcrosoft.com> (raw)
In-Reply-To: <1331642024-19869-1-git-send-email-plagnioj@jcrosoft.com>

To achieve DT support, we need to populate a custom platform_data in a
private struct from DT information. To simplify code, the adapter and
algorithm are also put into the private struct.

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 .../devicetree/bindings/gpio/gpio_i2c.txt          |   32 +++++++
 drivers/i2c/busses/i2c-gpio.c                      |   94 +++++++++++++++----
 2 files changed, 106 insertions(+), 20 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/gpio_i2c.txt

diff --git a/Documentation/devicetree/bindings/gpio/gpio_i2c.txt b/Documentation/devicetree/bindings/gpio/gpio_i2c.txt
new file mode 100644
index 0000000..4f8ec94
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio_i2c.txt
@@ -0,0 +1,32 @@
+Device-Tree bindings for i2c gpio driver
+
+Required properties:
+	- compatible = "i2c-gpio";
+	- gpios: sda and scl gpio
+
+
+Optional properties:
+	- i2c-gpio,sda-open-drain: sda as open drain
+	- i2c-gpio,scl-open-drain: scl as open drain
+	- i2c-gpio,scl-output-only: scl as output only
+	- i2c-gpio,delay-us: delay between GPIO operations (may depend on each platform)
+	- i2c-gpio,timeout-ms: timeout to get data
+
+Example nodes:
+
+i2c at 0 {
+	compatible = "i2c-gpio";
+	gpios = <&pioA 23 0 /* sda */
+		 &pioA 24 0 /* scl */
+		>;
+	i2c-gpio,sda-open-drain;
+	i2c-gpio,scl-open-drain;
+	i2c-gpio,delay-us = <2>;	/* ~100 kHz */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	rv3029c2 at 56 {
+		compatible = "rv3029c2";
+		reg = <0x56>;
+	};
+};
diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index a651779..c0330a4 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -14,8 +14,15 @@
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/platform_device.h>
+#include <linux/gpio.h>
+#include <linux/of_gpio.h>
+#include <linux/of_i2c.h>
 
-#include <asm/gpio.h>
+struct i2c_gpio_private_data {
+	struct i2c_adapter adap;
+	struct i2c_algo_bit_data bit_data;
+	struct i2c_gpio_platform_data pdata;
+};
 
 /* Toggle SDA by changing the direction of the pin */
 static void i2c_gpio_setsda_dir(void *data, int state)
@@ -78,24 +85,62 @@ static int i2c_gpio_getscl(void *data)
 	return gpio_get_value(pdata->scl_pin);
 }
 
+static int __devinit of_i2c_gpio_probe(struct device_node *np,
+			     struct i2c_gpio_platform_data *pdata)
+{
+	u32 reg;
+
+	if (of_gpio_count(np) < 2)
+		return -ENODEV;
+
+	pdata->sda_pin = of_get_gpio(np, 0);
+	pdata->scl_pin = of_get_gpio(np, 1);
+
+	if (!gpio_is_valid(pdata->sda_pin) || !gpio_is_valid(pdata->scl_pin)) {
+		pr_err("%s: invalid GPIO pins, sda=%d/scl=%d\n",
+		       np->full_name, pdata->sda_pin, pdata->scl_pin);
+		return -ENODEV;
+	}
+
+	of_property_read_u32(np, "i2c-gpio,delay-us", &pdata->udelay);
+
+	if (!of_property_read_u32(np, "i2c-gpio,timeout-ms", &reg))
+		pdata->timeout = msecs_to_jiffies(reg);
+
+	pdata->sda_is_open_drain =
+		of_property_read_bool(np, "i2c-gpio,sda-open-drain");
+	pdata->scl_is_open_drain =
+		of_property_read_bool(np, "i2c-gpio,scl-open-drain");
+	pdata->scl_is_output_only =
+		of_property_read_bool(np, "i2c-gpio,scl-output-only");
+
+	return 0;
+}
+
 static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 {
+	struct i2c_gpio_private_data *priv;
 	struct i2c_gpio_platform_data *pdata;
 	struct i2c_algo_bit_data *bit_data;
 	struct i2c_adapter *adap;
 	int ret;
 
-	pdata = pdev->dev.platform_data;
-	if (!pdata)
-		return -ENXIO;
+	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+	adap = &priv->adap;
+	bit_data = &priv->bit_data;
+	pdata = &priv->pdata;
 
-	ret = -ENOMEM;
-	adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
-	if (!adap)
-		goto err_alloc_adap;
-	bit_data = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL);
-	if (!bit_data)
-		goto err_alloc_bit_data;
+	if (pdev->dev.of_node) {
+		ret = of_i2c_gpio_probe(pdev->dev.of_node, pdata);
+		if (ret)
+			return ret;
+	} else {
+		if (!pdev->dev.platform_data)
+			return -ENXIO;
+		memcpy(pdata, pdev->dev.platform_data, sizeof(*pdata));
+	}
 
 	ret = gpio_request(pdata->sda_pin, "sda");
 	if (ret)
@@ -143,6 +188,7 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 	adap->algo_data = bit_data;
 	adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
 	adap->dev.parent = &pdev->dev;
+	adap->dev.of_node = pdev->dev.of_node;
 
 	/*
 	 * If "dev->id" is negative we consider it as zero.
@@ -154,7 +200,9 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_add_bus;
 
-	platform_set_drvdata(pdev, adap);
+	of_i2c_register_devices(adap);
+
+	platform_set_drvdata(pdev, priv);
 
 	dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n",
 		 pdata->sda_pin, pdata->scl_pin,
@@ -168,34 +216,40 @@ err_add_bus:
 err_request_scl:
 	gpio_free(pdata->sda_pin);
 err_request_sda:
-	kfree(bit_data);
-err_alloc_bit_data:
-	kfree(adap);
-err_alloc_adap:
 	return ret;
 }
 
 static int __devexit i2c_gpio_remove(struct platform_device *pdev)
 {
+	struct i2c_gpio_private_data *priv;
 	struct i2c_gpio_platform_data *pdata;
 	struct i2c_adapter *adap;
 
-	adap = platform_get_drvdata(pdev);
-	pdata = pdev->dev.platform_data;
+	priv = platform_get_drvdata(pdev);
+	adap = &priv->adap;
+	pdata = &priv->pdata;
 
 	i2c_del_adapter(adap);
 	gpio_free(pdata->scl_pin);
 	gpio_free(pdata->sda_pin);
-	kfree(adap->algo_data);
-	kfree(adap);
 
 	return 0;
 }
 
+#if defined(CONFIG_OF)
+static const struct of_device_id i2c_gpio_dt_ids[] = {
+	{ .compatible = "i2c-gpio", },
+	{ /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, i2c_gpio_dt_ids);
+#endif
+
 static struct platform_driver i2c_gpio_driver = {
 	.driver		= {
 		.name	= "i2c-gpio",
 		.owner	= THIS_MODULE,
+		.of_match_table	= of_match_ptr(i2c_gpio_dt_ids),
 	},
 	.probe		= i2c_gpio_probe,
 	.remove		= __devexit_p(i2c_gpio_remove),
-- 
1.7.7

  parent reply	other threads:[~2012-03-15 15:56 UTC|newest]

Thread overview: 343+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <a>
2011-04-19 11:43 ` [PATCH 0/3 V3] Introduce strtobool (previously usr_strtobool) Jonathan Cameron
2011-04-19 11:43 ` [PATCH 1/3] Add a strtobool function matching semantics of existing in kernel equivalents Jonathan Cameron
2011-04-19 20:28   ` Ryan Mallon
2011-04-19 11:43 ` [PATCH 2/3] debugfs: move to new strtobool Jonathan Cameron
2011-04-19 20:30   ` Ryan Mallon
2011-04-20  9:33     ` Jonathan Cameron
2011-04-25 22:54       ` Greg KH
2011-04-25 23:11         ` Ryan Mallon
2011-04-19 11:43 ` [PATCH 3/3] params.c: Use new strtobool function to process boolean inputs Jonathan Cameron
2011-11-22 15:54 ` [PATCH v7 0/3] ARM: mxs: add recording support for saif Dong Aisheng
2011-11-22 15:54   ` Dong Aisheng
2011-11-24  7:36   ` Shawn Guo
2011-11-24  7:36     ` Shawn Guo
2011-11-24  7:46     ` Shawn Guo
2011-11-24  7:46       ` Shawn Guo
2011-11-24  7:41       ` Uwe Kleine-König
2011-11-24  7:41         ` Uwe Kleine-König
2011-11-24  7:49       ` Wolfram Sang
2011-11-24  7:49         ` Wolfram Sang
2011-11-24  8:23         ` Shawn Guo
2011-11-24  8:23           ` Shawn Guo
2011-11-24 10:46           ` Wolfram Sang
2011-11-24 10:46             ` Wolfram Sang
2011-11-22 15:54 ` [PATCH v7 1/3] ARM: mxs: add saif clkmux functions Dong Aisheng
2011-11-22 15:54   ` Dong Aisheng
2011-11-22 15:54 ` [PATCH v7 2/3] ARM: mx28evk: add platform data for saif Dong Aisheng
2011-11-22 15:54   ` Dong Aisheng
2011-11-22 15:54 ` [PATCH v7 3/3] ARM: mx28evk: set a initial clock rate " Dong Aisheng
2011-11-22 15:54   ` Dong Aisheng
2011-11-30  8:16 ` [meta-efl 00/11] efl upgrade Martin Jansa
2011-11-30  8:16   ` [meta-efl 01/11] elsa: add sessreg xauth to RDEPENDS Martin Jansa
2011-11-30  8:16   ` [meta-efl 02/11] elsa: add elsa.conf to CONFFILES Martin Jansa
2011-11-30  8:16   ` [meta-efl 03/11] elsa: use common-* instead of system-auth in pam config Martin Jansa
2011-11-30  8:16   ` [meta-efl 04/11] e-base: bump EFL_SRCREV for 1.1.0 alpha versions Martin Jansa
2011-11-30  8:16   ` [meta-efl 05/11] efl.bbclass: don't remove STAGING_LIBDIR STAGING_INCDIR from efl pkgconfig files Martin Jansa
2011-11-30  8:16   ` [meta-efl 06/11] epdf: drop upstream applied patch and ewl is gone too Martin Jansa
2011-11-30  8:16   ` [meta-efl 07/11] eeze: pass /bin/true instead of eject which is not available Martin Jansa
2011-11-30  9:27     ` Koen Kooi
2011-12-01  9:00       ` Martin Jansa
2011-11-30  8:16   ` [meta-efl 08/11] edje: fix license metadata Martin Jansa
2011-11-30  8:16   ` [meta-efl 09/11] elementary: " Martin Jansa
2011-11-30  8:16   ` [meta-efl 10/11] elementary: add gettextize patch Martin Jansa
2011-11-30  8:16   ` [meta-efl 11/11] elementary: disable web support Martin Jansa
2011-11-30  9:28     ` Koen Kooi
2011-11-30 10:34       ` Martin Jansa
2012-02-19 14:24 ` [Qemu-devel] [PATCH 2/2] qemu-io: fix segment fault when the image format is qed zwu.kernel
2012-02-19 21:24   ` Christoph Hellwig
2012-02-20  6:22     ` Zhi Yong Wu
2012-03-13 12:33 ` [PATCH 1/5 v4] i2c/gpio: add DT support Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33   ` Jean-Christophe PLAGNIOL-VILLARD
     [not found]   ` <1331642024-19869-1-git-send-email-plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>
2012-03-13 14:08     ` Wolfram Sang
2012-03-13 14:08       ` Wolfram Sang
     [not found]       ` <20120313140822.GD2488-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-13 16:47         ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 16:47           ` Jean-Christophe PLAGNIOL-VILLARD
     [not found]           ` <20120313164756.GF18320-RQcB7r2h9QmfDR2tN2SG5Ni2O/JbrIOy@public.gmane.org>
2012-03-13 19:46             ` Wolfram Sang
2012-03-13 19:46               ` Wolfram Sang
2012-03-15 15:56     ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2012-03-15 15:56       ` [PATCH 1/5 v5] " Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33 ` [PATCH 2/5 v4] ARM: at91: sam9g20 add i2c " Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33   ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33 ` [PATCH 3/5 v4] ARM: at91: usb_a9g20 add DT i2c support Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33   ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33 ` [PATCH 4/5 v4] ARM: at91: sam9g45 add i2c DT support Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33   ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33 ` [PATCH 5/5 v4] ARM: at91: sam9x5 " Jean-Christophe PLAGNIOL-VILLARD
2012-03-13 12:33   ` Jean-Christophe PLAGNIOL-VILLARD
2012-07-05  6:28 ` [PATCH] mm/memcg: replace inexistence move_lock_page_cgroup() by move_lock_mem_cgroup() in comment Wanpeng Li
2012-07-05  6:28   ` Wanpeng Li
2012-07-09  4:37   ` Kamezawa Hiroyuki
2012-07-09  4:37     ` Kamezawa Hiroyuki
2012-07-11 13:24 ` [PATCH RFC] mm/memcg: calculate max hierarchy limit number instead of min Wanpeng Li
2012-07-11 13:24   ` Wanpeng Li
2012-07-11 13:47   ` Michal Hocko
2012-07-11 13:47     ` Michal Hocko
2012-07-12  9:32     ` Wanpeng Li
2012-07-12  9:32       ` Wanpeng Li
2012-07-12  9:32       ` Wanpeng Li
2012-07-12 10:18       ` Michal Hocko
2012-07-12 10:18         ` Michal Hocko
2012-07-12 10:18         ` Michal Hocko
2012-07-19  6:07   ` Kamezawa Hiroyuki
2012-07-19  6:07     ` Kamezawa Hiroyuki
2012-07-19  6:30     ` Wanpeng Li
2012-07-19  6:30       ` Wanpeng Li
2012-07-19  6:30       ` Wanpeng Li
2012-07-17 16:00 ` [PATCH V2 0/3] Update connman to v1.3, fix dependencies and runtime Andrei Gherzan
2012-07-17 16:03   ` [PATCH V2 1/3] connman: Update to version 1.3 Andrei Gherzan
2012-07-17 16:03   ` [PATCH V2 2/3] connman.inc: Add missing dependencies needed by some tests Andrei Gherzan
2012-07-17 16:03   ` [PATCH V2 3/3] connman: Add patches to fix connman on fs with no d_type support Andrei Gherzan
2012-07-18  3:05 ` [PATCH] mm/memcg: wrap mem_cgroup_from_css function Wanpeng Li
2012-07-18  3:05   ` Wanpeng Li
2012-07-18 21:36   ` Andrew Morton
2012-07-18 21:36     ` Andrew Morton
2012-07-19  1:31     ` Wanpeng Li
2012-07-19  1:31       ` Wanpeng Li
2012-07-19  9:14   ` Kirill A. Shutemov
2012-07-19  9:14     ` Kirill A. Shutemov
2012-07-19  9:23     ` Wanpeng Li
2012-07-19  9:23       ` Wanpeng Li
2012-07-19  9:29       ` Kirill A. Shutemov
2012-07-19  9:29         ` Kirill A. Shutemov
2012-07-19  9:38       ` Gavin Shan
2012-07-19  9:45         ` Kirill A. Shutemov
2012-07-19  9:45           ` Kirill A. Shutemov
2012-07-19 10:19         ` Wanpeng Li
2012-07-19 10:19           ` Wanpeng Li
2012-07-19  9:38       ` Gavin Shan
2012-09-05 12:04 ` [PATCH] drm: use %*ph to dump small buffers Andy Shevchenko
2012-09-23 19:24 ` [PATCH 1/6] xfstest: add fio git submodule Dmitry Monakhov
2012-09-23 19:24   ` Dmitry Monakhov
2012-09-23 19:24   ` [PATCH 2/6] xfstest: add configurable load factors Dmitry Monakhov
2012-09-23 19:24     ` Dmitry Monakhov
2012-09-23 19:24   ` [PATCH 3/6] xfstest: allow fsstress to use load factor where appropriate Dmitry Monakhov
2012-09-23 19:24     ` Dmitry Monakhov
2012-09-23 19:24   ` [PATCH 4/6] xfstest add fallocate/truncate vs AIO/DIO stress test Dmitry Monakhov
2012-09-23 19:24     ` Dmitry Monakhov
2012-09-23 19:24   ` [PATCH 5/6] xfstest: add fallocate/punch_hole " Dmitry Monakhov
2012-09-23 19:24     ` Dmitry Monakhov
2012-09-23 19:24   ` [PATCH 6/6] xfstest: add defragmentation stress test for ext4 Dmitry Monakhov
2012-09-23 19:24     ` Dmitry Monakhov
2012-09-24  3:16   ` [PATCH 1/6] xfstest: add fio git submodule Eric Sandeen
2012-09-24  3:16     ` Eric Sandeen
2012-09-24 10:03     ` Dmitry Monakhov
2012-09-24 10:03       ` Dmitry Monakhov
2012-09-24 11:37       ` Dave Chinner
2012-09-24 11:37         ` Dave Chinner
2012-09-24 12:38         ` Dmitry Monakhov
2012-09-24 12:38           ` Dmitry Monakhov
2012-09-24 13:53           ` Dave Chinner
2012-09-24 13:53             ` Dave Chinner
2012-09-24 12:23     ` Greg Freemyer
2012-09-24 12:23       ` Greg Freemyer
2012-09-24 12:41       ` Dmitry Monakhov
2012-09-24 12:41         ` Dmitry Monakhov
2012-11-05 19:53 ` [PATCH] can: ti_hecc: WIP: fix out-of-order problem - CANMIN Version Marc Kleine-Budde
2012-11-07 12:10   ` AnilKumar, Chimata
2012-11-07 12:27     ` Marc Kleine-Budde
2012-11-07 13:56       ` AnilKumar, Chimata
2012-11-07 14:16         ` Marc Kleine-Budde
2013-02-14  8:36 ` [PATCH 1/4] powerpc: Make VSID_BITS* dependency explicit Aneesh Kumar K.V
2013-02-14  8:36   ` [PATCH 2/4] powerpc: Update kernel VSID range Aneesh Kumar K.V
2013-02-14 17:21     ` Aneesh Kumar K.V
2013-02-15  4:42     ` Paul Mackerras
2013-02-14  8:36   ` [PATCH 3/4] powerpc: Don't update r10 early in the call Aneesh Kumar K.V
2013-02-14  8:36   ` [PATCH 4/4] powerpc: Add vm debug code to catch errors Aneesh Kumar K.V
2013-02-15  4:46     ` Paul Mackerras
2013-08-13 13:31 ` [PATCH V2 00/35] CPUFreq: Implement light weight ->target(): for 3.13 Viresh Kumar
2013-08-13 13:43   ` Viresh Kumar
2013-08-13 13:31   ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 01/35] cpufreq: Implement light weight ->target_index() routine Viresh Kumar
2013-08-13 13:44     ` Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-18 10:41     ` amit daniel kachhap
2013-08-18 10:53       ` amit daniel kachhap
2013-08-18 10:41       ` amit daniel kachhap
2013-08-18 10:41       ` amit daniel kachhap
2013-08-19  4:37       ` Viresh Kumar
2013-08-19  4:37         ` Viresh Kumar
2013-08-19  6:16         ` amit daniel kachhap
2013-08-19  6:16           ` amit daniel kachhap
2013-08-19  6:19           ` Viresh Kumar
2013-08-19  6:19             ` Viresh Kumar
2013-08-19  6:46             ` amit daniel kachhap
2013-08-19  6:46               ` amit daniel kachhap
2013-08-19  6:49               ` Viresh Kumar
2013-08-19  6:49                 ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 02/35] cpufreq: remove CONFIG_CPU_FREQ_TABLE Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 03/35] cpufreq: acpi: Covert to light weight ->target_index() routine Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 04/35] cpufreq: arm_big_little: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 05/35] cpufreq: at32ap: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-14  8:00     ` Hans-Christian Egtvedt
2013-08-14  8:00       ` Hans-Christian Egtvedt
2013-08-13 13:32   ` [PATCH V2 06/35] cpufreq: blackfin: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 07/35] cpufreq: cpu0: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 08/35] cpufreq: cris: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 09/35] cpufreq: davinci: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 10/35] cpufreq: dbx500: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 11/35] cpufreq: e_powersaver: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 12/35] cpufreq: elanfreq: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 13/35] cpufreq: exynos: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 14/35] cpufreq: ia64: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 15/35] cpufreq: imx6q: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 16/35] cpufreq: kirkwood: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 17/35] cpufreq: longhaul: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 18/35] cpufreq: loongson2: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 19/35] cpufreq: maple: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 20/35] cpufreq: omap: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 21/35] cpufreq: p4: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 22/35] cpufreq: pasemi: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 23/35] cpufreq: pmac32: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 24/35] cpufreq: powernow: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 25/35] cpufreq: ppc: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 26/35] cpufreq: pxa: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 27/35] cpufreq: s3c2416: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 28/35] cpufreq: s3c64xx: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 29/35] cpufreq: s5pv210: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 30/35] cpufreq: sa11x0: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 31/35] cpufreq: sc520: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 32/35] cpufreq: sparc: " Viresh Kumar
2013-08-13 13:44     ` Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 33/35] cpufreq: SPEAr: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 34/35] cpufreq: speedstep: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:32   ` [PATCH V2 35/35] cpufreq: tegra: " Viresh Kumar
2013-08-13 13:32     ` Viresh Kumar
2013-08-13 13:46   ` [PATCH V2 00/35] CPUFreq: Implement light weight ->target(): for 3.13 Viresh Kumar
2013-08-13 13:58     ` Viresh Kumar
2013-08-13 13:46     ` Viresh Kumar
2013-08-14  5:29   ` Viresh Kumar
2013-08-14  5:29     ` Viresh Kumar
2013-11-06  0:11 ` [PATCH v4 1/5] iio: hid-sensors: accelerometer: Add sensitivity Srinivas Pandruvada
2013-11-06  0:11   ` [PATCH v4 2/5] iio: hid-sensors: gyro : " Srinivas Pandruvada
2013-11-06  0:11   ` [PATCH v4 3/5] iio: hid-sensors: light/als " Srinivas Pandruvada
2013-11-06  0:11   ` [PATCH v4 4/5] iio: hid-sensors: magnetometer " Srinivas Pandruvada
2013-11-09 11:56     ` Jonathan Cameron
2013-11-06  0:11   ` [PATCH v4 5/5] iio: hid-sensors: Added Inclinometer 3D Srinivas Pandruvada
2013-11-09 12:11     ` Jonathan Cameron
2013-12-03 20:37       ` Jonathan Cameron
2014-01-03  3:01 ` [PATCH 0/3] mtd: gpmi: add subpage read support Huang Shijie
2014-01-03  3:01   ` Huang Shijie
2014-02-21  6:51   ` Huang Shijie
2014-02-21  6:51     ` Huang Shijie
2014-03-07  7:27   ` Brian Norris
2014-03-07  7:27     ` Brian Norris
2014-03-07  7:32     ` Huang Shijie
2014-03-07  7:32       ` Huang Shijie
2014-03-07  7:34       ` Brian Norris
2014-03-07  7:34         ` Brian Norris
2014-01-03  3:01 ` [PATCH 1/3] mtd: nand: add "page" argument for read_subpage hook Huang Shijie
2014-01-03  3:01   ` Huang Shijie
2014-01-03  3:01 ` [PATCH 2/3] mtd: gpmi: do not use the mtd->writesize Huang Shijie
2014-01-03  3:01   ` Huang Shijie
2014-01-03  3:01 ` [PATCH 3/3] mtd: gpmi: add subpage read support Huang Shijie
2014-01-03  3:01   ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 0/7] mtd: spi-nor: Add the DDR quad " Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 1/7] mtd: spi-nor: fix the wrong dummy value Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 19:41   ` Marek Vasut
2014-04-23 19:41     ` Marek Vasut
2014-04-23 19:41     ` Marek Vasut
     [not found]     ` <201404232141.27005.marex-ynQEQJNshbs@public.gmane.org>
2014-04-24  4:50       ` Huang Shijie
2014-04-24  4:50         ` Huang Shijie
2014-04-24  4:50         ` Huang Shijie
2014-04-24  4:50         ` Huang Shijie
2014-04-24 13:45         ` Marek Vasut
2014-04-24 13:45           ` Marek Vasut
2014-04-24 13:45           ` Marek Vasut
2014-04-23 10:16 ` [PATCH v1 2/7] mtd: spi-nor: add DDR quad read support Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
     [not found]   ` <1398248215-26768-3-git-send-email-b32955-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2014-04-23 19:45     ` Marek Vasut
2014-04-23 19:45       ` Marek Vasut
2014-04-23 19:45       ` Marek Vasut
2014-04-24  4:53       ` Huang Shijie
2014-04-24  4:53         ` Huang Shijie
2014-04-24  4:53         ` Huang Shijie
2014-04-24  4:53         ` Huang Shijie
2014-04-24 13:43         ` Marek Vasut
2014-04-24 13:43           ` Marek Vasut
2014-04-24 13:43           ` Marek Vasut
     [not found]           ` <201404241543.51752.marex-ynQEQJNshbs@public.gmane.org>
2014-04-24 14:26             ` Huang Shijie
2014-04-24 14:26               ` Huang Shijie
2014-04-24 14:26               ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 3/7] Documentation: mtd: add a new document for SPI NOR flash Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 4/7] Documentation: fsl-quadspi: update the document Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 5/7] mtd: fsl-quadspi: get the dummy cycles for DDR Quad read from the DT property Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 19:48   ` Marek Vasut
2014-04-23 19:48     ` Marek Vasut
2014-04-23 19:48     ` Marek Vasut
     [not found]     ` <201404232148.51034.marex-ynQEQJNshbs@public.gmane.org>
2014-04-24  4:58       ` Huang Shijie
2014-04-24  4:58         ` Huang Shijie
2014-04-24  4:58         ` Huang Shijie
2014-04-24  4:58         ` Huang Shijie
2014-04-24 13:41         ` Marek Vasut
2014-04-24 13:41           ` Marek Vasut
2014-04-24 13:41           ` Marek Vasut
2014-04-24 14:27           ` Huang Shijie
2014-04-24 14:27             ` Huang Shijie
2014-04-24 14:27             ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 6/7] mtd: fsl-quadspi: use the information stored in spi-nor{} Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16 ` [PATCH v1 7/7] mtd: fsl-quadspi: add the DDR quad read support Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-04-23 10:16   ` Huang Shijie
2014-09-12 11:21 ` [Qemu-devel] [PATCHv2 0/4] introduce max_transfer_length Peter Lieven
2014-09-12 11:21   ` [Qemu-devel] [PATCHv2 1/4] BlockLimits: " Peter Lieven
2014-09-12 11:21   ` [Qemu-devel] [PATCHv2 2/4] block: immediately cancel oversized read/write requests Peter Lieven
2014-09-12 11:21   ` [Qemu-devel] [PATCHv2 3/4] block/iscsi: set max_transfer_length Peter Lieven
2014-09-12 11:21   ` [Qemu-devel] [PATCHv2 4/4] block: avoid creating oversized writes in multiwrite_merge Peter Lieven
2015-12-17 13:35 ` [PATCH net 0/2] Mellanox mlx4 driver fixes Or Gerlitz
2015-12-17 13:35   ` [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task Or Gerlitz
2015-12-17 13:35   ` [PATCH net 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup Or Gerlitz
2015-12-18 19:48   ` [PATCH net 0/2] Mellanox mlx4 driver fixes David Miller

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=1331826972-14386-1-git-send-email-plagnioj@jcrosoft.com \
    --to=plagnioj-sclmfoaustbwk0htik3j/w@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.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 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.