1c609719bSwdenk /* 2c609719bSwdenk * (C) Copyright 2002 3c609719bSwdenk * Rich Ireland, Enterasys Networks, rireland@enterasys.com. 4c609719bSwdenk * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6c609719bSwdenk */ 7c609719bSwdenk 8c609719bSwdenk #include <fpga.h> 9c609719bSwdenk 10c609719bSwdenk #ifndef _ALTERA_H_ 11c609719bSwdenk #define _ALTERA_H_ 12c609719bSwdenk 13*d44ef7ffSMarek Vasut enum altera_iface { 14*d44ef7ffSMarek Vasut /* insert all new types after this */ 15*d44ef7ffSMarek Vasut min_altera_iface_type, 16*d44ef7ffSMarek Vasut /* serial data and external clock */ 17*d44ef7ffSMarek Vasut passive_serial, 18*d44ef7ffSMarek Vasut /* parallel data */ 19*d44ef7ffSMarek Vasut passive_parallel_synchronous, 20*d44ef7ffSMarek Vasut /* parallel data */ 21*d44ef7ffSMarek Vasut passive_parallel_asynchronous, 22*d44ef7ffSMarek Vasut /* serial data w/ internal clock (not used) */ 23*d44ef7ffSMarek Vasut passive_serial_asynchronous, 24*d44ef7ffSMarek Vasut /* jtag/tap serial (not used ) */ 25*d44ef7ffSMarek Vasut altera_jtag_mode, 26*d44ef7ffSMarek Vasut /* fast passive parallel (FPP) */ 27*d44ef7ffSMarek Vasut fast_passive_parallel, 28*d44ef7ffSMarek Vasut /* fast passive parallel with security (FPPS) */ 29*d44ef7ffSMarek Vasut fast_passive_parallel_security, 30*d44ef7ffSMarek Vasut /* insert all new types before this */ 31*d44ef7ffSMarek Vasut max_altera_iface_type, 32*d44ef7ffSMarek Vasut }; 33c609719bSwdenk 34*d44ef7ffSMarek Vasut enum altera_family { 35*d44ef7ffSMarek Vasut /* insert all new types after this */ 36*d44ef7ffSMarek Vasut min_altera_type, 37*d44ef7ffSMarek Vasut /* ACEX1K Family */ 38*d44ef7ffSMarek Vasut Altera_ACEX1K, 39*d44ef7ffSMarek Vasut /* CYCLONII Family */ 40*d44ef7ffSMarek Vasut Altera_CYC2, 41*d44ef7ffSMarek Vasut /* StratixII Family */ 42*d44ef7ffSMarek Vasut Altera_StratixII, 43*d44ef7ffSMarek Vasut 44c609719bSwdenk /* Add new models here */ 45c609719bSwdenk 46*d44ef7ffSMarek Vasut /* insert all new types before this */ 47*d44ef7ffSMarek Vasut max_altera_type, 48*d44ef7ffSMarek Vasut }; 49*d44ef7ffSMarek Vasut 50*d44ef7ffSMarek Vasut typedef struct { 51*d44ef7ffSMarek Vasut /* part type */ 52*d44ef7ffSMarek Vasut enum altera_family family; 53*d44ef7ffSMarek Vasut /* interface type */ 54*d44ef7ffSMarek Vasut enum altera_iface iface; 55*d44ef7ffSMarek Vasut /* bytes of data part can accept */ 56*d44ef7ffSMarek Vasut size_t size; 57*d44ef7ffSMarek Vasut /* interface function table */ 58*d44ef7ffSMarek Vasut void *iface_fns; 59*d44ef7ffSMarek Vasut /* base interface address */ 60*d44ef7ffSMarek Vasut void *base; 61*d44ef7ffSMarek Vasut /* implementation specific cookie */ 62*d44ef7ffSMarek Vasut int cookie; 63*d44ef7ffSMarek Vasut } Altera_desc; 64c609719bSwdenk 655da627a4Swdenk /* Generic Altera Functions 665da627a4Swdenk *********************************************************************/ 67e6a857daSWolfgang Denk extern int altera_load(Altera_desc *desc, const void *image, size_t size); 68e6a857daSWolfgang Denk extern int altera_dump(Altera_desc *desc, const void *buf, size_t bsize); 69c609719bSwdenk extern int altera_info(Altera_desc *desc); 705da627a4Swdenk 715da627a4Swdenk /* Board specific implementation specific function types 725da627a4Swdenk *********************************************************************/ 735da627a4Swdenk typedef int (*Altera_pre_fn)( int cookie ); 745da627a4Swdenk typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie ); 755da627a4Swdenk typedef int (*Altera_status_fn)( int cookie ); 765da627a4Swdenk typedef int (*Altera_done_fn)( int cookie ); 775da627a4Swdenk typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie ); 785da627a4Swdenk typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie ); 79e6a857daSWolfgang Denk typedef int(*Altera_write_fn)(const void *buf, size_t len, int flush, int cookie); 805da627a4Swdenk typedef int (*Altera_abort_fn)( int cookie ); 815da627a4Swdenk typedef int (*Altera_post_fn)( int cookie ); 82c609719bSwdenk 833c735e74Seran liberty typedef struct { 843c735e74Seran liberty Altera_pre_fn pre; 853c735e74Seran liberty Altera_config_fn config; 863c735e74Seran liberty Altera_status_fn status; 873c735e74Seran liberty Altera_done_fn done; 883c735e74Seran liberty Altera_clk_fn clk; 893c735e74Seran liberty Altera_data_fn data; 903c735e74Seran liberty Altera_abort_fn abort; 913c735e74Seran liberty Altera_post_fn post; 923c735e74Seran liberty } altera_board_specific_func; 933c735e74Seran liberty 94c609719bSwdenk #endif /* _ALTERA_H_ */ 95