68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| * Memory binding
 | |
| 
 | |
| The memory binding for U-Boot is as in the ePAPR with the following additions:
 | |
| 
 | |
| Optional subnodes can be used defining the memory layout for different board
 | |
| ID masks. To match a set of board ids, a board-id node may define match-mask
 | |
| and match-value ints to define a mask to apply to the board id, and the value
 | |
| that the result should have for the match to be considered valid. The mask
 | |
| defaults to -1, meaning that the value must fully match the board id.
 | |
| 
 | |
| If subnodes are present, then the /memory node must define these properties:
 | |
| 
 | |
| - #address-cells: should be 1.
 | |
| - #size-cells: should be 0.
 | |
| 
 | |
| Each subnode must define
 | |
| 
 | |
|  reg - board ID or mask for this subnode
 | |
|  memory-banks - list of memory banks in the same format as normal
 | |
| 
 | |
| Each subnode may optionally define:
 | |
| 
 | |
|  match-mask - A mask to apply to the board id.  This must be accompanied by
 | |
|               match-value.
 | |
|  match-value - The required resulting value of the board id mask for the given
 | |
| 	       node to be considered a match.
 | |
|  auto-size - Indicates that the value given for a bank is the maximum size,
 | |
| 	     each bank is probed to determine its actual size, which may be
 | |
| 	     smaller
 | |
| 
 | |
| 
 | |
| The board id determination is up to the vendor and is not defined by this
 | |
| binding.
 | |
| 
 | |
| Example:
 | |
| 
 | |
| memory {
 | |
| 	#address-cells = <1>;
 | |
| 	#size-cells = <1>;
 | |
| 	reg = <0x20000000 0x20000000
 | |
| 		0x40000000 0x20000000
 | |
| 		0x60000000 0x20000000
 | |
| 		0x80000000 0x20000000>;
 | |
| 	auto-size;
 | |
| 	board-id@0 {
 | |
| 		match-value = <17>;
 | |
| 		reg = <0x20000000 0x20000000
 | |
| 			0x40000000 0x20000000>;
 | |
| 	};
 | |
| 	board-id@1 {
 | |
| 		match-mask = <2>;
 | |
| 		match-value = <2>;
 | |
| 		reg = <0x20000000 0x20000000
 | |
| 			0x40000000 0x20000000
 | |
| 			0x60000000 0x20000000
 | |
| 			0x80000000 0x20000000
 | |
| 			0xa0000000 0x20000000
 | |
| 			0xc0000000 0x20000000
 | |
| 			0xe0000000 0x20000000>;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| 
 | |
| This shows a system with the following properties:
 | |
| * Default of 2GB of memory, auto-sized, so could be smaller
 | |
| * 3.5GB of memory (with no auto-size) if (board id & 2) is 2
 | |
| * 1GB of memory (with no auto-size) if board id is 17.
 | 
