[MIPS] MT: Enable coexistence of AP/SP with VSMP and SMTC.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -40,12 +40,11 @@
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/mips_mt.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/vpe.h>
|
||||
#include <asm/rtlx.h>
|
||||
|
||||
#define RTLX_TARG_VPE 1
|
||||
|
||||
static struct rtlx_info *rtlx;
|
||||
static int major;
|
||||
static char module_name[] = "rtlx";
|
||||
@@ -165,10 +164,10 @@ int rtlx_open(int index, int can_sleep)
|
||||
}
|
||||
|
||||
if (rtlx == NULL) {
|
||||
if( (p = vpe_get_shared(RTLX_TARG_VPE)) == NULL) {
|
||||
if( (p = vpe_get_shared(tclimit)) == NULL) {
|
||||
if (can_sleep) {
|
||||
__wait_event_interruptible(channel_wqs[index].lx_queue,
|
||||
(p = vpe_get_shared(RTLX_TARG_VPE)),
|
||||
(p = vpe_get_shared(tclimit)),
|
||||
ret);
|
||||
if (ret)
|
||||
goto out_fail;
|
||||
@@ -477,6 +476,19 @@ static int rtlx_module_init(void)
|
||||
struct device *dev;
|
||||
int i, err;
|
||||
|
||||
if (!cpu_has_mipsmt) {
|
||||
printk("VPE loader: not a MIPS MT capable processor\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (tclimit == 0) {
|
||||
printk(KERN_WARNING "No TCs reserved for AP/SP, not "
|
||||
"initializing RTLX.\nPass maxtcs=<n> argument as kernel "
|
||||
"argument\n");
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
major = register_chrdev(0, module_name, &rtlx_fops);
|
||||
if (major < 0) {
|
||||
printk(register_chrdev_failed);
|
||||
@@ -501,7 +513,7 @@ static int rtlx_module_init(void)
|
||||
/* set up notifiers */
|
||||
notify.start = starting;
|
||||
notify.stop = stopping;
|
||||
vpe_notify(RTLX_TARG_VPE, ¬ify);
|
||||
vpe_notify(tclimit, ¬ify);
|
||||
|
||||
if (cpu_has_vint)
|
||||
set_vi_handler(MIPS_CPU_RTLX_IRQ, rtlx_dispatch);
|
||||
|
Reference in New Issue
Block a user