* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
/* struct mbcmd and union mbcmd_hw must be compatible */
struct mbcmd {
- u32 data:16;
- u32 cmd_l:8;
- u32 cmd_h:7;
- u32 seq:1;
+ u32 data:16;
+ u32 cmd_l:8;
+ u32 cmd_h:7;
+ u32 seq:1;
};
#define MBCMD_INIT(h, l, d) { \
}
struct mb_exarg {
- u8 tid;
+ u8 tid;
int argc;
- u16 *argv;
+ u16 *argv;
};
extern struct mbx *mbx_dsp;
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
cif_err = { "ERR", CMD_L_TYPE_SUBCMD, mbx_err },
cif_dbg = { "DBG", CMD_L_TYPE_NULL, mbx_dbg };
+#define MBX_CMD_MAX 0x80
const struct cmdinfo *cmdinfo[MBX_CMD_MAX] = {
[MBX_CMD_DSP_WDSND] = &cif_wdsnd,
[MBX_CMD_DSP_WDREQ] = &cif_wdreq,
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
(misc_mb_wait.cmd_h != mb->cmd_h) ||
(match_cmd_l_flag && (misc_mb_wait.cmd_l != mb->cmd_l))) {
const struct cmdinfo *ci = cmdinfo[mb->cmd_h];
- char cmdstr[32];
+ char cmdstr[32];
if (ci->cmd_l_type == CMD_L_TYPE_SUBCMD)
sprintf(cmdstr, "%s:%s", ci->name, subcmd_name(mb));
static int dsp_regread(enum dsp_space_e space, u16 adr, u16 *val)
{
u8 cmd_l = (space == SPACE_MEM) ? REGRW_MEMR : REGRW_IOR;
- int ret;
+ int ret;
ret = misc_mbcompose_send_and_wait(REGRW, cmd_l, adr, val);
if ((ret < 0) && (ret != -EINTR))
goto again;
}
break;
-
+
/*
* suspend / resume
* DSP is not reset within this code, but done in omap_pm_suspend.
}
break;
-
+
case CFGSTAT_RESUME:
if (cfgstat != CFGSTAT_SUSPEND) {
printk(KERN_WARNING
}
st_req = CFGSTAT_READY;
break;
-
+
default:
BUG();
return;
#ifdef OLD_BINARY_SUPPORT
else if ((mbx_revision == MBREV_3_0) ||
- (mbx_revision == MBREV_3_2)) {
+ (mbx_revision == MBREV_3_2)) {
printk(KERN_WARNING
"mbx: ***** old DSP binary *****\n"
" Please update your DSP application.\n");
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
for (i = 0; i < ARRAY_SIZE(dev_list); i++) {
class_device_destroy(dsp_ctl_class,
MKDEV(OMAP_DSP_CTL_MAJOR,
- dev_list[i].minor));
+ dev_list[i].minor));
}
class_destroy(dsp_ctl_class);
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* by Paul Mundt <paul.mundt@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
#include "../mailbox_hw.h"
#include "dsp.h"
#include "ioctl.h"
+#include "ipbuf.h"
#ifdef CONFIG_ARCH_OMAP2
#define IOMAP_VAL 0x3f
}
/* XXX: T.Kobayashi
- * A process can have old mappings. if we want to clear a pmd,
+ * A process can have old mappings. if we want to clear a pmd,
* we need to do it for all proceeses that use the old mapping.
*/
#if 0
}
/*
- * exmap_use(), unuse():
+ * exmap_use(), unuse():
* when the mapped area is exported to user space with mmap,
* the usecount is incremented.
* while the usecount > 0, that area can't be released.
#endif /* CONFIG_FB */
#ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
-static int omapfb_notifier_cb(struct omapfb_notifier_block *omapfb_nb,
- unsigned long event, struct omapfb_device *fbdev)
+static int omapfb_notifier_cb(struct notifier_block *omapfb_nb,
+ unsigned long event, void *fbi)
{
/* XXX */
printk("omapfb_notifier_cb(): event = %s\n",
{
int status;
- status = dsp_mbsend(MBCMD(KFUNC), OMAP_DSP_MBCMD_KFUNC_FBCTL,
- OMAP_DSP_MBCMD_FBCTL_UPD);
+ status = mbcompose_send(KFUNC, KFUNC_FBCTL, FBCTL_UPD);
if (status < 0) {
/* FIXME: DSP is busy !! */
printk(KERN_ERR
volatile unsigned short *buf = ipbuf_sys_da->d;
/* FIXME: try count sometimes exceeds 1000. */
- if (sync_with_dsp(&ipbuf_sys_da->s, OMAP_DSP_TID_ANON, 5000) < 0) {
- printk(KERN_ERR "mbx: FBCTL:UPD - IPBUF sync failed!\n");
+ if (sync_with_dsp(&ipbuf_sys_da->s, TID_ANON, 5000) < 0) {
+ printk(KERN_ERR "mbox: FBCTL:UPD - IPBUF sync failed!\n");
return;
}
win.x = buf[0];
return;
}
//printk("calling omapfb_update_window_async()\n");
- omapfb_update_window_async(&win, fbupd_cb, NULL);
+ omapfb_update_window_async(registered_fb[1], &win, fbupd_cb, NULL);
}
#else /* CONFIG_FB_OMAP_LCDC_EXTERNAL */
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
ipbuf_sys_da = p;
else
ipbuf_sys_ad = p;
-
+
return 0;
}
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
extern struct ipbcfg ipbcfg;
extern struct ipbuf_sys *ipbuf_sys_da, *ipbuf_sys_ad;
-#define ipb_bsycnt_inc(ipbcfg) \
- do { \
- disable_mbx_irq(mbx_dsp); \
- (ipbcfg)->bsycnt++; \
- enable_mbx_irq(mbx_dsp); \
+#define ipb_bsycnt_inc(ipbcfg) \
+ do { \
+ disable_mbx_irq(mbx_dsp); \
+ (ipbcfg)->bsycnt++; \
+ enable_mbx_irq(mbx_dsp); \
} while(0)
-#define ipb_bsycnt_dec(ipbcfg) \
- do { \
- disable_mbx_irq(mbx_dsp); \
- (ipbcfg)->bsycnt--; \
- enable_mbx_irq(mbx_dsp); \
+#define ipb_bsycnt_dec(ipbcfg) \
+ do { \
+ disable_mbx_irq(mbx_dsp); \
+ (ipbcfg)->bsycnt--; \
+ enable_mbx_irq(mbx_dsp); \
} while(0)
#define dsp_mem_enable_ipbuf() dsp_mem_enable(ipbcfg.base)
u16 tail;
};
-#define IPBLINK_INIT { \
- .lock = SPIN_LOCK_UNLOCKED, \
- .top = BID_NULL, \
- .tail = BID_NULL, \
+#define IPBLINK_INIT { \
+ .lock = SPIN_LOCK_UNLOCKED, \
+ .top = BID_NULL, \
+ .tail = BID_NULL, \
}
-#define INIT_IPBLINK(link) \
- do { \
- spin_lock_init(&(link)->lock); \
- (link)->top = BID_NULL; \
- (link)->tail = BID_NULL; \
+#define INIT_IPBLINK(link) \
+ do { \
+ spin_lock_init(&(link)->lock); \
+ (link)->top = BID_NULL; \
+ (link)->tail = BID_NULL; \
} while(0)
-#define RESET_IPBLINK(link) \
- do { \
- (link)->top = BID_NULL; \
- (link)->tail = BID_NULL; \
+#define RESET_IPBLINK(link) \
+ do { \
+ (link)->top = BID_NULL; \
+ (link)->tail = BID_NULL; \
} while(0)
#define ipblink_empty(link) ((link)->top == BID_NULL)
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
long state;
struct rw_semaphore state_sem;
wait_queue_head_t state_wait_q;
- struct mutex usecount_mutex;
+ struct mutex usecount_lock;
unsigned int usecount;
char name[TNM_LEN];
struct file_operations fops;
down_write(&dev->state_sem);
if (dev->state & devstate)
return 0;
-
+
add_wait_queue(&dev->state_wait_q, &wait);
do {
set_current_state(TASK_INTERRUPTIBLE);
down_write(&dev->state_sem);
if (dev->state & devstate) /* success */
return 1;
-
+
/* failure */
up_write(&dev->state_sem);
return -1;
}
-static int taskdev_lock_interruptible(struct taskdev *dev, struct mutex *mutex)
+static int taskdev_lock_interruptible(struct taskdev *dev,
+ struct mutex *lock)
{
int ret;
if (has_taskdev_lock(dev))
- ret = mutex_lock_interruptible(mutex);
+ ret = mutex_lock_interruptible(lock);
else {
if ((ret = mutex_lock_interruptible(&dev->lock)) != 0)
return ret;
- ret = mutex_lock_interruptible(mutex);
+ ret = mutex_lock_interruptible(lock);
mutex_unlock(&dev->lock);
}
}
static int taskdev_lock_and_statelock_attached(struct taskdev *dev,
- struct mutex *mutex)
+ struct mutex *lock)
{
int ret;
if (!devstate_read_lock_and_test(dev, TASKDEV_ST_ATTACHED))
return -ENODEV;
- if ((ret = taskdev_lock_interruptible(dev, mutex)) != 0)
+ if ((ret = taskdev_lock_interruptible(dev, lock)) != 0)
devstate_read_unlock(dev);
return ret;
}
static __inline__ void taskdev_unlock_and_stateunlock(struct taskdev *dev,
- struct mutex *mutex)
+ struct mutex *lock)
{
- mutex_unlock(mutex);
+ mutex_unlock(lock);
devstate_read_unlock(dev);
}
}
if ((sz == 0) || (sz & 1)) {
printk(KERN_ERR "omapdsp: illegal buffer size! (%ld)\n"
- "it must be even and non-zero value.\n", sz);
+ "it must be even and non-zero value.\n", sz);
return -EINVAL;
}
ret = -EINVAL;
goto fail_out;
}
-
+
/* mmap buffer configuration check */
if ((task->map_length > 0) &&
((!is_aligned((unsigned long)task->map_base, PAGE_SIZE)) ||
ret = taskdev_unlock(dev);
break;
- case TASK_IOCTL_BFLSH:
+ case TASK_IOCTL_BFLSH:
if (taskdev_lock_and_statelock_attached(dev, &dev->read_mutex))
return -ENODEV;
ret = taskdev_flush_buf(dev);
return -ENODEV;
restart:
- mutex_lock(&dev->usecount_mutex);
+ mutex_lock(&dev->usecount_lock);
down_write(&dev->state_sem);
/* state can be NOTASK, ATTACHED/FREEZED, KILLING, GARBAGE or INVALID here. */
case TASKDEV_ST_INVALID:
up_write(&dev->state_sem);
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
return -ENODEV;
case TASKDEV_ST_FREEZED:
case TASKDEV_ST_KILLING:
case TASKDEV_ST_GARBAGE:
+ case TASKDEV_ST_DELREQ:
/* on the kill process. wait until it becomes NOTASK. */
up_write(&dev->state_sem);
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
if (devstate_write_lock(dev, TASKDEV_ST_NOTASK) < 0)
return -EINTR;
devstate_write_unlock(dev);
TASKDEV_ST_ADDFAIL) < 0) {
/* cancelled */
if (!devstate_write_lock_and_test(dev, TASKDEV_ST_ADDREQ)) {
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
/* out of control ??? */
return -EINTR;
}
proc_list_add(&dev->proc_list_lock, &dev->proc_list, current, file);
file->f_op = &dev->fops;
up_write(&dev->state_sem);
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
#ifdef DSP_PTE_FREE /* not used currently. */
dsp_map_update(current);
change_out:
wake_up_interruptible_all(&dev->state_wait_q);
up_write(&dev->state_sem);
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
return ret;
}
taskdev_unlock(dev);
proc_list_del(&dev->proc_list_lock, &dev->proc_list, current, file);
- mutex_lock(&dev->usecount_mutex);
+ mutex_lock(&dev->usecount_lock);
if (--dev->usecount > 0) {
/* other processes are using this device. no state change. */
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
return 0;
}
}
up_write(&dev->state_sem);
- mutex_unlock(&dev->usecount_mutex);
+ mutex_unlock(&dev->usecount_lock);
return 0;
}
dev->name[TNM_LEN-1] = '\0';
dev->state = (minor < n_task) ? TASKDEV_ST_ATTACHED : TASKDEV_ST_NOTASK;
dev->usecount = 0;
- mutex_init(&dev->usecount_mutex);
+ mutex_init(&dev->usecount_lock);
memcpy(&dev->fops, &dsp_task_fops, sizeof(struct file_operations));
dev->dev.parent = &dsp_device.dev;
/* rcvbyp_bk */ dsp_task_write_bk;
dev->wsz = rcvtyp_acv(ttyp) ? 0 : /* active */
rcvtyp_wd(ttyp) ? 2 : /* passive word */
- ipbcfg.lsz*2; /* passive block */
+ ipbcfg.lsz*2; /* passive block */
if (task->map_length)
dev->fops.mmap = dsp_task_mmap;
ret = -EINTR;
goto fail_out;
}
- cfg_tid = TID_ANON;
- cfg_cmd = MBX_CMD_DSP_TADD;
- arg.tid = TID_ANON;
+ cfg_tid = TID_ANON;
+ cfg_cmd = MBX_CMD_DSP_TADD;
+ arg.tid = TID_ANON;
arg.argc = 2;
arg.argv = argv;
ret = -EBUSY;
goto fail_out;
}
- dsp_mbcmd_send_and_wait_exarg(&mb, &arg, &cfg_wait_q);
+ mbcompose_send_and_wait_exarg(TADD, 0, 0, &arg, &cfg_wait_q);
tid = cfg_tid;
- cfg_tid = OMAP_DSP_TID_ANON;
+ cfg_tid = TID_ANON;
cfg_cmd = 0;
mutex_unlock(&cfg_lock);
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
#elif defined(CONFIG_ARCH_OMAP2)
static __inline__ int mbsync_irq_save(struct mbx *mbx, unsigned long *flags)
{
- long current_state;
+ long current_state;
DECLARE_WAITQUEUE(wait, current);
do {
return 0;
/*
- * mailbox is busy.
+ * mailbox is busy.
*/
local_irq_restore(*flags);
enable_notfull_irq(mbx);
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Contact: Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of