**************************************************************
*DENM 1.3 ecoreex definitions
*NZG
*09/17/2007
*EMAC.Inc
**************************************************************
diff -uprN linux-2.6.20-at92_e1.1/drivers/ioex/ecoreex.c linux-2.6.20-at92/drivers/ioex/ecoreex.c
--- linux-2.6.20-at92_e1.1/drivers/ioex/ecoreex.c	2007-09-17 11:27:07.000000000 -0400
+++ linux-2.6.20-at92/drivers/ioex/ecoreex.c	2007-09-15 14:55:22.000000000 -0400
@@ -139,8 +139,10 @@ return 0;
 
 //---------------------------------------------------------------------------------
 #ifdef CONFIG_ECOREEX_DENM
-#define CPLD_DENM_NAME_12 "DENM CPLD expansion R1.2"
+#define CPLD_DENM_NAME_12 "DENM CPLD expansion R1.2/R1.3"
+#define CPLD_DENM_NAME_14 "DENM CPLD expansion R1.4"
 #define CPLD_DENM 0x92
+#define CPLD_DENM14 0x93
 
 static inline int CPLD_DENM_map(unsigned long phys_addr,u8 *virt_addr,unsigned long size,const char *name){
 	
@@ -172,6 +174,37 @@ static inline int CPLD_DENM_map(unsigned
 return 0;
 }
 
+static inline int CPLD_DENM14_map(unsigned long phys_addr,u8 *virt_addr,unsigned long size,const char *name){
+	
+	if(request_mem_region(phys_addr,size,name)==NULL){
+		printk("could not obtain physical memory at %lx for EMAC core\n",phys_addr);
+		iounmap(virt_addr);
+		return -1;
+		}
+	
+	printk("%s detected at %lx\n",name,phys_addr);			
+	//add appropriate class devices for this version to the system
+
+#ifdef CONFIG_GPIOCLASS	
+	gpio_declare();
+	gpi_device_create(&virt_addr[2],"counter0");
+	gpi_device_create(&virt_addr[4],"counter1");
+	gpi_device_create(&virt_addr[5],"counter2");
+	gpi_device_create(&virt_addr[8],"counter3");
+	gpi_device_create(&virt_addr[10],"counter4");
+	gpi_device_create(&virt_addr[12],"counter5");
+	gpi_device_create(&virt_addr[14],"ct543210");
+	
+	gpio_device_create(&virt_addr[16],NULL,"oxrs4321");
+	gpio_device_create(&virt_addr[17],NULL,"xxrt321b");
+	gpio_device_create(&virt_addr[3], NULL,"rollover");
+	gpo_device_create(&virt_addr[1],"debounce");
+	
+#endif	//CONFIG_GPIOCLASS
+
+return 0;
+}
+
 #endif //CONFIG_ECOREEX_DENM
 
 /************************************************************
@@ -218,6 +251,9 @@ static inline void map_core(unsigned lon
 			case CPLD_DENM:
 				CPLD_DENM_map(phys_addr,virt_addr,size,CPLD_DENM_NAME_12);
 			break;
+			case CPLD_DENM14:
+				CPLD_DENM14_map(phys_addr,virt_addr,size,CPLD_DENM_NAME_14);
+			break;
 			#endif //CONFIG_ECOREEX_DENM
 			//--------------------------------------------------------
 			

