<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/serial, branch tegra-9.12.13</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>tegra serial: adding power control api for bluesleep power management.</title>
<updated>2010-05-26T01:35:41+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-05-23T16:37:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=57ac37ef1a0a7840acec8525af4bca6933001c86'/>
<id>57ac37ef1a0a7840acec8525af4bca6933001c86</id>
<content type='text'>
Adding apis for following function to hooking up tegra serial driver with
bluesleep power management:
 - Clock off.
 - Clock on.
 - Setting flow control to desired state.
 - Checking for tx fifo status.

Following 4 state machine is developed to achieve this:
UART_CLOSED, UART_OPENED, UART_SUSPEND, UART_CLOCK_OFF.

The transitions of state machines are as follows:
UART_CLOSED: the init state  on which resource is allocated but not
  opened by client or device is closed.

UART_OPENED: Able to do data transfer.
  CLOSED  to  OPENED by opening the port.
  CLOCK_OFF to OPENED by calling function tegra_uart_request_clock_on().
  SUSPEND to OPENED by calling resume().

UART_CLOCK_OFF: The controller clock is disabled and so no data transfer
 can happen. At this state, controller is not ready for deep power down.
 OPENED to CLOCK_OFF by calling tegra_uart_request_clock_off().
 Can not go to this state from CLOSED and SUSPEND.

UART_SUSPEND: The controller is in suspended state and ready for deep power down.
 UART_CLOCK_OFF to SUSPEND:
 OPENED to SUSPEND.

Tested in whistler.

Change-Id: I24461ac6f20f61e44b49332cdc6b93a01f605fc9
Reviewed-on: http://git-master/r/1377
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding apis for following function to hooking up tegra serial driver with
bluesleep power management:
 - Clock off.
 - Clock on.
 - Setting flow control to desired state.
 - Checking for tx fifo status.

Following 4 state machine is developed to achieve this:
UART_CLOSED, UART_OPENED, UART_SUSPEND, UART_CLOCK_OFF.

The transitions of state machines are as follows:
UART_CLOSED: the init state  on which resource is allocated but not
  opened by client or device is closed.

UART_OPENED: Able to do data transfer.
  CLOSED  to  OPENED by opening the port.
  CLOCK_OFF to OPENED by calling function tegra_uart_request_clock_on().
  SUSPEND to OPENED by calling resume().

UART_CLOCK_OFF: The controller clock is disabled and so no data transfer
 can happen. At this state, controller is not ready for deep power down.
 OPENED to CLOCK_OFF by calling tegra_uart_request_clock_off().
 Can not go to this state from CLOSED and SUSPEND.

UART_SUSPEND: The controller is in suspended state and ready for deep power down.
 UART_CLOCK_OFF to SUSPEND:
 OPENED to SUSPEND.

Tested in whistler.

Change-Id: I24461ac6f20f61e44b49332cdc6b93a01f605fc9
Reviewed-on: http://git-master/r/1377
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra serial: Removing the compilation warning.</title>
<updated>2010-05-15T16:36:13+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-05-13T14:37:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d1c82509659fdadb4ff313a4664436cb8f2e1902'/>
<id>d1c82509659fdadb4ff313a4664436cb8f2e1902</id>
<content type='text'>
Fixing the statement which is producing the warning.

Compiled without warning, tested with harmony BT-A2dp.

Change-Id: I7540653522124aa93b5afc8551a07e8322b37316
Reviewed-on: http://git-master/r/1381
Reviewed-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Tested-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Reviewed-by: Bitan Biswas &lt;bbiswas@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixing the statement which is producing the warning.

Compiled without warning, tested with harmony BT-A2dp.

Change-Id: I7540653522124aa93b5afc8551a07e8322b37316
Reviewed-on: http://git-master/r/1381
Reviewed-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Tested-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Reviewed-by: Bitan Biswas &lt;bbiswas@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra serial: Fixing system freeze when doing uart data transfer.</title>
<updated>2010-05-11T22:16:13+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-05-07T18:26:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f24ec023e2d60362372d86d0ee5d95a0d4c2a439'/>
<id>f24ec023e2d60362372d86d0ee5d95a0d4c2a439</id>
<content type='text'>
Removed the rx and tx separate lock and used only one lock to control the
interrupt enable bit in independent rx and tx path. The interrupt control
register is shared between the rx and tx workqueue.

Tested on harmony with BT, playing songs for 30 minutes without any packet
loss.

Change-Id: I690f28559c0ae0c3dc98ab930298e964a7ea07dc
Reviewed-on: http://git-master/r/1316
Reviewed-by: Rahul Bansal &lt;rbansal@nvidia.com&gt;
Tested-by: Rahul Bansal &lt;rbansal@nvidia.com&gt;
Tested-by: Anjali Kotnala &lt;akotnala@nvidia.com&gt;
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Removed the rx and tx separate lock and used only one lock to control the
interrupt enable bit in independent rx and tx path. The interrupt control
register is shared between the rx and tx workqueue.

Tested on harmony with BT, playing songs for 30 minutes without any packet
loss.

Change-Id: I690f28559c0ae0c3dc98ab930298e964a7ea07dc
Reviewed-on: http://git-master/r/1316
Reviewed-by: Rahul Bansal &lt;rbansal@nvidia.com&gt;
Tested-by: Rahul Bansal &lt;rbansal@nvidia.com&gt;
Tested-by: Anjali Kotnala &lt;akotnala@nvidia.com&gt;
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra dma: Correcting the typo error.</title>
<updated>2010-04-30T01:33:27+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-04-27T14:15:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1743f5918df4a4be189ac5d408c76ed25a065760'/>
<id>1743f5918df4a4be189ac5d408c76ed25a065760</id>
<content type='text'>
Correcting the spelling error in enum definition TEGRA_DMA_REQ_ERROR_ABOTRED
to TEGRA_DMA_REQ_ERROR_ABORTED.

Tested on harmony.

Change-Id: Ie28aea9f87c1a0a2d3f27ce6132fb3eb48eb59e6
Reviewed-on: http://git-master/r/1225
Reviewed-by: Ramachandrudu Kandhala &lt;rkandhala@nvidia.com&gt;
Reviewed-by: Venkata (Muni) Anda &lt;vanda@nvidia.com&gt;
Reviewed-by: Yu-Huan Hsu &lt;yhsu@nvidia.com&gt;
Tested-by: Ramachandrudu Kandhala &lt;rkandhala@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Correcting the spelling error in enum definition TEGRA_DMA_REQ_ERROR_ABOTRED
to TEGRA_DMA_REQ_ERROR_ABORTED.

Tested on harmony.

Change-Id: Ie28aea9f87c1a0a2d3f27ce6132fb3eb48eb59e6
Reviewed-on: http://git-master/r/1225
Reviewed-by: Ramachandrudu Kandhala &lt;rkandhala@nvidia.com&gt;
Reviewed-by: Venkata (Muni) Anda &lt;vanda@nvidia.com&gt;
Reviewed-by: Yu-Huan Hsu &lt;yhsu@nvidia.com&gt;
Tested-by: Ramachandrudu Kandhala &lt;rkandhala@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra serial: Improving the rx flow.</title>
<updated>2010-04-23T20:29:20+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-04-21T10:42:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=526ae33f0d5fddda812f0444dd91ece1cedf8dde'/>
<id>526ae33f0d5fddda812f0444dd91ece1cedf8dde</id>
<content type='text'>
Following improvements are done in the uart rx and tx path:
- Separate locks for rx and tx paths.
- Implementing the continuous double buffering with same buffer for
  uart rx.
- Deactivating the rts line only incase of if dma does not read the
  fifo i.e. nonmultiple of 4.
- Handling the modem control signal chnage properly.
- Created the separate workqueue for the receive to handle dma thresold
 callback as well as the rx uart interrupts.

Tested on harmony and whistler with uart testcase and BT on harmony.
we tested the simulatenous file transfer and the A2DP on BT-harmony
and did not observe any glitches.

Change-Id: Id451ca2f42e246b524a7c9e4bbf3aa832cd0d535
Reviewed-on: http://git-master/r/1172
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Reviewed-by: Anantha Idapalapati &lt;aidapalapati@nvidia.com&gt;
Tested-by: Anantha Idapalapati &lt;aidapalapati@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Following improvements are done in the uart rx and tx path:
- Separate locks for rx and tx paths.
- Implementing the continuous double buffering with same buffer for
  uart rx.
- Deactivating the rts line only incase of if dma does not read the
  fifo i.e. nonmultiple of 4.
- Handling the modem control signal chnage properly.
- Created the separate workqueue for the receive to handle dma thresold
 callback as well as the rx uart interrupts.

Tested on harmony and whistler with uart testcase and BT on harmony.
we tested the simulatenous file transfer and the A2DP on BT-harmony
and did not observe any glitches.

Change-Id: Id451ca2f42e246b524a7c9e4bbf3aa832cd0d535
Reviewed-on: http://git-master/r/1172
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Reviewed-by: Anantha Idapalapati &lt;aidapalapati@nvidia.com&gt;
Tested-by: Anantha Idapalapati &lt;aidapalapati@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra uart: Fixing the tx and rx dma path issue</title>
<updated>2010-04-13T22:57:22+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-04-09T16:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c31c451d72bc2c6e3973adf4d3356a872cc77539'/>
<id>c31c451d72bc2c6e3973adf4d3356a872cc77539</id>
<content type='text'>
Following issue has been fixed:
- Blocking write was returning immediatly if data request is multiple of 4.
- Blocking write was not able to complete if data length is nonmultiple of 4
  and more than 4.
- The close was taking too much time  because proper timeout and fifo size was
  not  configured.
- Tx dma path optimized to fill more data to dma buffer if there is more
 pending chars in the buffer.
- Tx path is fixed to properly signal the wakup event to tty layer.
- RTS flow control is not getting set from second open even cflag is
  requested for that.
- Rx dma was not receiving the correct data after second open. The multiple
 request was
  getting queued for the receive path at the time of closing.
- Rx dma was started before uart controller is configured and it is creating
 to misbehave  the dma.
- Transfer count was not getting calculated in the dma driver.

Pending issue:
- Loosing the data id more than 32K of data was sennt is single shot. Debugging
  this.

Tested on harmony with different testcase developed for testing the linux serial
 driver.

Change-Id: I6ed9095dd6340d2b5e7ef036823d2e4e5a61abcc
Reviewed-on: http://git-master/r/1065
Tested-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Tested-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Following issue has been fixed:
- Blocking write was returning immediatly if data request is multiple of 4.
- Blocking write was not able to complete if data length is nonmultiple of 4
  and more than 4.
- The close was taking too much time  because proper timeout and fifo size was
  not  configured.
- Tx dma path optimized to fill more data to dma buffer if there is more
 pending chars in the buffer.
- Tx path is fixed to properly signal the wakup event to tty layer.
- RTS flow control is not getting set from second open even cflag is
  requested for that.
- Rx dma was not receiving the correct data after second open. The multiple
 request was
  getting queued for the receive path at the time of closing.
- Rx dma was started before uart controller is configured and it is creating
 to misbehave  the dma.
- Transfer count was not getting calculated in the dma driver.

Pending issue:
- Loosing the data id more than 32K of data was sennt is single shot. Debugging
  this.

Tested on harmony with different testcase developed for testing the linux serial
 driver.

Change-Id: I6ed9095dd6340d2b5e7ef036823d2e4e5a61abcc
Reviewed-on: http://git-master/r/1065
Tested-by: Suresh Mangipudi &lt;smangipudi@nvidia.com&gt;
Reviewed-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Tested-by: Udaykumar Rameshchan Raval &lt;uraval@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial: delete tegra DDK serial driver</title>
<updated>2010-03-12T04:28:30+00:00</updated>
<author>
<name>Gary King</name>
<email>gking@nvidia.com</email>
</author>
<published>2010-03-11T17:04:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d7410ca658ea62a51163655f000cf20c640c76f9'/>
<id>d7410ca658ea62a51163655f000cf20c640c76f9</id>
<content type='text'>
this driver is no longer being used, and its continued existence
just causes confusion.

Change-Id: Ia5b4a350b6590bbd0e8914625e9e81951096fb8c
Reviewed-on: http://git-master/r/843
Reviewed-by: John Davis &lt;jodavis@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
this driver is no longer being used, and its continued existence
just causes confusion.

Change-Id: Ia5b4a350b6590bbd0e8914625e9e81951096fb8c
Reviewed-on: http://git-master/r/843
Reviewed-by: John Davis &lt;jodavis@nvidia.com&gt;
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra serial: Tx Path Optimizations</title>
<updated>2010-03-10T02:56:01+00:00</updated>
<author>
<name>Anantha Idapalapati</name>
<email>aidapalapati@nvidia.com</email>
</author>
<published>2010-03-03T11:03:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=02259089c0deaff0f89a9c8408497c3aeccbe0dd'/>
<id>02259089c0deaff0f89a9c8408497c3aeccbe0dd</id>
<content type='text'>
Based on profiling, observed UART Tx to be mostly waiting for
a previous DMA to be finished so that it can proceed for further
processing of data from upper layers.

Two Mmodifications are implemented as part of this commit
1. Forming a DMA request for smaller transfers and waiting for
DMA request to be finished introduced overhead. Implemented a
polling based transfers for transfers less than a certain limit.

2. Implemented a parallel activity between "DMA Buffer -&gt; UART FIFO"
and "Application -&gt; DMA Buffer" copies. introduced a new DMA Buffer
which can be made ready by the time DMA finishes use of another DMA
Buffer that was filled by Driver.

Bug ID: 652334

Change-Id: I30cad291553f9c0c67cb95afa67e468446f7ffd7
Reviewed-on: http://git-master/r/743
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Based on profiling, observed UART Tx to be mostly waiting for
a previous DMA to be finished so that it can proceed for further
processing of data from upper layers.

Two Mmodifications are implemented as part of this commit
1. Forming a DMA request for smaller transfers and waiting for
DMA request to be finished introduced overhead. Implemented a
polling based transfers for transfers less than a certain limit.

2. Implemented a parallel activity between "DMA Buffer -&gt; UART FIFO"
and "Application -&gt; DMA Buffer" copies. introduced a new DMA Buffer
which can be made ready by the time DMA finishes use of another DMA
Buffer that was filled by Driver.

Bug ID: 652334

Change-Id: I30cad291553f9c0c67cb95afa67e468446f7ffd7
Reviewed-on: http://git-master/r/743
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra uart: Resetting baudrate variable if controller get reset.</title>
<updated>2010-03-02T02:31:32+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-02-26T19:09:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f1d2c093ffdcc37a0ade002752644eaada63bef3'/>
<id>f1d2c093ffdcc37a0ade002752644eaada63bef3</id>
<content type='text'>
Resetting the baudrate variable which stores the current baudrate after
resetting the controller.

Change-Id: Ia1abf68738897941690644252dbc3d3e4bf6bb0f
Reviewed-on: http://git-master/r/712
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Resetting the baudrate variable which stores the current baudrate after
resetting the controller.

Change-Id: Ia1abf68738897941690644252dbc3d3e4bf6bb0f
Reviewed-on: http://git-master/r/712
Reviewed-by: Gary King &lt;gking@nvidia.com&gt;
Tested-by: Gary King &lt;gking@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tegra uart: Removing the modification of the mctrl</title>
<updated>2010-02-23T09:09:46+00:00</updated>
<author>
<name>Laxman Dewangan</name>
<email>ldewangan@nvidia.com</email>
</author>
<published>2010-02-23T08:23:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=364ea74fdd968c0370d64908891e22961e771788'/>
<id>364ea74fdd968c0370d64908891e22961e771788</id>
<content type='text'>
The serial_core have the modem state variable mctrl which was getting
modified by the tegra uart driver. The low level driver should not modify
this variable as serial core uses this for the modem control statesi and uses
in future for controling the modem states.

Removing the modification of this variable from low level driver.

Tested with suspend/resume with BT on whistler by monitoring the modem signals.

Change-Id: Ib6244c5160e40623a40e4764f5f156dc4f386ec9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The serial_core have the modem state variable mctrl which was getting
modified by the tegra uart driver. The low level driver should not modify
this variable as serial core uses this for the modem control statesi and uses
in future for controling the modem states.

Removing the modification of this variable from low level driver.

Tested with suspend/resume with BT on whistler by monitoring the modem signals.

Change-Id: Ib6244c5160e40623a40e4764f5f156dc4f386ec9
</pre>
</div>
</content>
</entry>
</feed>
