106 lines
2.8 KiB
C
106 lines
2.8 KiB
C
|
/*
|
||
|
* 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 */
|