On Fri, 16 Oct 2015, Moritz Fischer wrote: Hi Moritz, I just noticed a problem regarding private data. Fortunately it is easy to fix. See below... > +static int zynq_fpga_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct zynq_fpga_priv *priv; > + struct resource *res; > + int err; > + > + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + platform_set_drvdata(pdev, priv); fpga-mgr.c uses drvdata for its struct fpga_manager, so this will get overwritten. So remove this platform_set_drvdata(). priv is saved in struct fpga_manager during fpga_mgr_register(). ... > +static int zynq_fpga_remove(struct platform_device *pdev) > +{ Here you can get a pointer to priv from the fpga_manager struct: struct fpga_manager *mgr = platform_get_drvdata(pdev); struct zynq_fpga_priv *priv = mgr->priv; Alan > + struct zynq_fpga_priv *priv; > + > + fpga_mgr_unregister(&pdev->dev); > + > + priv = platform_get_drvdata(pdev); > + > + clk_disable_unprepare(priv->clk); > + > + return 0; > +} -- 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