Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 265649
b: refs/heads/master
c: 04023af
h: refs/heads/master
i:
  265647: f912466
v: v3
  • Loading branch information
Rafał Miłecki authored and John W. Linville committed Aug 24, 2011
1 parent b12bfee commit b610a49
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 292121dce2af63dab371102097a887de7cf24233
refs/heads/master: 04023afcce2eaff4f66d19ca21b106512fffabe7
24 changes: 21 additions & 3 deletions trunk/drivers/ssb/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1260,16 +1260,34 @@ void ssb_device_disable(struct ssb_device *dev, u32 core_specific_flags)
}
EXPORT_SYMBOL(ssb_device_disable);

/* Some chipsets need routing known for PCIe and 64-bit DMA */
static bool ssb_dma_translation_special_bit(struct ssb_device *dev)
{
u16 chip_id = dev->bus->chip_id;

if (dev->id.coreid == SSB_DEV_80211) {
return (chip_id == 0x4322 || chip_id == 43221 ||
chip_id == 43231 || chip_id == 43222);
}

return 0;
}

u32 ssb_dma_translation(struct ssb_device *dev)
{
switch (dev->bus->bustype) {
case SSB_BUSTYPE_SSB:
return 0;
case SSB_BUSTYPE_PCI:
if (ssb_read32(dev, SSB_TMSHIGH) & SSB_TMSHIGH_DMA64)
if (pci_is_pcie(dev->bus->host_pci) &&
ssb_read32(dev, SSB_TMSHIGH) & SSB_TMSHIGH_DMA64) {
return SSB_PCIE_DMA_H32;
else
return SSB_PCI_DMA;
} else {
if (ssb_dma_translation_special_bit(dev))
return SSB_PCIE_DMA_H32;
else
return SSB_PCI_DMA;
}
default:
__ssb_dma_not_implemented(dev);
}
Expand Down

0 comments on commit b610a49

Please sign in to comment.