コード例 #1
0
/**
 * Open File.
 *
 */
static int dsps_open(struct inode *ip, struct file *fp)
{
	int ret = 0;

	pr_debug("%s.\n", __func__);

	if (drv->ref_count == 0) {

		/* clocks must be ON before loading.*/
		ret = dsps_power_on_handler();
		if (ret)
			return ret;

		ret = dsps_load(drv->pdata->pil_name);

		if (ret) {
			dsps_power_off_handler();
			return ret;
		}

		dsps_resume();
	}
	drv->ref_count++;

	return ret;
}
コード例 #2
0
/**
 * IO Control - handle commands from client.
 *
 */
static int dsps_ioctl(struct inode *inode, struct file *file,
			unsigned int cmd, unsigned long arg)
{
	int ret = 0;
	u32 val = 0;

	pr_debug("%s.\n", __func__);

	switch (cmd) {
	case DSPS_IOCTL_ON:
		ret = dsps_power_on_handler();
		dsps_resume();
		break;
	case DSPS_IOCTL_OFF:
		dsps_suspend();
		ret = dsps_power_off_handler();
		break;
	case DSPS_IOCTL_READ_SLOW_TIMER:
		val = dsps_read_slow_timer();
		ret = put_user(val, (u32 __user *) arg);
		break;
	case DSPS_IOCTL_READ_FAST_TIMER:
		val = dsps_read_fast_timer();
		ret = put_user(val, (u32 __user *) arg);
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}
コード例 #3
0
ファイル: msm_dsps.c プロジェクト: Blackburn29/PsycoKernel
static int dsps_open(struct inode *ip, struct file *fp)
{
	int ret = 0;

	pr_debug("%s.\n", __func__);

	if (drv->ref_count == 0) {

		
		ret = dsps_power_on_handler();
		if (ret)
			return ret;

		ret = dsps_load();

		if (ret) {
			dsps_power_off_handler();
			return ret;
		}

		if (!drv->pdata->dsps_pwr_ctl_en)
			dsps_resume();
	}
	drv->ref_count++;

	return ret;
}
コード例 #4
0
ファイル: msm_dsps.c プロジェクト: Arunvasu/taoshan
/**
 *  Powerup function
 * called by the restart notifier
 *
 */
static int dsps_powerup(const struct subsys_desc *subsys)
{
	pr_debug("%s\n", __func__);
	dsps_power_on_handler();
	pil_force_boot(drv->pdata->pil_name);
	atomic_set(&drv->crash_in_progress, 0);
	enable_irq(drv->wdog_irq);
	return 0;
}
コード例 #5
0
static int msm_dsps_power(bool on)
{
    int ret;

    if (on) {
        ret = dsps_power_on_handler();
        dsps_resume();
    } else {
        dsps_suspend();
        ret = dsps_power_off_handler();
    }

    return ret;
}
コード例 #6
0
ファイル: msm_dsps.c プロジェクト: Blackburn29/PsycoKernel
static long dsps_ioctl(struct file *file,
			unsigned int cmd, unsigned long arg)
{
	int ret = 0;
	u32 val = 0;

	pr_debug("%s.\n", __func__);

	switch (cmd) {
	case DSPS_IOCTL_ON:
		if (!drv->pdata->dsps_pwr_ctl_en) {
			ret = dsps_power_on_handler();
			dsps_resume();
		}
		break;
	case DSPS_IOCTL_OFF:
		if (!drv->pdata->dsps_pwr_ctl_en) {
			dsps_suspend();
			ret = dsps_power_off_handler();
		}
		break;
	case DSPS_IOCTL_READ_SLOW_TIMER:
		val = dsps_read_slow_timer();
		ret = put_user(val, (u32 __user *) arg);
		break;
	case DSPS_IOCTL_READ_FAST_TIMER:
		val = dsps_read_fast_timer();
		ret = put_user(val, (u32 __user *) arg);
		break;
	case DSPS_IOCTL_RESET:
		pr_err("%s: User-initiated DSPS reset.\nResetting DSPS\n",
		       __func__);
		subsystem_restart("dsps");
		ret = 0;
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}