123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * linux/drivers/mmc/host/msm_sdcc_dml.h - Qualcomm SDCC DML driver
- * header file
- *
- * Copyright (c) 2011, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
- #ifndef _MSM_SDCC_DML_H
- #define _MSM_SDCC_DML_H
- #include <linux/types.h>
- #include <linux/mmc/host.h>
- #include "msm_sdcc.h"
- #ifdef CONFIG_MMC_MSM_SPS_SUPPORT
- /**
- * Initialize DML HW connected with SDCC core
- *
- * This function initialize DML HW.
- *
- * This function should only be called once
- * typically during driver probe.
- *
- * @host - Pointer to sdcc host structure
- *
- * @return - 0 if successful else negative value.
- *
- */
- int msmsdcc_dml_init(struct msmsdcc_host *host);
- /**
- * Start data transfer.
- *
- * This function configure DML HW registers with
- * data transfer direction and data transfer size.
- *
- * This function should be called after submitting
- * data transfer request to SPS HW and before kick
- * starting data transfer in SDCC core.
- *
- * @host - Pointer to sdcc host structure
- * @data - Pointer to mmc_data structure
- *
- */
- void msmsdcc_dml_start_xfer(struct msmsdcc_host *host, struct mmc_data *data);
- /**
- * Checks if DML HW is busy or not?
- *
- * @host - Pointer to sdcc host structure
- *
- * @return - 1 if DML HW is busy with data transfer
- * 0 if DML HW is IDLE.
- *
- */
- bool msmsdcc_is_dml_busy(struct msmsdcc_host *host);
- /**
- * Soft reset DML HW
- *
- * This function give soft reset to DML HW.
- *
- * This function should be called to reset DML HW
- * if data transfer error is detected.
- *
- * @host - Pointer to sdcc host structure
- *
- */
- void msmsdcc_dml_reset(struct msmsdcc_host *host);
- /**
- * Deinitialize DML HW connected with SDCC core
- *
- * This function resets DML HW and unmap DML
- * register region.
- *
- * This function should only be called once
- * typically during driver remove.
- *
- * @host - Pointer to sdcc host structure
- *
- */
- void msmsdcc_dml_exit(struct msmsdcc_host *host);
- #else
- static inline int msmsdcc_dml_init(struct msmsdcc_host *host) { return 0; }
- static inline int msmsdcc_dml_start_xfer(struct msmsdcc_host *host,
- struct mmc_data *data) { return 0; }
- static inline bool msmsdcc_is_dml_busy(
- struct msmsdcc_host *host) { return 0; }
- static inline void msmsdcc_dml_reset(struct msmsdcc_host *host) { }
- static inline void msmsdcc_dml_exit(struct msmsdcc_host *host) { }
- #endif /* CONFIG_MMC_MSM_SPS_SUPPORT */
- #endif /* _MSM_SDCC_DML_H */
|