return 0;
 }
 
-static int aplic_direct_get_hart_index(struct device *dev, u32 logical_index,
-                                      u32 *hart_index)
-{
-       const char *prop_hart_index = "riscv,hart-indexes";
-       struct device_node *np = to_of_node(dev->fwnode);
-
-       if (!np || !of_property_present(np, prop_hart_index)) {
-               *hart_index = logical_index;
-               return 0;
-       }
-
-       return of_property_read_u32_index(np, prop_hart_index, logical_index, hart_index);
-}
-
 int aplic_direct_setup(struct device *dev, void __iomem *regs)
 {
        int i, j, rc, cpu, current_cpu, setup_count = 0;
                cpumask_set_cpu(cpu, &direct->lmask);
 
                idc = per_cpu_ptr(&aplic_idcs, cpu);
-               rc = aplic_direct_get_hart_index(dev, i, &idc->hart_index);
+               rc = riscv_get_hart_index(dev->fwnode, i, &idc->hart_index);
                if (rc) {
                        dev_warn(dev, "hart index not found for IDC%d\n", i);
                        continue;