xref: /openbmc/u-boot/drivers/misc/ihs_fpga.h (revision 1d6edcbfed2af33c748f2beb399810a0441888da)
1*ab88bd2bSMario Six /* SPDX-License-Identifier: GPL-2.0+ */
2*ab88bd2bSMario Six /*
3*ab88bd2bSMario Six  * (C) Copyright 2018
4*ab88bd2bSMario Six  * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
5*ab88bd2bSMario Six  */
6*ab88bd2bSMario Six 
7*ab88bd2bSMario Six /**
8*ab88bd2bSMario Six  * struct ihs_fpga_regs - IHS FPGA register map structure
9*ab88bd2bSMario Six  * @reflection_low:	  Lower reflection register
10*ab88bd2bSMario Six  * @versions:		  PCB versions register
11*ab88bd2bSMario Six  * @fpga_version:	  FPGA versions register
12*ab88bd2bSMario Six  * @features:		  FPGA features register
13*ab88bd2bSMario Six  * @extended_features:	  FPGA extended features register
14*ab88bd2bSMario Six  * @top_interrupt:	  Top interrupt register
15*ab88bd2bSMario Six  * @top_interrupt_enable: Top interrupt enable register
16*ab88bd2bSMario Six  * @status:		  FPGA status register
17*ab88bd2bSMario Six  * @control:		  FPGA control register
18*ab88bd2bSMario Six  * @extended_control:	  FPGA extended control register
19*ab88bd2bSMario Six  */
20*ab88bd2bSMario Six struct ihs_fpga_regs {
21*ab88bd2bSMario Six 	u16 reflection_low;
22*ab88bd2bSMario Six 	u16 versions;
23*ab88bd2bSMario Six 	u16 fpga_version;
24*ab88bd2bSMario Six 	u16 features;
25*ab88bd2bSMario Six 	u16 extended_features;
26*ab88bd2bSMario Six 	u16 top_interrupt;
27*ab88bd2bSMario Six 	u16 top_interrupt_enable;
28*ab88bd2bSMario Six 	u16 status;
29*ab88bd2bSMario Six 	u16 control;
30*ab88bd2bSMario Six 	u16 extended_control;
31*ab88bd2bSMario Six };
32*ab88bd2bSMario Six 
33*ab88bd2bSMario Six /**
34*ab88bd2bSMario Six  * ihs_fpga_set() - Convenience macro to set values in FPGA register map
35*ab88bd2bSMario Six  * @map:    Register map to set a value in
36*ab88bd2bSMario Six  * @member: Name of member (described by ihs_fpga_regs) to set
37*ab88bd2bSMario Six  * @val:    Value to set the member to
38*ab88bd2bSMario Six  */
39*ab88bd2bSMario Six #define ihs_fpga_set(map, member, val) \
40*ab88bd2bSMario Six 	regmap_set(map, struct ihs_fpga_regs, member, val)
41*ab88bd2bSMario Six 
42*ab88bd2bSMario Six /**
43*ab88bd2bSMario Six  * ihs_fpga_get() - Convenience macro to get values from FPGA register map
44*ab88bd2bSMario Six  * @map:    Register map to read value from
45*ab88bd2bSMario Six  * @member: Name of member (described by ihs_fpga_regs) to get
46*ab88bd2bSMario Six  * @valp:   Pointe to variable to receive the value read
47*ab88bd2bSMario Six  */
48*ab88bd2bSMario Six #define ihs_fpga_get(map, member, valp) \
49*ab88bd2bSMario Six 	regmap_get(map, struct ihs_fpga_regs, member, valp)
50