The pinmux helper driver is required because modifying the pinmux
settings must be done in the kernel. The helper exports sysfs entries
that can be modified by standard user-mode code.
Also, the pinmux helper provides a way to support multiple pinmux
options, vs. a typical device tree where pins only have a single
function. For example:
"Typical" Device Tree:
A UART driver is enabled, with pinmux entries that set the various
pins as required for Rx, Tx, RTS/CTS, etc. These pins are now fixed
and cannot be used as anything else (like GPIO or some other special
function that also exists on any of those specific pins).
"Universal" Device Tree: