/* ================================================================== >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------------------------------------------ Copyright (c) 2019-2020 by Lattice Semiconductor Corporation ALL RIGHTS RESERVED ------------------------------------------------------------------ IMPORTANT: THIS FILE IS USED BY OR GENERATED BY the LATTICE PROPELâ„¢ DEVELOPMENT SUITE, WHICH INCLUDES PROPEL BUILDER AND PROPEL SDK. Lattice grants permission to use this code pursuant to the terms of the Lattice Propel License Agreement. DISCLAIMER: LATTICE MAKES NO WARRANTIES ON THIS FILE OR ITS CONTENTS, WHETHER EXPRESSED, IMPLIED, STATUTORY, OR IN ANY PROVISION OF THE LATTICE PROPEL LICENSE AGREEMENT OR COMMUNICATION WITH LICENSEE, AND LATTICE SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. LATTICE DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED HEREIN WILL MEET LICENSEE 'S REQUIREMENTS, OR THAT LICENSEE' S OPERATION OF ANY DEVICE, SOFTWARE OR SYSTEM USING THIS FILE OR ITS CONTENTS WILL BE UNINTERRUPTED OR ERROR FREE, OR THAT DEFECTS HEREIN WILL BE CORRECTED. LICENSEE ASSUMES RESPONSIBILITY FOR SELECTION OF MATERIALS TO ACHIEVE ITS INTENDED RESULTS, AND FOR THE PROPER INSTALLATION, USE, AND RESULTS OBTAINED THEREFROM. LICENSEE ASSUMES THE ENTIRE RISK OF THE FILE AND ITS CONTENTS PROVING DEFECTIVE OR FAILING TO PERFORM PROPERLY AND IN SUCH EVENT, LICENSEE SHALL ASSUME THE ENTIRE COST AND RISK OF ANY REPAIR, SERVICE, CORRECTION, OR ANY OTHER LIABILITIES OR DAMAGES CAUSED BY OR ASSOCIATED WITH THE SOFTWARE.IN NO EVENT SHALL LATTICE BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS FILE OR ITS CONTENTS, EVEN IF LATTICE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. LATTICE 'S SOLE LIABILITY, AND LICENSEE' S SOLE REMEDY, IS SET FORTH ABOVE. LATTICE DOES NOT WARRANT OR REPRESENT THAT THIS FILE, ITS CONTENTS OR USE THEREOF DOES NOT INFRINGE ON THIRD PARTIES' INTELLECTUAL PROPERTY RIGHTS, INCLUDING ANY PATENT. IT IS THE USER' S RESPONSIBILITY TO VERIFY THE USER SOFTWARE DESIGN FOR CONSISTENCY AND FUNCTIONALITY THROUGH THE USE OF FORMAL SOFTWARE VALIDATION METHODS. ------------------------------------------------------------------ ================================================================== */ #ifndef EXT_PIC_H_ #define EXT_PIC_H_ #include "util.h" #if 0 struct pic_reg { volatile unsigned int isrc; volatile unsigned int isrs; volatile unsigned int isr; volatile unsigned int reserved1; volatile unsigned int ierc; volatile unsigned int iers; volatile unsigned int ier; volatile unsigned int reserved2; volatile unsigned int polc; volatile unsigned int pols; volatile unsigned int pol; }; #endif struct ext_pic_reg { volatile unsigned int pic_status; volatile unsigned int pic_en; volatile unsigned int pic_set; volatile unsigned int pic_pol; }; enum ext_interrupt_src { EXT_INT_PIC0 = 0, EXT_INT_PIC1 = 1, EXT_INT_PIC2 = 2, EXT_INT_PIC3 = 3, EXT_INT_PIC4 = 4, EXT_INT_PIC5 = 5, EXT_INT_PIC6 = 6, EXT_INT_PIC7 = 7, EXT_INT_NUM = 8 }; struct ext_interrupt_entry { void (*isr) (void *); // ISR void *context; // base address of IP }; struct pic_inst { unsigned int base_addr; unsigned int int_num; struct ext_interrupt_entry int_table[EXT_INT_NUM]; }; unsigned char ext_pic_int_clear(unsigned char src); unsigned char ext_pic_int_enable(unsigned char src); unsigned char ext_pic_int_disable(unsigned char src); unsigned char ext_pic_int_pending(unsigned char src); unsigned char ext_pic_init(struct pic_inst *pic_instance, unsigned int base); unsigned char ext_pic_int_polarity_set(unsigned char src, unsigned char bit); unsigned char ext_pic_int_polarity_get(unsigned char src, unsigned char *pol); unsigned char ext_pic_int_status_get(unsigned int *status); unsigned char ext_pic_isr_register(struct pic_inst *pic_instance, unsigned char src, void (*isr) (void *), void *context); void ext_pic_isr_callback(void *ctx); #endif /* EXT_PIC_H_ */