01.04.2020 01:19, Thierry Reding пишет: ... > +static int tegra186_timer_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct tegra186_timer *tegra; > + int err; > + > + tegra = devm_kzalloc(dev, sizeof(*tegra), GFP_KERNEL); > + if (!tegra) > + return -ENOMEM; > + > + tegra->soc = of_device_get_match_data(dev); > + dev_set_drvdata(dev, tegra); > + tegra->dev = dev; > + > + tegra->regs = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(tegra->regs)) > + return PTR_ERR(tegra->regs); > + > + err = platform_get_irq(pdev, 0); > + if (err < 0) { > + dev_err(dev, "failed to get interrupt #0: %d\n", err); > + return err; > + } > + > + tegra->irq = err; > + > + err = devm_request_irq(dev, tegra->irq, tegra186_timer_irq, > + IRQF_ONESHOT | IRQF_TRIGGER_HIGH, > + "tegra186-timer", tegra); Looks like there is no need to store tegra->irq in the struct tegra186_timer.