]> Pileus Git - ~andy/linux/blobdiff - drivers/pci/pci.c
Merge branch 'pci/dead-code' into next
[~andy/linux] / drivers / pci / pci.c
index 508e560b7d2a2a922ba5725462fc1f2845ce4835..1cbd590cf1d1f5b8f7325c174a22cf6e0932ae07 100644 (file)
@@ -682,6 +682,28 @@ static int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state)
        return error;
 }
 
+/**
+ * pci_wakeup - Wake up a PCI device
+ * @pci_dev: Device to handle.
+ * @ign: ignored parameter
+ */
+static int pci_wakeup(struct pci_dev *pci_dev, void *ign)
+{
+       pci_wakeup_event(pci_dev);
+       pm_request_resume(&pci_dev->dev);
+       return 0;
+}
+
+/**
+ * pci_wakeup_bus - Walk given bus and wake up devices on it
+ * @bus: Top bus of the subtree to walk.
+ */
+static void pci_wakeup_bus(struct pci_bus *bus)
+{
+       if (bus)
+               pci_walk_bus(bus, pci_wakeup, NULL);
+}
+
 /**
  * __pci_start_power_transition - Start power transition of a PCI device
  * @dev: PCI device to handle.
@@ -1110,7 +1132,8 @@ EXPORT_SYMBOL_GPL(pci_store_saved_state);
  * @dev: PCI device that we're dealing with
  * @state: Saved state returned from pci_store_saved_state()
  */
-int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state)
+static int pci_load_saved_state(struct pci_dev *dev,
+                               struct pci_saved_state *state)
 {
        struct pci_cap_saved_data *cap;
 
@@ -1138,7 +1161,6 @@ int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state)
        dev->state_saved = true;
        return 0;
 }
-EXPORT_SYMBOL_GPL(pci_load_saved_state);
 
 /**
  * pci_load_and_free_saved_state - Reload the save state pointed to by state,
@@ -1570,27 +1592,6 @@ void pci_pme_wakeup_bus(struct pci_bus *bus)
                pci_walk_bus(bus, pci_pme_wakeup, (void *)true);
 }
 
-/**
- * pci_wakeup - Wake up a PCI device
- * @pci_dev: Device to handle.
- * @ign: ignored parameter
- */
-static int pci_wakeup(struct pci_dev *pci_dev, void *ign)
-{
-       pci_wakeup_event(pci_dev);
-       pm_request_resume(&pci_dev->dev);
-       return 0;
-}
-
-/**
- * pci_wakeup_bus - Walk given bus and wake up devices on it
- * @bus: Top bus of the subtree to walk.
- */
-void pci_wakeup_bus(struct pci_bus *bus)
-{
-       if (bus)
-               pci_walk_bus(bus, pci_wakeup, NULL);
-}
 
 /**
  * pci_pme_capable - check the capability of PCI device to generate PME#
@@ -1804,7 +1805,7 @@ int pci_wake_from_d3(struct pci_dev *dev, bool enable)
  * If the platform can't manage @dev, return the deepest state from which it
  * can generate wake events, based on any available PME info.
  */
-pci_power_t pci_target_state(struct pci_dev *dev)
+static pci_power_t pci_target_state(struct pci_dev *dev)
 {
        pci_power_t target_state = PCI_D3hot;
 
@@ -2168,242 +2169,6 @@ void pci_configure_ari(struct pci_dev *dev)
        }
 }
 
-/**
- * pci_enable_ido - enable ID-based Ordering on a device
- * @dev: the PCI device
- * @type: which types of IDO to enable
- *
- * Enable ID-based ordering on @dev.  @type can contain the bits
- * %PCI_EXP_IDO_REQUEST and/or %PCI_EXP_IDO_COMPLETION to indicate
- * which types of transactions are allowed to be re-ordered.
- */
-void pci_enable_ido(struct pci_dev *dev, unsigned long type)
-{
-       u16 ctrl = 0;
-
-       if (type & PCI_EXP_IDO_REQUEST)
-               ctrl |= PCI_EXP_DEVCTL2_IDO_REQ_EN;
-       if (type & PCI_EXP_IDO_COMPLETION)
-               ctrl |= PCI_EXP_DEVCTL2_IDO_CMP_EN;
-       if (ctrl)
-               pcie_capability_set_word(dev, PCI_EXP_DEVCTL2, ctrl);
-}
-EXPORT_SYMBOL(pci_enable_ido);
-
-/**
- * pci_disable_ido - disable ID-based ordering on a device
- * @dev: the PCI device
- * @type: which types of IDO to disable
- */
-void pci_disable_ido(struct pci_dev *dev, unsigned long type)
-{
-       u16 ctrl = 0;
-
-       if (type & PCI_EXP_IDO_REQUEST)
-               ctrl |= PCI_EXP_DEVCTL2_IDO_REQ_EN;
-       if (type & PCI_EXP_IDO_COMPLETION)
-               ctrl |= PCI_EXP_DEVCTL2_IDO_CMP_EN;
-       if (ctrl)
-               pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2, ctrl);
-}
-EXPORT_SYMBOL(pci_disable_ido);
-
-/**
- * pci_enable_obff - enable optimized buffer flush/fill
- * @dev: PCI device
- * @type: type of signaling to use
- *
- * Try to enable @type OBFF signaling on @dev.  It will try using WAKE#
- * signaling if possible, falling back to message signaling only if
- * WAKE# isn't supported.  @type should indicate whether the PCIe link
- * be brought out of L0s or L1 to send the message.  It should be either
- * %PCI_EXP_OBFF_SIGNAL_ALWAYS or %PCI_OBFF_SIGNAL_L0.
- *
- * If your device can benefit from receiving all messages, even at the
- * power cost of bringing the link back up from a low power state, use
- * %PCI_EXP_OBFF_SIGNAL_ALWAYS.  Otherwise, use %PCI_OBFF_SIGNAL_L0 (the
- * preferred type).
- *
- * RETURNS:
- * Zero on success, appropriate error number on failure.
- */
-int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type type)
-{
-       u32 cap;
-       u16 ctrl;
-       int ret;
-
-       pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap);
-       if (!(cap & PCI_EXP_DEVCAP2_OBFF_MASK))
-               return -ENOTSUPP; /* no OBFF support at all */
-
-       /* Make sure the topology supports OBFF as well */
-       if (dev->bus->self) {
-               ret = pci_enable_obff(dev->bus->self, type);
-               if (ret)
-                       return ret;
-       }
-
-       pcie_capability_read_word(dev, PCI_EXP_DEVCTL2, &ctrl);
-       if (cap & PCI_EXP_DEVCAP2_OBFF_WAKE)
-               ctrl |= PCI_EXP_DEVCTL2_OBFF_WAKE_EN;
-       else {
-               switch (type) {
-               case PCI_EXP_OBFF_SIGNAL_L0:
-                       if (!(ctrl & PCI_EXP_DEVCTL2_OBFF_WAKE_EN))
-                               ctrl |= PCI_EXP_DEVCTL2_OBFF_MSGA_EN;
-                       break;
-               case PCI_EXP_OBFF_SIGNAL_ALWAYS:
-                       ctrl &= ~PCI_EXP_DEVCTL2_OBFF_WAKE_EN;
-                       ctrl |= PCI_EXP_DEVCTL2_OBFF_MSGB_EN;
-                       break;
-               default:
-                       WARN(1, "bad OBFF signal type\n");
-                       return -ENOTSUPP;
-               }
-       }
-       pcie_capability_write_word(dev, PCI_EXP_DEVCTL2, ctrl);
-
-       return 0;
-}
-EXPORT_SYMBOL(pci_enable_obff);
-
-/**
- * pci_disable_obff - disable optimized buffer flush/fill
- * @dev: PCI device
- *
- * Disable OBFF on @dev.
- */
-void pci_disable_obff(struct pci_dev *dev)
-{
-       pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2,
-                                  PCI_EXP_DEVCTL2_OBFF_WAKE_EN);
-}
-EXPORT_SYMBOL(pci_disable_obff);
-
-/**
- * pci_ltr_supported - check whether a device supports LTR
- * @dev: PCI device
- *
- * RETURNS:
- * True if @dev supports latency tolerance reporting, false otherwise.
- */
-static bool pci_ltr_supported(struct pci_dev *dev)
-{
-       u32 cap;
-
-       pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap);
-
-       return cap & PCI_EXP_DEVCAP2_LTR;
-}
-
-/**
- * pci_enable_ltr - enable latency tolerance reporting
- * @dev: PCI device
- *
- * Enable LTR on @dev if possible, which means enabling it first on
- * upstream ports.
- *
- * RETURNS:
- * Zero on success, errno on failure.
- */
-int pci_enable_ltr(struct pci_dev *dev)
-{
-       int ret;
-
-       /* Only primary function can enable/disable LTR */
-       if (PCI_FUNC(dev->devfn) != 0)
-               return -EINVAL;
-
-       if (!pci_ltr_supported(dev))
-               return -ENOTSUPP;
-
-       /* Enable upstream ports first */
-       if (dev->bus->self) {
-               ret = pci_enable_ltr(dev->bus->self);
-               if (ret)
-                       return ret;
-       }
-
-       return pcie_capability_set_word(dev, PCI_EXP_DEVCTL2,
-                                       PCI_EXP_DEVCTL2_LTR_EN);
-}
-EXPORT_SYMBOL(pci_enable_ltr);
-
-/**
- * pci_disable_ltr - disable latency tolerance reporting
- * @dev: PCI device
- */
-void pci_disable_ltr(struct pci_dev *dev)
-{
-       /* Only primary function can enable/disable LTR */
-       if (PCI_FUNC(dev->devfn) != 0)
-               return;
-
-       if (!pci_ltr_supported(dev))
-               return;
-
-       pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2,
-                                  PCI_EXP_DEVCTL2_LTR_EN);
-}
-EXPORT_SYMBOL(pci_disable_ltr);
-
-static int __pci_ltr_scale(int *val)
-{
-       int scale = 0;
-
-       while (*val > 1023) {
-               *val = (*val + 31) / 32;
-               scale++;
-       }
-       return scale;
-}
-
-/**
- * pci_set_ltr - set LTR latency values
- * @dev: PCI device
- * @snoop_lat_ns: snoop latency in nanoseconds
- * @nosnoop_lat_ns: nosnoop latency in nanoseconds
- *
- * Figure out the scale and set the LTR values accordingly.
- */
-int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns)
-{
-       int pos, ret, snoop_scale, nosnoop_scale;
-       u16 val;
-
-       if (!pci_ltr_supported(dev))
-               return -ENOTSUPP;
-
-       snoop_scale = __pci_ltr_scale(&snoop_lat_ns);
-       nosnoop_scale = __pci_ltr_scale(&nosnoop_lat_ns);
-
-       if (snoop_lat_ns > PCI_LTR_VALUE_MASK ||
-           nosnoop_lat_ns > PCI_LTR_VALUE_MASK)
-               return -EINVAL;
-
-       if ((snoop_scale > (PCI_LTR_SCALE_MASK >> PCI_LTR_SCALE_SHIFT)) ||
-           (nosnoop_scale > (PCI_LTR_SCALE_MASK >> PCI_LTR_SCALE_SHIFT)))
-               return -EINVAL;
-
-       pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_LTR);
-       if (!pos)
-               return -ENOTSUPP;
-
-       val = (snoop_scale << PCI_LTR_SCALE_SHIFT) | snoop_lat_ns;
-       ret = pci_write_config_word(dev, pos + PCI_LTR_MAX_SNOOP_LAT, val);
-       if (ret != 4)
-               return -EIO;
-
-       val = (nosnoop_scale << PCI_LTR_SCALE_SHIFT) | nosnoop_lat_ns;
-       ret = pci_write_config_word(dev, pos + PCI_LTR_MAX_NOSNOOP_LAT, val);
-       if (ret != 4)
-               return -EIO;
-
-       return 0;
-}
-EXPORT_SYMBOL(pci_set_ltr);
-
 static int pci_acs_enable;
 
 /**
@@ -4482,7 +4247,6 @@ EXPORT_SYMBOL(pci_restore_state);
 EXPORT_SYMBOL(pci_pme_capable);
 EXPORT_SYMBOL(pci_pme_active);
 EXPORT_SYMBOL(pci_wake_from_d3);
-EXPORT_SYMBOL(pci_target_state);
 EXPORT_SYMBOL(pci_prepare_to_sleep);
 EXPORT_SYMBOL(pci_back_from_sleep);
 EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);