| // SPDX-License-Identifier: GPL-2.0 |
| * Copyright (C) 2023 SiFive |
| #include <dm/device-internal.h> |
| #define SIFIVE_PL2CHICKENBIT_OFFSET 0x1000 |
| #define SIFIVE_PL2CHICKENBIT_REGIONCLOCKDISABLE_MASK BIT(3) |
| static int sifive_pl2_probe(struct udevice *dev) |
| base = dev_read_addr(dev); |
| if (base == FDT_ADDR_T_NONE) |
| /* Enable regionClockDisable bit */ |
| val = readl((void __iomem *)(base + SIFIVE_PL2CHICKENBIT_OFFSET)); |
| writel(val & ~SIFIVE_PL2CHICKENBIT_REGIONCLOCKDISABLE_MASK, |
| (void __iomem *)(base + SIFIVE_PL2CHICKENBIT_OFFSET)); |
| static const struct udevice_id sifive_pl2_ids[] = { |
| { .compatible = "sifive,pl2cache0" }, |
| { .compatible = "sifive,pl2cache1" }, |
| U_BOOT_DRIVER(sifive_pl2) = { |
| .of_match = sifive_pl2_ids, |
| .probe = sifive_pl2_probe, |