ab88bd2b6a
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)
|