@@ -739,12 +739,13 @@ static void stm32f7_i2c_disable_dma_req(struct stm32f7_i2c_dev *i2c_dev)
739
739
740
740
static void stm32f7_i2c_dma_callback (void * arg )
741
741
{
742
- struct stm32f7_i2c_dev * i2c_dev = ( struct stm32f7_i2c_dev * ) arg ;
742
+ struct stm32f7_i2c_dev * i2c_dev = arg ;
743
743
struct stm32_i2c_dma * dma = i2c_dev -> dma ;
744
- struct device * dev = dma -> chan_using -> device -> dev ;
745
744
746
745
stm32f7_i2c_disable_dma_req (i2c_dev );
747
- dma_unmap_single (dev , dma -> dma_buf , dma -> dma_len , dma -> dma_data_dir );
746
+ dmaengine_terminate_async (dma -> chan_using );
747
+ dma_unmap_single (i2c_dev -> dev , dma -> dma_buf , dma -> dma_len ,
748
+ dma -> dma_data_dir );
748
749
complete (& dma -> dma_complete );
749
750
}
750
751
@@ -1510,7 +1511,6 @@ static irqreturn_t stm32f7_i2c_handle_isr_errs(struct stm32f7_i2c_dev *i2c_dev,
1510
1511
u16 addr = f7_msg -> addr ;
1511
1512
void __iomem * base = i2c_dev -> base ;
1512
1513
struct device * dev = i2c_dev -> dev ;
1513
- struct stm32_i2c_dma * dma = i2c_dev -> dma ;
1514
1514
1515
1515
/* Bus error */
1516
1516
if (status & STM32F7_I2C_ISR_BERR ) {
@@ -1551,10 +1551,8 @@ static irqreturn_t stm32f7_i2c_handle_isr_errs(struct stm32f7_i2c_dev *i2c_dev,
1551
1551
}
1552
1552
1553
1553
/* Disable dma */
1554
- if (i2c_dev -> use_dma ) {
1555
- stm32f7_i2c_disable_dma_req (i2c_dev );
1556
- dmaengine_terminate_async (dma -> chan_using );
1557
- }
1554
+ if (i2c_dev -> use_dma )
1555
+ stm32f7_i2c_dma_callback (i2c_dev );
1558
1556
1559
1557
i2c_dev -> master_mode = false;
1560
1558
complete (& i2c_dev -> complete );
@@ -1600,7 +1598,6 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
1600
1598
{
1601
1599
struct stm32f7_i2c_dev * i2c_dev = data ;
1602
1600
struct stm32f7_i2c_msg * f7_msg = & i2c_dev -> f7_msg ;
1603
- struct stm32_i2c_dma * dma = i2c_dev -> dma ;
1604
1601
void __iomem * base = i2c_dev -> base ;
1605
1602
u32 status , mask ;
1606
1603
int ret ;
@@ -1619,10 +1616,8 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
1619
1616
dev_dbg (i2c_dev -> dev , "<%s>: Receive NACK (addr %x)\n" ,
1620
1617
__func__ , f7_msg -> addr );
1621
1618
writel_relaxed (STM32F7_I2C_ICR_NACKCF , base + STM32F7_I2C_ICR );
1622
- if (i2c_dev -> use_dma ) {
1623
- stm32f7_i2c_disable_dma_req (i2c_dev );
1624
- dmaengine_terminate_async (dma -> chan_using );
1625
- }
1619
+ if (i2c_dev -> use_dma )
1620
+ stm32f7_i2c_dma_callback (i2c_dev );
1626
1621
f7_msg -> result = - ENXIO ;
1627
1622
}
1628
1623
@@ -1640,8 +1635,7 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
1640
1635
ret = wait_for_completion_timeout (& i2c_dev -> dma -> dma_complete , HZ );
1641
1636
if (!ret ) {
1642
1637
dev_dbg (i2c_dev -> dev , "<%s>: Timed out\n" , __func__ );
1643
- stm32f7_i2c_disable_dma_req (i2c_dev );
1644
- dmaengine_terminate_async (dma -> chan_using );
1638
+ stm32f7_i2c_dma_callback (i2c_dev );
1645
1639
f7_msg -> result = - ETIMEDOUT ;
1646
1640
}
1647
1641
}
0 commit comments