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