If you want to run Linux on one of the modern Qualcomm Windows laptops, you still generally end up needing to use device tree.
The only problem is that distributions currently tend to package them together, but that shouldn't be obligatory.
Why? Device tree is great. You can patch it yourself if something doesn't work, add overlays, etc.
All this doesn't require any enumeration and was still standard until BIOS/CSM was removed. PCs could use the same IDE driver for 30 years of hardware! All chipsets were compatible, from 386 to today's SATA in compatibility mode.
ARM made the mistake of not standardizing anything beside CPU instructions (and even those aren't always the same - see the mess armv7 created with thumb, thumb-ee, simd, neon, crypto acceleration, etc.). Of course it needs enumeration. But x86 is now catching up with the mess. Just wait...
Enumeration instead of standardized hw is bad, but I prefer the least worse device tree.
So ARM did what everyone else has always have done.
Let's take an example. Raspberry Pi doesn't have a RTC, but it has GPIO header. You add a RTC module on that header, one of several models of RTCs.
With the device tree, you load an overlay with some parameters and a kernel driver module. And it works.
How do you do that with ACPI? Ask the manufacturer for a UEFI update that scans for dozens of RTC types on each I2c bus? Good luck with that! What happens 5 years later when the board is long abandoned (not Raspberry's case, but think of an ordinary chinese manufacturer)?
Oh, and an even more complex UEFI+ACPI solution won't be broken?
And you don't have to belive me. See what Linus said[1] about ACPI:
> [...] ACPI was designed by a group of monkeys high on LSD, and is some of the worst designs in the industry [...]
[1] https://lkml.iu.edu/hypermail/linux/kernel/0507.3/2331.html