You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'drm-intel-next-2012-04-23' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next
Daniel Vetter writes: A new drm-intel-next pull. Highlights: - More gmbus patches from Daniel Kurtz, I think gmbus is now ready, all known issues fixed. - Fencing cleanup and pipelined fencing removal from Chris. - rc6 residency interface from Ben, useful for powertop. - Cleanups and code reorg around the ringbuffer code (Ben&me). - Use hw semaphores in the pageflip code from Ben. - More vlv stuff from Jesse, unfortunately his vlv cpu is doa, so less merged than I've hoped for - we still have the unused function warning :( - More hsw patches from Eugeni, again, not yet enabled fully. - intel_pm.c refactoring from Eugeni. - Ironlake sprite support from Chris. - And various smaller improvements/fixes all over the place. Note that this pull request also contains a backmerge of -rc3 to sort out a few things in -next. I've also had to frob the shortlog a bit to exclude anything that -rc3 brings in with this pull. Regression wise we have a few strange bugs going on, but for all of them closer inspection revealed that they've been pre-existing, just now slightly more likely to be hit. And for most of them we have a patch already. Otherwise QA has not reported any regressions, and I'm also not aware of anything bad happening in 3.4. * tag 'drm-intel-next-2012-04-23' of git://people.freedesktop.org/~danvet/drm-intel: (420 commits) drm/i915: rc6 residency (fix the fix) drm/i915/tv: fix open-coded ARRAY_SIZE. drm/i915: invalidate render cache on gen2 drm/i915: Silence the change of LVDS sync polarity drm/i915: add generic power management initialization drm/i915: move clock gating functionality into intel_pm module drm/i915: move emon functionality into intel_pm module drm/i915: move drps, rps and rc6-related functions to intel_pm drm/i915: fix line breaks in intel_pm drm/i915: move watermarks settings into intel_pm module drm/i915: move fbc-related functionality into intel_pm module drm/i915: Refactor get_fence() to use the common fence writing routine drm/i915: Refactor fence clearing to use the common fence writing routine drm/i915: Refactor put_fence() to use the common fence writing routine drm/i915: Prepare to consolidate fence writing drm/i915: Remove the unsightly "optimisation" from flush_fence() drm/i915: Simplify fence finding drm/i915: Discard the unused obj->last_fenced_ring drm/i915: Remove unused ring->setup_seqno drm/i915: Remove fence pipelining ...
This commit is contained in:
+39
-18
@@ -967,16 +967,47 @@ pci_save_state(struct pci_dev *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void pci_restore_config_dword(struct pci_dev *pdev, int offset,
|
||||
u32 saved_val, int retry)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
pci_read_config_dword(pdev, offset, &val);
|
||||
if (val == saved_val)
|
||||
return;
|
||||
|
||||
for (;;) {
|
||||
dev_dbg(&pdev->dev, "restoring config space at offset "
|
||||
"%#x (was %#x, writing %#x)\n", offset, val, saved_val);
|
||||
pci_write_config_dword(pdev, offset, saved_val);
|
||||
if (retry-- <= 0)
|
||||
return;
|
||||
|
||||
pci_read_config_dword(pdev, offset, &val);
|
||||
if (val == saved_val)
|
||||
return;
|
||||
|
||||
mdelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void pci_restore_config_space(struct pci_dev *pdev, int start, int end,
|
||||
int retry)
|
||||
{
|
||||
int index;
|
||||
|
||||
for (index = end; index >= start; index--)
|
||||
pci_restore_config_dword(pdev, 4 * index,
|
||||
pdev->saved_config_space[index],
|
||||
retry);
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_restore_state - Restore the saved state of a PCI device
|
||||
* @dev: - PCI device that we're dealing with
|
||||
*/
|
||||
void pci_restore_state(struct pci_dev *dev)
|
||||
{
|
||||
int i;
|
||||
u32 val;
|
||||
int tries;
|
||||
|
||||
if (!dev->state_saved)
|
||||
return;
|
||||
|
||||
@@ -984,24 +1015,14 @@ void pci_restore_state(struct pci_dev *dev)
|
||||
pci_restore_pcie_state(dev);
|
||||
pci_restore_ats_state(dev);
|
||||
|
||||
pci_restore_config_space(dev, 10, 15, 0);
|
||||
/*
|
||||
* The Base Address register should be programmed before the command
|
||||
* register(s)
|
||||
*/
|
||||
for (i = 15; i >= 0; i--) {
|
||||
pci_read_config_dword(dev, i * 4, &val);
|
||||
tries = 10;
|
||||
while (tries && val != dev->saved_config_space[i]) {
|
||||
dev_dbg(&dev->dev, "restoring config "
|
||||
"space at offset %#x (was %#x, writing %#x)\n",
|
||||
i, val, (int)dev->saved_config_space[i]);
|
||||
pci_write_config_dword(dev,i * 4,
|
||||
dev->saved_config_space[i]);
|
||||
pci_read_config_dword(dev, i * 4, &val);
|
||||
mdelay(10);
|
||||
tries--;
|
||||
}
|
||||
}
|
||||
pci_restore_config_space(dev, 4, 9, 10);
|
||||
pci_restore_config_space(dev, 0, 3, 0);
|
||||
|
||||
pci_restore_pcix_state(dev);
|
||||
pci_restore_msi_state(dev);
|
||||
pci_restore_iov_state(dev);
|
||||
|
||||
Reference in New Issue
Block a user