5753 lines
212 KiB
C
5753 lines
212 KiB
C
/*
|
|
* Copyright (C) 2013 Realtek Semiconductor Corp.
|
|
* All Rights Reserved.
|
|
*
|
|
* Unless you and Realtek execute a separate written software license
|
|
* agreement governing use of this software, this software is licensed
|
|
* to you under the terms of the GNU General Public License version 2,
|
|
* available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
|
*
|
|
* $Revision: 76333 $
|
|
* $Date: 2017-03-09 09:33:15 +0800 (週四, 09 三月 2017) $
|
|
*
|
|
* Purpose : RTL8367C switch high-level API for RTL8367C
|
|
* Feature : Port security related functions
|
|
*
|
|
*/
|
|
|
|
#include <rtl8367c_asicdrv_port.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
#define FIBER2_AUTO_INIT_SIZE 2038
|
|
rtk_uint8 Fiber2_Auto[FIBER2_AUTO_INIT_SIZE] = {
|
|
0x02,0x05,0x8F,0xE4,0xF5,0xA8,0xD2,0xAF,
|
|
0x22,0x00,0x00,0x02,0x07,0x2C,0xC5,0xF0,
|
|
0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
|
|
0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
|
|
0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
|
|
0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
|
|
0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
|
|
0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
|
|
0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
|
|
0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
|
|
0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
|
|
0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
|
|
0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
|
|
0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
|
|
0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
|
|
0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
|
|
0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
|
|
0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
|
|
0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
|
|
0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
|
|
0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
|
|
0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
|
|
0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
|
|
0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
|
|
0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
|
|
0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
|
|
0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
|
|
0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
|
|
0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
|
|
0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
|
|
0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
|
|
0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
|
|
0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
|
|
0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
|
|
0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
|
|
0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0x80,0x7C,0x04,0x7F,0x01,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,
|
|
0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,
|
|
0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0xAB,0x7D,0x81,0x7C,0x04,0x7F,
|
|
0x01,0x7E,0x66,0x12,0x07,0xAB,0x7D,0xC0,
|
|
0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0x82,0x7C,0x04,
|
|
0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,0x7D,
|
|
0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0x60,0x7C,0x69,0x7F,0x02,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7D,0x83,0x7C,
|
|
0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,
|
|
0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
|
|
0x12,0x07,0xAB,0x7D,0x28,0x7C,0x97,0x7F,
|
|
0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x84,
|
|
0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0x85,0x7C,0x9D,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
|
|
0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7D,0x10,0x7C,
|
|
0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,
|
|
0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x00,
|
|
0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xAB,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x66,0xEF,0x44,0x40,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x66,0xEF,0x54,0xBF,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x66,0xEF,0x54,0xFD,0x54,0xFE,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xAB,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x66,0xEF,0x44,0x02,0x44,0x01,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xAB,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xAB,0xE4,
|
|
0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
|
|
0x3F,0x7E,0x1D,0x12,0x07,0xAB,0x7D,0x40,
|
|
0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
|
|
0xAB,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
|
|
0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
|
|
0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
|
|
0x13,0x12,0x07,0xAB,0x12,0x07,0xDB,0x12,
|
|
0x01,0x27,0x12,0x06,0x1B,0x12,0x07,0x8A,
|
|
0x12,0x06,0xEA,0x7D,0x41,0x7C,0x00,0x7F,
|
|
0x36,0x7E,0x13,0x12,0x07,0xAB,0xE4,0xFF,
|
|
0xFE,0xFD,0x80,0x26,0x7F,0xFF,0x7E,0xFF,
|
|
0x7D,0x05,0x7C,0x00,0x90,0x06,0x24,0x12,
|
|
0x01,0x0F,0xC3,0x12,0x00,0xF2,0x50,0x1B,
|
|
0x90,0x06,0x24,0x12,0x01,0x03,0xEF,0x24,
|
|
0x01,0xFF,0xE4,0x3E,0xFE,0xE4,0x3D,0xFD,
|
|
0xE4,0x3C,0xFC,0x90,0x06,0x24,0x12,0x01,
|
|
0x1B,0x80,0xD1,0xC2,0x00,0xC2,0x01,0xD2,
|
|
0xA9,0xD2,0x8C,0x7F,0x01,0x7E,0x62,0x12,
|
|
0x07,0x66,0xEF,0x30,0xE2,0x07,0xE4,0x90,
|
|
0x06,0x2C,0xF0,0x80,0xEE,0x90,0x06,0x2C,
|
|
0xE0,0x70,0x12,0x12,0x04,0xF0,0x90,0x06,
|
|
0x2C,0x74,0x01,0xF0,0xE4,0x90,0x06,0x33,
|
|
0xF0,0xA3,0xF0,0x80,0xD6,0xC3,0x90,0x06,
|
|
0x34,0xE0,0x94,0x62,0x90,0x06,0x33,0xE0,
|
|
0x94,0x00,0x40,0xC7,0xE4,0xF0,0xA3,0xF0,
|
|
0x12,0x04,0xF0,0x90,0x06,0x2C,0x74,0x01,
|
|
0xF0,0x80,0xB8,0x75,0x0F,0x80,0x75,0x0E,
|
|
0x7E,0x75,0x0D,0xAA,0x75,0x0C,0x83,0xE4,
|
|
0xF5,0x10,0x7F,0x36,0x7E,0x13,0x12,0x07,
|
|
0x66,0xEE,0xC4,0xF8,0x54,0xF0,0xC8,0xEF,
|
|
0xC4,0x54,0x0F,0x48,0x54,0x07,0xFB,0x7A,
|
|
0x00,0xEA,0x70,0x4A,0xEB,0x14,0x60,0x1C,
|
|
0x14,0x60,0x27,0x24,0xFE,0x60,0x31,0x14,
|
|
0x60,0x3C,0x24,0x05,0x70,0x38,0x75,0x0B,
|
|
0x00,0x75,0x0A,0xC2,0x75,0x09,0xEB,0x75,
|
|
0x08,0x0B,0x80,0x36,0x75,0x0B,0x40,0x75,
|
|
0x0A,0x59,0x75,0x09,0x73,0x75,0x08,0x07,
|
|
0x80,0x28,0x75,0x0B,0x00,0x75,0x0A,0xE1,
|
|
0x75,0x09,0xF5,0x75,0x08,0x05,0x80,0x1A,
|
|
0x75,0x0B,0xA0,0x75,0x0A,0xAC,0x75,0x09,
|
|
0xB9,0x75,0x08,0x03,0x80,0x0C,0x75,0x0B,
|
|
0x00,0x75,0x0A,0x62,0x75,0x09,0x3D,0x75,
|
|
0x08,0x01,0x75,0x89,0x11,0xE4,0x7B,0x60,
|
|
0x7A,0x09,0xF9,0xF8,0xAF,0x0B,0xAE,0x0A,
|
|
0xAD,0x09,0xAC,0x08,0x12,0x00,0x60,0xAA,
|
|
0x06,0xAB,0x07,0xC3,0xE4,0x9B,0xFB,0xE4,
|
|
0x9A,0xFA,0x78,0x17,0xF6,0xAF,0x03,0xEF,
|
|
0x08,0xF6,0x18,0xE6,0xF5,0x8C,0x08,0xE6,
|
|
0xF5,0x8A,0x74,0x0D,0x2B,0xFB,0xE4,0x3A,
|
|
0x18,0xF6,0xAF,0x03,0xEF,0x08,0xF6,0x75,
|
|
0x88,0x10,0x53,0x8E,0xC7,0xD2,0xA9,0x22,
|
|
0x7F,0x10,0x7E,0x13,0x12,0x07,0x66,0x90,
|
|
0x06,0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,
|
|
0x44,0x10,0xFE,0x90,0x06,0x2D,0xF0,0xA3,
|
|
0xEF,0xF0,0x54,0xEF,0xFF,0x90,0x06,0x2D,
|
|
0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,0xFD,0x7F,
|
|
0x10,0x7E,0x13,0x12,0x07,0xAB,0xE4,0xFF,
|
|
0xFE,0x0F,0xBF,0x00,0x01,0x0E,0xEF,0x64,
|
|
0x64,0x4E,0x70,0xF5,0x7D,0x04,0x7C,0x00,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
|
|
0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xAB,0xE4,0xFD,0xFC,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
|
|
0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7F,0x10,0x7E,
|
|
0x13,0x12,0x07,0x66,0x90,0x06,0x2D,0xEE,
|
|
0xF0,0xA3,0xEF,0xF0,0xEE,0x54,0xEF,0x90,
|
|
0x06,0x2D,0xF0,0xFC,0xA3,0xEF,0xF0,0xFD,
|
|
0x7F,0x10,0x7E,0x13,0x02,0x07,0xAB,0x78,
|
|
0x7F,0xE4,0xF6,0xD8,0xFD,0x75,0x81,0x3C,
|
|
0x02,0x05,0xD6,0x02,0x03,0x2F,0xE4,0x93,
|
|
0xA3,0xF8,0xE4,0x93,0xA3,0x40,0x03,0xF6,
|
|
0x80,0x01,0xF2,0x08,0xDF,0xF4,0x80,0x29,
|
|
0xE4,0x93,0xA3,0xF8,0x54,0x07,0x24,0x0C,
|
|
0xC8,0xC3,0x33,0xC4,0x54,0x0F,0x44,0x20,
|
|
0xC8,0x83,0x40,0x04,0xF4,0x56,0x80,0x01,
|
|
0x46,0xF6,0xDF,0xE4,0x80,0x0B,0x01,0x02,
|
|
0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x07,
|
|
0xE7,0xE4,0x7E,0x01,0x93,0x60,0xBC,0xA3,
|
|
0xFF,0x54,0x3F,0x30,0xE5,0x09,0x54,0x1F,
|
|
0xFE,0xE4,0x93,0xA3,0x60,0x01,0x0E,0xCF,
|
|
0x54,0xC0,0x25,0xE0,0x60,0xA8,0x40,0xB8,
|
|
0xE4,0x93,0xA3,0xFA,0xE4,0x93,0xA3,0xF8,
|
|
0xE4,0x93,0xA3,0xC8,0xC5,0x82,0xC8,0xCA,
|
|
0xC5,0x83,0xCA,0xF0,0xA3,0xC8,0xC5,0x82,
|
|
0xC8,0xCA,0xC5,0x83,0xCA,0xDF,0xE9,0xDE,
|
|
0xE7,0x80,0xBE,0x7D,0x40,0x7C,0x17,0x7F,
|
|
0x11,0x7E,0x1D,0x12,0x07,0xAB,0x7F,0x41,
|
|
0x7E,0x1D,0x12,0x07,0x66,0xEF,0x44,0x20,
|
|
0x44,0x80,0xFD,0xAC,0x06,0x7F,0x41,0x7E,
|
|
0x1D,0x12,0x07,0xAB,0x7D,0xBB,0x7C,0x15,
|
|
0x7F,0xEB,0x7E,0x13,0x12,0x07,0xAB,0x7D,
|
|
0x07,0x7C,0x00,0x7F,0xE7,0x7E,0x13,0x12,
|
|
0x07,0xAB,0x7D,0x40,0x7C,0x11,0x7F,0x00,
|
|
0x7E,0x62,0x12,0x07,0xAB,0x02,0x02,0x2F,
|
|
0x7D,0xC0,0x7C,0x16,0x7F,0x11,0x7E,0x1D,
|
|
0x12,0x07,0xAB,0x7D,0xBB,0x7C,0x15,0x7F,
|
|
0xEB,0x7E,0x13,0x12,0x07,0xAB,0x7D,0x0D,
|
|
0x7C,0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,
|
|
0xAB,0x7F,0x41,0x7E,0x1D,0x12,0x07,0x66,
|
|
0xEF,0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,
|
|
0x7F,0x41,0x7E,0x1D,0x12,0x07,0xAB,0x7D,
|
|
0x00,0x7C,0x21,0x7F,0x00,0x7E,0x62,0x12,
|
|
0x07,0xAB,0x02,0x02,0x2F,0x7D,0x40,0x7C,
|
|
0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xAB,
|
|
0x7D,0xBB,0x7C,0x15,0x7F,0xEB,0x7E,0x13,
|
|
0x12,0x07,0xAB,0x7D,0x0C,0x7C,0x00,0x7F,
|
|
0xE7,0x7E,0x13,0x12,0x07,0xAB,0x7F,0x41,
|
|
0x7E,0x1D,0x12,0x07,0x66,0xEF,0x44,0x20,
|
|
0x44,0x80,0xFD,0xAC,0x06,0x7F,0x41,0x7E,
|
|
0x1D,0x12,0x07,0xAB,0x7D,0x40,0x7C,0x11,
|
|
0x7F,0x00,0x7E,0x62,0x12,0x07,0xAB,0x02,
|
|
0x02,0x2F,0x7D,0x04,0x7C,0x00,0x7F,0x01,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7D,0x80,0x7C,
|
|
0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0x66,0xEF,
|
|
0x44,0x02,0x44,0x04,0xFD,0xAC,0x06,0x7F,
|
|
0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x04,
|
|
0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x02,0x07,0xAB,0xC0,0xE0,0xC0,0xF0,
|
|
0xC0,0x83,0xC0,0x82,0xC0,0xD0,0x75,0xD0,
|
|
0x00,0xC0,0x00,0x78,0x17,0xE6,0xF5,0x8C,
|
|
0x78,0x18,0xE6,0xF5,0x8A,0x90,0x06,0x31,
|
|
0xE4,0x75,0xF0,0x01,0x12,0x00,0x0E,0x90,
|
|
0x06,0x33,0xE4,0x75,0xF0,0x01,0x12,0x00,
|
|
0x0E,0xD0,0x00,0xD0,0xD0,0xD0,0x82,0xD0,
|
|
0x83,0xD0,0xF0,0xD0,0xE0,0x32,0xC2,0xAF,
|
|
0xAD,0x07,0xAC,0x06,0x8C,0xA2,0x8D,0xA3,
|
|
0x75,0xA0,0x01,0x00,0x00,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0xAE,0xA1,
|
|
0xBE,0x00,0xF0,0xAE,0xA6,0xAF,0xA7,0xD2,
|
|
0xAF,0x22,0x7D,0x20,0x7C,0x0F,0x7F,0x02,
|
|
0x7E,0x66,0x12,0x07,0xAB,0x7D,0x01,0x7C,
|
|
0x00,0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,
|
|
0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
|
|
0x02,0x07,0xAB,0xC2,0xAF,0xAB,0x07,0xAA,
|
|
0x06,0x8A,0xA2,0x8B,0xA3,0x8C,0xA4,0x8D,
|
|
0xA5,0x75,0xA0,0x03,0x00,0x00,0x00,0xAA,
|
|
0xA1,0xBA,0x00,0xF8,0xD2,0xAF,0x22,0x7F,
|
|
0x0C,0x7E,0x13,0x12,0x07,0x66,0xEF,0x44,
|
|
0x50,0xFD,0xAC,0x06,0x7F,0x0C,0x7E,0x13,
|
|
0x02,0x07,0xAB,0x12,0x07,0xC7,0x12,0x07,
|
|
0xF2,0x12,0x04,0x2B,0x02,0x00,0x03,0x42,
|
|
0x06,0x33,0x00,0x00,0x42,0x06,0x31,0x00,
|
|
0x00,0x00,0xE4,0xF5,0x8E,0x22,};
|
|
|
|
#define FIBER2_1G_INIT_SIZE 2032
|
|
rtk_uint8 Fiber2_1G[FIBER2_1G_INIT_SIZE] = {
|
|
0x02,0x05,0x89,0xE4,0xF5,0xA8,0xD2,0xAF,
|
|
0x22,0x00,0x00,0x02,0x07,0x26,0xC5,0xF0,
|
|
0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
|
|
0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
|
|
0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
|
|
0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
|
|
0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
|
|
0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
|
|
0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
|
|
0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
|
|
0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
|
|
0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
|
|
0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
|
|
0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
|
|
0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
|
|
0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
|
|
0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
|
|
0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
|
|
0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
|
|
0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
|
|
0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
|
|
0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
|
|
0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
|
|
0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
|
|
0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
|
|
0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
|
|
0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
|
|
0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
|
|
0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
|
|
0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
|
|
0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
|
|
0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
|
|
0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
|
|
0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
|
|
0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
|
|
0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x04,0x7F,0x01,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,
|
|
0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0x81,0x7C,0x04,0x7F,
|
|
0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,
|
|
0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0x82,0x7C,0x04,
|
|
0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x60,0x7C,0x69,0x7F,0x02,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0x83,0x7C,
|
|
0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0x28,0x7C,0x97,0x7F,
|
|
0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x84,
|
|
0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0x85,0x7C,0x9D,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0x10,0x7C,
|
|
0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x00,
|
|
0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x60,0xEF,0x44,0x40,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x60,0xEF,0x54,0xBF,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x60,0xEF,0x54,0xFD,0x54,0xFE,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x60,0xEF,0x44,0x02,0x44,0x01,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0xE4,
|
|
0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
|
|
0x3F,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
|
|
0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
|
|
0xA5,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
|
|
0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
|
|
0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
|
|
0x13,0x12,0x07,0xA5,0x12,0x07,0xD5,0x12,
|
|
0x01,0x27,0x12,0x06,0x9F,0x7D,0x41,0x7C,
|
|
0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,0xA5,
|
|
0xE4,0xFF,0xFE,0xFD,0x80,0x26,0x7F,0xFF,
|
|
0x7E,0xFF,0x7D,0x05,0x7C,0x00,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD1,0xC2,0x00,0xC2,
|
|
0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,0x7E,
|
|
0x62,0x12,0x07,0x60,0xEF,0x30,0xE2,0x07,
|
|
0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,0x90,
|
|
0x06,0x2C,0xE0,0x70,0x12,0x12,0x04,0xEA,
|
|
0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,0x90,
|
|
0x06,0x33,0xF0,0xA3,0xF0,0x80,0xD6,0xC3,
|
|
0x90,0x06,0x34,0xE0,0x94,0x62,0x90,0x06,
|
|
0x33,0xE0,0x94,0x00,0x40,0xC7,0xE4,0xF0,
|
|
0xA3,0xF0,0x12,0x04,0xEA,0x90,0x06,0x2C,
|
|
0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,0x80,
|
|
0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,0x0C,
|
|
0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,0x13,
|
|
0x12,0x07,0x60,0xEE,0xC4,0xF8,0x54,0xF0,
|
|
0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,0x07,
|
|
0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,0x14,
|
|
0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,0x60,
|
|
0x31,0x14,0x60,0x3C,0x24,0x05,0x70,0x38,
|
|
0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,0x09,
|
|
0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,0x0B,
|
|
0x40,0x75,0x0A,0x59,0x75,0x09,0x73,0x75,
|
|
0x08,0x07,0x80,0x28,0x75,0x0B,0x00,0x75,
|
|
0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,0x05,
|
|
0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,0xAC,
|
|
0x75,0x09,0xB9,0x75,0x08,0x03,0x80,0x0C,
|
|
0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,0x09,
|
|
0x3D,0x75,0x08,0x01,0x75,0x89,0x11,0xE4,
|
|
0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,0x0B,
|
|
0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,0x00,
|
|
0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,0x9B,
|
|
0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,0xAF,
|
|
0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,0x8C,
|
|
0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,0xFB,
|
|
0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,0x08,
|
|
0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,0xD2,
|
|
0xA9,0x22,0x7F,0x10,0x7E,0x13,0x12,0x07,
|
|
0x60,0x90,0x06,0x2D,0xEE,0xF0,0xA3,0xEF,
|
|
0xF0,0xEE,0x44,0x10,0xFE,0x90,0x06,0x2D,
|
|
0xF0,0xA3,0xEF,0xF0,0x54,0xEF,0xFF,0x90,
|
|
0x06,0x2D,0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,
|
|
0xFD,0x7F,0x10,0x7E,0x13,0x12,0x07,0xA5,
|
|
0xE4,0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,
|
|
0xEF,0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,
|
|
0x7C,0x00,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7F,
|
|
0x10,0x7E,0x13,0x12,0x07,0x60,0x90,0x06,
|
|
0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,0x54,
|
|
0xEF,0x90,0x06,0x2D,0xF0,0xFC,0xA3,0xEF,
|
|
0xF0,0xFD,0x7F,0x10,0x7E,0x13,0x02,0x07,
|
|
0xA5,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
|
|
0x81,0x3C,0x02,0x05,0xD0,0x02,0x03,0x2F,
|
|
0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
|
|
0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
|
|
0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
|
|
0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
|
|
0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
|
|
0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
|
|
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
|
|
0x90,0x07,0xE1,0xE4,0x7E,0x01,0x93,0x60,
|
|
0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
|
|
0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
|
|
0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
|
|
0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
|
|
0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
|
|
0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
|
|
0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
|
|
0xE9,0xDE,0xE7,0x80,0xBE,0x7D,0x40,0x7C,
|
|
0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xA5,
|
|
0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
|
|
0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
|
|
0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,
|
|
0x7C,0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,
|
|
0xA5,0x7D,0x07,0x7C,0x00,0x7F,0xE7,0x7E,
|
|
0x13,0x12,0x07,0xA5,0x7D,0x40,0x7C,0x11,
|
|
0x7F,0x00,0x7E,0x62,0x12,0x07,0xA5,0x02,
|
|
0x02,0x2F,0x7D,0xC0,0x7C,0x16,0x7F,0x11,
|
|
0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,0x7C,
|
|
0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,0xA5,
|
|
0x7D,0x0D,0x7C,0x00,0x7F,0xE7,0x7E,0x13,
|
|
0x12,0x07,0xA5,0x7F,0x41,0x7E,0x1D,0x12,
|
|
0x07,0x60,0xEF,0x44,0x20,0x44,0x80,0xFD,
|
|
0xAC,0x06,0x7F,0x41,0x7E,0x1D,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x21,0x7F,0x00,0x7E,
|
|
0x62,0x12,0x07,0xA5,0x02,0x02,0x2F,0x7D,
|
|
0x40,0x7C,0x17,0x7F,0x11,0x7E,0x1D,0x12,
|
|
0x07,0xA5,0x7D,0xBB,0x7C,0x15,0x7F,0xEB,
|
|
0x7E,0x13,0x12,0x07,0xA5,0x7D,0x0C,0x7C,
|
|
0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,0xA5,
|
|
0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
|
|
0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
|
|
0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
|
|
0x7C,0x11,0x7F,0x00,0x7E,0x62,0x12,0x07,
|
|
0xA5,0x02,0x02,0x2F,0x7D,0x04,0x7C,0x00,
|
|
0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x80,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0x60,0xEF,0x44,0x02,0x44,0x04,0xFD,0xAC,
|
|
0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x04,0x7C,0x00,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x02,0x07,0xA5,0xC0,0xE0,
|
|
0xC0,0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,
|
|
0x75,0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,
|
|
0xF5,0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,
|
|
0x06,0x31,0xE4,0x75,0xF0,0x01,0x12,0x00,
|
|
0x0E,0x90,0x06,0x33,0xE4,0x75,0xF0,0x01,
|
|
0x12,0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,
|
|
0x82,0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,
|
|
0xC2,0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,
|
|
0x8D,0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
0xAE,0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,
|
|
0xA7,0xD2,0xAF,0x22,0x7D,0x20,0x7C,0x0F,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x01,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x02,0x07,0xA5,0xC2,0xAF,0xAB,
|
|
0x07,0xAA,0x06,0x8A,0xA2,0x8B,0xA3,0x8C,
|
|
0xA4,0x8D,0xA5,0x75,0xA0,0x03,0x00,0x00,
|
|
0x00,0xAA,0xA1,0xBA,0x00,0xF8,0xD2,0xAF,
|
|
0x22,0x7F,0x0C,0x7E,0x13,0x12,0x07,0x60,
|
|
0xEF,0x44,0x50,0xFD,0xAC,0x06,0x7F,0x0C,
|
|
0x7E,0x13,0x02,0x07,0xA5,0x12,0x07,0xC1,
|
|
0x12,0x07,0xEC,0x12,0x04,0x25,0x02,0x00,
|
|
0x03,0x42,0x06,0x33,0x00,0x00,0x42,0x06,
|
|
0x31,0x00,0x00,0x00,0xE4,0xF5,0x8E,0x22,};
|
|
|
|
#define FIBER2_100M_INIT_SIZE 2032
|
|
rtk_uint8 Fiber2_100M[FIBER2_100M_INIT_SIZE] = {
|
|
0x02,0x05,0x89,0xE4,0xF5,0xA8,0xD2,0xAF,
|
|
0x22,0x00,0x00,0x02,0x07,0x26,0xC5,0xF0,
|
|
0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
|
|
0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
|
|
0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
|
|
0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
|
|
0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
|
|
0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
|
|
0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
|
|
0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
|
|
0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
|
|
0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
|
|
0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
|
|
0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
|
|
0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
|
|
0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
|
|
0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
|
|
0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
|
|
0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
|
|
0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
|
|
0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
|
|
0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
|
|
0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
|
|
0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
|
|
0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
|
|
0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
|
|
0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
|
|
0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
|
|
0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
|
|
0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
|
|
0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
|
|
0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
|
|
0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
|
|
0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
|
|
0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
|
|
0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x04,0x7F,0x01,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,
|
|
0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0x81,0x7C,0x04,0x7F,
|
|
0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,
|
|
0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0x82,0x7C,0x04,
|
|
0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x60,0x7C,0x69,0x7F,0x02,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0x83,0x7C,
|
|
0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0x28,0x7C,0x97,0x7F,
|
|
0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x84,
|
|
0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0x85,0x7C,0x9D,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7D,0x10,0x7C,
|
|
0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x00,
|
|
0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x60,0xEF,0x44,0x40,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
|
|
0x66,0x12,0x07,0x60,0xEF,0x54,0xBF,0xFD,
|
|
0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x60,0xEF,0x54,0xFD,0x54,0xFE,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x07,0x60,0xEF,0x44,0x02,0x44,0x01,
|
|
0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
|
|
0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0xE4,
|
|
0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
|
|
0x3F,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
|
|
0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
|
|
0xA5,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
|
|
0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
|
|
0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
|
|
0x13,0x12,0x07,0xA5,0x12,0x07,0xD5,0x12,
|
|
0x01,0x27,0x12,0x06,0x5A,0x7D,0x41,0x7C,
|
|
0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,0xA5,
|
|
0xE4,0xFF,0xFE,0xFD,0x80,0x26,0x7F,0xFF,
|
|
0x7E,0xFF,0x7D,0x05,0x7C,0x00,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD1,0xC2,0x00,0xC2,
|
|
0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,0x7E,
|
|
0x62,0x12,0x07,0x60,0xEF,0x30,0xE2,0x07,
|
|
0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,0x90,
|
|
0x06,0x2C,0xE0,0x70,0x12,0x12,0x04,0xEA,
|
|
0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,0x90,
|
|
0x06,0x33,0xF0,0xA3,0xF0,0x80,0xD6,0xC3,
|
|
0x90,0x06,0x34,0xE0,0x94,0x62,0x90,0x06,
|
|
0x33,0xE0,0x94,0x00,0x40,0xC7,0xE4,0xF0,
|
|
0xA3,0xF0,0x12,0x04,0xEA,0x90,0x06,0x2C,
|
|
0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,0x80,
|
|
0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,0x0C,
|
|
0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,0x13,
|
|
0x12,0x07,0x60,0xEE,0xC4,0xF8,0x54,0xF0,
|
|
0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,0x07,
|
|
0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,0x14,
|
|
0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,0x60,
|
|
0x31,0x14,0x60,0x3C,0x24,0x05,0x70,0x38,
|
|
0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,0x09,
|
|
0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,0x0B,
|
|
0x40,0x75,0x0A,0x59,0x75,0x09,0x73,0x75,
|
|
0x08,0x07,0x80,0x28,0x75,0x0B,0x00,0x75,
|
|
0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,0x05,
|
|
0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,0xAC,
|
|
0x75,0x09,0xB9,0x75,0x08,0x03,0x80,0x0C,
|
|
0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,0x09,
|
|
0x3D,0x75,0x08,0x01,0x75,0x89,0x11,0xE4,
|
|
0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,0x0B,
|
|
0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,0x00,
|
|
0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,0x9B,
|
|
0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,0xAF,
|
|
0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,0x8C,
|
|
0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,0xFB,
|
|
0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,0x08,
|
|
0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,0xD2,
|
|
0xA9,0x22,0x7F,0x10,0x7E,0x13,0x12,0x07,
|
|
0x60,0x90,0x06,0x2D,0xEE,0xF0,0xA3,0xEF,
|
|
0xF0,0xEE,0x44,0x10,0xFE,0x90,0x06,0x2D,
|
|
0xF0,0xA3,0xEF,0xF0,0x54,0xEF,0xFF,0x90,
|
|
0x06,0x2D,0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,
|
|
0xFD,0x7F,0x10,0x7E,0x13,0x12,0x07,0xA5,
|
|
0xE4,0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,
|
|
0xEF,0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,
|
|
0x7C,0x00,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
|
|
0xFD,0xFC,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7F,
|
|
0x10,0x7E,0x13,0x12,0x07,0x60,0x90,0x06,
|
|
0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,0x54,
|
|
0xEF,0x90,0x06,0x2D,0xF0,0xFC,0xA3,0xEF,
|
|
0xF0,0xFD,0x7F,0x10,0x7E,0x13,0x02,0x07,
|
|
0xA5,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
|
|
0x81,0x3C,0x02,0x05,0xD0,0x02,0x03,0x2F,
|
|
0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
|
|
0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
|
|
0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
|
|
0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
|
|
0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
|
|
0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
|
|
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
|
|
0x90,0x07,0xE1,0xE4,0x7E,0x01,0x93,0x60,
|
|
0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
|
|
0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
|
|
0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
|
|
0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
|
|
0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
|
|
0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
|
|
0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
|
|
0xE9,0xDE,0xE7,0x80,0xBE,0x7D,0x40,0x7C,
|
|
0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xA5,
|
|
0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
|
|
0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
|
|
0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,
|
|
0x7C,0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,
|
|
0xA5,0x7D,0x07,0x7C,0x00,0x7F,0xE7,0x7E,
|
|
0x13,0x12,0x07,0xA5,0x7D,0x40,0x7C,0x11,
|
|
0x7F,0x00,0x7E,0x62,0x12,0x07,0xA5,0x02,
|
|
0x02,0x2F,0x7D,0xC0,0x7C,0x16,0x7F,0x11,
|
|
0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,0x7C,
|
|
0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,0xA5,
|
|
0x7D,0x0D,0x7C,0x00,0x7F,0xE7,0x7E,0x13,
|
|
0x12,0x07,0xA5,0x7F,0x41,0x7E,0x1D,0x12,
|
|
0x07,0x60,0xEF,0x44,0x20,0x44,0x80,0xFD,
|
|
0xAC,0x06,0x7F,0x41,0x7E,0x1D,0x12,0x07,
|
|
0xA5,0x7D,0x00,0x7C,0x21,0x7F,0x00,0x7E,
|
|
0x62,0x12,0x07,0xA5,0x02,0x02,0x2F,0x7D,
|
|
0x40,0x7C,0x17,0x7F,0x11,0x7E,0x1D,0x12,
|
|
0x07,0xA5,0x7D,0xBB,0x7C,0x15,0x7F,0xEB,
|
|
0x7E,0x13,0x12,0x07,0xA5,0x7D,0x0C,0x7C,
|
|
0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,0xA5,
|
|
0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
|
|
0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
|
|
0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
|
|
0x7C,0x11,0x7F,0x00,0x7E,0x62,0x12,0x07,
|
|
0xA5,0x02,0x02,0x2F,0x7D,0x04,0x7C,0x00,
|
|
0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x80,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7F,0x02,0x7E,0x66,0x12,0x07,
|
|
0x60,0xEF,0x44,0x02,0x44,0x04,0xFD,0xAC,
|
|
0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
|
|
0x7D,0x04,0x7C,0x00,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x02,0x07,0xA5,0xC0,0xE0,
|
|
0xC0,0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,
|
|
0x75,0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,
|
|
0xF5,0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,
|
|
0x06,0x31,0xE4,0x75,0xF0,0x01,0x12,0x00,
|
|
0x0E,0x90,0x06,0x33,0xE4,0x75,0xF0,0x01,
|
|
0x12,0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,
|
|
0x82,0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,
|
|
0xC2,0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,
|
|
0x8D,0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
0xAE,0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,
|
|
0xA7,0xD2,0xAF,0x22,0x7D,0x20,0x7C,0x0F,
|
|
0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
|
|
0x01,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
|
|
0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
|
|
0x7E,0x66,0x02,0x07,0xA5,0xC2,0xAF,0xAB,
|
|
0x07,0xAA,0x06,0x8A,0xA2,0x8B,0xA3,0x8C,
|
|
0xA4,0x8D,0xA5,0x75,0xA0,0x03,0x00,0x00,
|
|
0x00,0xAA,0xA1,0xBA,0x00,0xF8,0xD2,0xAF,
|
|
0x22,0x7F,0x0C,0x7E,0x13,0x12,0x07,0x60,
|
|
0xEF,0x44,0x50,0xFD,0xAC,0x06,0x7F,0x0C,
|
|
0x7E,0x13,0x02,0x07,0xA5,0x12,0x07,0xC1,
|
|
0x12,0x07,0xEC,0x12,0x04,0x25,0x02,0x00,
|
|
0x03,0x42,0x06,0x33,0x00,0x00,0x42,0x06,
|
|
0x31,0x00,0x00,0x00,0xE4,0xF5,0x8E,0x22,};
|
|
|
|
|
|
#define SGMII_INIT_SIZE 1183
|
|
rtk_uint8 Sgmii_Init[SGMII_INIT_SIZE] = {
|
|
0x02,0x03,0x81,0xE4,0xF5,0xA8,0xD2,0xAF,
|
|
0x22,0x00,0x00,0x02,0x04,0x0D,0xC5,0xF0,
|
|
0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
|
|
0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
|
|
0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
|
|
0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
|
|
0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
|
|
0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
|
|
0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
|
|
0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
|
|
0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
|
|
0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
|
|
0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
|
|
0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
|
|
0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
|
|
0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
|
|
0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
|
|
0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
|
|
0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
|
|
0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
|
|
0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
|
|
0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
|
|
0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
|
|
0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
|
|
0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
|
|
0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
|
|
0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
|
|
0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
|
|
0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
|
|
0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
|
|
0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
|
|
0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
|
|
0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
|
|
0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
|
|
0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
|
|
0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0xE4,
|
|
0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
|
|
0x3F,0x7E,0x1D,0x12,0x04,0x6B,0x7D,0x40,
|
|
0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x04,
|
|
0x6B,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
|
|
0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
|
|
0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
|
|
0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
|
|
0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
|
|
0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
|
|
0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
|
|
0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
|
|
0x13,0x12,0x04,0x6B,0x12,0x04,0x92,0x7D,
|
|
0x41,0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,
|
|
0x04,0x6B,0xE4,0xFF,0xFE,0xFD,0x80,0x25,
|
|
0xE4,0x7F,0x20,0x7E,0x4E,0xFD,0xFC,0x90,
|
|
0x06,0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,
|
|
0xF2,0x50,0x1B,0x90,0x06,0x24,0x12,0x01,
|
|
0x03,0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,
|
|
0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,
|
|
0x24,0x12,0x01,0x1B,0x80,0xD2,0xC2,0x00,
|
|
0xC2,0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,
|
|
0x7E,0x62,0x12,0x04,0x47,0xEF,0x30,0xE2,
|
|
0x07,0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,
|
|
0x90,0x06,0x2C,0xE0,0x70,0x12,0x12,0x02,
|
|
0xDB,0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,
|
|
0x90,0x06,0x2F,0xF0,0xA3,0xF0,0x80,0xD6,
|
|
0xC3,0x90,0x06,0x30,0xE0,0x94,0x62,0x90,
|
|
0x06,0x2F,0xE0,0x94,0x00,0x40,0xC7,0xE4,
|
|
0xF0,0xA3,0xF0,0x12,0x02,0xDB,0x90,0x06,
|
|
0x2C,0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,
|
|
0x80,0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,
|
|
0x0C,0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,
|
|
0x13,0x12,0x04,0x47,0xEE,0xC4,0xF8,0x54,
|
|
0xF0,0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,
|
|
0x07,0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,
|
|
0x14,0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,
|
|
0x60,0x31,0x14,0x60,0x3C,0x24,0x05,0x70,
|
|
0x38,0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,
|
|
0x09,0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,
|
|
0x0B,0x40,0x75,0x0A,0x59,0x75,0x09,0x73,
|
|
0x75,0x08,0x07,0x80,0x28,0x75,0x0B,0x00,
|
|
0x75,0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,
|
|
0x05,0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,
|
|
0xAC,0x75,0x09,0xB9,0x75,0x08,0x03,0x80,
|
|
0x0C,0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,
|
|
0x09,0x3D,0x75,0x08,0x01,0x75,0x89,0x11,
|
|
0xE4,0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,
|
|
0x0B,0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,
|
|
0x00,0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,
|
|
0x9B,0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,
|
|
0xAF,0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,
|
|
0x8C,0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,
|
|
0xFB,0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,
|
|
0x08,0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,
|
|
0xD2,0xA9,0x22,0x7D,0x02,0x7C,0x00,0x7F,
|
|
0x4A,0x7E,0x13,0x12,0x04,0x6B,0x7D,0x46,
|
|
0x7C,0x71,0x7F,0x02,0x7E,0x66,0x12,0x04,
|
|
0x6B,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
|
|
0x66,0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,
|
|
0x7F,0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,
|
|
0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,0xEF,
|
|
0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,0x7C,
|
|
0x00,0x7F,0x02,0x7E,0x66,0x12,0x04,0x6B,
|
|
0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,0xFD,
|
|
0xFC,0x7F,0x02,0x7E,0x66,0x12,0x04,0x6B,
|
|
0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,
|
|
0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,0x7F,
|
|
0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,0xFD,
|
|
0xFC,0x7F,0x4A,0x7E,0x13,0x12,0x04,0x6B,
|
|
0x7D,0x06,0x7C,0x71,0x7F,0x02,0x7E,0x66,
|
|
0x12,0x04,0x6B,0x7D,0x03,0x7C,0x00,0x7F,
|
|
0x01,0x7E,0x66,0x12,0x04,0x6B,0x7D,0xC0,
|
|
0x7C,0x00,0x7F,0x00,0x7E,0x66,0x02,0x04,
|
|
0x6B,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
|
|
0x81,0x3C,0x02,0x03,0xC8,0x02,0x01,0x27,
|
|
0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
|
|
0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
|
|
0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
|
|
0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
|
|
0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
|
|
0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
|
|
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
|
|
0x90,0x04,0x87,0xE4,0x7E,0x01,0x93,0x60,
|
|
0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
|
|
0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
|
|
0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
|
|
0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
|
|
0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
|
|
0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
|
|
0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
|
|
0xE9,0xDE,0xE7,0x80,0xBE,0xC0,0xE0,0xC0,
|
|
0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,0x75,
|
|
0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,0xF5,
|
|
0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,0x06,
|
|
0x2D,0xE4,0x75,0xF0,0x01,0x12,0x00,0x0E,
|
|
0x90,0x06,0x2F,0xE4,0x75,0xF0,0x01,0x12,
|
|
0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,0x82,
|
|
0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,0xC2,
|
|
0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,0x8D,
|
|
0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,0x00,
|
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAE,
|
|
0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,0xA7,
|
|
0xD2,0xAF,0x22,0xC2,0xAF,0xAB,0x07,0xAA,
|
|
0x06,0x8A,0xA2,0x8B,0xA3,0x8C,0xA4,0x8D,
|
|
0xA5,0x75,0xA0,0x03,0x00,0x00,0x00,0xAA,
|
|
0xA1,0xBA,0x00,0xF8,0xD2,0xAF,0x22,0x42,
|
|
0x06,0x2F,0x00,0x00,0x42,0x06,0x2D,0x00,
|
|
0x00,0x00,0x12,0x04,0x9B,0x12,0x02,0x16,
|
|
0x02,0x00,0x03,0xE4,0xF5,0x8E,0x22,};
|
|
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnknownDaBehavior
|
|
* Description:
|
|
* Set UNDA behavior
|
|
* Input:
|
|
* port - port ID
|
|
* behavior - 0: flooding to unknown DA portmask; 1: drop; 2:trap; 3: flooding
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_NOT_ALLOWED - Invalid behavior
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 behavior)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
if(behavior >= L2_UNDA_BEHAVE_END)
|
|
return RT_ERR_NOT_ALLOWED;
|
|
|
|
if(port < 8)
|
|
return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE, RTL8367C_Port0_ACTION_MASK << (port * 2), behavior);
|
|
else
|
|
return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT, RTL8367C_PORT8_ACTION_MASK << ((port-8) * 2), behavior);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnknownDaBehavior
|
|
* Description:
|
|
* Get UNDA behavior
|
|
* Input:
|
|
* port - port ID
|
|
* Output:
|
|
* pBehavior - 0: flooding to unknown DA portmask; 1: drop; 2:trap; 3: flooding
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 *pBehavior)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
if(port < 8)
|
|
return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE, RTL8367C_Port0_ACTION_MASK << (port * 2), pBehavior);
|
|
else
|
|
return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT, RTL8367C_PORT8_ACTION_MASK << ((port-8) * 2), pBehavior);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnknownSaBehavior
|
|
* Description:
|
|
* Set UNSA behavior
|
|
* Input:
|
|
* behavior - 0: flooding; 1: drop; 2:trap
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_NOT_ALLOWED - Invalid behavior
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior)
|
|
{
|
|
if(behavior >= L2_BEHAVE_SA_END)
|
|
return RT_ERR_NOT_ALLOWED;
|
|
|
|
return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNKNOWN_SA_BEHAVE_MASK, behavior);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnknownSaBehavior
|
|
* Description:
|
|
* Get UNSA behavior
|
|
* Input:
|
|
* pBehavior - 0: flooding; 1: drop; 2:trap
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32 *pBehavior)
|
|
{
|
|
return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNKNOWN_SA_BEHAVE_MASK, pBehavior);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnmatchedSaBehavior
|
|
* Description:
|
|
* Set Unmatched SA behavior
|
|
* Input:
|
|
* behavior - 0: flooding; 1: drop; 2:trap
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_NOT_ALLOWED - Invalid behavior
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior)
|
|
{
|
|
if(behavior >= L2_BEHAVE_SA_END)
|
|
return RT_ERR_NOT_ALLOWED;
|
|
|
|
return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNMATCHED_SA_BEHAVE_MASK, behavior);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnmatchedSaBehavior
|
|
* Description:
|
|
* Get Unmatched SA behavior
|
|
* Input:
|
|
* pBehavior - 0: flooding; 1: drop; 2:trap
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32 *pBehavior)
|
|
{
|
|
return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNMATCHED_SA_BEHAVE_MASK, pBehavior);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnmatchedSaMoving
|
|
* Description:
|
|
* Set Unmatched SA moving state
|
|
* Input:
|
|
* port - Port ID
|
|
* enabled - 0: can't move to new port; 1: can move to new port
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Error Port ID
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 enabled)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID, port, (enabled == 1) ? 0 : 1);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnmatchedSaMoving
|
|
* Description:
|
|
* Get Unmatched SA moving state
|
|
* Input:
|
|
* port - Port ID
|
|
* Output:
|
|
* pEnabled - 0: can't move to new port; 1: can move to new port
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Error Port ID
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 *pEnabled)
|
|
{
|
|
rtk_uint32 data;
|
|
ret_t retVal;
|
|
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID, port, &data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pEnabled = (data == 1) ? 0 : 1;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnknownDaFloodingPortmask
|
|
* Description:
|
|
* Set UNDA flooding portmask
|
|
* Input:
|
|
* portmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid portmask
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask)
|
|
{
|
|
if(portmask > RTL8367C_PORTMASK)
|
|
return RT_ERR_PORT_MASK;
|
|
|
|
return rtl8367c_setAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG, portmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnknownDaFloodingPortmask
|
|
* Description:
|
|
* Get UNDA flooding portmask
|
|
* Input:
|
|
* pPortmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32 *pPortmask)
|
|
{
|
|
return rtl8367c_getAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG, pPortmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortUnknownMulticastFloodingPortmask
|
|
* Description:
|
|
* Set UNMC flooding portmask
|
|
* Input:
|
|
* portmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid portmask
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask)
|
|
{
|
|
if(portmask > RTL8367C_PORTMASK)
|
|
return RT_ERR_PORT_MASK;
|
|
|
|
return rtl8367c_setAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG, portmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortUnknownMulticastFloodingPortmask
|
|
* Description:
|
|
* Get UNMC flooding portmask
|
|
* Input:
|
|
* pPortmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 *pPortmask)
|
|
{
|
|
return rtl8367c_getAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG, pPortmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortBcastFloodingPortmask
|
|
* Description:
|
|
* Set Bcast flooding portmask
|
|
* Input:
|
|
* portmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid portmask
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask)
|
|
{
|
|
if(portmask > RTL8367C_PORTMASK)
|
|
return RT_ERR_PORT_MASK;
|
|
|
|
return rtl8367c_setAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG, portmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortBcastFloodingPortmask
|
|
* Description:
|
|
* Get Bcast flooding portmask
|
|
* Input:
|
|
* pPortmask - portmask(0~0xFF)
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32 *pPortmask)
|
|
{
|
|
return rtl8367c_getAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG, pPortmask);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortBlockSpa
|
|
* Description:
|
|
* Set disabling blocking frame if source port and destination port are the same
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* permit - 0: block; 1: permit
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 permit)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG, port, permit);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortBlockSpa
|
|
* Description:
|
|
* Get disabling blocking frame if source port and destination port are the same
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* pPermit - 0: block; 1: permit
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortBlockSpa(rtk_uint32 port, rtk_uint32* pPermit)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_getAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG, port, pPermit);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortDos
|
|
* Description:
|
|
* Set DOS function
|
|
* Input:
|
|
* type - DOS type
|
|
* drop - 0: permit; 1: drop
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - Invalid payload index
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortDos(rtk_uint32 type, rtk_uint32 drop)
|
|
{
|
|
if(type >= DOS_END)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_REG_DOS_CFG, RTL8367C_DROP_DAEQSA_OFFSET + type, drop);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortDos
|
|
* Description:
|
|
* Get DOS function
|
|
* Input:
|
|
* type - DOS type
|
|
* pDrop - 0: permit; 1: drop
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - Invalid payload index
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortDos(rtk_uint32 type, rtk_uint32* pDrop)
|
|
{
|
|
if(type >= DOS_END)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
return rtl8367c_getAsicRegBit(RTL8367C_REG_DOS_CFG, RTL8367C_DROP_DAEQSA_OFFSET + type,pDrop);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortForceLink
|
|
* Description:
|
|
* Set port force linking configuration
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* pPortAbility - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility)
|
|
{
|
|
rtk_uint32 regData = 0;
|
|
|
|
/* Invalid input parameter */
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
regData |= pPortAbility->forcemode << 12;
|
|
regData |= pPortAbility->mstfault << 9;
|
|
regData |= pPortAbility->mstmode << 8;
|
|
regData |= pPortAbility->nway << 7;
|
|
regData |= pPortAbility->txpause << 6;
|
|
regData |= pPortAbility->rxpause << 5;
|
|
regData |= pPortAbility->link << 4;
|
|
regData |= pPortAbility->duplex << 2;
|
|
regData |= pPortAbility->speed;
|
|
|
|
return rtl8367c_setAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT+port, regData);
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortForceLink
|
|
* Description:
|
|
* Get port force linking configuration
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* pPortAbility - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData;
|
|
|
|
/* Invalid input parameter */
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
retVal = rtl8367c_getAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT + port, ®Data);
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (regData >> 12) & 0x0001;
|
|
pPortAbility->mstfault = (regData >> 9) & 0x0001;
|
|
pPortAbility->mstmode = (regData >> 8) & 0x0001;
|
|
pPortAbility->nway = (regData >> 7) & 0x0001;
|
|
pPortAbility->txpause = (regData >> 6) & 0x0001;
|
|
pPortAbility->rxpause = (regData >> 5) & 0x0001;
|
|
pPortAbility->link = (regData >> 4) & 0x0001;
|
|
pPortAbility->duplex = (regData >> 2) & 0x0001;
|
|
pPortAbility->speed = regData & 0x0003;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortStatus
|
|
* Description:
|
|
* Get port link status
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* pPortAbility - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortStatus(rtk_uint32 port, rtl8367c_port_status_t *pPortStatus)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData;
|
|
|
|
/* Invalid input parameter */
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
retVal = rtl8367c_getAsicReg(RTL8367C_REG_PORT0_STATUS+port,®Data);
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortStatus->lpi1000 = (regData >> 11) & 0x0001;
|
|
pPortStatus->lpi100 = (regData >> 10) & 0x0001;
|
|
pPortStatus->mstfault = (regData >> 9) & 0x0001;
|
|
pPortStatus->mstmode = (regData >> 8) & 0x0001;
|
|
pPortStatus->nway = (regData >> 7) & 0x0001;
|
|
pPortStatus->txpause = (regData >> 6) & 0x0001;
|
|
pPortStatus->rxpause = (regData >> 5) & 0x0001;
|
|
pPortStatus->link = (regData >> 4) & 0x0001;
|
|
pPortStatus->duplex = (regData >> 2) & 0x0001;
|
|
pPortStatus->speed = regData & 0x0003;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortForceLinkExt
|
|
* Description:
|
|
* Set external interface force linking configuration
|
|
* Input:
|
|
* id - external interface id (0~2)
|
|
* portAbility - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - input parameter out of range
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility)
|
|
{
|
|
rtk_uint32 retVal, regValue, regValue2, type, sgmiibit, hisgmiibit;
|
|
rtk_uint32 reg_data = 0;
|
|
rtk_uint32 i = 0;
|
|
|
|
/* Invalid input parameter */
|
|
if(id >= RTL8367C_EXTNO)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
reg_data |= pPortAbility->forcemode << 12;
|
|
reg_data |= pPortAbility->mstfault << 9;
|
|
reg_data |= pPortAbility->mstmode << 8;
|
|
reg_data |= pPortAbility->nway << 7;
|
|
reg_data |= pPortAbility->txpause << 6;
|
|
reg_data |= pPortAbility->rxpause << 5;
|
|
reg_data |= pPortAbility->link << 4;
|
|
reg_data |= pPortAbility->duplex << 2;
|
|
reg_data |= pPortAbility->speed;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
/*get chip ID */
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
type = 0;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 1;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 2;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 3;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if (1 == type)
|
|
{
|
|
if(1 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(RTL8367C_REG_REG_TO_ECO4, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((regValue & (0x0001 << 5)) && (regValue & (0x0001 << 7)))
|
|
{
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if(0 == id || 1 == id)
|
|
return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE + id, reg_data);
|
|
else
|
|
return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE, reg_data);
|
|
}
|
|
else if (2 == type)
|
|
{
|
|
if (1 == id)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->link == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility->forcemode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->link == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1dc1, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
}
|
|
else if(3 == type)
|
|
{
|
|
if(1 == id)
|
|
{
|
|
if((retVal = rtl8367c_getAsicRegBit(0x1d11, 6, &sgmiibit)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_getAsicRegBit(0x1d11, 11, &hisgmiibit)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((sgmiibit == 1) || (hisgmiibit == 1))
|
|
{
|
|
/*for 1000x/100fx/1000x_100fx, param has to be set to serdes registers*/
|
|
if((retVal = rtl8367c_getAsicReg(0x1d41, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib =1, bit7: cfg_mac6_fib2=1*/
|
|
if((regValue & 0xa0) == 0xa0)
|
|
{
|
|
/* new_cfg_sds_mode */
|
|
if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*1000X*/
|
|
if(regValue2 == 0x4)
|
|
{
|
|
#if 0
|
|
/* new_cfg_sds_mode:reset mode */
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
/* Enable new sds mode config */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 4*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0x9000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFDFFF;
|
|
reg_data |= 0x40;
|
|
if(pPortAbility->forcemode)
|
|
reg_data &= 0xffffefff;
|
|
else
|
|
reg_data |= 0x1000;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= (~0x80);
|
|
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= (~0x100);
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*new_cfg_sds_mode=1000x*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if(regValue2 == 0x5)
|
|
{
|
|
#if 0
|
|
/*100FX*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
/*cfg_sds_mode_sel_new=1 */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 5*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0xB000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFFBF;
|
|
reg_data |= 0x2000;
|
|
reg_data &= 0xffffefff;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= (~0x80);
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= (~0x100);
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
/* new_cfg_sds_mode=1000x */
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if(regValue2 == 0x7)
|
|
{
|
|
#if 0
|
|
/*100FX*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 4*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0x9000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFDFFF;
|
|
reg_data |= 0x40;
|
|
if(pPortAbility->forcemode)
|
|
reg_data &= 0xffffefff;
|
|
else
|
|
reg_data |= 0x1000;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= (~0x80);
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &=(~0x100);
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 5*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0xB000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFFBF;
|
|
reg_data |= 0x2000;
|
|
reg_data &= 0xffffefff;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= 0xffffff7f;
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= 0xfffffeff;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
/*sds_mode:*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
|
|
/*disable force ability --- */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
|
|
}
|
|
|
|
/* new_cfg_sds_mode */
|
|
if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(regValue2 == 0x2)
|
|
{
|
|
#if 0
|
|
/*SGMII*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
/* 0 2 0 bit 8-9 nway*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xfffffcff;
|
|
if (pPortAbility->nway)
|
|
reg_data &= 0xfffffcff;
|
|
else
|
|
reg_data |= 0x100;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable force ability --- */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if(regValue2 == 0x12)
|
|
{
|
|
#if 0
|
|
/*HiSGMII*/
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
/* 0 2 0 bit 8-9 nway*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xfffffcff;
|
|
if (pPortAbility->nway)
|
|
reg_data &= 0xfffffcff;
|
|
else
|
|
reg_data |= 0x100;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x12)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0x1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable force ability --- */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_getAsicRegBits(0x1d3d, 10, ®Value2)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (regValue2 == 0)
|
|
{
|
|
/*ext1_force_ablty*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*force mode for ext1*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->link == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/*disable force ability --- */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(0x1d95, 0, &sgmiibit)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (sgmiibit == 1)
|
|
{
|
|
/*for 1000x/100fx/1000x_100fx, param has to bet set to serdes registers*/
|
|
if((retVal = rtl8367c_getAsicReg(0x1d95, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
/*cfg_mac7_sel_sgmii=1 & cfg_mac7_fib =1*/
|
|
if((regValue & 0x3) == 0x3)
|
|
{
|
|
if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regValue2 == 0x4)
|
|
{
|
|
/*1000X*/
|
|
#if 0
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 4*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0x9000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFDFFF;
|
|
reg_data |= 0x40;
|
|
if(pPortAbility->forcemode)
|
|
reg_data &= 0xffffefff;
|
|
else
|
|
reg_data |= 0x1000;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= 0xffffff7f;
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= 0xfffffeff;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if(regValue2 == 0x5)
|
|
{
|
|
/*100FX*/
|
|
#if 0
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 5*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0xB000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFFBF;
|
|
reg_data |= 0x2000;
|
|
reg_data &= 0xffffefff;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= 0xffffff7f;
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= 0xfffffeff;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if(regValue2 == 0x7)
|
|
{
|
|
/*100FX*/
|
|
#if 0
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 4*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0x9000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFDFFF;
|
|
reg_data |= 0x40;
|
|
if(pPortAbility->forcemode)
|
|
reg_data &= 0xffffefff;
|
|
else
|
|
reg_data |= 0x1000;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= 0xffffff7f;
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= 0xfffffeff;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 1, bit15~13 = 5*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFF0FFF;
|
|
reg_data |= 0xB000;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFFBF;
|
|
reg_data |= 0x2000;
|
|
reg_data &= 0xffffefff;
|
|
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 2 bit 8 rx pause, bit7 tx pause*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if (pPortAbility->txpause)
|
|
reg_data |= 0x80;
|
|
else
|
|
reg_data &= 0xffffff7f;
|
|
if (pPortAbility->rxpause)
|
|
reg_data |= 0x100;
|
|
else
|
|
reg_data &= 0xfffffeff;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 4 0 bit 12 set 0*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFEFFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
|
|
}
|
|
/* new_cfg_sds_mode */
|
|
if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(regValue2 == 0x2)
|
|
{
|
|
/*SGMII*/
|
|
#if 0
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
/* 0 2 0 bit 8-9 nway*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xfffffcff;
|
|
if (pPortAbility->nway)
|
|
reg_data &= 0xfffffcff;
|
|
else
|
|
reg_data |= 0x100;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(i=0;i<0xfff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
/*ext2_force_ablty*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*force mode for ext2*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility->forcemode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->link == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*force mode for ext1*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (pPortAbility->link == 1)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/*disable force ability --- */
|
|
if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
#if 0
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortForceLinkExt
|
|
* Description:
|
|
* Get external interface force linking configuration
|
|
* Input:
|
|
* id - external interface id (0~1)
|
|
* pPortAbility - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - input parameter out of range
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility)
|
|
{
|
|
rtk_uint32 reg_data, regValue, type;
|
|
rtk_uint32 sgmiiSel;
|
|
rtk_uint32 hsgmiiSel;
|
|
ret_t retVal;
|
|
|
|
/* Invalid input parameter */
|
|
if(id >= RTL8367C_EXTNO)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
/*cfg_magic_id & get chip_id*/
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
type = 0;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 1;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 2;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 3;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if (1 == type)
|
|
{
|
|
if(1 == id)
|
|
{
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, &sgmiiSel)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, &hsgmiiSel)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (sgmiiSel == 1) || (hsgmiiSel == 1) )
|
|
{
|
|
memset(pPortAbility, 0x00, sizeof(rtl8367c_port_ability_t));
|
|
pPortAbility->forcemode = 1;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->duplex = reg_data;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->speed = reg_data;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->link = reg_data;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->txpause = reg_data;
|
|
|
|
if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->rxpause = reg_data;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
|
|
if(0 == id || 1 == id)
|
|
retVal = rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE+id, ®_data);
|
|
else
|
|
retVal = rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE, ®_data);
|
|
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (reg_data >> 12) & 0x0001;
|
|
pPortAbility->mstfault = (reg_data >> 9) & 0x0001;
|
|
pPortAbility->mstmode = (reg_data >> 8) & 0x0001;
|
|
pPortAbility->nway = (reg_data >> 7) & 0x0001;
|
|
pPortAbility->txpause = (reg_data >> 6) & 0x0001;
|
|
pPortAbility->rxpause = (reg_data >> 5) & 0x0001;
|
|
pPortAbility->link = (reg_data >> 4) & 0x0001;
|
|
pPortAbility->duplex = (reg_data >> 2) & 0x0001;
|
|
pPortAbility->speed = reg_data & 0x0003;
|
|
}
|
|
else if (2 == type)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x1311, ®_data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (reg_data >> 12) & 1;
|
|
pPortAbility->duplex = (reg_data >> 2) & 1;
|
|
pPortAbility->link = (reg_data >> 4) & 1;
|
|
pPortAbility->speed = reg_data & 3;
|
|
pPortAbility->rxpause = (reg_data >> 5) & 1;
|
|
pPortAbility->txpause = (reg_data >> 6) & 1;
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x13c4, ®_data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (reg_data >> 12) & 1;
|
|
pPortAbility->duplex = (reg_data >> 2) & 1;
|
|
pPortAbility->link = (reg_data >> 4) & 1;
|
|
pPortAbility->speed = reg_data & 3;
|
|
pPortAbility->rxpause = (reg_data >> 5) & 1;
|
|
pPortAbility->txpause = (reg_data >> 6) & 1;
|
|
}
|
|
}
|
|
else if (3 == type)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x1311, ®_data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (reg_data >> 12) & 1;
|
|
pPortAbility->duplex = (reg_data >> 2) & 1;
|
|
pPortAbility->link = (reg_data >> 4) & 1;
|
|
pPortAbility->speed = reg_data & 3;
|
|
pPortAbility->rxpause = (reg_data >> 5) & 1;
|
|
pPortAbility->txpause = (reg_data >> 6) & 1;
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x13c4, ®_data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pPortAbility->forcemode = (reg_data >> 12) & 1;
|
|
pPortAbility->duplex = (reg_data >> 2) & 1;
|
|
pPortAbility->link = (reg_data >> 4) & 1;
|
|
pPortAbility->speed = reg_data & 3;
|
|
pPortAbility->rxpause = (reg_data >> 5) & 1;
|
|
pPortAbility->txpause = (reg_data >> 6) & 1;
|
|
}
|
|
}
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortExtMode
|
|
* Description:
|
|
* Set external interface mode configuration
|
|
* Input:
|
|
* id - external interface id (0~2)
|
|
* mode - external interface mode
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - input parameter out of range
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortExtMode(rtk_uint32 id, rtk_uint32 mode)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 i, regValue, type, option,reg_data;
|
|
rtk_uint32 idx;
|
|
rtk_uint32 redData[][2] = { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x21A2, 0x0482}, {0x6960, 0x0483}, {0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redDataSB[][2] = { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x31A2, 0x0482}, {0x6960, 0x0483}, {0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redData1[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redData5[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redData6[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redData8[][2] = { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redData9[][2] = { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
rtk_uint32 redDataHB[][2] = { {0x82F0, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x7960, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
|
|
|
|
if(id >= RTL8367C_EXTNO)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if(mode >= EXT_END)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
/* magic number*/
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
/* Chip num */
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
type = 0;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 1;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 2;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 3;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
|
|
if (1==type)
|
|
{
|
|
if((mode == EXT_1000X_100FX) || (mode == EXT_1000X) || (mode == EXT_100FX))
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 5, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 7, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(mode == EXT_1000X_100FX)
|
|
{
|
|
for(idx = 0; idx < FIBER2_AUTO_INIT_SIZE; idx++)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_Auto[idx])) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
if(mode == EXT_1000X)
|
|
{
|
|
for(idx = 0; idx < FIBER2_1G_INIT_SIZE; idx++)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_1G[idx])) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
if(mode == EXT_100FX)
|
|
{
|
|
for(idx = 0; idx < FIBER2_100M_INIT_SIZE; idx++)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_100M[idx])) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if(mode == EXT_GMII)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_EXT0_RGMXF, RTL8367C_EXT0_RGTX_INV_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_EXT1_RGMXF, RTL8367C_EXT1_RGTX_INV_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, RTL8367C_EXT1_GMII_TX_DELAY_MASK, 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, RTL8367C_EXT0_GMII_TX_DELAY_MASK, 6)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/* Serdes reset */
|
|
if( (mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY) )
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
|
|
{
|
|
if(id != 1)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C0, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x13C1, &option)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C0, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if(mode == EXT_SGMII)
|
|
{
|
|
if(option == 0)
|
|
{
|
|
for(i = 0; i <= 7; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(i = 0; i <= 7; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataSB[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataSB[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(mode == EXT_HSGMII)
|
|
{
|
|
if(option == 0)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(0x13c2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicReg(0x1301, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(0x13c2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ( ((regValue & 0x00F0) >> 4) == 0x0001)
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData1[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData1[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if ( ((regValue & 0x00F0) >> 4) == 0x0005)
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData5[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData5[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if ( ((regValue & 0x00F0) >> 4) == 0x0006)
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData6[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData6[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if ( ((regValue & 0x00F0) >> 4) == 0x0008)
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData8[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData8[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if ( ((regValue & 0x00F0) >> 4) == 0x0009)
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData9[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData9[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(i = 0; i <= 8; i++)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataHB[i][0])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataHB[i][1])) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Only one ext port should care SGMII setting */
|
|
if(id == 1)
|
|
{
|
|
|
|
if(mode == EXT_SGMII)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode == EXT_HSGMII)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
|
|
if((mode != EXT_1000X_100FX) && (mode != EXT_1000X) && (mode != EXT_100FX))
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(0 == id || 1 == id)
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT, RTL8367C_SELECT_GMII_0_MASK << (id * RTL8367C_SELECT_GMII_1_OFFSET), mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1, RTL8367C_SELECT_GMII_2_MASK, mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/* Serdes not reset */
|
|
if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
|
|
{
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x7106)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, 0x0003)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for(idx = 0; idx < SGMII_INIT_SIZE; idx++)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Sgmii_Init[idx])) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if (2 == type)
|
|
{
|
|
/* Serdes reset */
|
|
if( (mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY) )
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id+2, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id+2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/*set MAC mode*/
|
|
if (id == 1)
|
|
{
|
|
if(mode == EXT_HSGMII)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
if (mode == EXT_SGMII)
|
|
{
|
|
/*cfg port8 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*enable port8 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode == EXT_1000X || mode == EXT_100FX || mode == EXT_1000X_100FX)
|
|
{
|
|
/*cfg port8 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port8 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*set fiber link up*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x6210, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
/*cfg port8 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port8 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
/*disable SDS 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(id == 2)
|
|
{
|
|
if (mode == EXT_HSGMII)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x130, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x39f, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x130, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x39f, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x3fa, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
|
|
|
|
if (mode == EXT_SGMII)
|
|
{
|
|
/*cfg port9 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*enable port9 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 HSGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode == EXT_HSGMII)
|
|
{
|
|
/*cfg port9 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*enable port9 HSGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode == EXT_1000X || mode == EXT_100FX || mode == EXT_1000X_100FX)
|
|
{
|
|
/*cfg port9 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 HSGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*set fiber link up*/
|
|
if((retVal = rtl8367c_setAsicRegBit(0x6200, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
/*cfg port9 with MII mac mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 SGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*disable port9 HSGMII*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
/*disable SDS 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/*SET TO RGMII MODE*/
|
|
if (mode == EXT_RGMII)
|
|
{
|
|
/*disable paral led pad*/
|
|
if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*set MAC8 mode*/
|
|
if (id == 1)
|
|
{
|
|
/*1: RGMII1 bias work at 3.3V, 0: RGMII1 bias work at 2.5V*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1303, 9, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*drving 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1303, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*drving 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1303, 4, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*show rate = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1303, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*EXT1 RGMII TXC delay 2ns*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1307, 3, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_Ext1_rgtxc_dly = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x38, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*RXDLY = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1307, 0x7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_rg1_dn = 4*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1304, 0x7000, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_rg1_dp = 4*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x700, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (id == 2)
|
|
{
|
|
/*1: RGMII1 bias work at 3.3V, 0: RGMII1 bias work at 2.5V*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1303, 10, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*drving 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 2, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*drving 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 1, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*show rate = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*EXT1 RGMII TXC delay 2ns*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x13c5, 3, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_Ext1_rgtxc_dly = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x1c0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*RXDLY = 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c5, 0x7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_rg1_dn = 4*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13e2, 0x1c0, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_rg1_dp = 4*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13e2, 0x38, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if (mode == EXT_SGMII)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
/*sds 1 reg 1 page 0x21 write value 0xec91*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0xec91)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*sds 1 reg 5 page 0x24 write value 0x5825*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x5825)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*?????????????????*/
|
|
|
|
}
|
|
else if (id == 2)
|
|
{
|
|
/*sds 0 reg 0 page 0x28 write value 0x942c*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x28<<5) | 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*sds 0 reg 0 page 0x24 write value 0x942c*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*sds 0 reg 5 page 0x21 write value 0x8dc3*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x8dc3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*?????????????????*/
|
|
}
|
|
}
|
|
else if (mode == EXT_HSGMII)
|
|
{
|
|
if (id == 2)
|
|
{
|
|
/*sds 0 reg 0 page 0x28 write value 0x942c*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x28<<5) | 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*sds 0 reg 0 page 0x24 write value 0x942c*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*sds 0 reg 5 page 0x21 write value 0x8dc3*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x8dc3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
/* optimizing HISGMII performance while RGMII used & */
|
|
/*sds 0 reg 9 page 0x21 write value 0x3931*/
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x3931)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5)|9) ) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x12)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*?????????????????*/
|
|
}
|
|
}
|
|
else if (mode == EXT_1000X)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*patch speed change sds1 1000M*/
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFF0FFF;
|
|
regValue |= 0x9000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 0, 2, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFdFFF;
|
|
regValue |= 0x40;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 0, 2, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFEFFF;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if (id == 2)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*patch speed change sds0 1000M*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFF0FFF;
|
|
regValue |= 0x9000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFDFFF;
|
|
regValue |= 0x40;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 2, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFEFFF;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
}
|
|
else if (mode == EXT_100FX)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*patch speed change sds1 100M*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFF0FFF;
|
|
regValue |= 0xb000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 0, 2, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFFFBF;
|
|
regValue |= 0x2000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 0, 2, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
#if 0
|
|
if( (retVal = rtl8367c_setAsicReg(0x6214, 0x1a0)) != RT_ERR_OK)
|
|
return retVal;
|
|
#endif
|
|
if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFEFFF;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (id == 2)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*patch speed change sds0 100M*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFF0FFF;
|
|
regValue |= 0xb000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 0, 2, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFFFBF;
|
|
regValue |= 0x2000;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 2, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFEFFF;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
else if (mode == EXT_1000X_100FX)
|
|
{
|
|
if (id == 1)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 13, 0, 0x4616)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0, 0xf20)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (id == 2)
|
|
{
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 13, 0, 0x4616)) != RT_ERR_OK)
|
|
return retVal;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 0, 0xf20)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (3 == type)
|
|
{
|
|
|
|
/*restore patch, by designer. patch Tx FIFO issue, when not HSGMII 2.5G mode
|
|
#sds0, page 1, reg 1, bit4=0*/
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 1, 1, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue &= 0xFFFFFFEF;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 1, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*set for mac 6*/
|
|
if (1 == id)
|
|
{
|
|
/*force port6 linkdown*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x137c, 0x1000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 6, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
while(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 6, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if (mode == EXT_SGMII)
|
|
{
|
|
/* disable mac6 mode_ext1 mode*/
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
/*cfg_bypass_line_rate[1]=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_fib=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 0: MAC7 is not SGMII mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*#cfg_sgmii_link=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
/*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x1F (reset mode) */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x12 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* MAC link source*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
}
|
|
else if (mode == EXT_HSGMII)
|
|
{
|
|
|
|
/*restore patch, by designer. patch Tx FIFO issue, when HSGMII 2.5G mode
|
|
#sds0, page 1, reg 1, bit4=1*/
|
|
if( (retVal = rtl8367c_getAsicSdsReg(0, 1, 1, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
regValue |= 0x10;
|
|
if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 1, regValue)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* mode_ext1 = disable*/
|
|
/* disable mac6 mode_ext1 mode*/
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_fib=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0xd0,7)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x399, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x12 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x12)) != RT_ERR_OK)
|
|
return retVal;
|
|
/*
|
|
1: MAC link = SGMII SerDes link
|
|
0: MAC link = SGMII config link (cfg_sgmii_link)
|
|
*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if(mode == EXT_1000X)
|
|
{
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* disable mac6 mode_ext1 mode*/
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
|
|
bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
|
|
*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
|
|
bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
|
|
if ((retVal = rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit3: Serdes force mode:cfg_sds_frc_mode=1
|
|
bit[2:0]: Serdes chip mode, cfg_sds_mode=3b'100 (force sds FIB1G mode) */
|
|
if ((retVal = rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
/*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x4 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode == EXT_100FX)
|
|
{
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* disable mac6 mode_ext1 mode*/
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
|
|
bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
|
|
*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
|
|
bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
|
|
if ((retVal = rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*!!!!! cfg_sds_frc_mode=1 & cfg_sds_mode=3b'101 (force sds fib100M mode)*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
/*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x5 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode == EXT_1000X_100FX)
|
|
{
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* disable mac6 mode_ext1 mode*/
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
|
|
bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
|
|
*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
|
|
bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
|
|
if ((retVal = rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*!!!!!! cfg_sds_frc_mode=1 & cfg_sds_mode=3'b111: Fib1G/Fib100M auto detect */
|
|
if ((retVal = rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
/*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x7 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode < EXT_SGMII)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* keep default setting, disable mac6 sel SerDes mode,*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (mode < EXT_GMII)
|
|
{
|
|
/* set mac6 mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode == EXT_RMII_MAC)
|
|
{
|
|
/*!!!!!!*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if(mode == EXT_RMII_PHY)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 8)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY))
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
|
|
/*force port7 linkdown*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x137d, 0x1000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 7, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
while(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 7, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if (mode == EXT_SGMII)
|
|
{
|
|
/*disable mac7 sel ext2 xMII mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf,0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
/* disable mac7 mode_ext2 */
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*
|
|
bit0:cfg_mac7_sel_sgmii=0,MAC7 is not SGMII mode
|
|
bit1:cfg_mac7_fib= 0 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_hsgmii=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac6_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x1F (reset mode) */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x2 (SGMII mode)*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*select MAC link source when port6/7 be set sgmii mode (cfg_sgmii_link)*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode == EXT_1000X)
|
|
{
|
|
/* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* keep default setting, disable mac6 sel serdes*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x1F (reset mode) */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*new_cfg_sds_mode=0x4 (FIB1000 mode)*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
else if (mode == EXT_100FX)
|
|
{
|
|
/* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* keep default setting, disable mac6 sel serdes*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x1F (reset mode) */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x5 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode == EXT_1000X_100FX)
|
|
{
|
|
/* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* 0 2 0 bit 8~9 set 0, force n-way*/
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
reg_data &= 0xFFFFFCFF;
|
|
if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*restore ext2 ability*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* keep default setting, disable mac6 sel serdes*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x1F (reset mode) */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
|
|
new_cfg_sds_mode=0x7 */
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (mode < EXT_SGMII)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* keep default setting, disable mac7 sel SerDes mode*/
|
|
if ((retVal = rtl8367c_setAsicReg(0x1d95, 0x1f00)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* set port7 mode*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY))
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
}
|
|
else if ((mode < EXT_END) && (mode > EXT_100FX))
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x13C3, 0xf, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d11, 11, ®_data)) != RT_ERR_OK)
|
|
return retVal;
|
|
if(reg_data == 0)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
/* set port7 mode*/
|
|
if (mode < EXT_RMII_MAC_2)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode-13))) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode-12))) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
if ((mode == EXT_TMII_MAC_2) || (mode == EXT_TMII_PHY_2))
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortExtMode
|
|
* Description:
|
|
* Get external interface mode configuration
|
|
* Input:
|
|
* id - external interface id (0~1)
|
|
* pMode - external interface mode
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_OUT_OF_RANGE - input parameter out of range
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortExtMode(rtk_uint32 id, rtk_uint32 *pMode)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData, regValue, type;
|
|
|
|
if(id >= RTL8367C_EXTNO)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
/*cfg_magic_id & get chip_id*/
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
type = 0;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 1;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 2;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 3;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
|
|
if (1 == type)
|
|
{
|
|
|
|
if (1 == id)
|
|
{
|
|
if( (retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(1 == regData)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
if( (retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(1 == regData)
|
|
{
|
|
*pMode = EXT_HSGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
|
|
if(0 == id || 1 == id)
|
|
return rtl8367c_getAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT, RTL8367C_SELECT_GMII_0_MASK << (id * RTL8367C_SELECT_GMII_1_OFFSET), pMode);
|
|
else
|
|
return rtl8367c_getAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1, RTL8367C_SELECT_GMII_2_MASK, pMode);
|
|
|
|
}
|
|
else if (2 == type)
|
|
{
|
|
if (1 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d92, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (regData & 0x4000)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
else if (((regData >> 8) & 0x1f) == 4)
|
|
{
|
|
*pMode = EXT_1000X;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if (((regData >> 8) & 0x1f) == 5)
|
|
{
|
|
*pMode = EXT_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if (((regData >> 8) & 0x1f) == 7)
|
|
{
|
|
*pMode = EXT_1000X_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
return rtl8367c_getAsicRegBits(0x1305, 0xf0, pMode);
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
#if 0
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d92, 6, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (regData == 1)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x1d92, 7, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (regData == 1)
|
|
{
|
|
*pMode = EXT_HSGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
#endif
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d92, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (regData & 0x40)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if (regData & 0x80)
|
|
{
|
|
*pMode = EXT_HSGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if ((regData & 0x1f) == 4)
|
|
{
|
|
*pMode = EXT_1000X;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if ((regData & 0x1f) == 5)
|
|
{
|
|
*pMode = EXT_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if ((regData & 0x1f) == 7)
|
|
{
|
|
*pMode = EXT_1000X_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
return rtl8367c_getAsicRegBits(0x1305, 0xf, pMode);
|
|
}
|
|
}
|
|
else if(3 == type)
|
|
{
|
|
if (1 == id)
|
|
{
|
|
/* SDS_CFG_NEW */
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d95, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d41, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit5: cfg_mac6_fib=1 && bit7: cfg_mac6_fib2 =1 */
|
|
if((regValue & 0xa0) == 0xa0 )
|
|
{
|
|
/* new_cfg_sds_mode */
|
|
regData = regData >> 8;
|
|
if((regData & 0x1f) == 4)
|
|
{
|
|
*pMode = EXT_1000X;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if((regData & 0x1f) == 5)
|
|
{
|
|
*pMode = EXT_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if((regData & 0x1f) == 7)
|
|
{
|
|
*pMode = EXT_1000X_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d11, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* check cfg_mac6_sel_sgmii */
|
|
if((regData >> 6) & 1)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if((regData >> 11) & 1)
|
|
{
|
|
*pMode = EXT_HSGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
else
|
|
{
|
|
/* check port6 MAC mode */
|
|
if ((retVal = rtl8367c_getAsicRegBits(0x1305, 0xf0, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regData < 6)
|
|
*pMode = regData;
|
|
else if(regData == 6)
|
|
*pMode = EXT_RMII_MAC;
|
|
else if(regData == 7)
|
|
*pMode = EXT_RMII_PHY;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
else if (2 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicReg(0x1d95, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
/* bit0: cfg_mac7_sel_sgmii
|
|
bit1: cfg_mac7_fib
|
|
bit[12:8]: new_cfg_sds_mode*/
|
|
if(((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x4))
|
|
{
|
|
*pMode = EXT_1000X;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if (((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x5))
|
|
{
|
|
*pMode = EXT_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if (((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x7))
|
|
{
|
|
*pMode = EXT_1000X_100FX;
|
|
return RT_ERR_OK;
|
|
}
|
|
else if(regData & 1)
|
|
{
|
|
*pMode = EXT_SGMII;
|
|
return RT_ERR_OK;
|
|
}
|
|
else
|
|
{
|
|
/* check port7 MAC mode */
|
|
if ((retVal = rtl8367c_getAsicRegBits(0x13c3, 0xf, ®Data))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pMode = regData;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
}
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8370_setAsicPortEnableAll
|
|
* Description:
|
|
* Set ALL ports enable.
|
|
* Input:
|
|
* enable - enable all ports.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortEnableAll(rtk_uint32 enable)
|
|
{
|
|
if(enable >= 2)
|
|
return RT_ERR_INPUT;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_REG_PHY_AD, RTL8367C_PDNPHY_OFFSET, !enable);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortEnableAll
|
|
* Description:
|
|
* Set ALL ports enable.
|
|
* Input:
|
|
* enable - enable all ports.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortEnableAll(rtk_uint32 *pEnable)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData;
|
|
|
|
retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_PHY_AD, RTL8367C_PDNPHY_OFFSET, ®Data);
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if (regData==0)
|
|
*pEnable = 1;
|
|
else
|
|
*pEnable = 0;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortSmallIpg
|
|
* Description:
|
|
* Set small ipg egress mode
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* enable - 0: normal, 1: small
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortSmallIpg(rtk_uint32 port, rtk_uint32 enable)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET, enable);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortSmallIpg
|
|
* Description:
|
|
* Get small ipg egress mode
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* pEnable - 0: normal, 1: small
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortSmallIpg(rtk_uint32 port, rtk_uint32* pEnable)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_getAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET, pEnable);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortLoopback
|
|
* Description:
|
|
* Set MAC loopback
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* enable - 0: Disable, 1: enable
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_setAsicPortLoopback(rtk_uint32 port, rtk_uint32 enable)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_setAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET, enable);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortLoopback
|
|
* Description:
|
|
* Set MAC loopback
|
|
* Input:
|
|
* port - Physical port number (0~7)
|
|
* Output:
|
|
* pEnable - 0: Disable, 1: enable
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number
|
|
* Note:
|
|
* None
|
|
*/
|
|
ret_t rtl8367c_getAsicPortLoopback(rtk_uint32 port, rtk_uint32 *pEnable)
|
|
{
|
|
if(port >= RTL8367C_PORTNO)
|
|
return RT_ERR_PORT_ID;
|
|
|
|
return rtl8367c_getAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET, pEnable);
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortRTCTEnable
|
|
* Description:
|
|
* Set RTCT Enable echo response mode
|
|
* Input:
|
|
* portmask - Port mask of RTCT enabled (0-4)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid port mask
|
|
* Note:
|
|
* RTCT test takes 4.8 seconds at most.
|
|
*/
|
|
ret_t rtl8367c_setAsicPortRTCTEnable(rtk_uint32 portmask)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData;
|
|
rtk_uint32 port;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (regData == 0x0276) || (regData == 0x0597) )
|
|
return RT_ERR_CHIP_NOT_SUPPORTED;
|
|
|
|
for(port = 0; port <= 10 ; port++)
|
|
{
|
|
if(portmask & (0x0001 << port))
|
|
{
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData &= 0x7FFF;
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData |= 0x00F2;/*RTCT set to echo response mode*/
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData |= 0x0001;
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setAsicPortRTCTDisable
|
|
* Description:
|
|
* Set RTCT Disable
|
|
* Input:
|
|
* portmask - Port mask of RTCT enabled (0-4)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid port mask
|
|
* Note:
|
|
* RTCT test takes 4.8 seconds at most.
|
|
*/
|
|
ret_t rtl8367c_setAsicPortRTCTDisable(rtk_uint32 portmask)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData;
|
|
rtk_uint32 port;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (regData == 0x0276) || (regData == 0x0597) )
|
|
return RT_ERR_CHIP_NOT_SUPPORTED;
|
|
|
|
for(port = 0; port <= 10 ; port++)
|
|
{
|
|
if(portmask & (0x0001 << port))
|
|
{
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData &= 0x7FFF;
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData |= 0x00F0;
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
regData &= ~0x0001;
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getAsicPortRTCTResult
|
|
* Description:
|
|
* Get RTCT result
|
|
* Input:
|
|
* port - Port ID of RTCT result
|
|
* Output:
|
|
* pResult - The result of port ID
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid port mask
|
|
* RT_ERR_PHY_RTCT_NOT_FINISH - RTCT test doesn't finish.
|
|
* Note:
|
|
* RTCT test takes 4.8 seconds at most.
|
|
* If this API returns RT_ERR_PHY_RTCT_NOT_FINISH,
|
|
* users should wait a whole then read it again.
|
|
*/
|
|
ret_t rtl8367c_getAsicPortRTCTResult(rtk_uint32 port, rtl8367c_port_rtct_result_t *pResult)
|
|
{
|
|
ret_t retVal;
|
|
rtk_uint32 regData, finish = 1;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if( (regData == 0x6367) )
|
|
{
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((regData & 0x8000) == 0x8000)
|
|
{
|
|
/* Channel A */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802a)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelAOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelAShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelAMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelALinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel B */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802e)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelBShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelBMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelBLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel C */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8032)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelCShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelCMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelCLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel D */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8036)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelDShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelDMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelDLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel A Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelALen = (regData / 2);
|
|
|
|
/* Channel B Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8030)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBLen = (regData / 2);
|
|
|
|
/* Channel C Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8034)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCLen = (regData / 2);
|
|
|
|
/* Channel D Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8038)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDLen = (regData / 2);
|
|
}
|
|
else
|
|
finish = 0;
|
|
}
|
|
else if(regData == 0x6368)
|
|
{
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((regData & 0x8000) == 0x8000)
|
|
{
|
|
/* Channel A */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802b)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelAOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelAShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelAMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelALinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel B */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802f)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelBShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelBMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelBLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel C */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8033)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelCShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelCMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelCLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel D */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8037)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelDShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelDMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelDLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel A Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802d)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelALen = (regData / 2);
|
|
|
|
/* Channel B Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8031)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBLen = (regData / 2);
|
|
|
|
/* Channel C Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8035)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCLen = (regData / 2);
|
|
|
|
/* Channel D Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8039)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDLen = (regData / 2);
|
|
}
|
|
else
|
|
finish = 0;
|
|
|
|
}
|
|
else if((regData == 0x6511) || (regData == 0x0801))
|
|
{
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((regData & 0x8000) == 0x8000)
|
|
{
|
|
/* Channel A */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802a)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelAOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelAShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelAMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelALinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel B */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802e)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelBShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelBMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelBLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel C */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8032)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelCShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelCMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelCLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel D */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8036)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDOpen = (regData == 0x0048) ? 1 : 0;
|
|
pResult->channelDShort = (regData == 0x0050) ? 1 : 0;
|
|
pResult->channelDMismatch = ((regData == 0x0042) || (regData == 0x0044)) ? 1 : 0;
|
|
pResult->channelDLinedriver = (regData == 0x0041) ? 1 : 0;
|
|
|
|
/* Channel A Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802c)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelALen = (regData / 2);
|
|
|
|
/* Channel B Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8030)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelBLen = (regData / 2);
|
|
|
|
/* Channel C Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8034)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelCLen = (regData / 2);
|
|
|
|
/* Channel D Length */
|
|
if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8038)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, ®Data)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
pResult->channelDLen = (regData / 2);
|
|
}
|
|
else
|
|
finish = 0;
|
|
|
|
}
|
|
else
|
|
return RT_ERR_CHIP_NOT_SUPPORTED;
|
|
|
|
if(finish == 0)
|
|
return RT_ERR_PHY_RTCT_NOT_FINISH;
|
|
else
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_sdsReset
|
|
* Description:
|
|
* Reset Serdes
|
|
* Input:
|
|
* id - EXT ID
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None.
|
|
*/
|
|
ret_t rtl8367c_sdsReset(rtk_uint32 id)
|
|
{
|
|
rtk_uint32 retVal, regValue, state, i, option, running = 0, retVal2;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
option = 0;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
option = 1;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
option = 2;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if(option == 0)
|
|
{
|
|
if (1 == id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x0000);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6602, 0x1401);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x0000);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6602, 0x1403);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
|
|
return retVal2;
|
|
}
|
|
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(option == 1)
|
|
{
|
|
if (1 == id)
|
|
{
|
|
if((retVal = rtl8367c_getAsicReg(0x1311, &state)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x1311, 0x66)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x1311, 0x1066)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
while(1)
|
|
{
|
|
if((retVal = rtl8367c_getAsicReg(0x1d9d, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((regValue >> 8) & 1)
|
|
break;
|
|
}
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x1311, state)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
|
|
}
|
|
else if (2== id)
|
|
{
|
|
if((retVal = rtl8367c_getAsicReg(0x13c4, &state)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13c4, 0x66)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13c4, 0x1066)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
while(1)
|
|
{
|
|
if((retVal = rtl8367c_getAsicReg(0x1d9d, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((regValue >> 9) & 1)
|
|
break;
|
|
}
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13c4, state)) != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(option == 2)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicSdsReg(0, 3, 0, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
regValue |= 0x40;
|
|
if ((retVal = rtl8367c_setAsicSdsReg(0, 3, 0, regValue))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
for (i=0; i<0xffff; i++);
|
|
|
|
regValue &= ~(0x40);
|
|
if ((retVal = rtl8367c_setAsicSdsReg(0, 3, 0, regValue))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getSdsLinkStatus
|
|
* Description:
|
|
* Get SGMII status
|
|
* Input:
|
|
* id - EXT ID
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None.
|
|
*/
|
|
ret_t rtl8367c_getSdsLinkStatus(rtk_uint32 ext_id, rtk_uint32 *pSignalDetect, rtk_uint32 *pSync, rtk_uint32 *pLink)
|
|
{
|
|
rtk_uint32 retVal, regValue, type, running = 0, retVal2;
|
|
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 0;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 1;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 2;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if(type == 0)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x003D);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_getAsicReg(0x6602, ®Value);
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
|
|
return retVal2;
|
|
}
|
|
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pSignalDetect = (regValue & 0x0100) ? 1 : 0;
|
|
*pSync = (regValue & 0x0001) ? 1 : 0;
|
|
*pLink = (regValue & 0x0010) ? 1 : 0;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 1)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pSignalDetect = (regValue & 0x0100) ? 1 : 0;
|
|
*pSync = (regValue & 0x0001) ? 1 : 0;
|
|
*pLink = (regValue & 0x0010) ? 1 : 0;
|
|
}
|
|
else if (2 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pSignalDetect = (regValue & 0x0100) ? 1 : 0;
|
|
*pSync = (regValue & 0x0001) ? 1 : 0;
|
|
*pLink = (regValue & 0x0010) ? 1 : 0;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 2)
|
|
{
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 30, 1, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
if((retVal = rtl8367c_getAsicSdsReg(0, 30, 1, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pSignalDetect = (regValue & 0x0100) ? 1 : 0;
|
|
*pSync = (regValue & 0x0001) ? 1 : 0;
|
|
*pLink = (regValue & 0x0010) ? 1 : 0;
|
|
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_setSgmiiNway
|
|
* Description:
|
|
* Set SGMII Nway
|
|
* Input:
|
|
* ext_id - EXT ID
|
|
* state - SGMII Nway state
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None.
|
|
*/
|
|
ret_t rtl8367c_setSgmiiNway(rtk_uint32 ext_id, rtk_uint32 state)
|
|
{
|
|
rtk_uint32 retVal, regValue, type, running = 0, retVal2;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 0;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 1;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 2;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if(type == 0)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_getAsicReg(0x6602, ®Value);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
{
|
|
if(state)
|
|
regValue |= 0x0200;
|
|
else
|
|
regValue &= ~0x0200;
|
|
|
|
regValue |= 0x0100;
|
|
}
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6602, regValue);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
|
|
return retVal2;
|
|
}
|
|
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 1)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(state)
|
|
regValue |= 0x0200;
|
|
else
|
|
regValue &= ~0x0200;
|
|
|
|
regValue |= 0x0100;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x6602, regValue))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x00C1))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else if (2 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(state)
|
|
regValue |= 0x0200;
|
|
else
|
|
regValue &= ~0x0200;
|
|
|
|
regValue |= 0x0100;
|
|
|
|
if ((retVal = rtl8367c_setAsicReg(0x6602, regValue))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x00C0))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 2)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(state & 1)
|
|
regValue &= ~0x100;
|
|
else
|
|
regValue |= 0x100;
|
|
|
|
if ((retVal = rtl8367c_setAsicSdsReg(0, 2, 0, regValue))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtl8367c_getSgmiiNway
|
|
* Description:
|
|
* Get SGMII Nway
|
|
* Input:
|
|
* ext_id - EXT ID
|
|
* state - SGMII Nway state
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - Success
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* None.
|
|
*/
|
|
ret_t rtl8367c_getSgmiiNway(rtk_uint32 ext_id, rtk_uint32 *pState)
|
|
{
|
|
rtk_uint32 retVal, regValue, type, running = 0, retVal2;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicReg(0x1300, ®Value)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
switch (regValue)
|
|
{
|
|
case 0x0276:
|
|
case 0x0597:
|
|
case 0x6367:
|
|
type = 0;
|
|
break;
|
|
case 0x0652:
|
|
case 0x6368:
|
|
type = 1;
|
|
break;
|
|
case 0x0801:
|
|
case 0x6511:
|
|
type = 2;
|
|
break;
|
|
default:
|
|
return RT_ERR_FAILED;
|
|
}
|
|
|
|
if(type == 0)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
|
|
return retVal;
|
|
}
|
|
|
|
retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
|
|
|
|
if(retVal == RT_ERR_OK)
|
|
retVal = rtl8367c_getAsicReg(0x6602, ®Value);
|
|
|
|
if(running == 1)
|
|
{
|
|
if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
|
|
return retVal2;
|
|
}
|
|
|
|
if(retVal != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regValue & 0x0200)
|
|
*pState = 1;
|
|
else
|
|
*pState = 0;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 1)
|
|
{
|
|
if (1 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regValue & 0x0200)
|
|
*pState = 1;
|
|
else
|
|
*pState = 0;
|
|
}
|
|
else if (2 == ext_id)
|
|
{
|
|
if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
|
|
return retVal;
|
|
if ((retVal = rtl8367c_getAsicReg(0x6602, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regValue & 0x0200)
|
|
*pState = 1;
|
|
else
|
|
*pState = 0;
|
|
}
|
|
else
|
|
return RT_ERR_PORT_ID;
|
|
}
|
|
else if(type == 2)
|
|
{
|
|
if ((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, ®Value))!=RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(regValue & 0x100)
|
|
*pState = 0;
|
|
else
|
|
*pState = 1;
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|