On Fri, 2015-07-24 at 20:46 +0800, Chenhui Zhao wrote:
+static void mpc85xx_pmc_set_wake(struct device *dev, void *enable)
{
int ret;
+ u32 value[2];
+
+ if (!device_may_wakeup(dev))
+ return;
+
+ if (!pmc_regs) {
+ dev_err(dev, "%s: PMC is unavailable\n", __func__);
+ return;
+ }
+
+ ret = of_property_read_u32_array(dev->of_node, "sleep", value, 2);
This will crash on any device without an of_node.
+ if (ret) {
+ dev_dbg(dev, "%s: Can not find the \"sleep\" property.\n",
+ __func__);
+ return;
+ }
+
+ if (*(int *)enable)
+ pmc_pmcdr_mask &= ~value[1];
+ else
+ pmc_pmcdr_mask |= value[1];
+
+ if ((value[1] & 0xe0) && (pmc_flag & PMC_LOSSLESS))
+ pmc_powmgtcsr = POWMGTCSR_LOSSLESS;
+}
What is 0xe0?
-Scott