[PATCH 1/2] powerpc/85xx: add pixis indirect mode device tree node

Scott Wood scottwood at freescale.com
Fri Nov 18 08:50:02 EST 2011


On Thu, Nov 17, 2011 at 12:57:38PM -0600, Timur Tabi wrote:
> The Freescale P1022 has a unique pin muxing "feature" where the DIU video
> controller's video signals are muxed with 24 of the local bus address signals.
> When the DIU is enabled, the bulk of the local bus is disabled, preventing
> access to memory-mapped devices like NOR flash and the pixis FPGA.
> 
> In this situation, the pixis supports "indirect mode", which allows access
> to the pixis itself by reading/writing addresses on specific local bus
> chip selects.  CS0 is used to select which pixis register to access, and
> CS1 is used to read/write the value.
> 
> To support this, we introduce another board-control child node of the
> localbus node that contains a 'reg' property for CS0 and CS1.  This will
> produce the correct physical addresses for CS0 and CS1.
> 
> Signed-off-by: Timur Tabi <timur at freescale.com>
> ---
>  arch/powerpc/boot/dts/p1022ds.dts |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/boot/dts/p1022ds.dts b/arch/powerpc/boot/dts/p1022ds.dts
> index 24a73e9..3e85d8c 100644
> --- a/arch/powerpc/boot/dts/p1022ds.dts
> +++ b/arch/powerpc/boot/dts/p1022ds.dts
> @@ -24,6 +24,20 @@
>  			  0x2 0x0 0xf 0xffa00000 0x00040000
>  			  0x3 0x0 0xf 0xffdf0000 0x00008000>;
>  
> +		/*
> +		 * This node is used to access the pixis via "indirect" mode,
> +		 * which is done by writing the pixis register index to chip
> +		 * select 0 and the value to/from chip select 1.  Indirect
> +		 * mode is the only way to access the pixis when DIU video
> +		 * is enabled.  Note that this assumes that the first column
> +		 * of the 'ranges' property above is the chip select number.
> +		 */
> +		board-control at 0,0 {
> +			compatible = "fsl,p1022ds-indirect-pixis";
> +			reg = <0x0 0x0 1	/* CS0 */
> +			       0x1 0x0 1>;	/* CS1 */
> +		};
> +
>  		nor at 0,0 {
>  			#address-cells = <1>;
>  			#size-cells = <1>;

U-Boot should mark some of these devices as disabled, based on whether
indirect mode is enabled on boot.  If you're not going to do that, at
least remove simple-bus from the compatible list.

Something like this is probably the best way to describe it:

localbus {
	compatible = "...", "fsl,elbc", "simple-bus";
	ranges = <...>;
	#address-cells = <2>;
	#size-cells = <2>;

	mux {
		compatible = "fsl,p1022ds-localbus-mux"; // no simple-bus
		fsl,localbus-mux-mode = "indirect"; // inital state on boot
		ranges;
		#address-cells = <2>;
		#size-cells = <2>;

		board-control at 0,0 {
			compatible = "fsl,p1022ds-indirect-pixis";
			reg = <0 0 1
			       1 0 1>;
			fsl,localbus-mux-avail = "indirect";
		};

		flash at 0,0 {
			...
			fsl,localbus-mux-avail = "direct";
		};

		...
	};
};

Or encode the mode as part of reg, as I suggested for someone else here:
http://lists.ozlabs.org/pipermail/devicetree-discuss/2011-November/009378.html

-Scott



More information about the Linuxppc-dev mailing list