Add devicetree (work in progress)
This commit is contained in:
		
							parent
							
								
									f198d12675
								
							
						
					
					
						commit
						2c23fa705d
					
				|  | @ -0,0 +1,16 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| . script_env | ||||
| 
 | ||||
| DTC="$LINUX_DIR/scripts/dtc/dtc" | ||||
| 
 | ||||
| if [ ! -x "$DTC" ]; then | ||||
|     echo "ERROR: Missing $DTC" >&2 | ||||
|     echo "       Build Linux kernel to build the device tree compiler" >&2 | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| $DTC --symbols -I dts -O dtb -i "$LINUX_DIR/arch/arm/boot/dts/xilinx" -o devicetree/devicetree.dtb devicetree/redpitaya_puzzlefw.dts | ||||
| 
 | ||||
|  | @ -0,0 +1,208 @@ | |||
| /* | ||||
|  * Device tree for Red Pitaya PuzzleFw firmware. | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| // Include defaults from Linux kernel source tree. | ||||
| /include/ "zynq-7000.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "RedPitaya PuzzleFW"; | ||||
| 	compatible = "xlnx,zynq-7000"; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		bootargs = "earlycon"; | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gem0; | ||||
| 		i2c0 = &i2c0; | ||||
| 		serial0 = &uart0; | ||||
| 		mmc0 = &sdhci0; | ||||
| 	}; | ||||
| 
 | ||||
| 	// Red Pitaya: 512 MByte DDR RAM at address 0x00000000 | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x0 0x20000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	// Red Pitaya: 2 LEDs controlled by PS | ||||
| 	gpio-leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		led-8-yellow { | ||||
| 			label = "led8"; | ||||
| 			gpios = <&gpio0 0 0>; | ||||
| 			default-state = "off"; | ||||
| 			linux,default-trigger = "mmc0"; | ||||
| 		}; | ||||
| 		led-9-red { | ||||
| 			label = "led9"; | ||||
| 			gpios = <&gpio0 7 0>; | ||||
| 			default-state = "off"; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb_phy0: phy0 { | ||||
| 		compatible = "usb-nop-xceiv"; | ||||
| 		#phy-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	// Register range and interrupts for FPGA logic | ||||
| 	puzzlefw@43c00000 { | ||||
| 		compatible = "jigsaw,puzzlefw"; | ||||
| 		// | ||||
| 		// Register address mapping: | ||||
| 		// | ||||
| 		// Address 0x43000000 .. 0x430fffff (1 MB) = user registers | ||||
| 		// Address 0x43100000 .. 0x43100fff (4 kB) = setup registers | ||||
| 		// | ||||
| 		reg = <0x43000000 0x100000>, | ||||
| 		      <0x43100000 0x1000>; | ||||
| 		// | ||||
| 		// The FPGA firmware uses interrupts | ||||
| 		//   IRQ_F2P[0] .. IRQ_F2P[3] | ||||
| 		// | ||||
| 		// These correspond to IRQ 61 .. 64 in the GIC. | ||||
| 		// | ||||
|                 // The format <0 29 4> means the following: | ||||
|                 //    0 : denotes an SPI interrupt (shared peripheral) | ||||
|                 //   29 : the kernel adds 32 to this value to get 29+32 = 61 | ||||
|                 //    4 : IRQ_TYPE_LEVEL_HIGH (level sensitive interrupt) | ||||
| 		// | ||||
| 		interrupt-parent = <&intc>; | ||||
| 		interrupts = <0 29 4>, | ||||
| 		             <0 30 4>, | ||||
| 		             <0 31 4>, | ||||
| 		             <0 32 4>; | ||||
| 	}; | ||||
| 
 | ||||
| 	// Reserved memory for DMA buffers | ||||
| 	reserved-memory { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		ranges; | ||||
| 
 | ||||
| 		puzzlefw { | ||||
| 			compatible = "jigsaw,puzzlefw"; | ||||
| 			size = <0x4000000>;     // 64 MByte | ||||
| 			alignment = <0x100000>; //  1 MByte | ||||
| 			no-map; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| &gem0 { | ||||
| 	status = "okay"; | ||||
| 	xlnx,ptp-enet-clock = <0x69f6bcb>; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	phy-handle = <ðernet_phy>; | ||||
| 
 | ||||
| 	// Red Pitaya: Lantiq Ethernet PHY, MDIO address 1 | ||||
| 	ethernet_phy: ethernet-phy@1 { | ||||
| 		reg = <1>; | ||||
| 		device_type = "ethernet-phy"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &gpio0 { | ||||
| 	emio-gpio-width = <24>; | ||||
| 	gpio-mask-high = <0x0>; | ||||
| 	gpio-mask-low = <0x5600>; | ||||
| }; | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	// Red Pitaya: EEPROM chip on internal I2C bus. | ||||
| 
 | ||||
| 	eeprom@50 { | ||||
| 		compatible = "24c64"; | ||||
| 		reg = <0x50>; | ||||
| 		pagesize = <32>; | ||||
| 	}; | ||||
| 
 | ||||
| /* | ||||
| 	eeprom@51 { | ||||
| 		compatible = "24c64"; | ||||
| 		reg = <0x51>; | ||||
| 		pagesize = <32>; | ||||
| 	}; | ||||
| */ | ||||
| }; | ||||
| 
 | ||||
| &intc { | ||||
| 	num_cpus = <2>; | ||||
| 	num_interrupts = <96>; | ||||
| }; | ||||
| 
 | ||||
| &qspi { | ||||
| 	status = "okay"; | ||||
| 	is-dual = <0>; | ||||
| 	num-cs = <1>; | ||||
| 	spi-rx-bus-width = <4>; | ||||
| 	spi-tx-bus-width = <4>; | ||||
| }; | ||||
| 
 | ||||
| &sdhci0 { | ||||
| 	status = "okay"; | ||||
| 	xlnx,has-cd = <0x1>; | ||||
| 	xlnx,has-power = <0x1>; | ||||
| 	xlnx,has-wp = <0x1>; | ||||
| }; | ||||
| 
 | ||||
| &spi0 { | ||||
| 	is-decoded-cs = <0>; | ||||
| 	num-cs = <3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &spi1 { | ||||
| 	is-decoded-cs = <0>; | ||||
| 	num-cs = <1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart0 { | ||||
| 	status = "okay"; | ||||
| 	device_type = "serial"; | ||||
| 	cts-override; | ||||
| }; | ||||
| 
 | ||||
| &uart1 { | ||||
| 	status = "okay"; | ||||
| 	device_type = "serial"; | ||||
| 	cts-override; | ||||
| }; | ||||
| 
 | ||||
| &usb0 { | ||||
| 	status = "okay"; | ||||
| 	phy_type = "ulpi"; | ||||
| 	dr_mode = "host"; | ||||
|         usb-phy = <&usb_phy0>; | ||||
| 	usb-reset = <&gpio0 48 0>; | ||||
| }; | ||||
| 
 | ||||
| &clkc { | ||||
| 	fclk-enable = <0x1>; | ||||
| 	ps-clk-frequency = <33333333>; | ||||
| }; | ||||
| 
 | ||||
| &devcfg { | ||||
| 	// Override clock list. | ||||
| 	clocks = <&clkc 12>, <&clkc 15>, <&clkc 16>, <&clkc 17>, <&clkc 18>; | ||||
| 	clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; | ||||
| }; | ||||
| 
 | ||||
| /* | ||||
| TODO -- later | ||||
| &watchdog0{ | ||||
| 	status = "okay"; | ||||
| 	reset-on-timeout; | ||||
| }; | ||||
| */ | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue