* [PATCH v2 1/4] lis3: lis3lv02d: remove lis3lv02d driver DT init
2012-09-14 8:06 [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support AnilKumar Ch
@ 2012-09-14 8:06 ` AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 2/4] lis3: lis3lv02d_spi: Add lis3lv02d device tree init AnilKumar Ch
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: AnilKumar Ch @ 2012-09-14 8:06 UTC (permalink / raw)
To: linux-arm-kernel
Remove lis3lv02d driver device tree initialization from core driver
and move it to individual drivers. With the current implementation
some pdata parameters are missing if we use lis3lv02d_init_device()
in lis3lv02d_i2c driver.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
drivers/misc/lis3lv02d/lis3lv02d.c | 8 ++------
drivers/misc/lis3lv02d/lis3lv02d.h | 1 +
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
index 79349ec..026021e 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d.c
+++ b/drivers/misc/lis3lv02d/lis3lv02d.c
@@ -944,7 +944,7 @@ static void lis3lv02d_8b_configure(struct lis3lv02d *lis3,
}
#ifdef CONFIG_OF
-static int lis3lv02d_init_dt(struct lis3lv02d *lis3)
+int lis3lv02d_init_dt(struct lis3lv02d *lis3)
{
struct lis3lv02d_platform_data *pdata;
struct device_node *np = lis3->of_node;
@@ -1084,7 +1084,7 @@ static int lis3lv02d_init_dt(struct lis3lv02d *lis3)
}
#else
-static int lis3lv02d_init_dt(struct lis3lv02d *lis3)
+int lis3lv02d_init_dt(struct lis3lv02d *lis3)
{
return 0;
}
@@ -1100,10 +1100,6 @@ int lis3lv02d_init_device(struct lis3lv02d *lis3)
irq_handler_t thread_fn;
int irq_flags = 0;
- err = lis3lv02d_init_dt(lis3);
- if (err < 0)
- return err;
-
lis3->whoami = lis3lv02d_read_8(lis3, WHO_AM_I);
switch (lis3->whoami) {
diff --git a/drivers/misc/lis3lv02d/lis3lv02d.h b/drivers/misc/lis3lv02d/lis3lv02d.h
index 4cf0779..b5505fa 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d.h
+++ b/drivers/misc/lis3lv02d/lis3lv02d.h
@@ -326,5 +326,6 @@ void lis3lv02d_joystick_disable(struct lis3lv02d *lis3);
void lis3lv02d_poweroff(struct lis3lv02d *lis3);
int lis3lv02d_poweron(struct lis3lv02d *lis3);
int lis3lv02d_remove_fs(struct lis3lv02d *lis3);
+int lis3lv02d_init_dt(struct lis3lv02d *lis3);
extern struct lis3lv02d lis3_dev;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/4] lis3: lis3lv02d_spi: Add lis3lv02d device tree init
2012-09-14 8:06 [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 1/4] lis3: lis3lv02d: remove lis3lv02d driver DT init AnilKumar Ch
@ 2012-09-14 8:06 ` AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 3/4] lis3: lis3lv02d_i2c: " AnilKumar Ch
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: AnilKumar Ch @ 2012-09-14 8:06 UTC (permalink / raw)
To: linux-arm-kernel
Add lis3lv02d device tree initialization code/API to take pdata
from device node. Also remove CONFIG_OF ifdef from the driver,
if CONFIG_OF is not defined then OF APIs returns 0.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
drivers/misc/lis3lv02d/lis3lv02d_spi.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/misc/lis3lv02d/lis3lv02d_spi.c b/drivers/misc/lis3lv02d/lis3lv02d_spi.c
index 23f3986..e1db6f4 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d_spi.c
+++ b/drivers/misc/lis3lv02d/lis3lv02d_spi.c
@@ -84,10 +84,12 @@ static int __devinit lis302dl_spi_probe(struct spi_device *spi)
lis3_dev.ac = lis3lv02d_axis_normal;
lis3_dev.pdata = spi->dev.platform_data;
-#ifdef CONFIG_OF
- if (of_match_device(lis302dl_spi_dt_ids, &spi->dev))
+ if (of_match_device(lis302dl_spi_dt_ids, &spi->dev)) {
lis3_dev.of_node = spi->dev.of_node;
-#endif
+ ret = lis3lv02d_init_dt(&lis3_dev);
+ if (ret)
+ return ret;
+ }
spi_set_drvdata(spi, &lis3_dev);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/4] lis3: lis3lv02d_i2c: Add lis3lv02d device tree init
2012-09-14 8:06 [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 1/4] lis3: lis3lv02d: remove lis3lv02d driver DT init AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 2/4] lis3: lis3lv02d_spi: Add lis3lv02d device tree init AnilKumar Ch
@ 2012-09-14 8:06 ` AnilKumar Ch
2012-09-14 8:06 ` [PATCH v2 4/4] ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm AnilKumar Ch
2012-09-14 15:31 ` [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support Arnd Bergmann
4 siblings, 0 replies; 8+ messages in thread
From: AnilKumar Ch @ 2012-09-14 8:06 UTC (permalink / raw)
To: linux-arm-kernel
Add lis3lv02d device tree initialization code/API to take pdata
from device node. Also adds device tree init matching table
support to lis3lv02d_i2c driver. If the driver data is passed
from device tree, then this driver picks up platform data
from device node through common/generic lis3lv02d.c driver.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
drivers/misc/lis3lv02d/lis3lv02d_i2c.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c
index 15255eb..56b5124 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c
+++ b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c
@@ -31,6 +31,9 @@
#include <linux/i2c.h>
#include <linux/pm_runtime.h>
#include <linux/delay.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+
#include "lis3lv02d.h"
#define DRV_NAME "lis3lv02d_i2c"
@@ -102,12 +105,27 @@ static int lis3_i2c_init(struct lis3lv02d *lis3)
static union axis_conversion lis3lv02d_axis_map =
{ .as_array = { LIS3_DEV_X, LIS3_DEV_Y, LIS3_DEV_Z } };
+static struct of_device_id lis3lv02d_i2c_dt_ids[] = {
+ { .compatible = "st,lis3lv02d-i2c" },
+ { .compatible = "st,lis331dlh-i2c" },
+ {}
+};
+MODULE_DEVICE_TABLE(of, lis3lv02d_i2c_dt_ids);
+
static int __devinit lis3lv02d_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
int ret = 0;
struct lis3lv02d_platform_data *pdata = client->dev.platform_data;
+ if (of_match_device(lis3lv02d_i2c_dt_ids, &client->dev)) {
+ lis3_dev.of_node = client->dev.of_node;
+ ret = lis3lv02d_init_dt(&lis3_dev);
+ if (ret)
+ return ret;
+ pdata = lis3_dev.pdata;
+ }
+
if (pdata) {
if ((pdata->driver_features & LIS3_USE_BLOCK_READ) &&
(i2c_check_functionality(client->adapter,
@@ -255,6 +273,7 @@ static struct i2c_driver lis3lv02d_i2c_driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.pm = &lis3_pm_ops,
+ .of_match_table = of_match_ptr(lis3lv02d_i2c_dt_ids),
},
.probe = lis3lv02d_i2c_probe,
.remove = __devexit_p(lis3lv02d_i2c_remove),
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/4] ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm
2012-09-14 8:06 [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support AnilKumar Ch
` (2 preceding siblings ...)
2012-09-14 8:06 ` [PATCH v2 3/4] lis3: lis3lv02d_i2c: " AnilKumar Ch
@ 2012-09-14 8:06 ` AnilKumar Ch
2012-09-14 15:31 ` [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support Arnd Bergmann
4 siblings, 0 replies; 8+ messages in thread
From: AnilKumar Ch @ 2012-09-14 8:06 UTC (permalink / raw)
To: linux-arm-kernel
Add lis331dlh device tree data to am335x-evm.dts. In AM335x EVM
lis331dlh accelerometer is connected to I2C2 bus. So this patch
change the status of I2C2 node to "okay" to use I2C2 bus. Also
added all the required platform data to am335x-evm.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
arch/arm/boot/dts/am335x-evm.dts | 42 ++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index 9fb59c5..890f955 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -47,6 +47,15 @@
};
};
+ i2c2: i2c at 4802a000 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ lis331dlh: lis331dlh at 18 {
+ reg = <0x18>;
+ };
+ };
+
dcan1: d_can at 481d0000 {
status = "okay";
pinctrl-names = "default";
@@ -61,6 +70,39 @@
regulator-max-microvolt = <5000000>;
regulator-boot-on;
};
+
+ lis3_reg: fixedregulator at 1 {
+ compatible = "regulator-fixed";
+ regulator-name = "lis3_reg";
+ regulator-boot-on;
+ };
+};
+
+&lis331dlh {
+ compatible = "st,lis331dlh-i2c";
+ Vdd-supply = <&lis3_reg>;
+ Vdd_IO-supply = <&lis3_reg>;
+
+ st,click-single-x;
+ st,click-single-y;
+ st,click-single-z;
+ st,click-thresh-x = <10>;
+ st,click-thresh-y = <10>;
+ st,click-thresh-z = <10>;
+ st,irq1-click;
+ st,irq2-click;
+ st,wakeup-x-lo;
+ st,wakeup-x-hi;
+ st,wakeup-y-lo;
+ st,wakeup-y-hi;
+ st,wakeup-z-lo;
+ st,wakeup-z-hi;
+ st,min-limit-x = <120>;
+ st,min-limit-y = <120>;
+ st,min-limit-z = <140>;
+ st,max-limit-x = <550>;
+ st,max-limit-y = <550>;
+ st,max-limit-z = <750>;
};
/include/ "tps65910.dtsi"
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support
2012-09-14 8:06 [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support AnilKumar Ch
` (3 preceding siblings ...)
2012-09-14 8:06 ` [PATCH v2 4/4] ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm AnilKumar Ch
@ 2012-09-14 15:31 ` Arnd Bergmann
2012-09-14 19:51 ` Andrew Morton
4 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2012-09-14 15:31 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 14 September 2012, AnilKumar Ch wrote:
> Adds device tree support to lis3lv02d_i2c driver. Along with this
> DT init is moved from core driver to individual drivers, with the
> current implementation some pdata is missing in lis3lv02d_i2c driver.
>
> Also adds platform data for lis331dlh driver to am335x-EVM. These
> patches were tested on AM335x-EVM.
>
No further comments on this version besides the ones I already gave
on v1.
Arnd
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support
2012-09-14 15:31 ` [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support Arnd Bergmann
@ 2012-09-14 19:51 ` Andrew Morton
2012-09-14 20:01 ` Arnd Bergmann
0 siblings, 1 reply; 8+ messages in thread
From: Andrew Morton @ 2012-09-14 19:51 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, 14 Sep 2012 15:31:36 +0000
Arnd Bergmann <arnd@arndb.de> wrote:
> On Friday 14 September 2012, AnilKumar Ch wrote:
> > Adds device tree support to lis3lv02d_i2c driver. Along with this
> > DT init is moved from core driver to individual drivers, with the
> > current implementation some pdata is missing in lis3lv02d_i2c driver.
> >
> > Also adds platform data for lis331dlh driver to am335x-EVM. These
> > patches were tested on AM335x-EVM.
> >
>
> No further comments on this version besides the ones I already gave
> on v1.
My linux-arm-kernel subscription died so I don't know what your v1
comments said. Were they fatal?
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 0/4] lis3: lis3lv02d_i2c: Add device tree support
2012-09-14 19:51 ` Andrew Morton
@ 2012-09-14 20:01 ` Arnd Bergmann
0 siblings, 0 replies; 8+ messages in thread
From: Arnd Bergmann @ 2012-09-14 20:01 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 14 September 2012, Andrew Morton wrote:
> On Fri, 14 Sep 2012 15:31:36 +0000
> Arnd Bergmann <arnd@arndb.de> wrote:
>
> > On Friday 14 September 2012, AnilKumar Ch wrote:
> > > Adds device tree support to lis3lv02d_i2c driver. Along with this
> > > DT init is moved from core driver to individual drivers, with the
> > > current implementation some pdata is missing in lis3lv02d_i2c driver.
> > >
> > > Also adds platform data for lis331dlh driver to am335x-EVM. These
> > > patches were tested on AM335x-EVM.
> > >
> >
> > No further comments on this version besides the ones I already gave
> > on v1.
>
> My linux-arm-kernel subscription died so I don't know what your v1
> comments said. Were they fatal?
>
Just details. AnilKumar just said in that thread that he'd do a version 3
based on the earlier discussion once I was done looking at v2, so I replied
here to say that there is nothing new to add.
Arnd
^ permalink raw reply [flat|nested] 8+ messages in thread