static ssize_t wdt3_store(struct device *dev, struct device_attribute *attr,
						const char *buf, size_t n)
{
	u32 wdt3;
	struct DEV_OBJECT *dev_object;
	struct WMD_DEV_CONTEXT *dev_ctxt;

	if (sscanf(buf, "%d", &wdt3) != 1)
		return -EINVAL;

	dev_object = DEV_GetFirst();
	if (dev_object == NULL)
		goto func_end;
	DEV_GetWMDContext(dev_object, &dev_ctxt);
	if (dev_ctxt == NULL)
		goto func_end;

	/* enable WDT */
	if (wdt3 == 1) {
		if (dsp_wdt_get_enable())
			goto func_end;
		dsp_wdt_set_enable(true);
		if (!CLK_Get_UseCnt(SERVICESCLK_wdt3_fck) &&
				dev_ctxt->dwBrdState != BRD_DSP_HIBERNATION)
			dsp_wdt_enable(true);
	} else if (wdt3 == 0) {
		if (!dsp_wdt_get_enable())
			goto func_end;
		if (CLK_Get_UseCnt(SERVICESCLK_wdt3_fck))
			dsp_wdt_enable(false);
		dsp_wdt_set_enable(false);
	}
func_end:
	return n;
}
static ssize_t wdt3_store(struct device *dev, struct device_attribute *attr,
			  const char *buf, size_t n)
{
	u32 wdt3;
	struct dev_object *dev_object;
	struct wmd_dev_context *dev_ctxt;

	if (sscanf(buf, "%d", &wdt3) != 1)
		return -EINVAL;

	dev_object = dev_get_first();
	if (dev_object == NULL)
		goto func_end;
	dev_get_wmd_context(dev_object, &dev_ctxt);
	if (dev_ctxt == NULL)
		goto func_end;

	/* enable WDT */
	if (wdt3 == 1) {
		if (dsp_wdt_get_enable())
			goto func_end;
		dsp_wdt_set_enable(true);
		if (!clk_get_use_cnt(SERVICESCLK_WDT3_FCK) &&
		    dev_ctxt->dw_brd_state != BRD_DSP_HIBERNATION)
			dsp_wdt_enable(true);
	} else if (wdt3 == 0) {
		if (!dsp_wdt_get_enable())
			goto func_end;
		if (clk_get_use_cnt(SERVICESCLK_WDT3_FCK))
			dsp_wdt_enable(false);
		dsp_wdt_set_enable(false);
	}
func_end:
	return n;
}
static ssize_t wdt3_show(struct device *dev, struct device_attribute *attr,
							char *buf)
{
	return sprintf(buf, "%d\n", (dsp_wdt_get_enable()) ? 1 : 0);
}