staging: typec: tcpci: register port before request irq
PATCH v3 7/12 staging: typec: tcpci: register port before request irq
Quoted 19 lines · Li Jun
With that we can clear any pending events and the port is registered so driver can be ready to handle typec events once we request irq.
Signed-off-by Peter Chen <[email protected]>Signed-off-by Li Jun <[email protected]>--- drivers/staging/typec/tcpci.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)drivers/staging/typec/tcpci.c +2
-0@@ -600,25 +600,26 @@ static int tcpci_probe(struct i2c_client *client,if (IS_ERR (chip->data.regmap))return PTR_ERR (chip->data.regmap); +i2c_set_clientdata (client, chip); +
drivers/staging/typec/tcpci.c static int tcpci_probe(struct i2c_client *client, · line 614
Quoted 10 lines
drivers/staging/typec/tcpci.c +4
-0/* Disable chip interrupts before requesting irq */ err =regmap_raw_write (chip->data.regmap,TCPC_ALERT_MASK , &val,sizeof (u16));if (err <0 )return err; + chip->tcpci =tcpci_register_port (&client->dev, &chip->data); +if (PTR_ERR_OR_ZERO (chip->tcpci)) +return PTR_ERR (chip->tcpci); +
I am concerned that the regitration above might already trigger commands, and that we might miss interrupts if that is the case.
Would it make sense to check for chip->tcpci in the interrupt handler instead ?
Quoted 21 lines
drivers/staging/typec/tcpci.c +2
-7err =devm_request_threaded_irq (&client->dev, client->irq,NULL , _tcpci_irq,IRQF_ONESHOT |IRQF_TRIGGER_LOW ,dev_name (&client->dev), chip);if (err <0 ) -return err; +tcpci_unregister_port (chip->tcpci); - chip->tcpci =tcpci_register_port (&client->dev, &chip->data); -if (PTR_ERR_OR_ZERO (chip->tcpci)) -return PTR_ERR (chip->tcpci); - -i2c_set_clientdata (client, chip); -return 0 ; +return err; }static int tcpci_remove (struct i2c_client *client)Signature · 1 line
2.7.4
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html