Thread (65 messages) 65 messages, 12 authors, 2011-03-22

[PATCH v2 13/13] tty: pruss SUART driver

From: Subhasish Ghosh <hidden>
Date: 2011-02-22 08:41:21
Also in: lkml

Hello,

I had kept separate files to affirm the modularity and ease of portability 
of the system.

There are three different interfaces,
1. The Linux driver interface
2. The PRU control interface
3. The McASP serializer interface.

To maintain modularity, I  had classified the files respectively as :
1.  pruss_suart.c
2.  pruss_suart_api.c
3.  pruss_suart_utils.c

This is not a single device which can be expressed as a single file,
but functionally different devices logically cascaded together to work in 
unison.

We use the PRU for packet processing, but the actual data is 
transmitted/received through the
McASP, which we use as a serializer.

I feel to combine these disparate functionalities into a single file will 
not

1. Help better understanding the device. I mean, why should a TTY UART 
driver be aware of the McASP or the PRU.
2. In case of a bug in the API layer or McASP, the driver need not be 
touched, thus improve maintainability.
3. If we need to port it to another Linux version, just editing the driver 
file should suffice, this will reduce bugs while porting.

To me, combining all of these into a single file only creates a mess. This 
is the reason I had separated them into different files!!
I don't understand why should it be better to have all of these into a 
single file.

--------------------------------------------------
From: "Arnd Bergmann" <arnd@arndb.de>
Sent: Saturday, February 19, 2011 12:21 AM
To: <redacted>
Cc: "Thomas Gleixner" <redacted>; "Alan Cox" 
[off-list ref]; [off-list ref]; 
[off-list ref]; "Subhasish Ghosh" 
[off-list ref]; "Greg Kroah-Hartman" [off-list ref]; 
[off-list ref]; "open list" [off-list ref]; 
[off-list ref]
Subject: Re: [PATCH v2 13/13] tty: pruss SUART driver
On Friday 18 February 2011 19:23:49 Thomas Gleixner wrote:
quoted
On Fri, 18 Feb 2011, Alan Cox wrote:
quoted
On Fri, 18 Feb 2011 19:17:38 +0530
"Subhasish Ghosh" [off-list ref] wrote:
quoted
Hello,

Regarding the semaphore to mutex migration.
We are using down_trylock in interrupt context,
mutex_trylock cannot be used in interrupt context, so we cannot use 
mutex in
our driver.
Then you probably need to rework your locking. Best bet might be to fix
all the other stuff and report the driver, and people can think about 
the
locking problem.
That semaphore is utterly useless to begin with. There are more
serious locking problems than this one. Non serialized calls to
suart_intr_clrmask/suart_intr_setmask are the most obvious ones.

Aside of that the code is complete unreadable.
I think it mostly suffers from the same problem as the CAN driver
I commented on earlier: One of the files (pruss_suart_api.c) was
clearly not written with Linux as the target, and the other files
try to work around this by wrapping a Linux driver around it.

The suart_api HAL stuff clearly needs to go away, so that the rest
can be rewritten into a proper device driver.

Arnd 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help