+This is a quick note on changes to cpufreq drivers.
+
+== Motivation
+
+Currently, all cpu frequency control drivers are added using identify routines.
+These routines check different characteristics of the CPU directly or using the device tree, or the ACPI properties of the CPU.
+When they can arrange for exactly one node to be added, things work well.
+x86, however, has several different cpu frequency controls, and it can be a challenge to ensure only one.
+esp and p4tcc can 'race' to see which one attaches based on a detail of how the loader sorts data sets.
+A number of hacks are in place with the different drivers to 'arbitrate' which driver to attach, many of which can be fragile due to ordering issues.
+It can also be hard to add new drivers, especially ones that may conflict with others.
+
+== High Level Design
+
+Turn the current cpufreq device which is added by other drivers into being the base-class for those drivers.
+With this, then the cpu drivers in the tree can add a "cpufreq" device, and then probe and attach that.
+The identify routines would be eliminated.
+When the "cpufreq" device is probed, all the drivers will "bid" on the device.
+When multiple drivers could handle the CPU, then one that returns the highest priority will get the device.
+Drivers would need to be modified to be a subclass, and the registration routines would need to change a bit.
+Add explicit disabling checks.
+
+== Notes
+
+We have to explicitly check in the probe routine if the device is disabled.
+Normally, we probe the device, allow that to succed, then disable the device just before we attach it.
+This works well because usually there's only one driver that will attach to a device.
+However, for devices that are subclasses, multiple drivers are bidding for that one device.
+To get disable to mean 'don't use it' as it normally would, the probe routines would need to do it.
+Perhaps we need to fix the probe and attach stuff to not 'accept' a bid from a disablfed device that's disabled, but maybe we need to accept it if it's the only choice.
+
+It's unclear if we need both `acpi_throttle` and `esp`, but it's quite likely that we don't.
+
+We have to have a design that allows other kinds of devices attached to cpu.
+We attach hw performance, temperature monitoring, etc nodes to the CPU, so we either have to work around it, or have a design that creates another psuedo bus for these devices.
+Subclassing seems simpler than an extra layer.
+
+Currently, `est_probe` does this crazy thing:
+[source]
+----
+ /*
+ * If the ACPI perf driver has attached and is not just offering