Allwinner Reduced Serial Bus (RSB) controller

The RSB controller found on later Allwinner SoCs is an SMBus like 2 wire
serial bus with 1 master and up to 15 slaves. It is represented by a node
for the controller itself, and child nodes representing the slave devices.

Required properties :

 - reg             : Offset and length of the register set for the controller.
 - compatible      : Shall be "allwinner,sun8i-a23-rsb".
 - interrupts      : The interrupt line associated to the RSB controller.
 - clocks          : The gate clk associated to the RSB controller.
 - resets          : The reset line associated to the RSB controller.
 - #address-cells  : shall be 1
 - #size-cells     : shall be 0

Optional properties :

 - clock-frequency : Desired RSB bus clock frequency in Hz. Maximum is 20MHz.
		     If not set this defaults to 3MHz.

Child nodes:

An RSB controller node can contain zero or more child nodes representing
slave devices on the bus.  Child 'reg' properties should contain the slave
device's hardware address. The hardware address is hardwired in the device,
which can normally be found in the datasheet.

Example:

	rsb@1f03400 {
		compatible = "allwinner,sun8i-a23-rsb";
		reg = <0x01f03400 0x400>;
		interrupts = <0 39 4>;
		clocks = <&apb0_gates 3>;
		clock-frequency = <3000000>;
		resets = <&apb0_rst 3>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmic@3e3 {
			compatible = "...";
			reg = <0x3e3>;

			/* ... */
		};
	};
