lis3: lis3lv02d_i2c: Add device tree support
v3 cover lis3: lis3lv02d_i2c: Add device tree support
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.
Changes from v2:
- Added documentation details specific to lis3lv02d_i2c driver with example node
- Modified DTS node representation in .dts file
- Removed "-i2c" string from compatible name
Changes from v1:
- Moved lis3lv02d_init_dt to individual drivers with some code clean-up.
- Added lis331dlh compatible entry for lis331dlh parts
AnilKumar Ch (4):
lis3: lis3lv02d: remove lis3lv02d driver DT init
lis3: lis3lv02d_spi: Add lis3lv02d device tree init
lis3: lis3lv02d_i2c: Add lis3lv02d device tree init
ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm
Documentation/devicetree/bindings/misc/lis302.txt | 36 +++++++++++++++++++ arch/arm/boot/dts/am335x-evm.dts | 39 +++++++++++++++++++++ drivers/misc/lis3lv02d/lis3lv02d.c | 8 ++--- drivers/misc/lis3lv02d/lis3lv02d.h | 1 + drivers/misc/lis3lv02d/lis3lv02d_i2c.c | 18 ++++++++++ drivers/misc/lis3lv02d/lis3lv02d_spi.c | 8 +++-- 6 files changed, 101 insertions(+), 9 deletions(-)
Signature · 1 line
1.7.9.5
PATCH v3 1/4 lis3: lis3lv02d: remove lis3lv02d driver DT init
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.
--- drivers/misc/lis3lv02d/lis3lv02d.c | 8 ++------ drivers/misc/lis3lv02d/lis3lv02d.h | 1 + 2 files changed, 3 insertions(+), 6 deletions(-)
drivers/misc/lis3lv02d/lis3lv02d.c +2 -6
@@ -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) {
drivers/misc/lis3lv02d/lis3lv02d.h +1 -0
@@ -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;
Signature · 1 line
1.7.9.5
PATCH v3 2/4 lis3: lis3lv02d_spi: Add lis3lv02d device tree init
In reply to AnilKumar ChAdd 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.
--- drivers/misc/lis3lv02d/lis3lv02d_spi.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/misc/lis3lv02d/lis3lv02d_spi.c +5 -3
@@ -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);
Signature · 1 line
1.7.9.5
PATCH v3 3/4 lis3: lis3lv02d_i2c: Add lis3lv02d device tree init
In reply to AnilKumar ChAdd 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.
--- Documentation/devicetree/bindings/misc/lis302.txt | 36 +++++++++++++++++++++ drivers/misc/lis3lv02d/lis3lv02d_i2c.c | 18 +++++++++++ 2 files changed, 54 insertions(+)
Documentation/devicetree/bindings/misc/lis302.txt +36 -0
@@ -11,6 +11,12 @@ Required properties for the SPI bindings: constrained by external circuitry - interrupts: the interrupt generated by the device +Required properties for the I2C bindings: + - compatible: should be set to "st,lis3lv02d" + - reg: i2c slave address + - Vdd-supply: The input supply for Vdd + - Vdd_IO-supply: The input supply for Vdd_IO + Optional properties for all bus drivers:
@@ -74,3 +80,33 @@ Example for a SPI device node: st,wakeup-z-hi; }; +Example for a I2C device node: + + lis331dlh: lis331dlh at 18 { + compatible = "st,lis331dlh", "st,lis3lv02d"; + reg = <0x18>; + 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>; + }; +
drivers/misc/lis3lv02d/lis3lv02d_i2c.c +18 -0
@@ -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,26 @@ 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" }, + {} +}; +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 +272,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),
Signature · 1 line
1.7.9.5
PATCH v3 4/4 ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm
In reply to AnilKumar ChAdd 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.
--- arch/arm/boot/dts/am335x-evm.dts | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
arch/arm/boot/dts/am335x-evm.dts +39 -0
@@ -47,6 +47,39 @@ }; }; + i2c2: i2c at 4802a000 { + status = "okay"; + clock-frequency = <400000>; + + lis331dlh: lis331dlh at 18 { + compatible = "st,lis331dlh", "st,lis3lv02d"; + reg = <0x18>; + 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>; + }; + }; + dcan1: d_can at 481d0000 { status = "okay"; pinctrl-names = "default";
@@ -61,6 +94,12 @@ regulator-max-microvolt = <5000000>; regulator-boot-on; }; + + lis3_reg: fixedregulator at 1 { + compatible = "regulator-fixed"; + regulator-name = "lis3_reg"; + regulator-boot-on; + }; }; /include/ "tps65910.dtsi"
Signature · 1 line
1.7.9.5
PATCH v3 4/4 ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm
Quoted 8 lines · On Mon, 17 Sep 2012 12:53:22 +0530 AnilKumar Ch <[email protected]> wrote:
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 <[email protected]>--- arch/arm/boot/dts/am335x-evm.dts | 39 ++++++++++++++++++++++++++++++++++++++
Your arch/arm/boot/dts/am335x-evm.dts differs significantly from the one in linux-next (it should not do so), so I didn't do anything with this patch.
PATCH v3 4/4 ARM: dts: AM33XX: Add lis331dlh device tree data to am335x-evm
Hi Andrew,
Quoted 8 lines · Andrew Morton
Quoted 5 lines · On Mon, 17 Sep 2012 12:53:22 +0530 AnilKumar Ch <[email protected]> wrote:
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.
Quoted 8 lines
Quoted 3 lines
Signed-off-by AnilKumar Ch <[email protected]>--- arch/arm/boot/dts/am335x-evm.dts | 39 ++++++++++++++++++++++++++++++++++++++Your
arch/arm/boot/dts/am335x-evm.dtsdiffers significantly from the one in linux-next (it should not do so), so I didn't do anything with this patch.
Thanks for pushing remaining patches.
ACK from the reviewers(Arnd) will help to include in linux-omap branch.
Thanks
AnilKumar
Arnd Bergmann
maintainerv3 cover lis3: lis3lv02d_i2c: Add device tree support
In reply to AnilKumar ChQuoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
Looks good to me.
Greg KH
maintainerv3 cover lis3: lis3lv02d_i2c: Add device tree support
In reply to AnilKumar ChQuoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
None of these patches apply to any tree that I know of, what did you do them against? Please redo them against the char-next branch of linux-next and resend them if you wish to see them applied.
thanks,
greg k-h
v3 cover lis3: lis3lv02d_i2c: Add device tree support
Quoted 11 lines · On Wed, 26 Sep 2012 13:24:00 -0700 Greg KH <[email protected]> wrote:
Quoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
None of these patches apply to any tree that I know of, what did you do them against? Please redo them against the char-next branch of linux-next and resend them if you wish to see them applied.
Presumably they're against eariler patches whcih you don't have. I'm presently sitting on
drivers-misc-lis3lv02d-add-generic-dt-matching-code.patch drivers-misc-lis3lv02d-add-generic-dt-matching-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix-fix.patch drivers-misc-lis3lv02d-remove-lis3lv02d-driver-dt-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-fix-some-comments-specific-to-lis331dlh-driver.patch
Greg KH
maintainerv3 cover lis3: lis3lv02d_i2c: Add device tree support
Quoted 18 lines · Andrew Morton
Quoted 11 lines · On Wed, 26 Sep 2012 13:24:00 -0700 Greg KH <[email protected]> wrote:
Quoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
None of these patches apply to any tree that I know of, what did you do them against? Please redo them against the char-next branch of linux-next and resend them if you wish to see them applied.
Presumably they're against eariler patches whcih you don't have. I'm presently sitting on
Quoted 11 lines
drivers-misc-lis3lv02d-add-generic-dt-matching-code.patch drivers-misc-lis3lv02d-add-generic-dt-matching-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix-fix.patch drivers-misc-lis3lv02d-remove-lis3lv02d-driver-dt-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-fix-some-comments-specific-to-lis331dlh-driver.patch
Care to send them to me so that I can get them to Linus for the 3.7 merge window? I do keep the char-misc tree for these types of things :)
thanks,
greg k-h
v3 cover lis3: lis3lv02d_i2c: Add device tree support
Quoted 31 lines · On Wed, 26 Sep 2012 13:44:03 -0700 Greg KH <[email protected]> wrote:
Quoted 18 lines · Andrew Morton
Quoted 11 lines · On Wed, 26 Sep 2012 13:24:00 -0700 Greg KH <[email protected]> wrote:
Quoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
None of these patches apply to any tree that I know of, what did you do them against? Please redo them against the char-next branch of linux-next and resend them if you wish to see them applied.
Presumably they're against eariler patches whcih you don't have. I'm presently sitting on
Quoted 11 lines
drivers-misc-lis3lv02d-add-generic-dt-matching-code.patch drivers-misc-lis3lv02d-add-generic-dt-matching-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix-fix.patch drivers-misc-lis3lv02d-remove-lis3lv02d-driver-dt-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-fix-some-comments-specific-to-lis331dlh-driver.patch
Quoted 2 lines
Care to send them to me so that I can get them to Linus for the 3.7 merge window?
OK.
Quoted 1 line
I do keep the char-misc tree for these types of things :)
I've actually been doing this miscdev driver since day one. I'm happy to hand over the keys but please review the patches carefully and try not to miss stuff!
Greg KH
maintainerv3 cover lis3: lis3lv02d_i2c: Add device tree support
Quoted 37 lines · Andrew Morton
Quoted 31 lines · On Wed, 26 Sep 2012 13:44:03 -0700 Greg KH <[email protected]> wrote:
Quoted 18 lines · Andrew Morton
Quoted 11 lines · On Wed, 26 Sep 2012 13:24:00 -0700 Greg KH <[email protected]> wrote:
Quoted 6 lines · AnilKumar Ch
Adds device tree support to
lis3lv02d_i2cdriver. Along with this DT init is moved from core driver to individual drivers, with the current implementation some pdata is missing inlis3lv02d_i2cdriver.Also adds platform data for lis331dlh driver to am335x-EVM. These patches were tested on AM335x-EVM.
None of these patches apply to any tree that I know of, what did you do them against? Please redo them against the char-next branch of linux-next and resend them if you wish to see them applied.
Presumably they're against eariler patches whcih you don't have. I'm presently sitting on
Quoted 11 lines
drivers-misc-lis3lv02d-add-generic-dt-matching-code.patch drivers-misc-lis3lv02d-add-generic-dt-matching-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-dt-matching-table-passthru-code-fix-fix.patch drivers-misc-lis3lv02d-remove-lis3lv02d-driver-dt-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_spic-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init.patch drivers-misc-lis3lv02d-lis3lv02d_i2cc-add-lis3lv02d-device-tree-init-fix.patch drivers-misc-lis3lv02d-fix-some-comments-specific-to-lis331dlh-driver.patch
Quoted 2 lines
Care to send them to me so that I can get them to Linus for the 3.7 merge window?
Quoted 7 lines
OK.
Quoted 1 line
I do keep the char-misc tree for these types of things :)
I've actually been doing this miscdev driver since day one. I'm happy to hand over the keys but please review the patches carefully and try not to miss stuff!
Will do, thanks.
greg k-h