43
43
* @mru_default: default MRU size for MBIM network packets
44
44
* @sideband_wake: Devices using dedicated sideband GPIO for wakeup instead
45
45
* of inband wake support (such as sdx24)
46
+ * @no_m3: M3 not supported
46
47
*/
47
48
struct mhi_pci_dev_info {
48
49
const struct mhi_controller_config * config ;
@@ -54,6 +55,7 @@ struct mhi_pci_dev_info {
54
55
unsigned int dma_data_width ;
55
56
unsigned int mru_default ;
56
57
bool sideband_wake ;
58
+ bool no_m3 ;
57
59
};
58
60
59
61
#define MHI_CHANNEL_CONFIG_UL (ch_num , ch_name , el_count , ev_ring ) \
@@ -295,6 +297,7 @@ static const struct mhi_pci_dev_info mhi_qcom_qdu100_info = {
295
297
.bar_num = MHI_PCI_DEFAULT_BAR_NUM ,
296
298
.dma_data_width = 32 ,
297
299
.sideband_wake = false,
300
+ .no_m3 = true,
298
301
};
299
302
300
303
static const struct mhi_channel_config mhi_qcom_sa8775p_channels [] = {
@@ -1306,8 +1309,8 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1306
1309
/* start health check */
1307
1310
mod_timer (& mhi_pdev -> health_check_timer , jiffies + HEALTH_CHECK_PERIOD );
1308
1311
1309
- /* Only allow runtime- suspend if PME capable (for wakeup) */
1310
- if (pci_pme_capable (pdev , PCI_D3hot )) {
1312
+ /* Allow runtime suspend only if both PME from D3Hot and M3 are supported */
1313
+ if (pci_pme_capable (pdev , PCI_D3hot ) && !( info -> no_m3 ) ) {
1311
1314
pm_runtime_set_autosuspend_delay (& pdev -> dev , 2000 );
1312
1315
pm_runtime_use_autosuspend (& pdev -> dev );
1313
1316
pm_runtime_mark_last_busy (& pdev -> dev );
0 commit comments