Properties for an MDIO bus multiplexer controlled by a memory-mapped device

This is a special case of a MDIO bus multiplexer.  A memory-mapped device,
like an FPGA, is used to control which child bus is connected.  The mdio-mux
node must be a child of the memory-mapped device.  The driver currently only
supports devices with eight-bit registers.

Required properties in addition to the generic multiplexer properties:

- compatible : string, must contain "mdio-mux-mmioreg"

- reg : integer, contains the offset of the register that controls the bus
	multiplexer.  The size field in the 'reg' property is the size of
	register, and must therefore be 1.

- mux-mask : integer, contains an eight-bit mask that specifies which
	bits in the register control the actual bus multiplexer.  The
	'reg' property of each child mdio-mux node must be constrained by
	this mask.

Example:

The FPGA node defines a memory-mapped FPGA with a register space of 0x30 bytes.
For the "EMI2" MDIO bus, register 9 (BRDCFG1) controls the mux on that bus.
A bitmask of 0x6 means that bits 1 and 2 (bit 0 is lsb) are the bits on
BRDCFG1 that control the actual mux.

	/* The FPGA node */
	fpga: board-control@3,0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "fsl,p5020ds-fpga", "fsl,fpga-ngpixis";
		reg = <3 0 0x30>;
		ranges = <0 3 0 0x30>;

		mdio-mux-emi2 {
			compatible = "mdio-mux-mmioreg", "mdio-mux";
			mdio-parent-bus = <&xmdio0>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <9 1>; // BRDCFG1
			mux-mask = <0x6>; // EMI2

			emi2_slot1: mdio@0 {	// Slot 1 XAUI (FM2)
				reg = <0>;
				#address-cells = <1>;
				#size-cells = <0>;

				phy_xgmii_slot1: ethernet-phy@0 {
					compatible = "ethernet-phy-ieee802.3-c45";
					reg = <4>;
				};
			};

			emi2_slot2: mdio@2 {	// Slot 2 XAUI (FM1)
				reg = <2>;
				#address-cells = <1>;
				#size-cells = <0>;

				phy_xgmii_slot2: ethernet-phy@4 {
					compatible = "ethernet-phy-ieee802.3-c45";
					reg = <0>;
				};
			};
		};
	};

	/* The parent MDIO bus. */
	xmdio0: mdio@f1000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "fsl,fman-xmdio";
		reg = <0xf1000 0x1000>;
		interrupts = <100 1 0 0>;
	};
