// SPDX-License-Identifier: GPL-2.0+ // SPDX-FileCopyrightText: 2024 CERN (home.cern) #include #include #include #include #include #include static int bootcount_zynqmp_set(struct udevice *dev, const u32 val) { int ret; ret = zynqmp_mmio_write((ulong)&pmu_base->pers_gen_storage2, 0xFF, val); if (ret) pr_info("%s write fail\n", __func__); return ret; } static int bootcount_zynqmp_get(struct udevice *dev, u32 *val) { int ret; *val = 0; ret = zynqmp_mmio_read((ulong)&pmu_base->pers_gen_storage2, val); if (ret) pr_info("%s read fail\n", __func__); return ret; } U_BOOT_DRVINFO(bootcount_zynqmp) = { .name = "bootcount_zynqmp", }; static const struct bootcount_ops bootcount_zynqmp_ops = { .get = bootcount_zynqmp_get, .set = bootcount_zynqmp_set, }; U_BOOT_DRIVER(bootcount_zynqmp) = { .name = "bootcount_zynqmp", .id = UCLASS_BOOTCOUNT, .ops = &bootcount_zynqmp_ops, };