Hello Steffen, On Wed, Oct 29, 2014 at 09:51:03PM +0100, Steffen Trumtrar wrote: > > > + > > > +int socfpga_l3nic_regmap_by_phandle(struct device_node *np, > > > + struct regmap **regmap, > > > + const char *name) > > > +{ > > > > This could return the regmap or ERR_PTR(-ENODEV) and just > > have the np and name parameter, similar to > > syscon_regmap_lookup_by_phandle. > > > > I wanted to do that, but I also want to propagate the return > value of socfpga_gpv_device_by_phandle and this doesn't > seem to work than. Open for suggestions, though. Doesn't the following work: struct regmap *socfpga_l3nic_regmap_by_phandle(struct device_node *np, const char *name) { struct socfpga_l3nic *l3nic; struct platform_device *pdev; pdev = socfpga_gpv_device_by_phandle(np, name); if (!pdev) /* it's wrong to apply ERR_PTR to NULL */ return ERR_PTR(-ENODEV); l3nic = dev_get_drvdata(&pdev->dev); if (!l3nic) return ERR_PTR(-EINVAL); /* do you need to check l3nic->regmap for being != NULL? */ return l3nic->regmap; } ? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html