Вторник, 18 февраля 2014, 16:52 +08:00 от Axel Lin <axel.lin@xxxxxxxxxx>: > 2014-02-18 16:27 GMT+08:00 Alexander Shiyan <shc_work@xxxxxxx>: > > Вторник, 18 февраля 2014, 9:31 +08:00 от Axel Lin <axel.lin@xxxxxxxxxx>: > >> Convert to use default implementation of transfer_one_message() which provides > >> standard handling of delays and chip select management. > >> > >> Signed-off-by: Axel Lin <axel.lin@xxxxxxxxxx> > >> --- > > ... > >> static irqreturn_t spi_clps711x_isr(int irq, void *dev_id) > >> { > >> - struct spi_clps711x_data *hw = (struct spi_clps711x_data *)dev_id; > >> + struct spi_master *master = dev_id; > >> + struct spi_clps711x_data *hw = spi_master_get_devdata(master); > >> u8 data; > >> > >> /* Handle RX */ > >> @@ -135,7 +113,7 @@ static irqreturn_t spi_clps711x_isr(int irq, void *dev_id) > >> clps_writel(data | SYNCIO_FRMLEN(hw->bpw) | SYNCIO_TXFRMEN, > >> SYNCIO); > >> } else > >> - complete(&hw->done); > >> + complete(&master->xfer_completion); > > > > spi_finalize_current_transfer(master); > > It's done by spi core. see spi_transfer_one_message() in spi.c spi_finalize_current_transfer() != spi_finalize_current_message() I just suggest to replace complete(&master->xfer_completion) to spi_finalize_current_transfer(master). --- ��.n��������+%������w��{.n�����{����)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥