1c609719bSwdenk /* 2c609719bSwdenk * (C) Copyright 2002 3c609719bSwdenk * Rich Ireland, Enterasys Networks, rireland@enterasys.com. 4c609719bSwdenk * 5*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6c609719bSwdenk */ 7c609719bSwdenk 8c609719bSwdenk #include <fpga.h> 9c609719bSwdenk 10c609719bSwdenk #ifndef _ALTERA_H_ 11c609719bSwdenk #define _ALTERA_H_ 12c609719bSwdenk 13c609719bSwdenk typedef enum { /* typedef Altera_iface */ 14c609719bSwdenk min_altera_iface_type, /* insert all new types after this */ 155da627a4Swdenk passive_serial, /* serial data and external clock */ 165da627a4Swdenk passive_parallel_synchronous, /* parallel data */ 175da627a4Swdenk passive_parallel_asynchronous, /* parallel data */ 185da627a4Swdenk passive_serial_asynchronous, /* serial data w/ internal clock (not used) */ 195da627a4Swdenk altera_jtag_mode, /* jtag/tap serial (not used ) */ 203c735e74Seran liberty fast_passive_parallel, /* fast passive parallel (FPP) */ 213c735e74Seran liberty fast_passive_parallel_security, /* fast passive parallel with security (FPPS) */ 22c609719bSwdenk max_altera_iface_type /* insert all new types before this */ 23c609719bSwdenk } Altera_iface; /* end, typedef Altera_iface */ 24c609719bSwdenk 25c609719bSwdenk typedef enum { /* typedef Altera_Family */ 26c609719bSwdenk min_altera_type, /* insert all new types after this */ 275da627a4Swdenk Altera_ACEX1K, /* ACEX1K Family */ 28f0ff4692SStefan Roese Altera_CYC2, /* CYCLONII Family */ 293c735e74Seran liberty Altera_StratixII, /* StratixII Familiy */ 30c609719bSwdenk /* Add new models here */ 31c609719bSwdenk max_altera_type /* insert all new types before this */ 32c609719bSwdenk } Altera_Family; /* end, typedef Altera_Family */ 33c609719bSwdenk 34c609719bSwdenk typedef struct { /* typedef Altera_desc */ 35c609719bSwdenk Altera_Family family; /* part type */ 36c609719bSwdenk Altera_iface iface; /* interface type */ 37c609719bSwdenk size_t size; /* bytes of data part can accept */ 385da627a4Swdenk void * iface_fns;/* interface function table */ 39c609719bSwdenk void * base; /* base interface address */ 405da627a4Swdenk int cookie; /* implementation specific cookie */ 41c609719bSwdenk } Altera_desc; /* end, typedef Altera_desc */ 42c609719bSwdenk 435da627a4Swdenk /* Generic Altera Functions 445da627a4Swdenk *********************************************************************/ 45e6a857daSWolfgang Denk extern int altera_load(Altera_desc *desc, const void *image, size_t size); 46e6a857daSWolfgang Denk extern int altera_dump(Altera_desc *desc, const void *buf, size_t bsize); 47c609719bSwdenk extern int altera_info(Altera_desc *desc); 485da627a4Swdenk 495da627a4Swdenk /* Board specific implementation specific function types 505da627a4Swdenk *********************************************************************/ 515da627a4Swdenk typedef int (*Altera_pre_fn)( int cookie ); 525da627a4Swdenk typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie ); 535da627a4Swdenk typedef int (*Altera_status_fn)( int cookie ); 545da627a4Swdenk typedef int (*Altera_done_fn)( int cookie ); 555da627a4Swdenk typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie ); 565da627a4Swdenk typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie ); 57e6a857daSWolfgang Denk typedef int(*Altera_write_fn)(const void *buf, size_t len, int flush, int cookie); 585da627a4Swdenk typedef int (*Altera_abort_fn)( int cookie ); 595da627a4Swdenk typedef int (*Altera_post_fn)( int cookie ); 60c609719bSwdenk 613c735e74Seran liberty typedef struct { 623c735e74Seran liberty Altera_pre_fn pre; 633c735e74Seran liberty Altera_config_fn config; 643c735e74Seran liberty Altera_status_fn status; 653c735e74Seran liberty Altera_done_fn done; 663c735e74Seran liberty Altera_clk_fn clk; 673c735e74Seran liberty Altera_data_fn data; 683c735e74Seran liberty Altera_abort_fn abort; 693c735e74Seran liberty Altera_post_fn post; 703c735e74Seran liberty } altera_board_specific_func; 713c735e74Seran liberty 72c609719bSwdenk #endif /* _ALTERA_H_ */ 73