Subject: [PATCH] spi/omap2_mcspi: disable and enable chan between each SPI transfer

From: [email-masked] (jason)
Date: Sun, 27 Jun 2010 21:12:50 +0800

Grant Likely wrote:
> On Fri, Jun 25, 2010 at 6:05 AM, jason <[email-masked]> wrote:
>   
>> roman.tereshonkov at nokia.com wrote:
>>     
>>>
>>>       
>> [snip]
>>     
>>>> -----Original Message-----
>>>>
>>>>                                        }
>>>>                                        c = 0;
>>>> -                               } else if (c == 0 && tx == NULL) {
>>>> -                                       omap2_mcspi_set_enable(spi, 0);
>>>>                                }
>>>>
>>>>                                *rx++ = __raw_readl(rx_reg);
>>>>
>>>>         
>>> Why do you do this?
>>> Reading the last word from the shift register buffer leads to the
>>> receiving new data to the buffer.
>>> The channel needs to be disabled before the last word reading.
>>>
>>>
>>>
>>>       
>> Yes, you are right. If this patch can be accepted, i will remove those
>> changes in the V2 patch.
>> Please see my email replying grant likely's questions.
>>     
>
> Hi Jason.
>
> I'm assuming I can ignore this patch and wait for your V2.  I'll still
> want an ack from other omap spi users before I apply it though.
>
> g.
>
>   
Hi grant,
OK, i will prepare V2 and send out for review.

Hi roman,
I don't know if there is a TI omap3530evm board at your hand, if yes, 
you can
test touchscreen driver(ads7846) via tslib(ts_calibrate, ts_test).

Thanks,
Jason.
>> Thanks,
>> Jason.
>>     
>>>       
>>>> @@ -646,7 +641,7 @@ omap2_mcspi_txrx_pio(struct spi_device *spi, struct
>>>> spi_transfer *xfer)
>>>>                        dev_err(&spi->dev, "EOT timed out\n");
>>>>        }
>>>> out:
>>>> -       omap2_mcspi_set_enable(spi, 1);
>>>> +       omap2_mcspi_set_enable(spi, 0);
>>>>        return count - c;
>>>> }
>>>>
>>>> @@ -894,7 +889,6 @@ static void omap2_mcspi_work(struct work_struct
>>>> *work)
>>>>                cs = spi->controller_state;
>>>>                cd = spi->controller_data;
>>>>
>>>> -               omap2_mcspi_set_enable(spi, 1);
>>>>                list_for_each_entry(t, &m->transfers, transfer_list) {
>>>>                        if (t->tx_buf == NULL && t->rx_buf == NULL &&
>>>> t->len) {
>>>>                                status = -EINVAL;
>>>> @@ -931,6 +925,8 @@ static void omap2_mcspi_work(struct work_struct
>>>> *work)
>>>>
>>>>                        mcspi_write_chconf0(spi, chconf);
>>>>
>>>> +                       omap2_mcspi_set_enable(spi, 1);
>>>> +
>>>>                        if (t->len) {
>>>>                                unsigned        count;
>>>>
>>>> --
>>>> 1.5.6.5
>>>>
>>>>
>>>>
>>>>         
>>     
>
>
>
>