📄 i2c_diag.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 + -