iio: sx9500: add final devicetree support
Subsystems (2)
PATCH 1/1 iio: sx9500: add final devicetree support
This makes sx9500 driver usable on devicetree based platforms too.
--- .../devicetree/bindings/iio/proximity/sx9500.txt | 22 ++++++++++++++++++++++ drivers/iio/proximity/sx9500.c | 7 +++++++ 2 files changed, 29 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/proximity/sx9500.txt
Documentation/devicetree/bindings/iio/proximity/sx9500.txt new file +22 -0
@@ -0,0 +1,22 @@ +Semtech's SX9500 capacitive proximity button device driver + +Required properties: + - compatible: must be "semtech,sx9500" + - reg: i2c address where to find the device + - interrupt-parent : should be the phandle for the interrupt controller + - interrupts : the sole interrupt generated by the device + + Refer to interrupt-controller/interrupts.txt for generic + interrupt client node bindings. + +Example: + +sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sx9500>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; +};
drivers/iio/proximity/sx9500.c +7 -0
@@ -1025,6 +1025,12 @@ static const struct acpi_device_id sx9500_acpi_match[] = { };MODULE_DEVICE_TABLE (acpi, sx9500_acpi_match); +static const struct of_device_id sx9500_of_match[] = { + { .compatible ="semtech,sx9500" , }, + { } +}; +MODULE_DEVICE_TABLE (of, sx9500_of_match); +static const struct i2c_device_id sx9500_id[] = { {"sx9500" ,0 }, { },
@@ -1035,6 +1041,7 @@ static struct i2c_driver sx9500_driver = { .driver = { .name = SX9500_DRIVER_NAME, .acpi_match_table = ACPI_PTR(sx9500_acpi_match), + .of_match_table = of_match_ptr(sx9500_of_match), .pm = &sx9500_pm_ops, }, .probe = sx9500_probe,
Signature · 1 line
2.1.4
Documentation/devicetree/bindings/iio/proximity/sx9500.txt line 21
Quoted 8 lines · Christoph Fritz
Documentation/devicetree/bindings/iio/proximity/sx9500.txt new file +8
-0+sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sx9500>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
Datasheet says the reset is active low.
Quoted 12 lines · Fabio Estevam
Documentation/devicetree/bindings/iio/proximity/sx9500.txt line 21
Quoted 8 lines · Christoph Fritz
Documentation/devicetree/bindings/iio/proximity/sx9500.txt new file +8
-0+sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sx9500>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
Quoted 1 line
Datasheet says the reset is active low.
Here on my board I'm using the reset pin as an open-drain with external pullup, so GPIO_ACTIVE_HIGH is valid.
As this is an example, I don't care if it says _HIGH or _LOW.
Quoted 4 lines · Christoph Fritz
Here on my board I'm using the reset pin as an open-drain with external pullup, so
GPIO_ACTIVE_HIGHis valid.As this is an example, I don't care if it says
_HIGHor_LOW.
Then probably it is better to remove "reset-gpios" from the example.
The driver does not parse this dt property and the reset is being done via software command as far as I can see.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 6 lines · Fabio Estevam
Quoted 3 lines · Christoph Fritz
Here on my board I'm using the reset pin as an open-drain with external pullup, so
GPIO_ACTIVE_HIGHis valid.
Quoted 6 lines
Quoted 1 line
As this is an example, I don't care if it says
_HIGHor_LOW.Then probably it is better to remove "reset-gpios" from the example.
The driver does not parse this dt property and the reset is being done via software command as far as I can see.
What do you mean by "software command", to send a reset command by i2c?
The reset GPIO is fetched in sx9500 here:
See sx9500_gpio_probe():
...
data->gpiod_rst = devm_gpiod_get_index(dev, SX9500_GPIO_RESET,
0, GPIOD_OUT_HIGH);...
Quoted 1 line · Christoph Fritz
What do you mean by "software command", to send a reset command by i2c?
Yes, by writing 0xDE into RegReset register.
Quoted 7 lines
The reset GPIO is fetched in sx9500 here:
See
sx9500_gpio_probe():
...data->gpiod_rst = devm_gpiod_get_index(dev, SX9500_GPIO_RESET, 0, GPIOD_OUT_HIGH);
but there is no code that actually reads the "reset-gpios" dt property.
Does your board work well without passing "reset-gpios" property? --
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 8 lines · Fabio Estevam
Quoted 1 line · Christoph Fritz
What do you mean by "software command", to send a reset command by i2c?
Yes, by writing
0xDEinto RegReset register.Quoted 1 line
Quoted 8 lines
Quoted 6 lines
The reset GPIO is fetched in sx9500 here:
See
sx9500_gpio_probe():
...data->gpiod_rst = devm_gpiod_get_index(dev, SX9500_GPIO_RESET, 0, GPIOD_OUT_HIGH);but there is no code that actually reads the "reset-gpios" dt property.
But there is: devm_gpiod_get_index() calls gpiod_get_index() which calls of_find_gpio() for of-string "reset-gpios".
Quoted 2 lines
Does your board work well without passing "reset-gpios" property?
I don't know, the driver looks that way. I'll check that. If so, I'll fix the docu and add the reset-gpios property as optional. Okay?
Thanks
-- Christoph
Quoted 2 lines · Christoph Fritz
But there is:
devm_gpiod_get_index()callsgpiod_get_index()which callsof_find_gpio()for of-string "reset-gpios".
Ok, great.
Quoted 5 lines
Quoted 2 lines
Does your board work well without passing "reset-gpios" property?
I don't know, the driver looks that way. I'll check that. If so, I'll fix the docu and add the reset-gpios property as optional. Okay?
My main concern was the gpio reset polarity. Not sure why active high works in your case.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 iio: sx9500: add final devicetree support
In reply to a message not in the archiveThis makes sx9500 driver usable on devicetree based platforms too.
---
Changes in v2:
- fix docu: add optional property reset-gpios
- adapt docu: change example "reset-gpios"
.../devicetree/bindings/iio/proximity/sx9500.txt | 24 ++++++++++++++++++++++ drivers/iio/proximity/sx9500.c | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/proximity/sx9500.txt
Documentation/devicetree/bindings/iio/proximity/sx9500.txt new file +24 -0
@@ -0,0 +1,24 @@ +Semtech's SX9500 capacitive proximity button device driver + +Required properties: + - compatible: must be "semtech,sx9500" + - reg: i2c address where to find the device + - interrupt-parent : should be the phandle for the interrupt controller + - interrupts : the sole interrupt generated by the device + + Refer to interrupt-controller/interrupts.txt for generic + interrupt client node bindings. + +Optional properties: + - reset-gpios: Reference to the GPIO connected to the device's active + low reset pin. + +Example: + +sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; +};
drivers/iio/proximity/sx9500.c +7 -0
@@ -1025,6 +1025,12 @@ static const struct acpi_device_id sx9500_acpi_match[] = { };MODULE_DEVICE_TABLE (acpi, sx9500_acpi_match); +static const struct of_device_id sx9500_of_match[] = { + { .compatible ="semtech,sx9500" , }, + { } +}; +MODULE_DEVICE_TABLE (of, sx9500_of_match); +static const struct i2c_device_id sx9500_id[] = { {"sx9500" ,0 }, { },
@@ -1035,6 +1041,7 @@ static struct i2c_driver sx9500_driver = { .driver = { .name = SX9500_DRIVER_NAME, .acpi_match_table = ACPI_PTR(sx9500_acpi_match), + .of_match_table = of_match_ptr(sx9500_of_match), .pm = &sx9500_pm_ops, }, .probe = sx9500_probe,
Signature · 6 lines
2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Fabio Estevam
Reviewed-byQuoted 3 lines · Christoph Fritz
This makes sx9500 driver usable on devicetree based platforms too.
Signed-off-by Christoph Fritz <chf.fritz-gM/[email protected]>
Vlad Dogaru
Reviewed-byQuoted 3 lines · Christoph Fritz
This makes sx9500 driver usable on devicetree based platforms too.
Signed-off-by Christoph Fritz <chf.fritz-gM/[email protected]>
Quoted 68 lines
---
Changes in v2:
- fix docu: add optional property reset-gpios
- adapt docu: change example "reset-gpios".../devicetree/bindings/iio/proximity/sx9500.txt | 24 ++++++++++++++++++++++ drivers/iio/proximity/sx9500.c | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/proximity/sx9500.txtDocumentation/devicetree/bindings/iio/proximity/sx9500.txt new file +24
-0@@ -0,0 +1,24 @@ +Semtech's SX9500 capacitive proximity button device driver + +Required properties: + - compatible: must be "semtech,sx9500" + - reg: i2c address where to find the device + - interrupt-parent : should be the phandle for the interrupt controller + - interrupts : the sole interrupt generated by the device + + Refer to interrupt-controller/interrupts.txt for generic + interrupt client node bindings. + +Optional properties: + - reset-gpios: Reference to the GPIO connected to the device's active + low reset pin. + +Example: + +sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; +};drivers/iio/proximity/sx9500.c +7
-1@@ -1025,6 +1025,12 @@ static const struct acpi_device_id sx9500_acpi_match[] = { };MODULE_DEVICE_TABLE (acpi, sx9500_acpi_match); +static const struct of_device_id sx9500_of_match[] = { + { .compatible ="semtech,sx9500" , }, + { } +}; +MODULE_DEVICE_TABLE (of, sx9500_of_match); +static const struct i2c_device_id sx9500_id[] = { {"sx9500" ,0 }, { },@@ -1035,6 +1041,7 @@ static struct i2c_driver sx9500_driver = { .driver = { .name = SX9500_DRIVER_NAME, .acpi_match_table = ACPI_PTR(sx9500_acpi_match), + .of_match_table = of_match_ptr(sx9500_of_match), .pm = &sx9500_pm_ops, }, .probe = sx9500_probe, --
Quoted 2 lines
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Jonathan Cameron
AppliedQuoted 7 lines · Vlad Dogaru
Quoted 3 lines · Christoph Fritz
This makes sx9500 driver usable on devicetree based platforms too.
Signed-off-by Christoph Fritz <chf.fritz-gM/[email protected]>Reviewed-by Vlad Dogaru <[email protected]>
This is simple enough I'm taking it without a device tree ack.
Applied to the togreg branch of iio.git - initially pushed out as testing for the autobuilders to play with it.
Thanks,
Jonathan
Quoted 71 lines
Quoted 71 lines
---
Changes in v2:
- fix docu: add optional property reset-gpios
- adapt docu: change example "reset-gpios".../devicetree/bindings/iio/proximity/sx9500.txt | 24 ++++++++++++++++++++++ drivers/iio/proximity/sx9500.c | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/proximity/sx9500.txtDocumentation/devicetree/bindings/iio/proximity/sx9500.txt new file +24
-0@@ -0,0 +1,24 @@ +Semtech's SX9500 capacitive proximity button device driver + +Required properties: + - compatible: must be "semtech,sx9500" + - reg: i2c address where to find the device + - interrupt-parent : should be the phandle for the interrupt controller + - interrupts : the sole interrupt generated by the device + + Refer to interrupt-controller/interrupts.txt for generic + interrupt client node bindings. + +Optional properties: + - reset-gpios: Reference to the GPIO connected to the device's active + low reset pin. + +Example: + +sx9500@28 { + compatible = "semtech,sx9500"; + reg = <0x28>; + interrupt-parent = <&gpio2>; + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; +};drivers/iio/proximity/sx9500.c +7
-1@@ -1025,6 +1025,12 @@ static const struct acpi_device_id sx9500_acpi_match[] = { };MODULE_DEVICE_TABLE (acpi, sx9500_acpi_match); +static const struct of_device_id sx9500_of_match[] = { + { .compatible ="semtech,sx9500" , }, + { } +}; +MODULE_DEVICE_TABLE (of, sx9500_of_match); +static const struct i2c_device_id sx9500_id[] = { {"sx9500" ,0 }, { },@@ -1035,6 +1041,7 @@ static struct i2c_driver sx9500_driver = { .driver = { .name = SX9500_DRIVER_NAME, .acpi_match_table = ACPI_PTR(sx9500_acpi_match), + .of_match_table = of_match_ptr(sx9500_of_match), .pm = &sx9500_pm_ops, }, .probe = sx9500_probe, --2.1.4
Rob Herring
Acked-byQuoted 7 lines · Christoph Fritz
This makes sx9500 driver usable on devicetree based platforms too.
Signed-off-by Christoph Fritz <chf.fritz-gM/[email protected]>---
Changes in v2:
Quoted 7 lines
- fix docu: add optional property reset-gpios
- adapt docu: change example "reset-gpios".../devicetree/bindings/iio/proximity/sx9500.txt | 24 ++++++++++++++++++++++ drivers/iio/proximity/sx9500.c | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/proximity/sx9500.txt