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

Commit 0f5d0df3 authored by Ralf Baechle's avatar Ralf Baechle
Browse files

[MIPS] RP: Sysfs interface for stopping RP program



The old method of attempting to load a invalid program was just too icky.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 41790e04
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1340,6 +1340,23 @@ static void kspd_sp_exit( int sp_id)
}
#endif

static ssize_t store_kill(struct class_device *dev, const char *buf, size_t len)
{
	struct vpe *vpe = get_vpe(tclimit);
	struct vpe_notifications *not;

	list_for_each_entry(not, &vpe->notify, list) {
		not->stop(tclimit);
	}

	release_progmem(vpe->load_addr);
	cleanup_tc(get_tc(tclimit));
	vpe_stop(vpe);
	vpe_free(vpe);

	return len;
}

static ssize_t show_ntcs(struct class_device *cd, char *buf)
{
	struct vpe *vpe = get_vpe(tclimit);
@@ -1369,6 +1386,7 @@ static ssize_t store_ntcs(struct class_device *dev, const char *buf, size_t len)
}

static struct class_device_attribute vpe_class_attributes[] = {
	__ATTR(kill, S_IWUSR, NULL, store_kill),
	__ATTR(ntcs, S_IRUGO | S_IWUSR, show_ntcs, store_ntcs),
	{}
};