|
@@ -640,3 +640,52 @@ void sdio_f0_writeb(struct sdio_func *func, unsigned char b, unsigned int addr,
|
|
|
*err_ret = ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(sdio_f0_writeb);
|
|
|
+
|
|
|
+/**
|
|
|
+ * sdio_get_host_pm_caps - get host power management capabilities
|
|
|
+ * @func: SDIO function attached to host
|
|
|
+ *
|
|
|
+ * Returns a capability bitmask corresponding to power management
|
|
|
+ * features supported by the host controller that the card function
|
|
|
+ * might rely upon during a system suspend. The host doesn't need
|
|
|
+ * to be claimed, nor the function active, for this information to be
|
|
|
+ * obtained.
|
|
|
+ */
|
|
|
+mmc_pm_flag_t sdio_get_host_pm_caps(struct sdio_func *func)
|
|
|
+{
|
|
|
+ BUG_ON(!func);
|
|
|
+ BUG_ON(!func->card);
|
|
|
+
|
|
|
+ return func->card->host->pm_caps;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(sdio_get_host_pm_caps);
|
|
|
+
|
|
|
+/**
|
|
|
+ * sdio_set_host_pm_flags - set wanted host power management capabilities
|
|
|
+ * @func: SDIO function attached to host
|
|
|
+ *
|
|
|
+ * Set a capability bitmask corresponding to wanted host controller
|
|
|
+ * power management features for the upcoming suspend state.
|
|
|
+ * This must be called, if needed, each time the suspend method of
|
|
|
+ * the function driver is called, and must contain only bits that
|
|
|
+ * were returned by sdio_get_host_pm_caps().
|
|
|
+ * The host doesn't need to be claimed, nor the function active,
|
|
|
+ * for this information to be set.
|
|
|
+ */
|
|
|
+int sdio_set_host_pm_flags(struct sdio_func *func, mmc_pm_flag_t flags)
|
|
|
+{
|
|
|
+ struct mmc_host *host;
|
|
|
+
|
|
|
+ BUG_ON(!func);
|
|
|
+ BUG_ON(!func->card);
|
|
|
+
|
|
|
+ host = func->card->host;
|
|
|
+
|
|
|
+ if (flags & ~host->pm_caps)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ /* function suspend methods are serialized, hence no lock needed */
|
|
|
+ host->pm_flags |= flags;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(sdio_set_host_pm_flags);
|