diff --git a/include/altera.h b/include/altera.h
index 88f72db..74b6729 100644
--- a/include/altera.h
+++ b/include/altera.h
@@ -28,46 +28,63 @@
 #define _ALTERA_H_
 
 /*
- * Note that this is just  Altera FPGA interface boilerplate.
- * There is no support for Altera devices yet.
- *
- * See include/xilinx.h for a working example.
+ * See include/xilinx.h for another working example.
  */
 
-/* In your board's config.h file you should define CONFIG_FPGA as such:
- *	#define CONFIG_FPGA 	(CFG_ALTERA_xxx | CFG_ALTERA_IF_xxx )
- */
+/* Altera Model definitions
+ *********************************************************************/
+#define CFG_ACEX1K		CFG_FPGA_DEV( 0x1 )
 
-/* Altera Model definitions */
-#define CFG_ALTERA_xxxx		( CFG_FPGA_ALTERA | CFG_FPGA_DEV( 0x1 ))
+#define CFG_ALTERA_ACEX1K	(CFG_FPGA_ALTERA | CFG_ACEX1K)
 /* Add new models here */
 
-/* Altera Interface definitions */
-#define CFG_ALTERA_IF_xxx		CFG_FPGA_IF( 0x1 )
+/* Altera Interface definitions
+ *********************************************************************/
+#define CFG_ALTERA_IF_PS	CFG_FPGA_IF( 0x1 )	/* passive serial */
 /* Add new interfaces here */
 
-typedef enum {                     /* typedef Altera_iface */
-    min_altera_iface_type,        /* insert all new types after this */
-/* Add new interfaces here */
-    max_altera_iface_type         /* insert all new types before this */
-} Altera_iface;                   /* end, typedef Altera_iface */
+typedef enum {				/* typedef Altera_iface */
+	min_altera_iface_type,		/* insert all new types after this */
+	passive_serial,			/* serial data and external clock */
+	passive_parallel_synchronous,	/* parallel data */
+	passive_parallel_asynchronous,	/* parallel data */
+	passive_serial_asynchronous,	/* serial data w/ internal clock (not used)	*/
+	altera_jtag_mode,		/* jtag/tap serial (not used ) */
+	max_altera_iface_type		/* insert all new types before this */
+} Altera_iface;				/* end, typedef Altera_iface */
 
-typedef enum {                     /* typedef Altera_Family */
-    min_altera_type,              /* insert all new types after this */
+typedef enum {			/* typedef Altera_Family */
+    min_altera_type,		/* insert all new types after this */
+    Altera_ACEX1K,		/* ACEX1K Family */
 /* Add new models here */
-    max_altera_type               /* insert all new types before this */
-} Altera_Family;                  /* end, typedef Altera_Family */
+    max_altera_type		/* insert all new types before this */
+} Altera_Family;		/* end, typedef Altera_Family */
 
-typedef struct {                   /* typedef Altera_desc */
-    Altera_Family    family;      /* part type */
-    Altera_iface     iface;       /* interface type */
-    size_t            size;        /* bytes of data part can accept */
-    void *            base;        /* base interface address */
-} Altera_desc;                    /* end, typedef Altera_desc */
+typedef struct {		/* typedef Altera_desc */
+	Altera_Family	family;	/* part type */
+	Altera_iface	iface;	/* interface type */
+	size_t		size;	/* bytes of data part can accept */
+	void *		iface_fns;/* interface function table */
+	void *		base;	/* base interface address */
+	int		cookie;	/* implementation specific cookie */
+} Altera_desc;			/* end, typedef Altera_desc */
 
+/* Generic Altera Functions
+ *********************************************************************/
 extern int altera_load( Altera_desc *desc, void *image, size_t size );
 extern int altera_dump( Altera_desc *desc, void *buf, size_t bsize );
 extern int altera_info( Altera_desc *desc );
-extern int altera_reloc( Altera_desc *desc, ulong reloc_off );
+extern int altera_reloc( Altera_desc *desc, ulong reloc_offset );
 
-#endif  /* _ALTERA_H_ */
+/* Board specific implementation specific function types
+ *********************************************************************/
+typedef int (*Altera_pre_fn)( int cookie );
+typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie );
+typedef int (*Altera_status_fn)( int cookie );
+typedef int (*Altera_done_fn)( int cookie );
+typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie );
+typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie );
+typedef int (*Altera_abort_fn)( int cookie );
+typedef int (*Altera_post_fn)( int cookie );
+
+#endif /* _ALTERA_H_ */
