mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	Add a driver for gdsys IHS (Integrated Hardware Systems) FPGAs, which supports initialization of the FPGA, as well as information gathering. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Mario Six <mario.six@gdsys.cc>
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * (C) Copyright 2018
 | |
|  * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * struct ihs_fpga_regs - IHS FPGA register map structure
 | |
|  * @reflection_low:	  Lower reflection register
 | |
|  * @versions:		  PCB versions register
 | |
|  * @fpga_version:	  FPGA versions register
 | |
|  * @features:		  FPGA features register
 | |
|  * @extended_features:	  FPGA extended features register
 | |
|  * @top_interrupt:	  Top interrupt register
 | |
|  * @top_interrupt_enable: Top interrupt enable register
 | |
|  * @status:		  FPGA status register
 | |
|  * @control:		  FPGA control register
 | |
|  * @extended_control:	  FPGA extended control register
 | |
|  */
 | |
| struct ihs_fpga_regs {
 | |
| 	u16 reflection_low;
 | |
| 	u16 versions;
 | |
| 	u16 fpga_version;
 | |
| 	u16 features;
 | |
| 	u16 extended_features;
 | |
| 	u16 top_interrupt;
 | |
| 	u16 top_interrupt_enable;
 | |
| 	u16 status;
 | |
| 	u16 control;
 | |
| 	u16 extended_control;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * ihs_fpga_set() - Convenience macro to set values in FPGA register map
 | |
|  * @map:    Register map to set a value in
 | |
|  * @member: Name of member (described by ihs_fpga_regs) to set
 | |
|  * @val:    Value to set the member to
 | |
|  */
 | |
| #define ihs_fpga_set(map, member, val) \
 | |
| 	regmap_set(map, struct ihs_fpga_regs, member, val)
 | |
| 
 | |
| /**
 | |
|  * ihs_fpga_get() - Convenience macro to get values from FPGA register map
 | |
|  * @map:    Register map to read value from
 | |
|  * @member: Name of member (described by ihs_fpga_regs) to get
 | |
|  * @valp:   Pointe to variable to receive the value read
 | |
|  */
 | |
| #define ihs_fpga_get(map, member, valp) \
 | |
| 	regmap_get(map, struct ihs_fpga_regs, member, valp)
 |