Commit a3950d4
committed
WORKAROUND: i2c: qcom-geni: Fix -EACCES error during system resume
When other drivers attempt I2C transfers during early resume phase, the
I2C controller is still runtime suspended, causing pm_runtime_get_sync()
to fail with -EACCES (-13):
[ 101.914202] geni_i2c 980000.i2c: error turning SE resources:-13
The PM runtime core returns -EACCES when runtime PM is disabled
(dev->power.disable_depth > 0). This occurs because:
1. During suspend_noirq, I2C driver calls geni_i2c_runtime_suspend()
and then pm_runtime_disable()
2. I2C driver's noirq_resume only marks adapter as resumed but doesn't
re-enable runtime PM or power up the hardware
3. Other drivers resuming later attempt I2C transfers
4. pm_runtime_get_sync() returns -EACCES because runtime PM is still
disabled
Fix this by calling pm_runtime_force_resume() in geni_i2c_resume_noirq()
to properly resume the hardware and re-enable runtime PM during the noirq
phase. This ensures the I2C controller is powered and ready for use when
other drivers need it during resume.
Upstream-Status: Pending
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>1 parent 0cf570b commit a3950d4
1 file changed
Lines changed: 22 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
831 | 831 | | |
832 | 832 | | |
833 | 833 | | |
834 | | - | |
835 | | - | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
836 | 842 | | |
837 | 843 | | |
838 | 844 | | |
| |||
1044 | 1050 | | |
1045 | 1051 | | |
1046 | 1052 | | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
1047 | 1067 | | |
1048 | 1068 | | |
1049 | 1069 | | |
| |||
0 commit comments