Tool/software: Linux
Hi ,
We have DS90UB954-EVM & DS90UB953 for developing the SerDes solution and successfully implemented on our platform. Currently,we want to use 4-port solution DS90UB960 to replace DS90UB954,but experience the no signal output from 960. I have check the datasheet of 954 and 960,the register settings are the same if just want to use one port(Port 1) for the test. So I am wondering if there is any settings different from 954? Attached the DS90UB954 settings. Thanks.
regards,
Sean
void DS90UB954_setup(void)
{
struct i2c_client * ds90ub954_client;
struct i2c_adapter * ds90ub954_adap = i2c_get_adapter(TI_I2C_BUS_NUM); // 2 means i2c-2 bus
ds90ub954_client = i2c_new_dummy (ds90ub954_adap, 0x3d); // 0x40 - slave address on i2c bus
//select PORT0
i2c_smbus_write_byte_data(ds90ub954_client, 0x4c,0x01);
//disable link parity error
i2c_smbus_write_byte_data(ds90ub954_client, 0xb6,0x18);
//disable DISABLE_DCA_CRC
i2c_smbus_write_byte_data(ds90ub954_client, 0xba,0x83);
//TRF Control Setting to 0x3f
i2c_smbus_write_byte_data(ds90ub954_client, 0xb0,0x04); //CH0:04,CH1:08,CH2:0C,CH3:10
i2c_smbus_write_byte_data(ds90ub954_client, 0xb1,0x04); // TRF(STP)
i2c_smbus_write_byte_data(ds90ub954_client, 0xb2,0x3f); // from 00 to 3f
i2c_smbus_write_byte_data(ds90ub954_client, 0xb1,0x14); // TRF(COAX)
i2c_smbus_write_byte_data(ds90ub954_client, 0xb2,0x3f); // from 00 to 3f
//adjust EQ default settings to 0x20
i2c_smbus_write_byte_data(ds90ub954_client, 0xb0,0x04); //CH0:04,CH1:08,CH2:0C,CH3:10
i2c_smbus_write_byte_data(ds90ub954_client, 0xb1,0x0e); //
i2c_smbus_write_byte_data(ds90ub954_client, 0xb2,0x20); // from 00 to 7
//adjust EQ Floor default settings to Min, 0xf0
i2c_smbus_write_byte_data(ds90ub954_client, 0xd5,0xf0); // set to minimum
//adjust adaptive S-Filter default settings
i2c_smbus_write_byte_data(ds90ub954_client, 0x40,0x00); //adjust adaptive EQ to Dynamic S-Filter 0x40=0x00
i2c_smbus_write_byte_data(ds90ub954_client, 0x42,0x71); //disable default 2-step adaptation
i2c_smbus_write_byte_data(ds90ub954_client, 0x41,0xe0); //set S-Filter range to Min and Max 0x41=0xe0
i2c_unregister_device(ds90ub954_client);
}
void DS90UB954_CSI_enable(void)
{
struct i2c_client * ds90ub954_client;
struct i2c_adapter * ds90ub954_adap = i2c_get_adapter(TI_I2C_BUS_NUM); // 2 means i2c-2 bus
ds90ub954_client = i2c_new_dummy (ds90ub954_adap, 0x3d); // 0x40 - slave address on i2c bus
i2c_smbus_write_byte_data(ds90ub954_client, 0x33,0x23); //Set CSI_EN and set to continuous clock mode,2 lanes
msleep(500);
i2c_smbus_write_byte_data(ds90ub954_client, 0x20,0x20); //Set forwarding of RX port 0 to CSI output
msleep(500);
//Set up Back Channel Config (0x58)
i2c_smbus_write_byte_data(ds90ub954_client, 0x58,0x9e); //0xbe
//Set up Ser Alias ID
i2c_smbus_write_byte_data(ds90ub954_client, 0x5b,0x30); //The ID of 953 is 0x18 (7-bit address)
i2c_smbus_write_byte_data(ds90ub954_client, 0x5c,0x30); //The ID of 953 is 0x18 (7-bit address)
//set up Slave/Camera ID
i2c_smbus_write_byte_data(ds90ub954_client, 0x5d,0xd8); //camera id is 0xd8 (8-bit address)
//i2c_smbus_write_byte_data(ds90ub954_client, 0x5d,0x30); //camera id is 0xd8 (8-bit address)
//set up Slave/Camera ID
i2c_smbus_write_byte_data(ds90ub954_client, 0x65,0xd8); //camera id is 0x6c (7-bit address)
//i2c_smbus_write_byte_data(ds90ub954_client, 0x65,0x30); //camera id is 0xd8 (8-bit address)
i2c_unregister_device(ds90ub954_client);
}