-
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
if (copy_from_user(kbuf, buf, count))
return -EFAULT;
sscanf(kbuf, "%x%x", ®,&val);
- dev_dbg(rk616->dev,"%s:reg:0x%04x val:0x%08x\n",__func__,reg,val);
rk616->write_dev(rk616,reg,&val);
return count;
}
ret = rk616->read_dev(rk616,CRU_PLL0_CON1 + offset,&val);
if (val&PLL0_LOCK)
{
- dev_info(rk616->dev,"PLL%d locked\n",id);
+ rk616_dbg(rk616->dev,"PLL%d locked\n",id);
break;
}
msleep(1);
}
if (delay == 0)
{
- printk(KERN_ALERT "rk616 wait PLL%d lock time out!\n",id);
+ dev_err(rk616->dev,"rk616 wait PLL%d lock time out!\n",id);
}
return 0;
return 0;
}
+static int rk616_core_suspend(struct device *dev, pm_message_t state)
+{
+ return 0;
+}
+static int rk616_core_resume(struct device* dev)
+{
+ struct mfd_rk616 *rk616 = dev_get_drvdata(dev);
+ rk616_clk_common_init(rk616);
+ return 0;
+}
static int rk616_i2c_probe(struct i2c_client *client,const struct i2c_device_id *id)
{
int ret;
ret = mfd_add_devices(rk616->dev, -1,
rk616_devs, ARRAY_SIZE(rk616_devs),
NULL, rk616->irq_base);
-
dev_info(&client->dev,"rk616 core probe success!\n");
return 0;
}
.driver = {
.name = "rk616",
.owner = THIS_MODULE,
+ .suspend = &rk616_core_suspend,
+ .resume = &rk616_core_resume,
},
.probe = &rk616_i2c_probe,
.remove = &rk616_i2c_remove,