On Thu, May 10, 2012 at 08:20:04PM +0800, Shawn Guo wrote: > On Thu, May 10, 2012 at 07:16:46PM +0800, Dong Aisheng wrote: > > > +static int __devinit mxs_sgtl5000_probe_dt(struct platform_device *pdev) > > > +{ > > > + struct device_node *np = pdev->dev.of_node; > > > + struct device_node *saif_np[2], *codec_np; > > > + struct platform_device *saif_pdev[2]; > > > + int i, ret = 0; > > > + > > > + if (!np) > > > + return 1; /* no device tree */ > > > + > > > + saif_np[0] = of_parse_phandle(np, "saif-controllers", 0); > > > + saif_np[1] = of_parse_phandle(np, "saif-controllers", 1); > > > + codec_np = of_parse_phandle(np, "audio-codec", 0); > > > + if (!saif_np[0] || !saif_np[1] || !codec_np) { > > > + dev_err(&pdev->dev, "phandle missing or invalid\n"); > > > + return -EINVAL; > > > + } > > ... > > > > > + > > > + saif_pdev[0] = of_find_device_by_node(saif_np[0]); > > > + saif_pdev[1] = of_find_device_by_node(saif_np[1]); > > > + if (!saif_pdev[0] || !saif_pdev[1]) { > > > + dev_err(&pdev->dev, "failed to find saif platform device\n"); > > > + ret = -EINVAL; > > > + goto out; > > > + } > > Do we really need this checking? > > > Hmm, why not? We need to ensure that the phandles are correctly > represented in device tree. > Hmm, even we need to do sanity check, i guess this could be done in core since the core will take these nodes as parameter. However, after checking the core a bit, i guess the core has already done this: /* no, then find CPU DAI from registered DAIs*/ list_for_each_entry(cpu_dai, &dai_list, list) { if (dai_link->cpu_dai_of_node) { if (cpu_dai->dev->of_node != dai_link->cpu_dai_of_node) continue; } else { if (strcmp(cpu_dai->name, dai_link->cpu_dai_name)) continue; } rtd->cpu_dai = cpu_dai; goto find_codec; } It looks if the phandles are not correctly represented, the dai binding will fail, right? Regards Dong Aisheng _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/linux-arm-kernel