diff options
author | David S. Miller <davem@davemloft.net> | 2020-12-09 16:49:46 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-12-09 16:49:46 -0800 |
commit | e3bc6566b88613dc3ee13fb74727d58826ca5132 (patch) | |
tree | 349fda61a31540b0b78be645dbe8472bcdcaa5d7 | |
parent | e65f3df5ff38d0f77eabdffaf0c5b480a3a9422a (diff) | |
parent | 237410fb83538407646109063c4d902c42261387 (diff) |
Merge branch 'nfc-s3fwrn5-Change-I2C-interrupt-trigger-to-EDGE_RISING'
Bongsu Jeon says:
====================
nfc: s3fwrn5: Change I2C interrupt trigger to EDGE_RISING
For stable Samsung's I2C interrupt handling, I changed the interrupt
trigger from IRQ_TYPE_LEVEL_HIGH to IRQ_TYPE_EDGE_RISING and removed
the hard coded interrupt trigger type in the i2c module for the flexible
control.
1/2 is the changed dt binding for the edge rising trigger.
2/2 is to remove the hard coded interrupt trigger type in the i2c module.
ChangeLog:
v2:
2/2
- remove the hard coded interrupt trigger type.
Bongsu Jeon (2):
dt-bindings: net: nfc: s3fwrn5: Change I2C interrupt trigger to
EDGE_RISING
nfc: s3fwrn5: Remove hard coded interrupt trigger type from the i2c
module
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml | 2 | ||||
-rw-r--r-- | drivers/nfc/s3fwrn5/i2c.c | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml b/Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml index ca3904bf90e0..477066e2b821 100644 --- a/Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml +++ b/Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml @@ -76,7 +76,7 @@ examples: reg = <0x27>; interrupt-parent = <&gpa1>; - interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <3 IRQ_TYPE_EDGE_RISING>; en-gpios = <&gpf1 4 GPIO_ACTIVE_HIGH>; wake-gpios = <&gpj0 2 GPIO_ACTIVE_HIGH>; diff --git a/drivers/nfc/s3fwrn5/i2c.c b/drivers/nfc/s3fwrn5/i2c.c index e1bdde105f24..42f1f610ac2c 100644 --- a/drivers/nfc/s3fwrn5/i2c.c +++ b/drivers/nfc/s3fwrn5/i2c.c @@ -179,6 +179,8 @@ static int s3fwrn5_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct s3fwrn5_i2c_phy *phy; + struct irq_data *irq_data; + unsigned long irqflags; int ret; phy = devm_kzalloc(&client->dev, sizeof(*phy), GFP_KERNEL); @@ -212,8 +214,11 @@ static int s3fwrn5_i2c_probe(struct i2c_client *client, if (ret < 0) return ret; + irq_data = irq_get_irq_data(client->irq); + irqflags = irqd_get_trigger_type(irq_data) | IRQF_ONESHOT; + ret = devm_request_threaded_irq(&client->dev, phy->i2c_dev->irq, NULL, - s3fwrn5_i2c_irq_thread_fn, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, + s3fwrn5_i2c_irq_thread_fn, irqflags, S3FWRN5_I2C_DRIVER_NAME, phy); if (ret) s3fwrn5_remove(phy->common.ndev); |