1*b514f432SMark Cave-Ayland /* 2*b514f432SMark Cave-Ayland * HP-PARISC Lasi chipset emulation. 3*b514f432SMark Cave-Ayland * 4*b514f432SMark Cave-Ayland * (C) 2019 by Helge Deller <deller@gmx.de> 5*b514f432SMark Cave-Ayland * 6*b514f432SMark Cave-Ayland * This work is licensed under the GNU GPL license version 2 or later. 7*b514f432SMark Cave-Ayland * 8*b514f432SMark Cave-Ayland * Documentation available at: 9*b514f432SMark Cave-Ayland * https://parisc.wiki.kernel.org/images-parisc/7/79/Lasi_ers.pdf 10*b514f432SMark Cave-Ayland */ 11*b514f432SMark Cave-Ayland 12*b514f432SMark Cave-Ayland #ifndef LASI_H 13*b514f432SMark Cave-Ayland #define LASI_H 14*b514f432SMark Cave-Ayland 15*b514f432SMark Cave-Ayland #define TYPE_LASI_CHIP "lasi-chip" 16*b514f432SMark Cave-Ayland OBJECT_DECLARE_SIMPLE_TYPE(LasiState, LASI_CHIP) 17*b514f432SMark Cave-Ayland 18*b514f432SMark Cave-Ayland #define LASI_IRR 0x00 /* RO */ 19*b514f432SMark Cave-Ayland #define LASI_IMR 0x04 20*b514f432SMark Cave-Ayland #define LASI_IPR 0x08 21*b514f432SMark Cave-Ayland #define LASI_ICR 0x0c 22*b514f432SMark Cave-Ayland #define LASI_IAR 0x10 23*b514f432SMark Cave-Ayland 24*b514f432SMark Cave-Ayland #define LASI_PCR 0x0C000 /* LASI Power Control register */ 25*b514f432SMark Cave-Ayland #define LASI_ERRLOG 0x0C004 /* LASI Error Logging register */ 26*b514f432SMark Cave-Ayland #define LASI_VER 0x0C008 /* LASI Version Control register */ 27*b514f432SMark Cave-Ayland #define LASI_IORESET 0x0C00C /* LASI I/O Reset register */ 28*b514f432SMark Cave-Ayland #define LASI_AMR 0x0C010 /* LASI Arbitration Mask register */ 29*b514f432SMark Cave-Ayland #define LASI_IO_CONF 0x7FFFE /* LASI primary configuration register */ 30*b514f432SMark Cave-Ayland #define LASI_IO_CONF2 0x7FFFF /* LASI secondary configuration register */ 31*b514f432SMark Cave-Ayland 32*b514f432SMark Cave-Ayland #define LASI_BIT(x) (1ul << (x)) 33*b514f432SMark Cave-Ayland #define LASI_IRQ_BITS (LASI_BIT(5) | LASI_BIT(7) | LASI_BIT(8) | LASI_BIT(9) \ 34*b514f432SMark Cave-Ayland | LASI_BIT(13) | LASI_BIT(14) | LASI_BIT(16) | LASI_BIT(17) \ 35*b514f432SMark Cave-Ayland | LASI_BIT(18) | LASI_BIT(19) | LASI_BIT(20) | LASI_BIT(21) \ 36*b514f432SMark Cave-Ayland | LASI_BIT(26)) 37*b514f432SMark Cave-Ayland 38*b514f432SMark Cave-Ayland #define ICR_BUS_ERROR_BIT LASI_BIT(8) /* bit 8 in ICR */ 39*b514f432SMark Cave-Ayland #define ICR_TOC_BIT LASI_BIT(1) /* bit 1 in ICR */ 40*b514f432SMark Cave-Ayland 41*b514f432SMark Cave-Ayland struct LasiState { 42*b514f432SMark Cave-Ayland PCIHostState parent_obj; 43*b514f432SMark Cave-Ayland 44*b514f432SMark Cave-Ayland uint32_t irr; 45*b514f432SMark Cave-Ayland uint32_t imr; 46*b514f432SMark Cave-Ayland uint32_t ipr; 47*b514f432SMark Cave-Ayland uint32_t icr; 48*b514f432SMark Cave-Ayland uint32_t iar; 49*b514f432SMark Cave-Ayland 50*b514f432SMark Cave-Ayland uint32_t errlog; 51*b514f432SMark Cave-Ayland uint32_t amr; 52*b514f432SMark Cave-Ayland uint32_t rtc; 53*b514f432SMark Cave-Ayland time_t rtc_ref; 54*b514f432SMark Cave-Ayland 55*b514f432SMark Cave-Ayland MemoryRegion this_mem; 56*b514f432SMark Cave-Ayland }; 57*b514f432SMark Cave-Ayland 58*b514f432SMark Cave-Ayland #endif 59