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