⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_diag.c

📁 开发Inetl IXP2400平台所必须的硬件诊断和测试程序。该软件包支持的功能包括CPU基本功能检测
💻 C
字号:
/* i2c_diag.c
 *
 *-------------------------------------------------------------------------------
 *                                                                      
 *                  I N T E L   P R O P R I E T A R Y                   
 *                                                                      
 *     COPYRIGHT (c)  2002 BY  INTEL  CORPORATION.  ALL RIGHTS          
 *     RESERVED.   NO  PART  OF THIS PROGRAM  OR  PUBLICATION  MAY      
 *     BE  REPRODUCED,   TRANSMITTED,   TRANSCRIBED,   STORED  IN  A    
 *     RETRIEVAL SYSTEM, OR TRANSLATED INTO ANY LANGUAGE OR COMPUTER    
 *     LANGUAGE IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL,    
 *     MAGNETIC,  OPTICAL,  CHEMICAL, MANUAL, OR OTHERWISE,  WITHOUT    
 *     THE PRIOR WRITTEN PERMISSION OF :                                
 *                                                                      
 *                        INTEL  CORPORATION                            
 *                                                                     
 *                     2200 MISSION COLLEGE BLVD                        
 *                                                                      
 *               SANTA  CLARA,  CALIFORNIA  95052-8119                  
 *                                                                      
 *-------------------------------------------------------------------------------
 *
 *
 *  system: IXDP2400
 *  subsystem: DIAG
 *  author: chinmay, DECEMBER, 2002
 * 
 * 
 * ------------------------------------------------------------------------------
 */

typedef unsigned long ulong;
typedef unsigned short ushort;

#include "common.h"
#include "diagstruct.h"
#include "hal_ixdp2400.h"
#include "syslog.h"
#include "i2c.h"
#include "led.h"
#include "diag.h"
#include "dp_proto.h"
#include "mac_util.h"
#include "diag_utils.h"
#include "error_code.h"

#define MEDIA_IF_EEPROM_ADDR    0xa4
#define SF_IF_EEPROM_ADDR       0xa6

#define EEPROM_DEV_ID_OFF       0x01
#define PT_LONE_DEVICE_ID       0x6

// ******************************************************************************
// Function: UINT32 i2c_test(void)
//
//    This file  defines the mac diagnostics routine for i2c interface operation.
// ******************************************************************************
UINT32 i2c_test(void)
{
	register PDiagCommon acL = (PDiagCommon) ACADDRESS;
	unsigned char s_ReadValue;
	
	if(acL->HostType == MASTER)		// if master NPU
	{
		/* Read the Device ID from the I2C EEPROM */
		i2c_read(MEDIA_IF_EEPROM_ADDR,EEPROM_DEV_ID_OFF,&s_ReadValue);
		eprintf("\nI2C Read value : 0x%x\n\n",s_ReadValue);

		if(s_ReadValue == PT_LONE_DEVICE_ID)
		{
			eprintf("I2C test passed !\n");
			Set_LED("PASS");
			slowport_code[0] = SP_XSC;
			slowport_code[1] = SP_PASS;
			dump_slowport(slowport_code, 2, SP_NON_FATAL);
		}
		else
		{
			eprintf("I2C TEST Failed.\n");
			// prepare structure for dumping
			syslog.type = TYPE_ERROR;
			syslog.source_comp = MASTER_DIAG;	// Determine master/slave
			strcpy(syslog.desc, "I2C test FAILED!");

			// write to syslog
			syslog_dump(&syslog, sizeof(SYSLOG_DATA));

			Set_LED("FAIL");
			slowport_code[0] = SP_XSC;
			slowport_code[1] = SP_FAIL;
			dump_slowport(slowport_code, 2, SP_NON_FATAL);
			acL->Err = ERROR;
		}		
	}
	else
	{
		eprintf("\nThis test cannot be run directly on the Slave console\n");
		return DONE;	// To indicate that the slave does not do this.
	}
	return DONE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -