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