Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27a3bbaf authored by Ralf Baechle's avatar Ralf Baechle
Browse files

[MIPS] VPE: Sprinkle device model code into code to make udev happier.

parent 66efc5a7
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -3,9 +3,11 @@
 * Copyright (C) 2005 Mips Technologies, Inc
 */

#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/cpumask.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/security.h>

@@ -453,3 +455,20 @@ void mt_cflush_release(void)
#endif /* CONFIG_MIPS_MT_SMTC */
	/* FILL IN VSMP and AP/SP VERSIONS HERE */
}

struct class *mt_class;

static int __init mt_init(void)
{
	struct class *mtc;

	mtc = class_create(THIS_MODULE, "mt");
	if (IS_ERR(mtc))
		return PTR_ERR(mtc);

	mt_class = mtc;

	return 0;
}

subsys_initcall(mt_init);
+21 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
 */

#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/init.h>
@@ -48,6 +49,7 @@
#include <asm/cacheflush.h>
#include <asm/atomic.h>
#include <asm/cpu.h>
#include <asm/mips_mt.h>
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/vpe.h>
@@ -64,6 +66,7 @@ typedef void *vpe_handle;

static char module_name[] = "vpe";
static int major;
static const int minor = 1;	/* fixed for now  */

#ifdef CONFIG_MIPS_APSP_KSPD
 static struct kspd_notifications kspd_events;
@@ -1365,12 +1368,15 @@ static void kspd_sp_exit( int sp_id)
}
#endif

static struct device *vpe_dev;

static int __init vpe_module_init(void)
{
	struct vpe *v = NULL;
	struct device *dev;
	struct tc *t;
	unsigned long val;
	int i;
	int i, err;

	if (!cpu_has_mipsmt) {
		printk("VPE loader: not a MIPS MT capable processor\n");
@@ -1383,6 +1389,14 @@ static int __init vpe_module_init(void)
		return major;
	}

	dev = device_create(mt_class, NULL, MKDEV(major, minor),
	                    "tc%d", minor);
	if (IS_ERR(dev)) {
		err = PTR_ERR(dev);
		goto out_chrdev;
	}
	vpe_dev = dev;

	dmt();
	dvpe();

@@ -1478,6 +1492,11 @@ static int __init vpe_module_init(void)
	kspd_events.kspd_sp_exit = kspd_sp_exit;
#endif
	return 0;

out_chrdev:
	unregister_chrdev(major, module_name);

	return err;
}

static void __exit vpe_module_exit(void)
@@ -1490,6 +1509,7 @@ static void __exit vpe_module_exit(void)
		}
	}

	device_destroy(mt_class, MKDEV(major, minor));
	unregister_chrdev(major, module_name);
}

+3 −0
Original line number Diff line number Diff line
@@ -12,4 +12,7 @@ extern unsigned long mt_fpemul_threshold;
extern void mips_mt_regdump(unsigned long previous_mvpcontrol_value);
extern void mips_mt_set_cpuoptions(void);

struct class;
extern struct class *mt_class;

#endif /* __ASM_MIPS_MT_H */