static int  k3_vibrator_suspend(struct platform_device *pdev, pm_message_t state)
{
	struct k3_vibrator_data *pdata = platform_get_drvdata(pdev);
	/* DTS2012070302333 begin: add by kf74453 for vibrator not stop in suspend mode at 2012-07-05 */
	int ret = 0;
	/* DTS2012070302333 end: add by kf74453 for vibrator not stop in suspend mode at 2012-07-05 */
	if (pdata == NULL) {
		dev_err(&pdev->dev, "%s:pdata is NULL\n", __func__);
		return -ENODEV;
	}

	if (!mutex_trylock(&pdata->lock)) {
		dev_err(&pdev->dev, "%s: mutex_trylock.\n", __func__);
		return -EAGAIN;
	}
	/* DTS2012070302333 begin: modify  by kf74453 for vibrator not stop in suspend mode at 2012-07-05 */
	if (hrtimer_active(&pdata->timer)) {
		if (ret) {
			pr_err("pmu clock enable failed,ret:%d\n", ret);
			mutex_unlock(&pdata->lock);
			return ret;
		}
		hrtimer_cancel(&pdata->timer);
        k3_vibrator_regulator_disable();
	}

	return 0;
	/* DTS2012070302333 end: modify by kf74453 for vibrator not stop in suspend mode at 2012-07-05 */
}
static int  k3_vibrator_suspend(struct platform_device *pdev, pm_message_t state)
{
	struct k3_vibrator_data *pdata = platform_get_drvdata(pdev);
	int ret = 0;
	if (pdata == NULL) {
		dev_err(&pdev->dev, "%s:pdata is NULL\n", __func__);
		return -ENODEV;
	}

	if (!mutex_trylock(&pdata->lock)) {
		dev_err(&pdev->dev, "%s: mutex_trylock.\n", __func__);
		return -EAGAIN;
	}
	if (hrtimer_active(&pdata->timer)) {
		if (ret) {
			pr_err("pmu clock enable failed,ret:%d\n", ret);
			mutex_unlock(&pdata->lock);
			return ret;
		}
		hrtimer_cancel(&pdata->timer);
        k3_vibrator_regulator_disable();
	}

	return 0;
}
static void k3_vibrator_shutdown(struct platform_device *pdev)
{
	struct k3_vibrator_data *pdata = platform_get_drvdata(pdev);
	if (pdata == NULL) {
		dev_err(&pdev->dev, "%s:pdata is NULL\n", __func__);
		return;
	}

	if (hrtimer_active(&pdata->timer))
		hrtimer_cancel(&pdata->timer);

        k3_vibrator_regulator_disable();

	return ;
}
static void k3_vibrator_onoff_handler(struct work_struct *data)
{
	struct k3_vibrator_data *pdata = k3_vibrator_pdata;
	int on = pdata->value;

        mutex_lock(&pdata->lock);

	if (on) {
            k3_vibrator_regulator_enable();
	} else {
            k3_vibrator_regulator_disable();
	}

        mutex_unlock(&pdata->lock);

	return ;
}