@@ -928,6 +928,7 @@ static int rcar_i2c_probe(struct platform_device *pdev)
928
928
struct rcar_i2c_priv * priv ;
929
929
struct i2c_adapter * adap ;
930
930
struct device * dev = & pdev -> dev ;
931
+ unsigned long irqflags = 0 ;
931
932
int ret ;
932
933
933
934
/* Otherwise logic will break because some bytes must always use PIO */
@@ -976,6 +977,9 @@ static int rcar_i2c_probe(struct platform_device *pdev)
976
977
977
978
rcar_i2c_write (priv , ICSAR , 0 ); /* Gen2: must be 0 if not using slave */
978
979
980
+ if (priv -> devtype < I2C_RCAR_GEN3 )
981
+ irqflags |= IRQF_NO_THREAD ;
982
+
979
983
if (priv -> devtype == I2C_RCAR_GEN3 ) {
980
984
priv -> rstc = devm_reset_control_get_exclusive (& pdev -> dev , NULL );
981
985
if (!IS_ERR (priv -> rstc )) {
@@ -995,7 +999,7 @@ static int rcar_i2c_probe(struct platform_device *pdev)
995
999
priv -> flags |= ID_P_HOST_NOTIFY ;
996
1000
997
1001
priv -> irq = platform_get_irq (pdev , 0 );
998
- ret = devm_request_irq (dev , priv -> irq , rcar_i2c_irq , 0 , dev_name (dev ), priv );
1002
+ ret = devm_request_irq (dev , priv -> irq , rcar_i2c_irq , irqflags , dev_name (dev ), priv );
999
1003
if (ret < 0 ) {
1000
1004
dev_err (dev , "cannot get irq %d\n" , priv -> irq );
1001
1005
goto out_pm_disable ;
0 commit comments