Reset FPGA via GPIO during boot
This commit is contained in:
		
							parent
							
								
									d2b39354c8
								
							
						
					
					
						commit
						9a9163b7f0
					
				|  | @ -30,6 +30,13 @@ start() { | |||
|         exit 1 | ||||
|     fi | ||||
| 
 | ||||
|     # Drive internal GPIO line 0 low to reset FPGA. | ||||
|     # Note: EMIO GPIO line n is gpio (n + 54) in Linux. | ||||
|     gpioset 0 54=0 | ||||
| 
 | ||||
|     # Drive internal GPIO line 2 high to enable ADC duty cycle stabilizer. | ||||
|     gpioset 0 56=0 | ||||
| 
 | ||||
|     # Program FPGA. | ||||
|     echo "Programming FPGA ..." | ||||
|     echo 0 > /sys/class/fpga_manager/fpga0/flags | ||||
|  | @ -37,6 +44,10 @@ start() { | |||
| 
 | ||||
|     # Wait until FPGA programmed. | ||||
|     sleep 5 | ||||
| 
 | ||||
|     # Drive internal GPIO line 0 high to release FPGA reset. | ||||
|     gpioset 0 54=1 | ||||
|     sleep 1 | ||||
| } | ||||
| 
 | ||||
| case "$1" in | ||||
|  |  | |||
|  | @ -14,6 +14,14 @@ start() { | |||
|         exit 1 | ||||
|     fi | ||||
| 
 | ||||
|     # Check that the FPGA has finished reset. | ||||
|     # If the FPGA is in reset, loading the driver will crash the system. | ||||
|     reset_done="$(gpioget 0 55)" | ||||
|     if [ "$reset_done" -ne 1 ]; then | ||||
|         echo "ERROR: FPGA in reset" >&2 | ||||
|         exit 1 | ||||
|     fi | ||||
| 
 | ||||
|     # Load module. | ||||
|     echo "Loading puzzlefw driver ..." | ||||
|     insmod /opt/puzzlefw/driver/puzzlefw.ko | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue