SPDX: Convert all of our single license tags to Linux Kernel style
[platform/kernel/u-boot.git] / board / freescale / common / ngpixis.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /**
3  * Copyright 2010-2011 Freescale Semiconductor
4  * Author: Timur Tabi <timur@freescale.com>
5  *
6  * This file provides support for the ngPIXIS, a board-specific FPGA used on
7  * some Freescale reference boards.
8  */
9
10 /* ngPIXIS register set. Hopefully, this won't change too much over time.
11  * Feel free to add board-specific #ifdefs where necessary.
12  */
13 typedef struct ngpixis {
14         u8 id;
15         u8 arch;
16         u8 scver;
17         u8 csr;
18         u8 rst;
19         u8 serclk;
20         u8 aux;
21         u8 spd;
22         u8 brdcfg0;
23         u8 brdcfg1;     /* On some boards, this register is called 'dma' */
24         u8 addr;
25         u8 brdcfg2;
26         u8 gpiodir;
27         u8 data;
28         u8 led;
29         u8 tag;
30         u8 vctl;
31         u8 vstat;
32         u8 vcfgen0;
33         u8 res4;
34         u8 ocmcsr;
35         u8 ocmmsg;
36         u8 gmdbg;
37         u8 res5[2];
38         u8 sclk[3];
39         u8 dclk[3];
40         u8 watch;
41         struct {
42                 u8 sw;
43                 u8 en;
44         } s[9];         /* s[0]..s[7] is SW1..SW8, and s[8] is SW11 */
45 } __attribute__ ((packed)) ngpixis_t;
46
47 /* Pointer to the PIXIS register set */
48 #define pixis ((ngpixis_t *)PIXIS_BASE)
49
50 /* The PIXIS SW register that corresponds to board switch X, where x >= 1 */
51 #define PIXIS_SW(x)             (pixis->s[(x) - 1].sw)
52
53 /* The PIXIS EN register that corresponds to board switch X, where x >= 1 */
54 #define PIXIS_EN(x)             (pixis->s[(x) - 1].en)
55
56 u8 pixis_read(unsigned int reg);
57 void pixis_write(unsigned int reg, u8 value);
58
59 #define PIXIS_READ(reg) pixis_read(offsetof(ngpixis_t, reg))
60 #define PIXIS_WRITE(reg, value) pixis_write(offsetof(ngpixis_t, reg), value)