@@ -739,12 +739,13 @@ static void stm32f7_i2c_disable_dma_req(struct stm32f7_i2c_dev *i2c_dev)
739739
740740static void stm32f7_i2c_dma_callback (void * arg )
741741{
742- struct stm32f7_i2c_dev * i2c_dev = ( struct stm32f7_i2c_dev * ) arg ;
742+ struct stm32f7_i2c_dev * i2c_dev = arg ;
743743 struct stm32_i2c_dma * dma = i2c_dev -> dma ;
744- struct device * dev = dma -> chan_using -> device -> dev ;
745744
746745 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 );
748749 complete (& dma -> dma_complete );
749750}
750751
@@ -1510,7 +1511,6 @@ static irqreturn_t stm32f7_i2c_handle_isr_errs(struct stm32f7_i2c_dev *i2c_dev,
15101511 u16 addr = f7_msg -> addr ;
15111512 void __iomem * base = i2c_dev -> base ;
15121513 struct device * dev = i2c_dev -> dev ;
1513- struct stm32_i2c_dma * dma = i2c_dev -> dma ;
15141514
15151515 /* Bus error */
15161516 if (status & STM32F7_I2C_ISR_BERR ) {
@@ -1551,10 +1551,8 @@ static irqreturn_t stm32f7_i2c_handle_isr_errs(struct stm32f7_i2c_dev *i2c_dev,
15511551 }
15521552
15531553 /* 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 );
15581556
15591557 i2c_dev -> master_mode = false;
15601558 complete (& i2c_dev -> complete );
@@ -1600,7 +1598,6 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
16001598{
16011599 struct stm32f7_i2c_dev * i2c_dev = data ;
16021600 struct stm32f7_i2c_msg * f7_msg = & i2c_dev -> f7_msg ;
1603- struct stm32_i2c_dma * dma = i2c_dev -> dma ;
16041601 void __iomem * base = i2c_dev -> base ;
16051602 u32 status , mask ;
16061603 int ret ;
@@ -1619,10 +1616,8 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
16191616 dev_dbg (i2c_dev -> dev , "<%s>: Receive NACK (addr %x)\n" ,
16201617 __func__ , f7_msg -> addr );
16211618 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 );
16261621 f7_msg -> result = - ENXIO ;
16271622 }
16281623
@@ -1640,8 +1635,7 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
16401635 ret = wait_for_completion_timeout (& i2c_dev -> dma -> dma_complete , HZ );
16411636 if (!ret ) {
16421637 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 );
16451639 f7_msg -> result = - ETIMEDOUT ;
16461640 }
16471641 }
0 commit comments