tdc: fix errors in gpio config and read DMA status

Signed-off-by: Samuel Iglesias Gonsálvez's avatarSamuel Iglesias Gonsalvez <siglesias@igalia.com>
parent c894c026
......@@ -28,11 +28,11 @@
#define TDC_DMA_NEXT_H_R 0x1C
#define TDC_DMA_ATTRIB_R 0x20
#define TDC_DMA_STAT_IDLE 0
#define TDC_DMA_STAT_DONE 1
#define TDC_DMA_STAT_BUSY 2
#define TDC_DMA_STAT_ERR 3
#define TDC_DMA_STAT_ABORT 4
#define TDC_DMA_STAT_IDLE BIT(0)
#define TDC_DMA_STAT_DONE BIT(1)
#define TDC_DMA_STAT_BUSY BIT(2)
#define TDC_DMA_STAT_ERR BIT(3)
#define TDC_DMA_STAT_ABORT BIT(4)
/* ACAM GPX chip registers available */
#define TDC_ACAM_CFG_REG_0 0x20000
......
......@@ -32,10 +32,10 @@ DECLARE_WAIT_QUEUE_HEAD(fmc_wait_dma);
static atomic_t fmc_dma_end;
static struct fmc_gpio tdc_gpio = {
.carrier_name = "spec",
//.carrier_name = "spec",
.gpio = FMC_GPIO_IRQ(0),
.mode = GPIOF_DIR_OUT,
.irqmode = IRQF_TRIGGER_LOW,
.mode = GPIOF_DIR_IN,
.irqmode = IRQF_TRIGGER_RISING,
};
static void tdc_fmc_gennum_setup_local_clock(struct spec_tdc *tdc, int freq)
......@@ -169,7 +169,7 @@ static void tdc_fmc_irq_work(struct work_struct *work)
/* Check the status of the DMA */
ret = readl(tdc->base + TDC_DMA_STAT_R);
if((ret == TDC_DMA_STAT_ERR) || (ret == TDC_DMA_STAT_ABORT)) {
if((ret & TDC_DMA_STAT_ERR) || (ret & TDC_DMA_STAT_ABORT)) {
pr_err("tdc: error in DMA transfer\n");
mutex_unlock(&fmc_dma_lock);
goto dma_out;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment