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