blob: 681b0d0b9126833cf770892f3b17d21eac43d41b [file] [log] [blame]
Timur Tabi5a469602010-04-01 10:49:42 -05001/**
Timur Tabiaa8d3fb2011-01-21 16:03:57 -06002 * Copyright 2010-2011 Freescale Semiconductor
Timur Tabi5a469602010-04-01 10:49:42 -05003 * Author: Timur Tabi <timur@freescale.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the Free
7 * Software Foundation; either version 2 of the License, or (at your option)
8 * any later version.
9 *
10 * This file provides support for the ngPIXIS, a board-specific FPGA used on
11 * some Freescale reference boards.
12 */
13
14/* ngPIXIS register set. Hopefully, this won't change too much over time.
15 * Feel free to add board-specific #ifdefs where necessary.
16 */
17typedef struct ngpixis {
18 u8 id;
19 u8 arch;
20 u8 scver;
21 u8 csr;
22 u8 rst;
23 u8 res1;
24 u8 aux;
25 u8 spd;
26 u8 brdcfg0;
Timur Tabi5f4d3682010-05-20 11:16:16 -050027 u8 brdcfg1; /* On some boards, this register is called 'dma' */
Timur Tabi5a469602010-04-01 10:49:42 -050028 u8 addr;
29 u8 res2[2];
30 u8 data;
31 u8 led;
32 u8 res3;
33 u8 vctl;
34 u8 vstat;
35 u8 vcfgen0;
36 u8 res4;
37 u8 ocmcsr;
38 u8 ocmmsg;
39 u8 gmdbg;
40 u8 res5[2];
41 u8 sclk[3];
42 u8 dclk[3];
43 u8 watch;
44 struct {
45 u8 sw;
46 u8 en;
47 } s[8];
Kumar Galab4a60e52010-05-22 17:25:47 -050048} __attribute__ ((packed)) ngpixis_t;
Timur Tabi5a469602010-04-01 10:49:42 -050049
50/* Pointer to the PIXIS register set */
51#define pixis ((ngpixis_t *)PIXIS_BASE)
52
53/* The PIXIS SW register that corresponds to board switch X, where x >= 1 */
54#define PIXIS_SW(x) (pixis->s[(x) - 1].sw)
55
56/* The PIXIS EN register that corresponds to board switch X, where x >= 1 */
57#define PIXIS_EN(x) (pixis->s[(x) - 1].en)
Timur Tabiaa8d3fb2011-01-21 16:03:57 -060058
59u8 pixis_read(unsigned int reg);
60void pixis_write(unsigned int reg, u8 value);
61
62#define PIXIS_READ(reg) pixis_read(offsetof(ngpixis_t, reg))
63#define PIXIS_WRITE(reg, value) pixis_write(offsetof(ngpixis_t, reg), value)