Hi, thanks, that helped, I think: > //test for device presence > if(vcnl4010_read_transfer(data, VCNL4010_PROD_ID_VER, ®_val, 1) !=0 ) > { > pr_err("vcnl4010: Device not found!"); > goto nochip; > } > > if(reg_val != 0x21) > { > pr_err("vcnl4010: Found device isn't a vcnl4010, is a vcnl4000 installed?"); > goto badchip; > } You should set 'ret = -Esomething' here. Currently, you return 0 which means success, so the driver core thinks it may call the suspend function. Regards, Wolfram -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html