• S
    msm: Add 'execute' datamover callback · 5b00f40f
    San Mehat 提交于
    Based on a patch from Brent DeGraaf:
    
    "The datamover supports channels which can be shared amongst devices.
    As a result, the actual data transfer may occur some time after the
    request is queued up. Some devices such as mmc host controllers
    will timeout if a command is issued too far in advance of the actual
    transfer, so if dma to other devices on the same channel is already
    in progress or queued up, the added delay can cause pending transfers
    to fail before they start. This change extends the api to allow a
    user callback to be invoked just before the actual transfer takes
    place, thus allowing actions directly associated with the dma
    transfer, such as device commands, to be invoked with precise timing.
    Without this mechanism, there is no way for a driver to realize
    this timing. Also adds a user pointer to the command structure for use
    by the caller to reference information that may be needed by the
    callback routine for proper identification and processing associated
    with that specific request. This change is necessary to fix problems
    associated with excessive command timeouts and race conditions in the
    mmc driver."
    
    This patch also fixes all the callers of msm_dmov_enqueue_cmd() to
    ensure their callback function is NULL.
    Signed-off-by: NSan Mehat <san@google.com>
    Cc: Brent DeGraaf <bdegraaf@quicinc.com>
    Cc: Brian Swetland <swetland@google.com>
    Signed-off-by: NDaniel Walker <dwalker@codeaurora.org>
    5b00f40f
msm_sdcc.c 30.4 KB