mmc_hsq.h 648 B

12345678910111213141516171819202122232425262728293031
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef LINUX_MMC_HSQ_H
  3. #define LINUX_MMC_HSQ_H
  4. struct hsq_slot {
  5. struct mmc_request *mrq;
  6. };
  7. struct mmc_hsq {
  8. struct mmc_host *mmc;
  9. struct mmc_request *mrq;
  10. wait_queue_head_t wait_queue;
  11. struct hsq_slot *slot;
  12. spinlock_t lock;
  13. struct work_struct retry_work;
  14. int next_tag;
  15. int num_slots;
  16. int qcnt;
  17. bool enabled;
  18. bool waiting_for_idle;
  19. bool recovery_halt;
  20. };
  21. int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc);
  22. void mmc_hsq_suspend(struct mmc_host *mmc);
  23. int mmc_hsq_resume(struct mmc_host *mmc);
  24. bool mmc_hsq_finalize_request(struct mmc_host *mmc, struct mmc_request *mrq);
  25. #endif