Merge remote-tracking branches 'asoc/topic/ab8500', 'asoc/topic/arizona', 'asoc/topic...
[sfrench/cifs-2.6.git] / arch / x86 / platform / intel-mid / pwr.c
index 5d3b45ad1c034d4ca922ccdd10ad7d2edb565384..67375dda451c1bec9fe900899dee5a5898882281 100644 (file)
@@ -272,6 +272,25 @@ int intel_mid_pci_set_power_state(struct pci_dev *pdev, pci_power_t state)
 }
 EXPORT_SYMBOL_GPL(intel_mid_pci_set_power_state);
 
+pci_power_t intel_mid_pci_get_power_state(struct pci_dev *pdev)
+{
+       struct mid_pwr *pwr = midpwr;
+       int id, reg, bit;
+       u32 power;
+
+       if (!pwr || !pwr->available)
+               return PCI_UNKNOWN;
+
+       id = intel_mid_pwr_get_lss_id(pdev);
+       if (id < 0)
+               return PCI_UNKNOWN;
+
+       reg = (id * LSS_PWS_BITS) / 32;
+       bit = (id * LSS_PWS_BITS) % 32;
+       power = mid_pwr_get_state(pwr, reg);
+       return (__force pci_power_t)((power >> bit) & 3);
+}
+
 void intel_mid_pwr_power_off(void)
 {
        struct mid_pwr *pwr = midpwr;