summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHaridhar Kalvala <haridhar.kalvala@stericsson.com>2011-10-31 16:08:33 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:07:18 +0200
commitdccad4536e9ec23bf11bce684b460263a86fa16a (patch)
tree6011731c3615c43ed00a783f8a6ea15670409631 /drivers
parentc4ba3258812ab3cf0e34d89671e4a8d9c6cf3836 (diff)
drivers: misc: Deregistering of rx- channel added.
Mad driver updated with de-registering of RX channel with the mailbox.Moved unmap of shared memory out of mad_close function. ST-Ericsson Linux next: - ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I50351e594d746f5c2891a86351407a5bf8f934ab Signed-off-by: Haridhar Kalvala <haridhar.kalvala@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/35913 Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/misc/modem_audio/mad.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/drivers/misc/modem_audio/mad.c b/drivers/misc/modem_audio/mad.c
index 62bef3c75fd..88bbcaa3c9c 100644
--- a/drivers/misc/modem_audio/mad.c
+++ b/drivers/misc/modem_audio/mad.c
@@ -459,19 +459,15 @@ static int mad_close(struct inode *ino, struct file *filp)
{
dev_dbg(mad_dev.this_device, "%s", __func__);
- if (mad->dsp_shm_write_ptr != NULL) {
- iounmap(mad->dsp_shm_write_ptr);
- mad->dsp_shm_write_ptr = NULL;
- }
-
- if (mad->dsp_shm_read_ptr != NULL) {
- iounmap(mad->dsp_shm_read_ptr);
- mad->dsp_shm_read_ptr = NULL;
+ if (mbox_channel_deregister(CHANNEL_NUM_RX)) {
+ dev_err(mad_dev.this_device, "%s:deregister err", __func__);
+ return -EFAULT;
}
-
kfree(mad->rx_buff);
kfree(mad->tx_buff);
mad->data_written = 0;
+ mad->rx_buffer_num = 0;
+ mad->rx_buffer_read = 0;
mad->open_check = false;
return 0;
@@ -495,7 +491,16 @@ static void __exit mad_exit(void)
{
dev_dbg(mad_dev.this_device, "%s", __func__);
- kfree(mad);
+ if (mad->dsp_shm_write_ptr != NULL) {
+ iounmap(mad->dsp_shm_write_ptr);
+ mad->dsp_shm_write_ptr = NULL;
+ }
+
+ if (mad->dsp_shm_read_ptr != NULL) {
+ iounmap(mad->dsp_shm_read_ptr);
+ mad->dsp_shm_read_ptr = NULL;
+ }
- misc_deregister(&mad_dev);
+ kfree(mad);
+ misc_deregister(&mad_dev);
}