linux/include/linux/platform_data/dma-imx.h
<<
>>
Prefs
   1/*
   2 * Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 */
   8
   9#ifndef __ASM_ARCH_MXC_DMA_H__
  10#define __ASM_ARCH_MXC_DMA_H__
  11
  12#include <linux/scatterlist.h>
  13#include <linux/device.h>
  14#include <linux/dmaengine.h>
  15
  16/*
  17 * This enumerates peripheral types. Used for SDMA.
  18 */
  19enum sdma_peripheral_type {
  20        IMX_DMATYPE_SSI,        /* MCU domain SSI */
  21        IMX_DMATYPE_SSI_SP,     /* Shared SSI */
  22        IMX_DMATYPE_MMC,        /* MMC */
  23        IMX_DMATYPE_SDHC,       /* SDHC */
  24        IMX_DMATYPE_UART,       /* MCU domain UART */
  25        IMX_DMATYPE_UART_SP,    /* Shared UART */
  26        IMX_DMATYPE_FIRI,       /* FIRI */
  27        IMX_DMATYPE_CSPI,       /* MCU domain CSPI */
  28        IMX_DMATYPE_CSPI_SP,    /* Shared CSPI */
  29        IMX_DMATYPE_SIM,        /* SIM */
  30        IMX_DMATYPE_ATA,        /* ATA */
  31        IMX_DMATYPE_CCM,        /* CCM */
  32        IMX_DMATYPE_EXT,        /* External peripheral */
  33        IMX_DMATYPE_MSHC,       /* Memory Stick Host Controller */
  34        IMX_DMATYPE_MSHC_SP,    /* Shared Memory Stick Host Controller */
  35        IMX_DMATYPE_DSP,        /* DSP */
  36        IMX_DMATYPE_MEMORY,     /* Memory */
  37        IMX_DMATYPE_FIFO_MEMORY,/* FIFO type Memory */
  38        IMX_DMATYPE_SPDIF,      /* SPDIF */
  39        IMX_DMATYPE_IPU_MEMORY, /* IPU Memory */
  40        IMX_DMATYPE_ASRC,       /* ASRC */
  41        IMX_DMATYPE_ESAI,       /* ESAI */
  42        IMX_DMATYPE_SSI_DUAL,   /* SSI Dual FIFO */
  43        IMX_DMATYPE_ASRC_SP,    /* Shared ASRC */
  44        IMX_DMATYPE_SAI,        /* SAI */
  45};
  46
  47enum imx_dma_prio {
  48        DMA_PRIO_HIGH = 0,
  49        DMA_PRIO_MEDIUM = 1,
  50        DMA_PRIO_LOW = 2
  51};
  52
  53struct imx_dma_data {
  54        int dma_request; /* DMA request line */
  55        int dma_request2; /* secondary DMA request line */
  56        enum sdma_peripheral_type peripheral_type;
  57        int priority;
  58};
  59
  60static inline int imx_dma_is_ipu(struct dma_chan *chan)
  61{
  62        return !strcmp(dev_name(chan->device->dev), "ipu-core");
  63}
  64
  65static inline int imx_dma_is_general_purpose(struct dma_chan *chan)
  66{
  67        return !strcmp(chan->device->dev->driver->name, "imx-sdma") ||
  68                !strcmp(chan->device->dev->driver->name, "imx-dma");
  69}
  70
  71#endif
  72