@@ -232,6 +232,7 @@ static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie)
232232 */
233233static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg (struct device * dev )
234234{
235+ enum ipc_pcie_sleep_state sleep_state = IPC_PCIE_D0L12 ;
235236 union acpi_object * object ;
236237 acpi_handle handle_acpi ;
237238
@@ -242,18 +243,23 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
242243 }
243244
244245 object = acpi_evaluate_dsm (handle_acpi , & wwan_acpi_guid , 0 , 3 , NULL );
246+ if (!object )
247+ goto default_ret ;
248+
249+ if (object -> integer .value == 3 )
250+ sleep_state = IPC_PCIE_D3L2 ;
245251
246- if (object && object -> integer .value == 3 )
247- return IPC_PCIE_D3L2 ;
252+ kfree (object );
248253
249254default_ret :
250- return IPC_PCIE_D0L12 ;
255+ return sleep_state ;
251256}
252257
253258static int ipc_pcie_probe (struct pci_dev * pci ,
254259 const struct pci_device_id * pci_id )
255260{
256261 struct iosm_pcie * ipc_pcie = kzalloc (sizeof (* ipc_pcie ), GFP_KERNEL );
262+ int ret ;
257263
258264 pr_debug ("Probing device 0x%X from the vendor 0x%X" , pci_id -> device ,
259265 pci_id -> vendor );
@@ -286,6 +292,12 @@ static int ipc_pcie_probe(struct pci_dev *pci,
286292 goto pci_enable_fail ;
287293 }
288294
295+ ret = dma_set_mask (ipc_pcie -> dev , DMA_BIT_MASK (64 ));
296+ if (ret ) {
297+ dev_err (ipc_pcie -> dev , "Could not set PCI DMA mask: %d" , ret );
298+ return ret ;
299+ }
300+
289301 ipc_pcie_config_aspm (ipc_pcie );
290302 dev_dbg (ipc_pcie -> dev , "PCIe device enabled." );
291303
0 commit comments