/*--------------------------------------------------------------*/
/* K2H_efuse_settings.gel                                    */
/* Version 0.1                                                  */
/*                                                              */
/* This GEL file is designed to be used in conjunction with     */
/* CCS and the K2K/K2H Device.                                  */
/*                                                              */
/* HISTORY:                                                     */
/* Ver 0.1: Initial Draft                                       */
/*                                                              */
/* Created By: Karthik Ramana Sankar                             */
/* Date Last Modified: Dec 2012                                 */
/*--------------------------------------------------------------*/


/* BB register field read macro */
#define BB_REG_FIELD_READ(reg_value, reg_high, reg_low) (unsigned int)(((*(unsigned int*)reg_value)&((0xFFFFFFFF>>((31-reg_high)+reg_low))<<reg_low))>>reg_low)

/* BB register field write macro */
#define BB_REG_FIELD_WRITE(reg_addr, reg_high, reg_low, reg_value) (*(unsigned int *)reg_addr) = ((*(unsigned int *)reg_addr)&(~((0xFFFFFFFF>>(31-reg_high))&(0xFFFFFFFF<<reg_low))))|((reg_value<<reg_low)&((0xFFFFFFFF>>(31-reg_high))&(0xFFFFFFFF<<reg_low)))

#define PSC_VCNTLID                                (0x02350014u)

#define BOOTCFG_JTAGID								   (0x02620018u)
#define BOOTCFG_DEVSTAT                                (0x02620020u)
#define BOOTCFG_MACID1                                 (0x02620110u)
#define BOOTCFG_MACID2                                 (0x02620114u)

K2H_getDEVSTAT()
{
	
	GEL_TextOut(" ********************************** K2H DEVSTAT Register (DEVSTAT) ************************************\n\n");
	
	GEL_TextOut(" DEVSTAT ---> %x\n",,,,,*(unsigned int*)BOOTCFG_DEVSTAT);
}

K2H_getJTAGID()
{
	
	GEL_TextOut(" ********************************** K2H JTAGID Register (JTAGID) ************************************\n\n");
	
	GEL_TextOut(" BOOTCFG_JTAGID ---> %x\n",,,,,*(unsigned int*)BOOTCFG_JTAGID);
}

K2H_getMACID()
{
	unsigned int reg_field;
	
	GEL_TextOut(" ********************************** K2H MACID Register (MACID) ************************************\n\n");
	
	GEL_TextOut(" MACID[31:0] ---> %x\n",,,,,(unsigned int)BB_REG_FIELD_READ(BOOTCFG_MACID1,31,0));
	
	GEL_TextOut(" MACID[32:47] ---> %x\n",,,,,(unsigned short)BB_REG_FIELD_READ(BOOTCFG_MACID2,15,0));
	
	reg_field = BB_REG_FIELD_READ(BOOTCFG_MACID2,16,16);
	
	if(reg_field == 0)
	{
		GEL_TextOut(" BCAST[16](Broadcast Reception) ---> Broadcast\n");
	}
	else
	{
		GEL_TextOut(" BCAST[16](Broadcast Reception) ---> Disabled\n");
	}
	
	reg_field = BB_REG_FIELD_READ(BOOTCFG_MACID2,17,17);
	
	if(reg_field == 0)
	{
		GEL_TextOut(" BCAST[17](MAC Flow Control) ---> Off\n");
	}
	else
	{
		GEL_TextOut(" BCAST[17](MAC Flow Control) ---> On\n");
	}
	
	GEL_TextOut(" CHECKSUM[24:31] ---> %x\n\n",,,,,(unsigned char)BB_REG_FIELD_READ(BOOTCFG_MACID2,31,24));
}

#define BOOTCFG_EFUSE_RSVD2                          (0x02620C98u)

K2H_device_speed()
{

	unsigned int reg_field;
	
	GEL_TextOut(" *******************************************************************************************************\n");
	GEL_TextOut(" ********************************** K2H DEVICE SPEED CONFIGURATION ******************************************************\n");
	GEL_TextOut(" *******************************************************************************************************\n\n");
	
	//Get device speed
	GEL_TextOut(" BOOTCFG_EFUSE_RSVD2 ---> %x\n",,,,,(unsigned int)BB_REG_FIELD_READ(BOOTCFG_EFUSE_RSVD2,31,0));
	
	reg_field = BB_REG_FIELD_READ(BOOTCFG_EFUSE_RSVD2,27,16);
	
	if(reg_field == 0x000)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 800 MHz\n");
	}
	else if(reg_field == 0x001)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1 GHz\n");
	}
	else if((reg_field & 0x002) == 0x002)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.2288 GHz\n");
	}
	else if((reg_field & 0x004) == 0x004)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.3508 GHz\n");
	}
	else if((reg_field & 0x008) == 0x008)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.41312 GHz\n");
	}
	else if((reg_field & 0x010) == 0x010)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.536 GHz\n");
	}
	else if((reg_field & 0x020) == 0x020)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.41312 GHz\n");
	}
	else if((reg_field & 0x040) == 0x040)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.3508 GHz\n");
	}
	else if((reg_field & 0x080) == 0x080)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1.2288 GHz\n");
	}
	else if((reg_field & 0x100) == 0x100)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 1 GHz\n");
	}
	else if((reg_field & 0x200) == 0x200)
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> 800 MHz\n");
	}
	else
	{
		GEL_TextOut(" DEVICE SPEED[27:16] ---> Reserved\n");
	}
	
	reg_field = BB_REG_FIELD_READ(BOOTCFG_EFUSE_RSVD2,11,0);
	
	if(reg_field == 0x000)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 800 MHz\n");
	}
	else if(reg_field == 0x001)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1 GHz\n");
	}
	else if((reg_field & 0x002) == 0x002)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.2288 GHz\n");
	}
	else if((reg_field & 0x004) == 0x004)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.3508 GHz\n");
	}
	else if((reg_field & 0x008) == 0x008)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.41312 GHz\n");
	}
	else if((reg_field & 0x010) == 0x010)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.536 GHz\n");
	}
	else if((reg_field & 0x020) == 0x020)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.41312 GHz\n");
	}
	else if((reg_field & 0x040) == 0x040)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.3508 GHz\n");
	}
	else if((reg_field & 0x080) == 0x080)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1.2288 GHz\n");
	}
	else if((reg_field & 0x100) == 0x100)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 1 GHz\n");
	}
	else if((reg_field & 0x200) == 0x200)
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> 800 MHz\n");
	}
	else
	{
		GEL_TextOut(" ARM SPEED[27:16] ---> Reserved\n");
	}
}

#define BOOTCFG_DIEID0                                 (0x02620008u)
#define BOOTCFG_DIEID1                                 (0x0262000Cu)
#define BOOTCFG_DIEID2                                 (0x02620010u)
#define BOOTCFG_DIEID3                                 (0x02620014u)


hotmenu Get_KS2_DIEID()
{
	
	GEL_TextOut(" ********************************** KS-II DIEID Register (DIEID) ************************************\n\n");
	
	GEL_TextOut(" DIEID0 ---> %x\n",,,,,*(unsigned int*)BOOTCFG_DIEID0);
	GEL_TextOut(" DIEID1 ---> %x\n",,,,,*(unsigned int*)BOOTCFG_DIEID1);
	GEL_TextOut(" DIEID2 ---> %x\n",,,,,*(unsigned int*)BOOTCFG_DIEID2);
	GEL_TextOut(" DIEID3 ---> %x\n",,,,,*(unsigned int*)BOOTCFG_DIEID3);
	
}

menuitem "K2H Device EFUSE settings";

hotmenu K2H_Device_EFUSE_settings()
{

	GEL_TextOut(" *******************************************************************************************************\n");
	GEL_TextOut(" ********************************** K2H EFUSE STATUS and SNAPSHOT ******************************\n");
	GEL_TextOut(" *******************************************************************************************************\n\n");
	
	K2H_getDEVSTAT();
	K2H_getJTAGID();
	K2H_getMACID();
	K2H_device_speed();
	Get_KS2_DIEID();
}