From: "Bao C. Ha" <baoha@sensoria.com>
To: <twoller@crystal.cirrus.com>
Cc: <audio@crystal.cirrus.com>, <linux-kernel@vger.kernel.org>
Subject: Problems with Crystal cs4281 driver in 2.4.8
Date: Thu, 13 Sep 2001 12:29:28 -0700 [thread overview]
Message-ID: <002401c13c8a$68864d30$456c020a@SENSORIA> (raw)
We are running kernel 2.4.8 on the sh4 platform.
We are encoutering a problem with the cs4281
driver as described in the following:
The device file is opened normally. Everything
is working fine. Then, when it is closed, the
application hangs. A ctrl-C is required to get
out of it. Upon further examining, we find that
the close() call is not returning. It is stuck
at the drain_adc().
In the cs4281_release(),
...
if (file->f_mode & FMODE_READ) {
------> drain_adc(s, file->f_flags & O_NONBLOCK);
down(&s->open_sem_adc);
stop_adc(s);
...
And in the drain_adc(),
...
for (;;) {
set_current_state(TASK_INTERRUPTIBLE);
spin_lock_irqsave(&s->lock, flags);
-----> count = s->dma_adc.count;
CS_DBGOUT(CS_FUNCTION, 2,
printk(KERN_INFO "cs4281: drain_adc() %d\n",
count));
spin_unlock_irqrestore(&s->lock, flags);
...
It seems that since s->dma_adc.count=8192, we
are going into an infinite loop there, in
drain_adc(),
The work-around that we are currently looking
at is setting the flag to O_NONBLOCKING just
prior to closing the device to take advantages
of this.
...
if (nonblock) {
remove_wait_queue(&s->dma_adc.wait, &wait);
current->state = TASK_RUNNING;
return -EBUSY;
}
...
Unfortunately, it causes problems later
since it is in non-blocking mode. Do a
fcntl(fd, F_SETFL, 0);
did not reset to the normal/blocking mode.
What would be the proper way to handle this
situation? Since I am not familiar with the
driver, I don't know if removing the
drain_adc() from cs4281_release() would cause
problems later or not. I am also not sure
this behavior is specific to the sh4-linux
port or not.
Appreciate any suggestions/comments.
Regards.
Bao
next reply other threads:[~2001-09-13 19:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-13 19:29 Bao C. Ha [this message]
2001-09-13 20:31 Woller, Thomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='002401c13c8a$68864d30$456c020a@SENSORIA' \
--to=baoha@sensoria.com \
--cc=audio@crystal.cirrus.com \
--cc=linux-kernel@vger.kernel.org \
--cc=twoller@crystal.cirrus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®