On Wed, 2014-03-12 at 11:59 +0800, Chenhui Zhao wrote: > On Tue, Mar 11, 2014 at 06:42:51PM -0500, Scott Wood wrote: > > On Fri, 2014-03-07 at 12:57 +0800, Chenhui Zhao wrote: > > > +int fsl_rcpm_init(void) > > > +{ > > > + struct device_node *np; > > > + > > > + np = of_find_compatible_node(NULL, NULL, "fsl,qoriq-rcpm-2.0"); > > > + if (np) { > > > + rcpm_v2_regs = of_iomap(np, 0); > > > + of_node_put(np); > > > + if (!rcpm_v2_regs) > > > + return -ENOMEM; > > > + > > > + qoriq_pm_ops = &qoriq_rcpm_v2_ops; > > > + > > > + } else { > > > + np = of_find_compatible_node(NULL, NULL, "fsl,qoriq-rcpm-1.0"); > > > + if (np) { > > > + rcpm_v1_regs = of_iomap(np, 0); > > > + of_node_put(np); > > > + if (!rcpm_v1_regs) > > > + return -ENOMEM; > > > + > > > + qoriq_pm_ops = &qoriq_rcpm_v1_ops; > > > + > > > + } else { > > > + pr_err("%s: can't find the rcpm node.\n", __func__); > > > + return -EINVAL; > > > + } > > > + } > > > + > > > + return 0; > > > +} > > > > Why isn't this a proper platform driver? > > > > -Scott > > The RCPM is not a single function IP block, instead it is a collection > of device run control and power management. It would be called by other > drivers and functions. For example, the callback .freeze_time_base() > need to be called at early stage of kernel init. Therefore, it would be > better to init it at early stage.
OK, but consider using of_find_matching_node_and_match(). -Scott _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev