Lines Matching +full:hb +full:- +full:sregs

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright 2011-2012 Calxeda, Inc.
27 struct hb_l2_drvdata *drvdata = dci->pvt_info; in highbank_l2_err_handler()
29 if (irq == drvdata->sb_irq) { in highbank_l2_err_handler()
30 writel(1, drvdata->base + SR_CLR_SB_ECC_INTR); in highbank_l2_err_handler()
31 edac_device_handle_ce(dci, 0, 0, dci->ctl_name); in highbank_l2_err_handler()
33 if (irq == drvdata->db_irq) { in highbank_l2_err_handler()
34 writel(1, drvdata->base + SR_CLR_DB_ECC_INTR); in highbank_l2_err_handler()
35 edac_device_handle_ue(dci, 0, 0, dci->ctl_name); in highbank_l2_err_handler()
42 { .compatible = "calxeda,hb-sregs-l2-ecc", },
58 return -ENOMEM; in highbank_l2_err_probe()
60 drvdata = dci->pvt_info; in highbank_l2_err_probe()
61 dci->dev = &pdev->dev; in highbank_l2_err_probe()
64 if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) in highbank_l2_err_probe()
65 return -ENOMEM; in highbank_l2_err_probe()
69 dev_err(&pdev->dev, "Unable to get mem resource\n"); in highbank_l2_err_probe()
70 res = -ENODEV; in highbank_l2_err_probe()
74 if (!devm_request_mem_region(&pdev->dev, r->start, in highbank_l2_err_probe()
75 resource_size(r), dev_name(&pdev->dev))) { in highbank_l2_err_probe()
76 dev_err(&pdev->dev, "Error while requesting mem region\n"); in highbank_l2_err_probe()
77 res = -EBUSY; in highbank_l2_err_probe()
81 drvdata->base = devm_ioremap(&pdev->dev, r->start, resource_size(r)); in highbank_l2_err_probe()
82 if (!drvdata->base) { in highbank_l2_err_probe()
83 dev_err(&pdev->dev, "Unable to map regs\n"); in highbank_l2_err_probe()
84 res = -ENOMEM; in highbank_l2_err_probe()
88 id = of_match_device(hb_l2_err_of_match, &pdev->dev); in highbank_l2_err_probe()
89 dci->mod_name = pdev->dev.driver->name; in highbank_l2_err_probe()
90 dci->ctl_name = id ? id->compatible : "unknown"; in highbank_l2_err_probe()
91 dci->dev_name = dev_name(&pdev->dev); in highbank_l2_err_probe()
96 drvdata->db_irq = platform_get_irq(pdev, 0); in highbank_l2_err_probe()
97 res = devm_request_irq(&pdev->dev, drvdata->db_irq, in highbank_l2_err_probe()
99 0, dev_name(&pdev->dev), dci); in highbank_l2_err_probe()
103 drvdata->sb_irq = platform_get_irq(pdev, 1); in highbank_l2_err_probe()
104 res = devm_request_irq(&pdev->dev, drvdata->sb_irq, in highbank_l2_err_probe()
106 0, dev_name(&pdev->dev), dci); in highbank_l2_err_probe()
110 devres_close_group(&pdev->dev, NULL); in highbank_l2_err_probe()
113 edac_device_del_device(&pdev->dev); in highbank_l2_err_probe()
115 devres_release_group(&pdev->dev, NULL); in highbank_l2_err_probe()
124 edac_device_del_device(&pdev->dev); in highbank_l2_err_remove()