blob: 7a20ee015fa306d24275115517d3a60774857b69 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Timur Tabi5a469602010-04-01 10:49:42 -05002/**
Timur Tabiaa8d3fb2011-01-21 16:03:57 -06003 * Copyright 2010-2011 Freescale Semiconductor
Timur Tabi5a469602010-04-01 10:49:42 -05004 * Author: Timur Tabi <timur@freescale.com>
5 *
Timur Tabi5a469602010-04-01 10:49:42 -05006 * 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 */
13typedef struct ngpixis {
14 u8 id;
15 u8 arch;
16 u8 scver;
17 u8 csr;
18 u8 rst;
Kumar Galae02aea62011-02-09 02:00:08 +000019 u8 serclk;
Timur Tabi5a469602010-04-01 10:49:42 -050020 u8 aux;
21 u8 spd;
22 u8 brdcfg0;
Timur Tabi5f4d3682010-05-20 11:16:16 -050023 u8 brdcfg1; /* On some boards, this register is called 'dma' */
Timur Tabi5a469602010-04-01 10:49:42 -050024 u8 addr;
Kumar Galae02aea62011-02-09 02:00:08 +000025 u8 brdcfg2;
26 u8 gpiodir;
Timur Tabi5a469602010-04-01 10:49:42 -050027 u8 data;
28 u8 led;
Kumar Galae02aea62011-02-09 02:00:08 +000029 u8 tag;
Timur Tabi5a469602010-04-01 10:49:42 -050030 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;
Timur Tabid31e53b2012-10-23 09:40:22 +000044 } s[9]; /* s[0]..s[7] is SW1..SW8, and s[8] is SW11 */
Kumar Galab4a60e52010-05-22 17:25:47 -050045} __attribute__ ((packed)) ngpixis_t;
Timur Tabi5a469602010-04-01 10:49:42 -050046
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)
Timur Tabiaa8d3fb2011-01-21 16:03:57 -060055
56u8 pixis_read(unsigned int reg);
57void 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)