Subject: [PATCH v2] mfd: vexpress: Convert custom func API to regmap

From: [email-masked] (Guenter Roeck)
Date: Wed, 30 Apr 2014 10:05:25 -0700

On Wed, Apr 30, 2014 at 05:01:26PM +0100, Pawel Moll wrote:
> Components of the Versatile Express platform (configuration
> microcontrollers on motherboard and daughterboards in particular)
> talk to each other over a custom configuration bus. They
> provide miscellaneous functions (from clock generator control
> to energy sensors) which are represented as platform devices
> (and Device Tree nodes). The transactions on the bus can
> be generated by different "bridges" in the system, some
> of which are universal for the whole platform (for the price
> of high transfer latencies), others restricted to a subsystem
> (but much faster).
> 
> Until now drivers for such functions were using custom "func"
> API, which is being replaced in this patch by regmap calls.
> This required:
> 
> * a rework (and move to drivers/bus directory, as suggested
>   by Samuel and Arnd) of the config bus core, which is much
>   simpler now and uses device model infrastructure (class)
>   to keep track of the bridges; non-DT case (soon to be
>   retired anyway) is simply covered by a special device
>   registration function
> 
> * the new config-bus driver also takes over device population,
>   so there is no need for special matching table for
>   of_platform_populate nor "simple-bus" hack in the arm64
>   model dtsi file (relevant bindings documentation has
>   been updated); this allows all the vexpress devices
>   fit into normal device model, making it possible
>   to remove plenty of early inits and other hacks in
>   the near future
> 
> * adaptation of the syscfg bridge implementation in the
>   sysreg driver, again making it much simpler; there is
>   a special case of the "energy" function spanning two
>   registers, where they should be both defined in the tree
>   now, but backward compatibility is maintained in the code
> 
> * modification of the relevant drivers:
> 
>   * hwmon - just a straight-forward API change
>   * power/reset driver - API change
>   * regulator - API change plus error handling
>     simplification
>   * osc clock driver - this one required larger rework
>     in order to turn in into a standard platform driver
> 
> Signed-off-by: Pawel Moll <[email-masked]>
> Acked-by: Mark Brown <[email-masked]>
> Acked-by: Lee Jones <[email-masked]>

For hwmon:

Acked-by: Guenter Roeck <[email-masked]>