/*
*
* modphy_drv.c
* Description:
* MODPHY driver
*
* GPL LICENSE SUMMARY
*
* Copyright (C) 2020-2021 MaxLinear, Inc.
* Copyright (C) 2014-2020 Intel Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License, version 2, as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see .
*
* SPDX-License-Identifier: GPL-2.0-only
*
*/
/*! \file modphy_drv.c
\brief Implementation of Modphy Driver.
*/
/**************************************************************************/
/* INCLUDES: */
/**************************************************************************/
#include
#include /* for modules */
#include /* file_operations */
#include /* copy_(to,from)_user */
#include /* module_init, module_exit */
#include /* cdev utilities */
#include
#include
#include
#include
#include
#include "_tistdtypes.h"
#include "modphy_api.h"
#include "puma7_bootcfg_ctrl.h"
#include "puma7.h"
#include "iosfsb_api.h"
#include "sram_api.h"
#include
#include
/**************************************************************************/
/* LOCAL DECLARATIONS: */
/**************************************************************************/
static long modphy_ioctl(struct file *fd, unsigned int cmd, unsigned long arg);
/**************************************************************************/
/* DEFINES AND STRUCTS */
/**************************************************************************/
/* #define MODPHY_DEBUG */
#ifdef MODPHY_DEBUG
#define DPRINTK(fmt, args...) printk("%-40s:%5d " fmt, __FUNCTION__,__LINE__, ## args)
#else
#define DPRINTK(fmt, args...)
#endif
/* Sections addr */
/*iosf sb ports*/
#define MODPHY_MOCA_SB_PORT 0x10
#define MODPHY_DOCSIS_OFDM_SB_PORT 0x1A
#define MODPHY_DOCSIS_LEGACY_SB_PORT 0x12
#define MODPHY_SGMII_1_SB_PORT 0x1B
#define MODPHY_SGMII_2_SB_PORT 0x1D
#define MODPHY_PCS_UNIT 0x0
#define MODPHY_TX_UNIT 0x100
#define MODPHY_CMN_DIG_UNIT 0x8000
#define MODPHY_CMN_ANA_UNIT 0x8080
#define MODPHY_PLL_UNIT 0x8100
#define MODPHY_RX_0_31_UNIT 0x200
#define MODPHY_RX_32_64_UNIT 0x300
#define MODPHY_GET_OFFSET_BY_DWORD_ID(dwordId) ( (dwordId) * 0x4 )
typedef enum
{
MODPHY_TYPE_1_SGMII_2_5GB, /* Type1 = XAUI 3.125Gbps, 6.25GHz PLL VCO frequency, refclk =100MHz */
MODPHY_TYPE_2_DOCSIS_P6, /* Type2 = 5.4/2.7Gbps - CAT Mode, refclk=27MHz, for cases P7 works with P6 tuner*/
MODPHY_TYPE_3_DOCSIS_P7_25MHz, /* Type3 = 6/3Gbps - TGM Mode, refclk=25Mhz */
MODPHY_TYPE_4, /* Type4 = 5.4/2.7Gbps - CAT Mode, refclk=25MHz (test mode) */
MODPHY_TYPE_5, /* Type5=: MOCA, with 6 GHz PLL VCO freqency, and 50 MHz ref clk */
MODPHY_TYPE_6_SGMII_1GB, /* Type6=SGMII, with 5 GHz PLL VCO frequency, and 100 MHz ref clk, identical to usb3 phy settings*/
MODPHY_TYPE_7_DOCSIS_P7_50MHz /* Type7 = 6/3Gbps - TGM Mode, refclk=50Mhz */
}ModphyTypes_e;
#define MODPHY_COMMON_CONFIG_OFFSET 0x00
#define MODPHY_COMMON_STATUS_OFFSET 0x04
/*modPHY clients have between 1-3 lanes. Only relevant clients will have L1 (lane1) and L2*/
#define MODPHY_RX_CONFIG_L0_OFFSET 0x08
#define MODPHY_RX_CONFIG_L1_OFFSET 0x0c
#define MODPHY_RX_CONFIG_L2_OFFSET 0x10
#define MODPHY_RX_CONTROL_L0_OFFSET 0x14
#define MODPHY_RX_CONTROL_L1_OFFSET 0x18
#define MODPHY_RX_CONTROL_L2_OFFSET 0x1c
#define MODPHY_RX_STATUS_L0_OFFSET 0x20
#define MODPHY_RX_STATUS_L1_OFFSET 0x24
#define MODPHY_RX_STATUS_L2_OFFSET 0x28
#define MODPHY_TX_CONFIG_L0_OFFSET 0x2c
#define MODPHY_TX_CONFIG_L1_OFFSET 0x30
#define MODPHY_TX_CONFIG_L2_OFFSET 0x34
/*bits names*/
/*common config*/
#define I_COM0_CMNRESET_L BIT(0)
#define I_COM0_PLL1CORECLKA_REQ_H BIT(1)
#define I_COM0_PLL1CORECLKB_REQ_H BIT(2)
#define I_COM0_PLL1EN_H BIT(3)
#define I_LANE_SOC2PHY_PWRREQ_H_SUS(lane) (8 + (lane * 0x4))
#define I_LANE_COMMON_CONFIG_DEFAULT_VALUE ( BIT(I_LANE_SOC2PHY_PWRREQ_H_SUS(0)) | BIT(I_LANE_SOC2PHY_PWRREQ_H_SUS(1)) | BIT(I_LANE_SOC2PHY_PWRREQ_H_SUS(2)) )
/* lane reset */
#define MODPHY_COMMON_LANE_RESET_LANE_OFFSET 0 /*bits 0-3*/
#define MODPHY_COMMON_LANE_RESET_LANE_WIDTH 4
/*common status*/
#define O_COM0_PLL1CORECLKA_ACK_H BIT(0)
#define O_COM0_PLL1CORECLKB_ACK_H BIT(1)
#define O_COM0_PLL1OK_H_MASK BIT(2)
#define O_COM0_REFCOMPDONE BIT(3)
#define O_LANE_PHY2SOC_PWRACK_H_SUS_MASK(lane) BIT((8 +(lane * 0x4)))
/*rx control*/
#define I_LANE_RESET_L BIT(0)
#define MODPHY_DATA_LANE_POWER_MODE_OFFSET 4 /* lane_powerdown bits 4-6*/
#define MODPHY_DATA_LANE_POWER_MODE_WIDTH 3
#define MODPHY_DATA_LANE_POWER_MODE_PS0 0 /*000*/
#define MODPHY_DATA_LANE_POWER_MODE_PS1 1 /*001*/
#define MODPHY_DATA_LANE_POWER_MODE_PS2 2 /*010*/
#define MODPHY_DATA_LANE_RX_STANDBY_OFFSET 12 /*bit 12*/
#define MODPHY_DATA_LANE_RX_STANDBY_WIDTH 1
/*rx status*/
#define O_LANE_PIPEPHYSTATUS_SUS_MASK BIT(0)
#define O_LANE_PIPEPHYSTATUS_SUS 0
#define O_LANE_RXSTANDBYSTATUS_H_MASK BIT(4)
/*rx config*/
#define I_LANE_POWERDOWN_SUS0 4
#define I_LANE_POWERDOWN_SUS1 5
#define I_LANE_POWERDOWN_SUS2 6
#define I_LANE_WIDTH 10
#define I_LANE_RX_K_ALIGNMODE 15
#define I_LANE_RATE 18
#define I_LANE_RXSTANDBY_H_MASK BIT(12)
#define I_LANE_PHYMODE_SUS 20
#define I_LANE_POWERDOWN_SUS_MASK (BIT(4) | BIT(5) | BIT(6))
/* tx status */
#define I_LANE_TXELECIDLE_MASK BIT(0)
#define MODPHY_MOCA_NUM_OF_LANES 2
#define MODPHY_DOCSIS_LEGACY_NUM_OF_LANES 2
#define MODPHY_DOCSIS_OFDM_NUM_OF_LANES 3
#define MODPHY_SGMII_NUM_OF_LANES 1
#define MODPHY_POWER_MODE_P0 0 /*000*/
#define MODPHY_POWER_MODE_P0S 1 /*001*/
#define MODPHY_POWER_MODE_P1 2 /*010*/
#define MODPHY_POWER_MODE_P2 3 /*011*/
#define MODPHY_LANE_WIDTH 1 /*01*/
#define MODPHY_FULL_RATE 3 /*11*/
#define MODPHY_SGMII_LANE_WIDTH 0 /*00*/
#define MODPHY_SGMII_1G_RATE 1 /*01*/
#define MODPHY_SGMII_2_5G_RATE 2 /*10*/
#define MODPHY_LANE_OUT_OF_RESET 1
#ifndef CONFIG_CPU_LITTLE_ENDIAN
#define CONFIG_CPU_LITTLE_ENDIAN
#endif
#ifdef CONFIG_CPU_LITTLE_ENDIAN
#define LE_SET_ENABLE_BIT(addr,bit_mask) (*((volatile unsigned int *)(addr)) |= (cpu_to_le32(bit_mask)))
#define BE_SET_ENABLE_BIT(addr,bit_mask) (*((volatile unsigned int *)(addr)) |= (bit_mask))
#define SET_ENABLE_BIT(addr,bit_mask,isBigEndian) ((isBigEndian == True)? BE_SET_ENABLE_BIT(addr,bit_mask):LE_SET_ENABLE_BIT(addr,bit_mask))
#define LE_IS_ENABLE_BIT_SET(addr,bit_mask) ( *( (volatile unsigned int *)(addr) ) & (cpu_to_le32(bit_mask)) )
#define BE_IS_ENABLE_BIT_SET(addr,bit_mask) ( *( (volatile unsigned int *)(addr) ) & (bit_mask) )
/* bit_mask works only for a single bit!! */
#define IS_ENABLE_BIT_SET(addr,bit_mask,isBigEndian) ((isBigEndian == True)? BE_IS_ENABLE_BIT_SET(addr,bit_mask):LE_IS_ENABLE_BIT_SET(addr,bit_mask))
#define LE_SET_REGISTER(addr,bit_mask) (*((volatile unsigned int *)(addr)) = (cpu_to_le32(bit_mask)))
#define BE_SET_REGISTER(addr,bit_mask) (*((volatile unsigned int *)(addr)) = (bit_mask))
#define SET_REGISTER(addr,bit_mask,isBigEndian) ((isBigEndian == True)? BE_SET_REGISTER(addr,bit_mask):LE_SET_REGISTER(addr,bit_mask))
#define LE_SET_DISABLE_BIT(addr,bit_mask) (*((volatile unsigned int *)(addr)) &= (~(cpu_to_le32(bit_mask))))
#define BE_SET_DISABLE_BIT(addr,bit_mask) (*((volatile unsigned int *)(addr)) &= (~(bit_mask)))
#define SET_DISABLE_BIT(addr,bit_mask,isBigEndian) ((isBigEndian == True)? BE_SET_DISABLE_BIT(addr,bit_mask):LE_SET_DISABLE_BIT(addr,bit_mask))
#else
#define SET_ENABLE_BIT(addr,bit_mask,isBigEndian) (*((volatile unsigned int *)(addr)) |= (bit_mask))
#define IS_ENABLE_BIT_SET(addr,bit_mask,isBigEndian) ( *( (volatile unsigned int *)(addr) ) & (bit_mask) )
#define SET_REGISTER(addr,bit_mask,isBigEndian) (*((volatile unsigned int *)(addr)) = (bit_mask))
#define SET_DISABLE_BIT(addr,bit_mask,isBigEndian) (*((volatile unsigned int *)(addr)) &= (~(bit_mask)))
#endif
#define FIRST_MINOR 0
#define MINOR_CNT 1
#define MODPHY_OK (0)
#define MODPHY_FAIL (-1)
#define MODPHY_READ_BIT_TIMEOUT_USEC 20000 /*timeout for reading bits in init sequence in usec*/
#define KGREG_MAX_BUFF_SIZE 100
struct modphyClient
{
unsigned int iosfPort;
unsigned int laneId[MODPHY_MAX_NUM_OF_LANES];
ModphyTypes_e modPhyType;
unsigned int baseAddr;
int numOfLanes;
Bool isBigEndian;
modphyKgregs_t usrKgregs;
};
static struct modphyClient modphyClientArray[MODPHY_NUM_OF_CLIENTS];
static Bool modphyIsInitArrayDone;
/* Common Lane Power Gate is not enabled by design as of now. Workaround is sought after.*/
/* For the timebeing to keep only data lane Power gate capability for all modphy */
static ModphyStatusData_t modphyClientStatusData[] =
{
{MODPHY_MOCA_CLIENT_ID, (MODPHY_LANE_1 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, false}, false, false}},
{MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID, (MODPHY_LANE_1 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, false}, false, true}},
{MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID, (MODPHY_LANE_2 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, true}, true, false}},
{MODPHY_SGMII0_1G_CLIENT_ID, (MODPHY_LANE_0 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, false, false}, false, false}},
{MODPHY_SGMII1_1G_CLIENT_ID, (MODPHY_LANE_0 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, false, false}, false, false}},
{MODPHY_SGMII0_2_5G_CLIENT_ID, (MODPHY_LANE_0 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, false, false}, true, false}},
{MODPHY_SGMII1_2_5G_CLIENT_ID, (MODPHY_LANE_0 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, false, false}, true, false}},
{MODPHY_MOCA_50MHZ_CLIENT_ID, (MODPHY_LANE_1 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, false}, true, false}},
{MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID, (MODPHY_LANE_1 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, false}, false, true}},
{MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID, (MODPHY_LANE_2 + 1), MODPHY_KG_POWER_STATE_OFF, {MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF, MODPHY_KG_POWER_STATE_OFF}, MODPHY_KG_POWER_STATE_3, {{true, true, true}, true, false}},
};
/**************************************************************************/
/* LOCAL VARIABLES: */
/**************************************************************************/
static dev_t dev;
static struct cdev *c_dev;
static struct class *cl;
/* Structure to map driver functions to kernel */
static struct file_operations modphy_drv_fops =
{
.owner = THIS_MODULE,
.unlocked_ioctl = modphy_ioctl /*We assume there are no 2 processes in a race condition*/
};
/***************************************************************************************/
/* LOCAL FUNCTIONS */
/***************************************************************************************/
int modphy_read_wait_bit(unsigned int addr, int bit_mask, int expected_val, int timeout_usec, ModphyController_e modphyClientId);
/*! \fn void bit_field32_set(uint32 *addr, uint32 data, uint32 offset, uint32 width)
* \brief set the value of a specific bit-field in a given 32-bit field
* \param[in] addr the address of the 32-bit field that contains the bit-field
* \param[in] data the value to be written
* \param[in] offset the offset (in bits) of the required bit-field
* \param[in] width the number of bits in the required bit-field
* \return none.
*/
static inline void be_bit_field32_set(volatile Uint32 *addr, Uint32 data, Uint32 offset, Uint32 width)
{
Uint32 mask, temp;
mask = ((0xFFFFFFFF >> (32 - width)) << offset);
temp = *addr;
temp &= ~mask;
temp |= mask & (data << offset);
*addr = temp;
}
static inline void le_bit_field32_set(volatile Uint32 *addr, Uint32 data, Uint32 offset, Uint32 width)
{
Uint32 mask, temp;
mask = cpu_to_le32((0xFFFFFFFF >> (32 - width)) << offset);
temp = *addr;
temp &= ~mask;
temp |= mask & cpu_to_le32(data << offset);
*addr = temp;
}
static inline void bit_field32_set(volatile Uint32 *addr, Uint32 data, Uint32 offset, Uint32 width, Bool isBigEndian)
{
if (isBigEndian)
{
be_bit_field32_set(addr, data, offset, width);
} else
{
le_bit_field32_set(addr, data, offset, width);
}
}
static int modphy_common_lane_init(ModphyController_e modphyClientId)
{
if( MODPHY_MOCA_50MHZ_CLIENT_ID != modphyClientId )
{
DPRINTK("\nmodphy_init setting common_config bits I_LANE2_SOC2PHY_PWRREQ_H_SUS, I_LANE1_SOC2PHY_PWRREQ_H_SUS, I_LANE0_SOC2PHY_PWRREQ_H_SUS\n");
SET_REGISTER( modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_LANE_COMMON_CONFIG_DEFAULT_VALUE , modphyClientArray[modphyClientId].isBigEndian); /* Gives data lanes control on Core well power */
}
DPRINTK("\nmodphy_init setting common_config bits I_COM0_CMNRESET_L, I_COM0_PLL1EN_H\n");
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_CMNRESET_L, modphyClientArray[modphyClientId].isBigEndian); /*takes the common lane out of reset. assert bit 0*/
DPRINTK("\nmodphy_init reading common_status bit O_COM0_REFCOMPDONE\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_REFCOMPDONE, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*read '1' - PLL OK signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_init reading register 0x%x, bit O_COM0_REFCOMPDONE (%lu) - WRONG VALUE (should be '1')\n", (modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET), O_COM0_REFCOMPDONE);
return MODPHY_FAIL;
}
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1EN_H, modphyClientArray[modphyClientId].isBigEndian); /*enable PLL #1 within the common lane*/
/* ADD THIS CODE. TO CHANGE TO FUNCTION/Macro */
DPRINTK("\nmodphy_init reading common_status bit O_COM0_PLL1OK_H_MASK\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1OK_H_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*read '1' - COMP done signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_init reading register 0x%x, bit O_COM0_PLL1OK_H_MASK (%lu) - WRONG VALUE (should be '1')\n", (modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET), O_COM0_REFCOMPDONE);
return MODPHY_FAIL;
}
/* Waiting for PLL Ok after enabling the PLL */
DPRINTK("\nmodphy_init reading common_status bit O_COM0_PLL1OK_H_MASK\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1OK_H_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*read '1' - COMP done signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_init reading register 0x%x, bit O_COM0_PLL1OK_H_MASK (%lu) - WRONG VALUE (should be '1')\n", (modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET), O_COM0_PLL1OK_H_MASK);
return MODPHY_FAIL;
}
DPRINTK("\nmodphy_init setting common_config bit I_COM0_PLL1CORECLKB_REQ_H\n");
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1CORECLKB_REQ_H, modphyClientArray[modphyClientId].isBigEndian); /*Request to turn on the clock signal which is a divided clock from the PLL*/
DPRINTK("\nmodphy_init reading common_status bit O_COM0_PLL1CORECLKB_ACK_H\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1CORECLKB_ACK_H, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Read '1' - PLL OK signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_init reading bit O_COM0_PLL1CORECLKB_ACK_H - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
DPRINTK("\nmodphy_init setting common_config bit I_COM0_PLL1CORECLKA_REQ_H\n");
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1CORECLKA_REQ_H, modphyClientArray[modphyClientId].isBigEndian); /*Request to turn on the clock signal which is a divided clock from the PLL*/
DPRINTK("\nmodphy_init reading common_status bit O_COM0_PLL1CORECLKA_ACK_H\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1CORECLKA_ACK_H, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Read '1' - PLL OK signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_init reading bit O_COM0_PLL1CORECLKA_ACK_H - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
DPRINTK("\nmodphy_init reading common_status bit O_COM0_PLL1CORECLKA_ACK_H\n");
/* Common Lane is up at this point*/
modphyClientStatusData[modphyClientId].commonLanePowerState = MODPHY_KG_POWER_STATE_0;
return MODPHY_OK;
}
static void modphy_kg_regs_from_usr(ModphyController_e modphyClientId)
{
unsigned i;
for (i = 0; i != modphyClientArray[modphyClientId].usrKgregs.avpsCnt; i++)
{
printk(KERN_WARNING "IOSFSB_CRWRITE: Port=0x%x, Addr=0x%x, Val=0x%x\n",
modphyClientArray[modphyClientId].iosfPort,
modphyClientArray[modphyClientId].usrKgregs.avps[i].addr,
modphyClientArray[modphyClientId].usrKgregs.avps[i].val);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort,
IOSFSB_OP_CRWRITE,
modphyClientArray[modphyClientId].usrKgregs.avps[i].addr,
modphyClientArray[modphyClientId].usrKgregs.avps[i].val,
0);
}
}
static void modphy_kg_regs_post(ModphyController_e modphyClientId)
{
unsigned int siliconStepping;
DPRINTK("START KG_REGS client ID = %d\n", modphyClientId);
if (modphyClientArray[modphyClientId].usrKgregs.avps)
{
printk(KERN_WARNING "modphy_kg_regs_post: Using user-configured kgregs for ClientId=%d\n", modphyClientId);
modphy_kg_regs_from_usr(modphyClientId);
return;
}
if (SRAM_Get_Boot_Param(SILICON_STEPPING_ID, &siliconStepping))
{
printk("%s:%d ERROR .... silicon stepping retrieval unsuccessful \n", __FUNCTION__, __LINE__);
BUG_ON(1);
}
if (siliconStepping <= SILICON_STEPPING_ID_A_2)
{
DPRINTK("\nm KG-regs POST settings for A\n");
switch (modphyClientId)
{
case MODPHY_MOCA_CLIENT_ID:
{
/* soc.moca.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.moca.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.moca.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.moca.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.moca.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII0_1G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII1_1G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII0_2_5G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII1_2_5G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_MOCA_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0xa40d0716, 0);
}
break;
default:
DPRINTK("Wrong modphy client ID %d \n", modphyClientId);
break;
}
}
else
{
DPRINTK("\nm KG-regs POST settings for B\n");
switch (modphyClientId)
{
case MODPHY_MOCA_CLIENT_ID:
{
/* soc.moca.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.moca.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.moca.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.moca.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.moca.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII0_1G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII1_1G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII0_2_5G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_SGMII1_2_5G_CLIENT_ID:
{
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.ethernet.sgmii0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.ethernet.sgmii0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_MOCA_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
}
break;
case MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID:
{
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x10221e0, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword10.reg_cfg_data_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x10221e0, 0);
/* soc.docsis3p0.modphy.clane.cmn_dig.cmn_dig_dword15.o_cfg_cmn_dynclkgate_mode_1_0=0x3 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x6, 0);
/* soc.docsis3p0.modphy.dlane0.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0xa40d0716, 0);
/* soc.docsis3p0.modphy.dlane1.pcs.pcs_dword9.reg_enable_pwr_gating=0x1 */
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0xa40d0716, 0);
}
break;
default:
DPRINTK("Wrong modphy client ID %d \n", modphyClientId);
break;
}
}
}
static void modphy_kg_regs(ModphyController_e modphyClientId)
{
unsigned int siliconStepping;
unsigned int boardTypeId;
DPRINTK("START KG_REGS client ID = %d\n", modphyClientId);
if (modphyClientArray[modphyClientId].usrKgregs.avps)
{
printk(KERN_WARNING "modphy_kg_regs: Using user-configured kgregs for ClientId=%d\n", modphyClientId);
modphy_kg_regs_from_usr(modphyClientId);
return;
}
if (SRAM_Get_Boot_Param(SILICON_STEPPING_ID, &siliconStepping))
{
printk("%s:%d ERROR .... silicon stepping retrieval unsuccessful \n", __FUNCTION__, __LINE__);
BUG_ON(1);
}
if (SRAM_Get_Boot_Param(BOARD_TYPE_ID, &boardTypeId))
{
printk("%s:%d ERROR .... board type id retrieval unsuccessful \n", __FUNCTION__, __LINE__);
BUG_ON(1);
}
if (siliconStepping <= SILICON_STEPPING_ID_A_2)
{
DPRINTK("\nm KG-regs settings for A\n");
switch (modphyClientId)
{
case MODPHY_MOCA_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_MOCA_50MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3c, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10904, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3C, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10904, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2230, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2300, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2210, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2220, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2218, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2264, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2290, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2294, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x228c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2340, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2344, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2348, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2314, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2368, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x236c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2378, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2310, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2318, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2324, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x237c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2358, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2354, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2304, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x233c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2350, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2308, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x238c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2384, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2370, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2204, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3c, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10904, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2230, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2300, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2210, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2220, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2218, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2264, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2290, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2294, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x228c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2340, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2344, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2348, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2314, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2368, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x236c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2378, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2310, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2318, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2324, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x237c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2358, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2354, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2304, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x233c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2350, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2308, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x238c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2384, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2370, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2204, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
break;
}
case MODPHY_SGMII0_1G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x0521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x404, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x19, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x30c05, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x2521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII1_1G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x0521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x404, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x19, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x30c05, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x2521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII0_2_5G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x05096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10803, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x100000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x10002, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030a, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x25096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020704, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x24200024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII1_2_5G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x05096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10803, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x100000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x10002, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030a, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x25096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020704, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x24200024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
default:
printk(KERN_ERR "Wrong modphy client ID %d \n", modphyClientId);
break;
}
} else
{
DPRINTK("\nm KG-regs settings for B\n");
switch (modphyClientId)
{
case MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_MOCA_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10904, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID:
{
if (boardTypeId == PUMA7_CR_BOARD_ID)
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8020,0x050d7200,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8004,0x21000060,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8084,0x504,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x80a4,0x8240540e,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8100,0x3C,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8118,0x10904,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8128,0x70000000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8108,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x810c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8124,0x2030b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8120,0x70012,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x30,0x8080b0b0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2030,0x8080b0b0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10c,0x98121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x210c,0x98121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x100,0xa5001455,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2100,0xa5001455,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2190,0x4c0f0016,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8020,0x250d7200,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8008,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10,0x723f3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2010,0x723f3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20,0xd071624,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2020,0xd071624,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x18,0xb90009,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2018,0xb90009,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x64,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2064,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x90,0x2b604d55,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2090,0x2b604d55,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0xb8,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20b8,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0xac,0x3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20ac,0x3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x94,0x8000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2094,0x8000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8c,0xc782040,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x208c,0xc782040,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x202c,0x100,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2c,0x100,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x140,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2140,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x144,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2144,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x148,0x1021110,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2148,0x1021110,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x114,0xa3816300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2114,0xa3816300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x1cc,0x1e020007,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x21cc,0x1e020007,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x168,0x38009608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2168,0x38009608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x1ac,0x7a13608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x21ac,0x7a13608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x16c,0x10200100,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x216c,0x10200100,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x178,0x243f84,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2178,0x243f84,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x110,0x6a7,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2110,0x6a7,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x210c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x118,0x2c2c7a7b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2118,0x2c2c7a7b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x124,0x40000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2124,0x40000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x17c,0x10030000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x217c,0x10030000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x158,0x404000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2158,0x404000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x154,0x200000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2154,0x200000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x104,0x642bf2,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2104,0x642bf2,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x13c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x213c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x150,0x271f1f1f,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2150,0x271f1f1f,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x190,0x4c0f0016,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x108,0x34,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2108,0x34,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x18c,0x250d2701,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x218c,0x250d2701,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x190,0x4c0f0022,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2190,0x4c0f0022,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x184,0x3f271300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2184,0x3f271300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x170,0xff4c3d04,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2170,0xff4c3d04,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x4,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2004,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x803c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2028,0x1022180,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x28,0x1022180,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8030,0x900400,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x24,0x840d0716,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2024,0x840d0716,0);
}
else
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3C, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
}
break;
}
case MODPHY_MOCA_50MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3c, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10904, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x35347a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x78, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x1030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2230, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2300, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250ba194, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2210, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2220, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2218, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2264, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2290, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2294, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x228c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2340, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2344, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2348, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2314, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2368, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x236c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2378, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2310, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2318, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2324, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x237c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2358, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2354, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2304, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x233c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2350, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2308, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x238c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2384, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2370, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2204, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
break;
}
case MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID:
{
if (boardTypeId == PUMA7_CR_BOARD_ID)
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8020,0x050d7200,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8004,0x21000060,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8084,0x504,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x80a4,0x8240540e,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8100,0x3c,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8118,0x10904,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8128,0x70000000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8108,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x810c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8124,0x2030b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8120,0x70012,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2230,0x8080b0b0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2030,0x8080b0b0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x30,0x8080b0b0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x230c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x210c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10c,0x98121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2300,0xa5001455,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2100,0xa5001455,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x100,0xa5001455,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2390,0x4c0f0016,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2190,0x4c0f0016,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x190,0x4c0f0016,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8020,0x250d7200,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8008,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2210,0x723f3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2010,0x723f3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10,0x723f3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2220,0xd071624,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2020,0xd071624,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20,0xd071624,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2218,0xb90009,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2018,0xb90009,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x18,0xb90009,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2264,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2064,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x64,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2290,0x2b404d55,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2090,0x2b404d55,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x90,0x2b404d55,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x22b8,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20b8,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0xb8,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x22ac,0x3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x20ac,0x3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0xac,0x3000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2294,0x8000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2094,0x8000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x94,0x8000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x228c,0xc782040,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x208c,0xc782040,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8c,0xc782040,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2340,0x102c504,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2140,0x102c504,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x140,0x102c504,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2344,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2144,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x144,0x1020304,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2348,0x1021110,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2148,0x1021110,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x148,0x1021110,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2314,0xa3816300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2114,0xa3816300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x114,0xa3816300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x23cc,0x06020007,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x21cc,0x06020007,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x1cc,0x06020007,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2368,0x38009608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2168,0x38009608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x168,0x38009608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x23ac,0x7a13608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x21ac,0x7a13608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x1ac,0x7a13608,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x236c,0x1c0c2800,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x216c,0x1c0c2800,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x16c,0x1c0c2800,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2378,0x241A84,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2178,0x241A84,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x178,0x241A84,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2310,0x6a7,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2110,0x6a7,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x110,0x6a7,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x230c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x210c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x10c,0x97121b03,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2318,0x2c2c7a7b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2118,0x2c2c7a7b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x118,0x2c2c7a7b,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2324,0x40000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2124,0x40000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x124,0x40000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x237c,0x10030000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x217c,0x10030000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x17c,0x10030000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2358,0x404000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2158,0x404000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x158,0x404000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2354,0x220000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2154,0x220000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x154,0x220000,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2304,0x642bf2,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2104,0x642bf2,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x104,0x642bf2,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x233c,0x20,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x213c,0x20,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x13c,0x20,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2350,0x2A1f1f1f,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2150,0x2A1f1f1f,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x150,0x2A1f1f1f,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2308,0x34,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2108,0x34,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x108,0x34,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x238c,0x250d2701,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x218c,0x250d2701,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x18c,0x250d2701,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2390,0x4c0f0022,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2190,0x4c0f0022,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x190,0x4c0f0022,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2384,0x3f271300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2184,0x3f271300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x184,0x3f271300,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2370,0xff4c3d04,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2170,0xff4c3d04,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x170,0xff4c3d04,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2204,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2004,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x4,0x1B,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x803c,0x0,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2228,0x1022180,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2028,0x1022180,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x28,0x1022180,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x8030,0x900400,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2224,0x840d0716,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x2024,0x840d0716,0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE,0x24,0x840d0716,0);
}
else
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x050d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x3c, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10804, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x2030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70012, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2230, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x30, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2300, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x250d7200, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2210, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10, 0x723f3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2220, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2218, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2264, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x64, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2290, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x90, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xb8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x22ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0xac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2294, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x94, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x228c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2340, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2344, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2348, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2314, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2368, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x23ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x1ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x236c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x16c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2378, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2310, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x230c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x10c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2318, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2324, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x237c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x17c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2358, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2354, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2304, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x233c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x13c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2350, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2308, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x238c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x18c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2390, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2384, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2370, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2204, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x4, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2228, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x28, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2224, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x24, 0x840d0716, 0);
}
break;
}
case MODPHY_SGMII0_1G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x0521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x404, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x19, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x30c05, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x2521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII1_1G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x0521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x404, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x19, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x30c05, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x78003c00, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x2521b414, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x200000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII0_2_5G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x05096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10803, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x100000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x10002, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030a, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x25096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020704, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x24200024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
case MODPHY_SGMII1_2_5G_CLIENT_ID:
{
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x05096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8004, 0x21000060, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8084, 0x504, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x80a4, 0x8240540e, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8100, 0x1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8118, 0x10803, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8128, 0x70000000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8108, 0x100000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x810c, 0x10002, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8124, 0x3030a, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8120, 0x70009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2030, 0x8080b0b0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x98121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0016, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2100, 0xa5001455, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8020, 0x25096254, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8008, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2010, 0x723f3400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2020, 0xd071624, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2018, 0xb90009, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2064, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2090, 0x2b404d55, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20b8, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x20ac, 0x3000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2094, 0x8000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x208c, 0xc782040, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2140, 0x1020304, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2144, 0x1020704, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2148, 0x1021110, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2114, 0xa3816300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21cc, 0x1e020007, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2168, 0x38009608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x21ac, 0x7a13608, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x216c, 0x10200100, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2178, 0x243f84, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2110, 0x6a7, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x210c, 0x97121b03, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2118, 0x2c2c7a7b, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2124, 0x40000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x217c, 0x10030000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2158, 0x404000, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2154, 0x24200024, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2104, 0x642bf2, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x213c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2150, 0x271f1f1f, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2108, 0x34, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x218c, 0x250d2701, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2190, 0x4c0f0022, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2184, 0x3f271300, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2170, 0xff4c3d04, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2004, 0x25, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x803c, 0x0, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2028, 0x1022180, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x8030, 0x900400, 0);
iosfsb_write(modphyClientArray[modphyClientId].iosfPort, IOSFSB_OP_CRWRITE, 0x2024, 0x840d0716, 0);
break;
}
default:
printk(KERN_ERR "Wrong modphy client ID %d \n", modphyClientId);
break;
}
}
}
/*********************************************************************************************************/
/*! \fn int modphy_tx_disable(ModphyLanes_e lane, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function disable TX lanes
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_tx_disable(ModphyLanes_e lane, ModphyController_e modphyClientId)
{
int modphyReadFail = MODPHY_OK;
DPRINTK("\nmodphy_init clear rx_status bit O_LANE_PIPEPHYSTATUS_SUS, lane:%d\n", lane);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian); /*Clears the Status bit.*/
DPRINTK("\nmodphy_init setting rx_config bit I_LANE_POWERDOWN_SUS[0-2], lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_POWER_MODE_P0S, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Verify that the pipephystatus signal goes from high to low*/
{
modphyReadFail = MODPHY_FAIL;
printk(KERN_ERR "\nmodphy_init reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
}
if (MODPHY_FAIL == modphyReadFail)
{
return MODPHY_FAIL; /*one of the values in the loop was wrong*/
}
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_tx_disable);
/*********************************************************************************************************/
/*! \fn int modphy_go2_fast_recovery(ModphyLanes_e lane, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function resets ModPhy client. Used for ext.switches WA. Can be scheduled out.
* \param[in] lane : lane index
* \param[in] modphyClientId : Client ID
* \return void
********************************************************************************************************/
int modphy_go2_fast_recovery(ModphyLanes_e lane, ModphyController_e modphyClientId)
{
DPRINTK("\nmodphy_go2_fast_recovery configure lane_powerdown lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)),
MODPHY_DATA_LANE_POWER_MODE_PS2, MODPHY_DATA_LANE_POWER_MODE_OFFSET, MODPHY_DATA_LANE_POWER_MODE_WIDTH, modphyClientArray[modphyClientId].isBigEndian);
DPRINTK("\nmodphy_go2_fast_recovery clear rxStandby lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)),
0, MODPHY_DATA_LANE_RX_STANDBY_OFFSET, MODPHY_DATA_LANE_RX_STANDBY_WIDTH, modphyClientArray[modphyClientId].isBigEndian);
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_go2_fast_recovery);
/*********************************************************************************************************/
/*! \fn int modphy_go2_full_functonal(ModphyLanes_e lane, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function resets ModPhy client. Used for ext.switches WA. Can be scheduled out.
* \param[in] lane : lane index
* \param[in] modphyClientId : Client ID
* \return void
********************************************************************************************************/
int modphy_go2_full_functonal(ModphyLanes_e lane, ModphyController_e modphyClientId)
{
DPRINTK("\nmodphy_go2_full_functonal configure lane_powerdown lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)),
MODPHY_DATA_LANE_POWER_MODE_PS0, MODPHY_DATA_LANE_POWER_MODE_OFFSET, MODPHY_DATA_LANE_POWER_MODE_WIDTH, modphyClientArray[modphyClientId].isBigEndian);
DPRINTK("\nmodphy_go2_full_functonal clear rxStandby lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)),
0, MODPHY_DATA_LANE_RX_STANDBY_OFFSET, MODPHY_DATA_LANE_RX_STANDBY_WIDTH, modphyClientArray[modphyClientId].isBigEndian);
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_go2_full_functonal);
/*********************************************************************************************************/
/*! \fn int modphy_common_lane_reset(ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function resets ModPhy client. Used for ext.switches WA. Can be scheduled out.
* \param[in] modphyClientId : Client ID
* \return void
********************************************************************************************************/
int modphy_common_lane_reset(ModphyController_e modphyClientId)
{
DPRINTK("\nmodphy_common_lane_reset ClientId=%d addr ***** 0x%x ***** \n", modphyClientId, (modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET));
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET), 0, MODPHY_COMMON_LANE_RESET_LANE_OFFSET, MODPHY_COMMON_LANE_RESET_LANE_WIDTH, modphyClientArray[modphyClientId].isBigEndian);
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_common_lane_reset);
/*********************************************************************************************************/
/*! \fn int modphy_reset_k_align(ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function reset K alignment in modphy
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_reset_k_align(ModphyController_e modphyClientId)
{
int i = 0;
for (i = 0; i < modphyClientArray[modphyClientId].numOfLanes; i++)
{
/*cri_reset_kalignlck*/
iosfsb_regReadModifyWrite(modphyClientArray[modphyClientId].iosfPort,
modphyClientArray[modphyClientId].laneId[i] + MODPHY_PCS_UNIT + MODPHY_GET_OFFSET_BY_DWORD_ID(1), 0x40000000, 0, 0x40000000);
iosfsb_regReadModifyWrite(modphyClientArray[modphyClientId].iosfPort,
modphyClientArray[modphyClientId].laneId[i] + MODPHY_PCS_UNIT + MODPHY_GET_OFFSET_BY_DWORD_ID(1), 0x0, 0, 0x40000000);
}
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_reset_k_align);
/*********************************************************************************************************/
/*! \fn int modphy_assert_reset_client(ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function asserts reset to ModPhy client and return the register to their default
* value after HW reset. It is implemented for sgmii0 and sgmii1 only.
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_assert_reset_client(ModphyController_e modphyClientId)
{
Uint32 reg_addr;
Uint32 lane = 0;
/* Implemented for sgmii0 and sgmii1 only */
if (!((modphyClientId == MODPHY_SGMII0_1G_CLIENT_ID) ||
(modphyClientId == MODPHY_SGMII1_1G_CLIENT_ID) ||
(modphyClientId == MODPHY_SGMII0_2_5G_CLIENT_ID) ||
(modphyClientId == MODPHY_SGMII1_2_5G_CLIENT_ID)))
{
printk(KERN_ERR"\nFailed reconfigure client %d\n", modphyClientId);
return MODPHY_FAIL;
}
/* Force modphy reset */
SET_REGISTER((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET), 0, modphyClientArray[modphyClientId].isBigEndian);
udelay(10);
/* configure lane 0 and common lane to HW default values */
reg_addr = (modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET + (lane * 0x4));
SET_REGISTER(reg_addr, 0x00000000, modphyClientArray[modphyClientId].isBigEndian);
reg_addr = (modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4));
SET_REGISTER(reg_addr, 0x38488020, modphyClientArray[modphyClientId].isBigEndian);
reg_addr = (modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4));
SET_REGISTER(reg_addr, 0x00000000, modphyClientArray[modphyClientId].isBigEndian);
reg_addr = (modphyClientArray[modphyClientId].baseAddr + MODPHY_TX_CONFIG_L0_OFFSET + (lane * 0x4));
SET_REGISTER(reg_addr, 0x00000600, modphyClientArray[modphyClientId].isBigEndian);
/* Force modphy reset */
SET_REGISTER((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET), 0, modphyClientArray[modphyClientId].isBigEndian);
udelay(10);
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_assert_reset_client);
/*********************************************************************************************************/
/*! \fn void modphy_reset_client(ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function resets ModPhy client.
* \param[in] modphyClientId : Client ID
* \return void
********************************************************************************************************/
void modphy_reset_client(ModphyController_e modphyClientId)
{
SET_REGISTER((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET), 0, modphyClientArray[modphyClientId].isBigEndian);
mdelay(10);
SET_REGISTER((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET), 1, modphyClientArray[modphyClientId].isBigEndian);
}
EXPORT_SYMBOL(modphy_reset_client);
/*********************************************************************************************************/
/*! \fn int modphy_init(ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function inits the modphy for a specific client.
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_init(ModphyController_e modphyClientId)
{
int i;
int retVal = MODPHY_FAIL;
if (modphyIsInitArrayDone != True)
{
printk(KERN_ERR "\n Modphy driver need to be initialize before trying to init modphy %d \n"
"(0=MOCA, 1=LEGACY DOCSIS, 2=OFDM DOCSIS, 3=SGMII, 4=SGMII2)\n", modphyClientId);
return MODPHY_FAIL;
}
DPRINTK("\nStarting modphy_init for client = %d (0=MOCA, 1=LEGACY DOCSIS, 2=OFDM DOCSIS, 3=SGMII, 4=SGMII2)\n", modphyClientId);
if ((modphyClientId == MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID) || (modphyClientId == MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID) ||
(modphyClientId == MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID) || (modphyClientId == MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID))
{
/*Change Docsis lanes Power state to '010'. Reset value is '000' in the Phy Modphy*/
for (i = 0; i < modphyClientArray[modphyClientId].numOfLanes; i++)
{
DPRINTK("\nmodphy_init setting rx_config bit I_LANE_POWERDOWN_SUS[0-2], lane:%d\n", i);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (i * 0x4)), MODPHY_POWER_MODE_P1, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P1 - normal operation*/
}
}
/* Calibration and configuration of KG regs */
modphy_kg_regs(modphyClientId);
/* Common Lane reset, PLL enable and Clocks acquired */
retVal = modphy_common_lane_init(modphyClientId);
/* Post Configuration of KG regs */
modphy_kg_regs_post(modphyClientId);
return retVal;
}
EXPORT_SYMBOL(modphy_init);
/*********************************************************************************************************/
/*! \fn int modphy_lane_configure(ModphyLanes_e lane, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function configure the modphy for a specific client.
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_lane_configure(ModphyLanes_e lane, ModphyController_e modphyClientId)
{
int modphyReadFail = MODPHY_OK;
Uint32 *modphyResetState = (Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4));
if (modphyIsInitArrayDone != True)
{
printk(KERN_ERR "\n Modphy driver need to be initialized before trying to init modphy %d \n"
"(0=MOCA, 1=LEGACY DOCSIS, 2=OFDM DOCSIS, 3=SGMII, 4=SGMII2)\n", modphyClientId);
return MODPHY_FAIL;
}
/*If modphyResetState equal to 1 it means that we try to do lane reset for the second time,
and we need to reconfigure HW to init state for reset to be possible */
if ((*modphyResetState == MODPHY_LANE_OUT_OF_RESET) && ((MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID == modphyClientId) ||
(MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID == modphyClientId)||
(MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID == modphyClientId) ||
(MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID == modphyClientId)))
{
SET_REGISTER(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4), 0, modphyClientArray[modphyClientId].isBigEndian); /*Takes the data lane out of reset.*/
mdelay(100);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_POWER_MODE_P1, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
mdelay(100);
}
if ((modphyClientId == MODPHY_SGMII0_1G_CLIENT_ID) || (modphyClientId == MODPHY_SGMII1_1G_CLIENT_ID))
{
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_SGMII_1G_RATE, I_LANE_RATE, 2, modphyClientArray[modphyClientId].isBigEndian); /*Configure lane rate - '10' for the default SerDes Full rate*/
} else if ((modphyClientId == MODPHY_SGMII0_2_5G_CLIENT_ID) || (modphyClientId == MODPHY_SGMII1_2_5G_CLIENT_ID))
{
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_SGMII_2_5G_RATE, I_LANE_RATE, 2, modphyClientArray[modphyClientId].isBigEndian); /*Configure lane rate - '10' for the default SerDes Full rate*/
} else
{
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_FULL_RATE, I_LANE_RATE, 2, modphyClientArray[modphyClientId].isBigEndian); /*Configure lane rate - '10' for the default SerDes Full rate*/
}
DPRINTK("\nmodphy_lane_configure set rx lane :%d K alignment\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), 0, I_LANE_RX_K_ALIGNMODE, 1, modphyClientArray[modphyClientId].isBigEndian); /*Set Rx K_align mode = 0 (Dynamic)*/
DPRINTK("\nmodphy_lane_configure set rx lane:%d width \n ", lane);
if ((modphyClientId == MODPHY_SGMII0_1G_CLIENT_ID) || (modphyClientId == MODPHY_SGMII1_1G_CLIENT_ID)
|| (modphyClientId == MODPHY_SGMII0_2_5G_CLIENT_ID) || (modphyClientId == MODPHY_SGMII1_2_5G_CLIENT_ID))
{
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_SGMII_LANE_WIDTH, I_LANE_WIDTH, 2, modphyClientArray[modphyClientId].isBigEndian); /*Configure lane width to 20 bits*/
} else
{
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_LANE_WIDTH, I_LANE_WIDTH, 2, modphyClientArray[modphyClientId].isBigEndian); /*Configure lane width to 20 bits*/
}
DPRINTK("\nmodphy_lane_configure clear rx_status bit O_LANE_PIPEPHYSTATUS_SUS, lane:%d \n", lane);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian); /*Clears the Status bit.*/
mdelay(100);
DPRINTK("\nmodphy_lane_configure setting rx_control bit I_LANE_RESET_L, lane:%d \n", lane);
SET_REGISTER(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4), I_LANE_RESET_L, modphyClientArray[modphyClientId].isBigEndian); /*Takes the data lane out of reset.*/
DPRINTK("\nmodphy_lane_configure reading rx_status bit O_LANE_PIPEPHYSTATUS_SUS for each lane\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Verify that the pipephystatus signal goes from high to low*/
{
modphyReadFail = MODPHY_FAIL;
printk(KERN_ERR "\nERROR modphy_lane_configure (1) reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
}
if (MODPHY_FAIL == modphyReadFail)
{
return MODPHY_FAIL; /*one of the values in the loop was wrong*/
}
/* Require delay between setting Data lane power mode to PS0 and performing Data Lane reset */
mdelay(100);
DPRINTK("\nmodphy_lane_configure clear rx_status bit O_LANE_PIPEPHYSTATUS_SUS, lane:%d\n", lane);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian); /*Clears the Status bit.*/
DPRINTK("\nmodphy_lane_configure setting rx_config bit I_LANE_POWERDOWN_SUS[0-2], lane:%d\n", lane);
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_POWER_MODE_P0, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
DPRINTK("\nmodphy_lane_configure reading rx_status bit O_LANE_PIPEPHYSTATUS_SUS for each lane\n");
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Verify that the pipephystatus signal goes from high to low*/
{
modphyReadFail = MODPHY_FAIL;
printk(KERN_ERR "\nmodphy_lane_configure (2) reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
}
if (MODPHY_FAIL == modphyReadFail)
{
return MODPHY_FAIL; /*one of the values in the loop was wrong*/
}
/* Data Lane for the specific modphy is up at this point*/
modphyClientStatusData[modphyClientId].dataLanePowerState[lane] = MODPHY_KG_POWER_STATE_0;
return MODPHY_OK;
}
EXPORT_SYMBOL(modphy_lane_configure);
int modphy_common_lane_bringdown( ModphyController_e modphyClientId )
{
DPRINTK("\nmodphy_common_lane_bringdown Full Common Lane Power gate for Client %d - Not Implemented(only PLL is powered UP/DOWN)\n", modphyClientId);
/* Set: (keep it by now) i_com0_pll1en_h=0 */
SET_DISABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1EN_H, modphyClientArray[modphyClientId].isBigEndian); /* disable PLL #1 within the common lane*/
/* Read/Ensure o_com0_pll1ok_h = 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1OK_H_MASK, 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
DPRINTK("\nERROR modphy_common_lane_bringdown reading bit O_LANE_PIPEPHYSTATUS_SUS on common lane - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
DPRINTK("\nmodphy_common_lane_bringdown Client = %d, common Lane PLL DISABLED \n", modphyClientId);
DPRINTK("\nmodphy_common_lane_bringdown Client = %d, common Lane RESET \n", modphyClientId);
SET_DISABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_CMNRESET_L, modphyClientArray[modphyClientId].isBigEndian); /*takes the common lane out of reset. assert bit 0*/
/* Send mbox message to PMIC for Common Lane PG Entry */
/* TODO: Add code here */
/* Read/Ensure o_com0_iosf_side_clkreq to be 0 */
/* Read/Ensure i_com0_iosf_side_clkack to be 0 */
/* Read/Ensure i_com0_ck_iosf_sideclk to be 0 (This one is part of the handshaking, it is not part of the SW but can be monitored) */
/* Read/Ensure o_ com0_pll1ok_h =0 */
/* Set i_com0_soc2phy_pwrreq_h_sus=0 (because it is tied off to 0 already then it is ready for SERDES) */
modphyClientStatusData[modphyClientId].commonLanePowerState = MODPHY_KG_POWER_STATE_0_PLL_OFF;
return MODPHY_OK;
}
int modphy_common_lane_bringup( ModphyController_e modphyClientId )
{
DPRINTK( "\nmodphy_common_lane_bringup Client %d, common lane : Bringing back from reset\n", modphyClientId );
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_CMNRESET_L, modphyClientArray[modphyClientId].isBigEndian); /*takes the common lane out of reset. assert bit 0*/
/* Send mbox message to PMIC for Common Lane PG Exit */
/* TODO: Add code here */
/* Commonlane Power Gating Exit -> Controller has to define when it is needed to exit */
/* Set i_com0_soc2phy_pwrreq_h_sus = 1 */
/* i_com0_ck_iosf_sideclk = toggling */
/* Set: (keep it by now) i_com0_pll1en_h = 1 */
DPRINTK( "\nmodphy_common_lane_bringup Client %d, common lane : Enabling PLL\n", modphyClientId );
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1EN_H, modphyClientArray[modphyClientId].isBigEndian); /*enable PLL #1 within the common lane*/
/* Read/Ensure o_com0_pll1ok_h = 1 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1OK_H_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
DPRINTK("\nERROR modphy_common_lane_bringup reading bit O_COM0_PLL1OK_H_MASK - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1CORECLKB_REQ_H, modphyClientArray[modphyClientId].isBigEndian); /*Request to turn on the clock signal which is a divided clock from the PLL*/
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1CORECLKB_ACK_H, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Read '1' - PLL OK signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_common_lane_bringup reading bit O_COM0_PLL1CORECLKB_ACK_H - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET, I_COM0_PLL1CORECLKA_REQ_H, modphyClientArray[modphyClientId].isBigEndian); /*Request to turn on the clock signal which is a divided clock from the PLL*/
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_COM0_PLL1CORECLKA_ACK_H, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Read '1' - PLL OK signal arrived from modPHY*/
{
printk(KERN_ERR "\nmodphy_common_lane_bringup reading bit O_COM0_PLL1CORECLKA_ACK_H - WRONG VALUE (should be '1')\n");
return MODPHY_FAIL;
}
modphyClientStatusData[modphyClientId].commonLanePowerState = MODPHY_KG_POWER_STATE_0;
/* Add minimum 100 us delay before moving to PS2 */
mdelay(10);
DPRINTK("\nmodphy_common_lane_bringup Client = %d, common lane(PLL) ENABLED \n", modphyClientId);
return MODPHY_OK;
}
/*********************************************************************************************************/
/*! \fn int modphy_lane_power_state_transition(ModphyLanes_e lane, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function can cause a specific lane to enter or exit from different low power modes
* \param[in] lane : Lane for the Client ID
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_lane_power_state_transition(ModphyLanes_e lane, ModphyController_e modphyClientId, ModphyPowerState_e powerStateReq)
{
int modphyReadFail = MODPHY_OK;
Uint8 powerState;
Bool alldataLanesinPowerGate = true;
int i;
if (modphyIsInitArrayDone != True)
{
DPRINTK("\n Modphy driver need to be initialized before trying to init modphy %d \n"
"(0=MOCA, 1=LEGACY DOCSIS, 2=OFDM DOCSIS, 3=SGMII, 4=SGMII2)\n", modphyClientId);
return MODPHY_FAIL;
}
/* Validate parameters to powergate function */
if( (lane != MODPHY_COMMON_LANE) && (modphyClientId < MODPHY_NUM_OF_CLIENTS) && (lane < modphyClientStatusData[modphyClientId].maxLanes) )
{
if ( (powerStateReq == MODPHY_POWER_STATE_ACTIVE) && (modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == (ModphyKGPowerStates_e)MODPHY_POWER_STATE_ACTIVE) ) {
DPRINTK("\nInvalid Power transition Requested : Already in Active state. Lane %d, Client %d\n", lane, modphyClientId);
modphyReadFail = MODPHY_FAIL;
} else if ( (powerStateReq == MODPHY_POWER_STATE_POWERGATE) && ( (modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == modphyClientStatusData[modphyClientId].powerGateState) || (modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == MODPHY_KG_POWER_STATE_0_RXSTANDBY) ) ) {
DPRINTK("\nInvalid Power transition Requested : Already in Power gated state OR Rx Standby State. Lane %d, Client %d\n", lane, modphyClientId);
modphyReadFail = MODPHY_FAIL;
} else if ( (powerStateReq == MODPHY_POWER_STATE_RXSTANDBY) && ( (modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == MODPHY_KG_POWER_STATE_0_RXSTANDBY) || (modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == modphyClientStatusData[modphyClientId].powerGateState) ) ) {
DPRINTK("\nInvalid Power transition Requested : Already in Rx Standby state OR Power gated State. Lane %d, Client %d\n", lane, modphyClientId);
modphyReadFail = MODPHY_FAIL;
}
}
else if (lane == MODPHY_COMMON_LANE)
{
if ((powerStateReq == MODPHY_POWER_STATE_ACTIVE) && (modphyClientStatusData[modphyClientId].commonLanePowerState == (ModphyKGPowerStates_e)MODPHY_POWER_STATE_ACTIVE))
{
DPRINTK("\nInvalid Power transition Requested : Already in Active state. common lane of Client %d\n", modphyClientId);
modphyReadFail = MODPHY_FAIL;
} else if ( (powerStateReq == MODPHY_POWER_STATE_COMMON_LANE) && (modphyClientStatusData[modphyClientId].commonLanePowerState == (ModphyKGPowerStates_e)MODPHY_POWER_STATE_COMMON_LANE) )
{
DPRINTK("\nInvalid Power transition Requested : Already in power gate common lane(PLL) state Client %d\n", modphyClientId);
modphyReadFail = MODPHY_FAIL;
}
}
else
{
DPRINTK("\nInvalid Parameters to powergate function: Lane %d, Client %d\n", lane, modphyClientId);
modphyReadFail = MODPHY_FAIL;
}
DPRINTK("\nEntering power gate function : lane = %d, clientId = %d, powerstateReq = %d\n", (unsigned int)lane, (unsigned int)modphyClientId, (unsigned int)powerStateReq);
if (modphyReadFail == MODPHY_FAIL) {
return MODPHY_FAIL;
}
switch(powerStateReq)
{
case MODPHY_POWER_STATE_ACTIVE :
{
/**** Exit common lane power gate state****/
if (modphyClientStatusData[modphyClientId].commonLanePowerState == MODPHY_KG_POWER_STATE_0_PLL_OFF)
{
if (lane != MODPHY_COMMON_LANE)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition can't power on client %d lane:%d, becouse common lane(PLL) is off!\n", modphyClientId, lane);
return MODPHY_FAIL;
}
if (modphyClientStatusData[modphyClientId].powerGateAccess.clanePowerGateAllowed)
{
return modphy_common_lane_bringup( modphyClientId );
}
}
/**** Exit from data lane rx standby state if so ****/
if ( modphyClientStatusData[modphyClientId].dataLanePowerState[lane] == MODPHY_KG_POWER_STATE_0_RXSTANDBY )
{
/* Read/Ensure current state is PS0. i_lane0_powerdown_sus (or lane 1) == 0 */
if ((powerState = IS_ENABLE_BIT_SET((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), I_LANE_POWERDOWN_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian)) != 0)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition power state for rx standby should be PS0 instead it is PS%d! (lane:%d, client %d)\n", powerState, lane, modphyClientId);
return MODPHY_FAIL;
}
/* Check that rxstandbyStatus == 1. (RX active) - o_lane0_standbystatus( or lane 1) == 1 */
if (IS_ENABLE_BIT_SET((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4)), O_LANE_RXSTANDBYSTATUS_H_MASK, modphyClientArray[modphyClientId].isBigEndian) == 0)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition rx standby for lane:%d, client %d is allready disabled(Rx is on)!\n", lane, modphyClientId);
return MODPHY_FAIL;
}
/* Set i_rxstandby = 0 */
SET_DISABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4), I_LANE_RXSTANDBY_H_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Check that rxstandbyStatus == 0 (RX off) - o_lane0_standbystatus( or lane 1) == 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_RXSTANDBYSTATUS_H_MASK, 0, 10, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition rx standby for lane:%d, modphyClientId %d was not disabled (Rx is still off)!\n", lane,modphyClientId);
return MODPHY_FAIL;
}
modphyClientStatusData[modphyClientId].dataLanePowerState[lane] = MODPHY_KG_POWER_STATE_0;
DPRINTK("\nClient = %d, Lane = %d POWERSTATE = 0x%08x \n", modphyClientId, lane, modphyClientStatusData[modphyClientId].dataLanePowerState[lane]);
return MODPHY_OK;
}
/**** Exit from data lane power gate state, if so ****/
SET_REGISTER(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4), 1, modphyClientArray[modphyClientId].isBigEndian); /*Takes the data lane out of reset.*/
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0 , MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Verify that the pipephystatus signal goes from high to low*/
{
modphyReadFail = MODPHY_FAIL;
printk(KERN_ERR "\nERROR modphy_lane_configure reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
}
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian); /*Clears the Status bit.*/
/* Check if Power gating is allowed by design for this client and this lane */
if ( !(modphyClientStatusData[modphyClientId].powerGateAccess.dlanePowerGateAllowed[lane]) )
{
DPRINTK("\nERROR modphy_lane_power_state_transition power gate not allowed for lane:%d, client %d\n", lane, modphyClientId);
return MODPHY_FAIL;
}
/* Set i_powerdown_sus[2:0]=0x2 */
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_KG_POWER_STATE_2, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
/* Read/Ensure o_phystatus = 1 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Wait 1 pclk 100 us should more than suffice. */
//udelay(100);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure o_phystatus = 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Set: i_lane0_txelecidle_h_sus = 0 */
SET_DISABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_TX_CONFIG_L0_OFFSET + (lane * 0x4), I_LANE_TXELECIDLE_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure o_lane0_rxelecidle_h_sus=0 . Instead wait 10 ms */
mdelay(10);
/* Set i_powerdown_sus[2:0] = 0x0 */
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), MODPHY_KG_POWER_STATE_0, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
/* Read/Ensure o_phystatus = 1 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Wait 1 pclk 100 us should more than suffice. */
//udelay(100);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure o_phystatus = 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
modphyClientStatusData[modphyClientId].dataLanePowerState[lane] = MODPHY_KG_POWER_STATE_0;
DPRINTK("\nClient = %d, Lane = %d POWERSTATE = 0x%08x \n", modphyClientId, lane, modphyClientStatusData[modphyClientId].dataLanePowerState[lane]);
}
break;
case MODPHY_POWER_STATE_POWERGATE :
{
/* Check if Power gating is allowed by design for this client and this lane */
if ( !(modphyClientStatusData[modphyClientId].powerGateAccess.dlanePowerGateAllowed[lane]) )
{
DPRINTK("\nERROR modphy_lane_power_state_transition power gate not allowed for lane:%d, client %d\n", lane, modphyClientId);
return MODPHY_FAIL;
}
/**** Entry into data lane power gate state ****/
/* Read/Ensure o_phystatus = 0 */
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian);
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '0')\n", lane);
return MODPHY_FAIL;
}
/* Set: i_lane0_txelecidle_h_sus=1 */
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_TX_CONFIG_L0_OFFSET + (lane * 0x4), I_LANE_TXELECIDLE_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure o_lane0_rxelecidle_h_sus=1 . Instead wait 10 ms */
mdelay(10);
/* Set i_powerdown_sus[2:0]=0x3 Can be 0x7 for SGMII */
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), modphyClientStatusData[modphyClientId].powerGateState, I_LANE_POWERDOWN_SUS0, 3, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
/* Read/Ensure o_phystatus = 1 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 1, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Wait 1 pclk 100 us should more than suffice. */
//udelay(100);
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure o_phystatus = 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Set i_lane0_soc2phy_pwrreq_h_sus=0 */
bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_CONFIG_OFFSET), 0, I_LANE_SOC2PHY_PWRREQ_H_SUS(lane), 1, modphyClientArray[modphyClientId].isBigEndian); /*P0s - Tx off operation*/
/* Read/Ensure o_lane_phy2soc_pwrack_h_sus = 0 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_COMMON_STATUS_OFFSET, O_LANE_PHY2SOC_PWRACK_H_SUS_MASK(lane), 0, MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
return MODPHY_FAIL;
}
/* Puts the DLANE back in reset.*/
SET_REGISTER(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONTROL_L0_OFFSET + (lane * 0x4), 0, modphyClientArray[modphyClientId].isBigEndian);
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, 0 , MODPHY_READ_BIT_TIMEOUT_USEC, modphyClientId)) == MODPHY_FAIL) /*Verify that the pipephystatus signal goes from high to low*/
{
modphyReadFail = MODPHY_FAIL;
printk(KERN_ERR "\nERROR modphy_lane_configure reading bit O_LANE_PIPEPHYSTATUS_SUS on lane:%d - WRONG VALUE (should be '1')\n", lane);
}
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_PIPEPHYSTATUS_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian);
modphyClientStatusData[modphyClientId].dataLanePowerState[lane] = modphyClientStatusData[modphyClientId].powerGateState;
DPRINTK("\nClient = %d, Lane = %d POWERSTATE = 0x%08x \n", modphyClientId, lane, modphyClientStatusData[modphyClientId].dataLanePowerState[lane]);
}
break;
case MODPHY_POWER_STATE_RXSTANDBY:
{
/* Check if Rx standby is allowed by design for this client and this lane */
if ( !(modphyClientStatusData[modphyClientId].powerGateAccess.rxStandbyAllowed) )
{
DPRINTK("\nERROR modphy_lane_power_state_transition rx standby not allowed for lane:%d, client %d\n", lane, modphyClientId);
return MODPHY_FAIL;
}
/* Set PHY MODE = SERDES - i_lane0_phymode_sus = 0 */
//bit_field32_set((Uint32 *)(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET), 4, I_LANE_PHYMODE_SUS, 3, modphyClientArray[modphyClientId].isBigEndian);
/* Read/Ensure current state is PS0. i_lane0_powerdown_sus (or lane 1) == 0 */
if ((powerState = IS_ENABLE_BIT_SET((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4)), I_LANE_POWERDOWN_SUS_MASK, modphyClientArray[modphyClientId].isBigEndian)) != 0)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition power state for rx standby should be PS0 instead it is PS%d! (lane:%d, client %d)\n", powerState, lane, modphyClientId);
return MODPHY_FAIL;
}
/* Check that rxstandbyStatus == 0. (RX active) - o_lane0_standbystatus( or lane 1) == 0 */
if (IS_ENABLE_BIT_SET((modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4)), O_LANE_RXSTANDBYSTATUS_H_MASK, modphyClientArray[modphyClientId].isBigEndian) != 0)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition rx standby for lane:%d, client %d is allready active(Rx is off)!\n", lane, modphyClientId);
return MODPHY_FAIL;
}
/* Set i_rxstandby = 1 */
SET_ENABLE_BIT(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_CONFIG_L0_OFFSET + (lane * 0x4), I_LANE_RXSTANDBY_H_MASK, modphyClientArray[modphyClientId].isBigEndian);
/* Wait 1-2 us : usleep(2) */
/* Check that rxstandbyStatus == 1 (RX off) - o_lane0_standbystatus( or lane 1) == 1 */
if ((modphy_read_wait_bit(modphyClientArray[modphyClientId].baseAddr + MODPHY_RX_STATUS_L0_OFFSET + (lane * 0x4), O_LANE_RXSTANDBYSTATUS_H_MASK, 1, 10, modphyClientId)) == MODPHY_FAIL)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition rx standby for lane:%d, client %d was not activated (Rx is still on)!\n", lane, modphyClientId);
return MODPHY_FAIL;
}
modphyClientStatusData[modphyClientId].dataLanePowerState[lane] = MODPHY_KG_POWER_STATE_0_RXSTANDBY;
DPRINTK("\nClient = %d, Lane = %d POWERSTATE = 0x%08x \n", modphyClientId, lane, modphyClientStatusData[modphyClientId].dataLanePowerState[lane]);
}
break;
case MODPHY_POWER_STATE_COMMON_LANE:
{
if (modphyClientStatusData[modphyClientId].maxLanes <= MODPHY_MAX_NUM_OF_LANES)
{
/**** Enter common lane power gate state if all data lanes for a modphy client is power gated ****/
for ( i = 0; i < modphyClientStatusData[modphyClientId].maxLanes && i < MODPHY_MAX_NUM_OF_LANES; i++)
{
alldataLanesinPowerGate &= (modphyClientStatusData[modphyClientId].dataLanePowerState[i] == modphyClientStatusData[modphyClientId].powerGateState);
if (!alldataLanesinPowerGate)
{
break;
}
}
} else {
printk(KERN_ERR"\nInvalid value for maxLanes (%d) for Client %d\n", modphyClientStatusData[modphyClientId].maxLanes, modphyClientId);
modphyReadFail = MODPHY_FAIL;
break;
}
if (!alldataLanesinPowerGate)
{
modphyReadFail = MODPHY_FAIL;
DPRINTK("\nERROR modphy_lane_power_state_transition common lane power gate for client %d can't be performed becouse lane:%d, is still powered on!\n", modphyClientId, i);
return MODPHY_FAIL;
}
if (modphyClientStatusData[modphyClientId].powerGateAccess.clanePowerGateAllowed)
{
modphyReadFail = modphy_common_lane_bringdown( modphyClientId );
}
}
break;
default :
{
DPRINTK("\n Wrong transition requested for modphy_lane_power_state_transition for Client = %d, Lane = %d\n", modphyClientId, lane);
modphyReadFail = MODPHY_FAIL;
}
break;
}
return modphyReadFail;
}
EXPORT_SYMBOL(modphy_lane_power_state_transition);
/*********************************************************************************************************/
/*! \fn int modphy_proc_dump_regs(char* buf, char **start, off_t offset, int count, int *eof, void *data)
*********************************************************************************************************
* \brief This function inits the modphy for a specific client.
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
int modphy_proc_dump_regs(char *buf, char **start, off_t offset, int count, int *eof, void *data)
{
int len = 0;
if (offset != 0)
{
return 0;
}
printk("modphy_proc_dump_regs :: \n");
/*MOCA*/
#if 0
len += sprintf(buf + len, "MODPHY_MOCA_CLIENT_ID:\n");
len += sprintf(buf + len, "MODPHY_COMMON_CONFIG_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_COMMON_CONFIG_OFFSET)));
len += sprintf(buf + len, "MODPHY_COMMON_STATUS_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_COMMON_STATUS_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_CONFIG_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_CONTROL_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_CONTROL_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_STATUS_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_RX_STATUS_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_TX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_MOCA_BASE + MODPHY_TX_CONFIG_L1_OFFSET)));
#endif
/*DOCSIS LEGACY*/
len += sprintf(buf + len, "\nMODPHY_DOCSIS_LEGACY_CLIENT_ID:\n");
len += sprintf(buf + len, "MODPHY_COMMON_CONFIG_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_COMMON_CONFIG_OFFSET)));
len += sprintf(buf + len, "MODPHY_COMMON_STATUS_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_COMMON_STATUS_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_CONFIG_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_CONTROL_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_CONTROL_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_STATUS_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_RX_STATUS_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_TX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE + MODPHY_TX_CONFIG_L1_OFFSET)));
/*DOCSIS OFDM*/
len += sprintf(buf + len, "\nMODPHY_DOCSIS_OFDM_CLIENT_ID:\n");
len += sprintf(buf + len, "MODPHY_COMMON_CONFIG_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_COMMON_CONFIG_OFFSET)));
len += sprintf(buf + len, "MODPHY_COMMON_STATUS_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_COMMON_STATUS_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONFIG_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L2_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONFIG_L2_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONTROL_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONTROL_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L2_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_CONTROL_L2_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_STATUS_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_STATUS_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L2_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_RX_STATUS_L2_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_TX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L1_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_TX_CONFIG_L1_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L2_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_DOCSIS_OFDM_BASE + MODPHY_TX_CONFIG_L2_OFFSET)));
#if 0
/*SGMII*/
len += sprintf(buf + len, "\nMODPHY_SGMII_CLIENT_ID:\n");
len += sprintf(buf + len, "MODPHY_COMMON_CONFIG_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_COMMON_CONFIG_OFFSET)));
len += sprintf(buf + len, "MODPHY_COMMON_STATUS_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_COMMON_STATUS_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_RX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_RX_CONTROL_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_RX_STATUS_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII_BASE + MODPHY_TX_CONFIG_L0_OFFSET)));
/*SGMII2*/
len += sprintf(buf + len, "\nMODPHY_SGMII2_CLIENT_ID:\n");
len += sprintf(buf + len, "MODPHY_COMMON_CONFIG_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_COMMON_CONFIG_OFFSET)));
len += sprintf(buf + len, "MODPHY_COMMON_STATUS_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_COMMON_STATUS_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_RX_CONFIG_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_CONTROL_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_RX_CONTROL_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_RX_STATUS_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_RX_STATUS_L0_OFFSET)));
len += sprintf(buf + len, "MODPHY_TX_CONFIG_L0_OFFSET = 0x%x\n", *((volatile unsigned int *)(AVALANCHE_MODPHY_SGMII2_BASE + MODPHY_TX_CONFIG_L0_OFFSET)));
#endif
*eof = 1;
return len;
}
/*********************************************************************************************************/
/*! \fn void modphy_init_client_array(void)
*********************************************************************************************************
* \brief This function inits the modphy for a specific client.
* \param[in] modphyClientId : Client ID
* \return MODPHY_OK if writing succeed otherwise MODPHY_FAIL
********************************************************************************************************/
void modphy_init_client_array(void)
{
modphyClientArray[MODPHY_MOCA_CLIENT_ID].iosfPort = MODPHY_MOCA_SB_PORT;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].iosfPort = MODPHY_DOCSIS_LEGACY_SB_PORT;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].iosfPort = MODPHY_DOCSIS_OFDM_SB_PORT;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].iosfPort = MODPHY_SGMII_1_SB_PORT;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].iosfPort = MODPHY_SGMII_2_SB_PORT;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].iosfPort = MODPHY_SGMII_1_SB_PORT;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].iosfPort = MODPHY_SGMII_2_SB_PORT;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].iosfPort = MODPHY_MOCA_SB_PORT;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].iosfPort = MODPHY_DOCSIS_LEGACY_SB_PORT;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].iosfPort = MODPHY_DOCSIS_OFDM_SB_PORT;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].modPhyType = MODPHY_TYPE_3_DOCSIS_P7_25MHz;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].modPhyType = MODPHY_TYPE_3_DOCSIS_P7_25MHz;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].modPhyType = MODPHY_TYPE_3_DOCSIS_P7_25MHz;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].modPhyType = MODPHY_TYPE_6_SGMII_1GB;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].modPhyType = MODPHY_TYPE_6_SGMII_1GB;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].modPhyType = MODPHY_TYPE_1_SGMII_2_5GB;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].modPhyType = MODPHY_TYPE_1_SGMII_2_5GB;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].modPhyType = MODPHY_TYPE_7_DOCSIS_P7_50MHz;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].modPhyType = MODPHY_TYPE_7_DOCSIS_P7_50MHz;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].modPhyType = MODPHY_TYPE_7_DOCSIS_P7_50MHz;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_MOCA_BASE;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_DOCSIS_OFDM_BASE;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_SGMII_BASE;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_SGMII2_BASE;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_SGMII_BASE;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_SGMII2_BASE;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_MOCA_BASE;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_DOCSIS_LEGACY_BASE;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].baseAddr = AVALANCHE_MODPHY_DOCSIS_OFDM_BASE;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].numOfLanes = MODPHY_MOCA_NUM_OF_LANES;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].numOfLanes = MODPHY_DOCSIS_LEGACY_NUM_OF_LANES;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].numOfLanes = MODPHY_DOCSIS_OFDM_NUM_OF_LANES;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].numOfLanes = MODPHY_SGMII_NUM_OF_LANES;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].numOfLanes = MODPHY_SGMII_NUM_OF_LANES;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].numOfLanes = MODPHY_SGMII_NUM_OF_LANES;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].numOfLanes = MODPHY_SGMII_NUM_OF_LANES;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].numOfLanes = MODPHY_MOCA_NUM_OF_LANES;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].numOfLanes = MODPHY_DOCSIS_LEGACY_NUM_OF_LANES;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].numOfLanes = MODPHY_DOCSIS_OFDM_NUM_OF_LANES;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x0;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x0;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x2000;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x0;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x2000;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x0;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x300;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].laneId[MODPHY_LANE_2] = 0x0;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_1] = 0x300;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].laneId[MODPHY_LANE_2] = 0x0;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].laneId[MODPHY_LANE_0] = 0x200;
modphyClientArray[MODPHY_MOCA_CLIENT_ID].isBigEndian = False;
modphyClientArray[MODPHY_DOCSIS_QAM_25MHZ_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_DOCSIS_OFDM_25MHZ_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_SGMII0_1G_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_SGMII1_1G_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_SGMII0_2_5G_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_SGMII1_2_5G_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_MOCA_50MHZ_CLIENT_ID].isBigEndian = False;
modphyClientArray[MODPHY_DOCSIS_QAM_50MHZ_CLIENT_ID].isBigEndian = True;
modphyClientArray[MODPHY_DOCSIS_OFDM_50MHZ_CLIENT_ID].isBigEndian = True;
modphyIsInitArrayDone = True;
}
/*********************************************************************************************************/
/*! \fn int modphy_read_wait_bit(unsigned int addr, int bit_mask, int expected_val, int timeout_usec, ModphyController_e modphyClientId)
*********************************************************************************************************
* \brief This function reads a specific bit, waiting for it to be expected_val
* \If the value doesn't match after timeout_usec, the function returns.
* \param[in] addr: Register address
* \param[in] bit_mask: The required bit (only 1 bit at a time!)
* \param[in] expected_val: The expected bit value
* \param[in] timeout_usec: Timeout in usec after which the function returns, regardless of the bit's value
* \return MODPHY_OK - if the value matched; MODPHY_FAIL - if the value didn't match
********************************************************************************************************/
int modphy_read_wait_bit(unsigned int addr, int bit_mask, int expected_val, int timeout_usec, ModphyController_e modphyClientId)
{
unsigned long waitingTimeInJiffies = 0;
waitingTimeInJiffies = jiffies + usecs_to_jiffies(timeout_usec);
do
{
if (0 == expected_val)
{
if (IS_ENABLE_BIT_SET(addr, bit_mask, modphyClientArray[modphyClientId].isBigEndian) == 0)
{
return MODPHY_OK;
}
} else
{
if (IS_ENABLE_BIT_SET(addr, bit_mask, modphyClientArray[modphyClientId].isBigEndian) != 0)
{
return MODPHY_OK;
}
}
udelay(5);
}while (time_after(waitingTimeInJiffies, jiffies));
/*Read again before return failure*/
if (0 == expected_val)
{
if (IS_ENABLE_BIT_SET(addr, bit_mask, modphyClientArray[modphyClientId].isBigEndian) == 0)
{
return MODPHY_OK;
}
} else
{
if (IS_ENABLE_BIT_SET(addr, bit_mask, modphyClientArray[modphyClientId].isBigEndian) != 0)
{
return MODPHY_OK;
}
}
return MODPHY_FAIL;
}
/**************************************************************************/
/*! \fn static long modphy_ioctl(struct file *fd, unsigned int cmd, unsigned long arg)
**************************************************************************
* \brief This function is called from the user space to oprate function in the driver.
* \param[in] fd - The character device of the modphy driver.
* \param[in] cmd - The wanted command.
* \param[in] arg - The arguments from and to the user space.
* \return MODPHY_OK = ok, MODPHY_FAIL = operation faild.
*************************************************************************/
static long modphy_ioctl(struct file *fd, unsigned int cmd, unsigned long arg)
{
ModphyController_e modphyClientId;
ModphyClient_t ModphyClient;
ModphyClientPowerGate_t ModphyClientPowerGate;
modphyClientKgregs_t usrKgregs;
modphyKgregs_t * kernKgregs;
unsigned kgregsBuffSize;
int ret = MODPHY_OK;
if (fd == NULL)
{
printk(KERN_ERR "\nMODPHY Error value\n");
return MODPHY_FAIL;
}
switch (cmd)
{
case MODPHY_SET_KGREGS:
{
if (copy_from_user(&usrKgregs, (void __user *)arg, sizeof(modphyClientKgregs_t)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
if (usrKgregs.clientId >= MODPHY_NUM_OF_CLIENTS)
{
printk(KERN_ERR"\n MODPHY invalid clientId=%d\n", usrKgregs.clientId);
return -EFAULT;
}
kernKgregs = &modphyClientArray[usrKgregs.clientId].usrKgregs;
if (kernKgregs->avps)
{
kfree(kernKgregs->avps);
kernKgregs->avps = 0;
kernKgregs->avpsCnt = 0;
}
kernKgregs->avpsCnt = usrKgregs.kgRegs.avpsCnt;
kgregsBuffSize = kernKgregs->avpsCnt * sizeof(*kernKgregs->avps);
if (kgregsBuffSize > KGREG_MAX_BUFF_SIZE)
{
printk(KERN_ERR"\n MODPHY failed cmd: %d buffer size from userspace too large: %d, max: %d\n", cmd, kgregsBuffSize, KGREG_MAX_BUFF_SIZE);
return -EINVAL;
}
if ((kernKgregs->avps = kmalloc(kgregsBuffSize, GFP_KERNEL)) == NULL)
{
printk(KERN_ERR"\n MODPHY failed to allocate memory\n");
return -EFAULT;
}
if (copy_from_user(kernKgregs->avps,
(void __user *) usrKgregs.kgRegs.avps,
kgregsBuffSize))
{
printk(KERN_ERR"\n MODPHY failed to copy KGREGS from user data. IOCTL=%d\n", cmd);
kfree(kernKgregs->avps);
kernKgregs->avps = 0;
kernKgregs->avpsCnt = 0;
return -EFAULT;
}
break;
}
case MODPHY_INIT:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_init(modphyClientId);
break;
}
case MODPHY_CFG:
{
if (copy_from_user(&ModphyClient, (void __user *)arg, sizeof(ModphyClient)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_lane_configure(ModphyClient.laneId, ModphyClient.clientId);
break;
}
case MODPHY_DISABLE_TX:
{
if (copy_from_user(&ModphyClient, (void __user *)arg, sizeof(ModphyClient)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_tx_disable(ModphyClient.laneId, ModphyClient.clientId);
break;
}
case MODPHY_GO2_FAST_RECOVERY:
{
if (copy_from_user(&ModphyClient, (void __user *)arg, sizeof(ModphyClient)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_go2_fast_recovery(ModphyClient.laneId, ModphyClient.clientId);
break;
}
case MODPHY_GO2_FULL_FUNCTIONAL:
{
if (copy_from_user(&ModphyClient, (void __user *)arg, sizeof(ModphyClient)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_go2_full_functonal(ModphyClient.laneId, ModphyClient.clientId);
break;
}
case MODPHY_COMMON_LANE_RESET:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_common_lane_reset(modphyClientId);
break;
}
case MODPHY_COMMON_LANE_INIT:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_common_lane_init(modphyClientId);
break;
}
case MODPHY_RESET_K_ALIGN:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_reset_k_align(modphyClientId);
break;
}
case MODPHY_RESET_LANE:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
modphy_reset_client(modphyClientId);
break;
}
case MODPHY_LANE_POWER_STATE_TRANSITION:
{
if (copy_from_user(&ModphyClientPowerGate, (void __user *)arg, sizeof(ModphyClientPowerGate_t)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_lane_power_state_transition(ModphyClientPowerGate.modphyClient.laneId,
ModphyClientPowerGate.modphyClient.clientId,
ModphyClientPowerGate.powerStateReq );
break;
}
case MODPHY_ASSERT_RESET:
{
if (copy_from_user(&modphyClientId, (void __user *)arg, sizeof(modphyClientId)))
{
printk(KERN_ERR"\n MODPHY failed to copy from user data. IOCTL=%d\n", cmd);
return -EFAULT;
}
ret = modphy_assert_reset_client(modphyClientId);
break;
}
default:
printk(KERN_ERR "%s:%d Invalid IOCTL(0x%08X) has been received \n", __FUNCTION__, __LINE__, cmd);
return -ENOTTY;
}
return ret;
}
/**************************************************************************/
/*! \fn static int __init modphy_drv_init(void)
**************************************************************************
* \brief driver init routine
* \param[in] none
* \return MODPHY_OK = ok, MODPHY_FAIL = operation faild.
*************************************************************************/
static int __init modphy_drv_init(void)
{
int ret;
struct device *dev_ret;
printk(KERN_INFO "MODPHY: Initializing Intel(R) MODPHY driver\n");
modphy_init_client_array();
/*Allocating the modphy_driver */
if ((ret = alloc_chrdev_region(&dev, 0, 1, MODPHY_NAME)) < 0)
{
printk(KERN_ERR "MODPHY: Failed alloc_chrdev_region\n");
return ret;
}
DPRINTK("MODPHY: alloc_chrdev_region - Done\n");
if (!(c_dev = cdev_alloc()))
{
printk(KERN_ERR "%s:%d Failed to allocate character device modphy_driver\n", __FUNCTION__, __LINE__);
unregister_chrdev_region(dev, MINOR_CNT);
return (-1);
}
DPRINTK("MODPHY: cdev_alloc - Done\n");
/* Init the driver */
cdev_init(c_dev, &modphy_drv_fops);
DPRINTK("MODPHY: cdev_init - Done\n");
if ((ret = cdev_add(c_dev, dev, MINOR_CNT)) < 0)
{
printk(KERN_ERR "%s:%d Failed to add character device modphy_driver\n", __FUNCTION__, __LINE__);
cdev_del(c_dev);
unregister_chrdev_region(dev, MINOR_CNT);
return ret;
}
DPRINTK("MODPHY: cdev_add - Done\n");
if (IS_ERR(cl = class_create(THIS_MODULE, MODPHY_NAME)))
{
printk(KERN_ERR "MODPHY: class_create -Fail\n");
cdev_del(c_dev);
unregister_chrdev_region(dev, MINOR_CNT);
return PTR_ERR(cl);
}
DPRINTK("MODPHY: class_create - Done\n");
if (IS_ERR(dev_ret = device_create(cl, NULL, dev, NULL, MODPHY_NAME)))
{
class_destroy(cl);
cdev_del(c_dev);
unregister_chrdev_region(dev, MINOR_CNT);
return PTR_ERR(dev_ret);
}
DPRINTK("MODPHY: Create device: /dev/%s\n", MODPHY_NAME);
#ifdef MODPHY_DEBUG
if (NULL == (proc_create("modphy_dump_regs", 0, NULL, modphy_proc_dump_regs))) //TBD BEN - Change proc_create to fit the new kernel
{
printk(KERN_ERR "%s:%d ERROR ....\n", __FUNCTION__, __LINE__);
device_destroy(cl, dev);
class_destroy(cl);
cdev_del(c_dev);
unregister_chrdev_region(dev, MINOR_CNT);
return -1;
}
#endif
#ifdef CONFIG_MRPC_HANDSHAKE_SERVER
boot_status_report(HANDSHAKE_ID_MODPHY);
#endif
return MODPHY_OK;
}
/**************************************************************************/
/*! \fn static void __exit modphy_drv_exit(void)
**************************************************************************
* \brief driver exit routine
* \param[in] none
* \return MODPHY_OK = ok, MODPHY_FAIL = operation faild.
*************************************************************************/
static void __exit modphy_drv_exit(void)
{
device_destroy(cl, dev);
class_destroy(cl);
cdev_del(c_dev);
unregister_chrdev_region(dev, MINOR_CNT);
}
subsys_initcall(modphy_drv_init);
module_exit(modphy_drv_exit);
/* Driver identification */
MODULE_DESCRIPTION("MODPHY Device Driver");
MODULE_LICENSE("GPL");