//------------------------------------------------------------------------------ // Function: I2C_WriteByte // Description: //------------------------------------------------------------------------------ void I2C_WriteByte(byte deviceID, byte offset, byte value) { int ret = 0; struct i2c_client* client_ptr = get_sii9234_client(deviceID); if(!client_ptr) { printk("[MHL]I2C_WriteByte error %x\n",deviceID); return; } EXIT_ON_CABLE_DISCONNECTION_V; if(deviceID == 0x72) ret = SII9234_i2c_write(client_ptr,offset,value); else if(deviceID == 0x7A) ret = SII9234_i2c_write(client_ptr,offset,value); else if(deviceID == 0x92) ret = SII9234_i2c_write(client_ptr,offset,value); else if(deviceID == 0xC8) ret = SII9234_i2c_write(client_ptr,offset,value); if (ret < 0) { printk("I2C_WriteByte: Device ID=0x%X, Err ret = %d \n", deviceID, ret); } }
void I2C_WriteByte(byte deviceID, byte offset, byte value) { if(deviceID == 0x72) SII9234_i2c_write(SII9234_i2c_client,offset,value); else if(deviceID == 0x7A) SII9234_i2c_write(SII9234A_i2c_client,offset,value); else if(deviceID == 0x92) SII9234_i2c_write(SII9234B_i2c_client,offset,value); else if(deviceID == 0xC8) SII9234_i2c_write(SII9234C_i2c_client,offset,value); else printk("[MHL]I2C_WriteByte error %x\n",deviceID); }
void sii9234_initial_registers_set(void) { SII_DEV_DBG(""); /* SII9234_i2c_write(SII9234_i2c_client, 0x05, 0x01); // Set SW reset //Power up SII9234_i2c_write(SII9234A_i2c_client, 0x3D, 0x3F); // Power up CVCC 1.2V core SII9234_i2c_write(SII9234B_i2c_client, 0x11, 0x01); // Enable TxPLL clock SII9234_i2c_write(SII9234B_i2c_client, 0x12, 0x15); // Enable Tx clock path & Equalizer SII9234_i2c_write(SII9234_i2c_client, 0x08, 0x35); // Power up TMDS TX core //Power up END //Analog PLL control SII9234_i2c_write(SII9234B_i2c_client, 0x17, 0x03); // PLL Calrefsel SII9234_i2c_write(SII9234B_i2c_client, 0x23, 0x6A); // Auto EQ SII9234_i2c_write(SII9234B_i2c_client, 0x24, 0xAA); // Auto EQ SII9234_i2c_write(SII9234B_i2c_client, 0x25, 0xCA); // Auto EQ SII9234_i2c_write(SII9234B_i2c_client, 0x26, 0xEA); // Auto EQ SII9234_i2c_write(SII9234B_i2c_client, 0x4C, 0xA0); // Manual zone control SII9234_i2c_write(SII9234B_i2c_client, 0x4D, 0x00); // Pll mode value SII9234_i2c_write(SII9234_i2c_client, 0x80, 0x14); // Enable Rx PLL clock SII9234_i2c_write(SII9234B_i2c_client, 0x45, 0x44); // Rx PLL BW value from I2C SII9234_i2c_write(SII9234_i2c_client, 0xA1, 0xFC); // Tx PLL full BW ~ 400KHz SII9234_i2c_write(SII9234_i2c_client, 0xA3, 0xFA); // Tx amplitude CLK: 500mV, Data: 800mV //Analog PLL control END //CBUS & Discovery SII9234_i2c_write(SII9234_i2c_client, 0x90, 0x17); // Enable CBUS discovery SII9234_i2c_write(SII9234_i2c_client, 0x94, 0x66); // 1.8V CBUS VTH & RGND threshold SII9234_i2c_write(SII9234_i2c_client, 0xA5, 0x1C); // RGND hysterisis SII9234_i2c_write(SII9234_i2c_client, 0x95, 0x21); // RGND & single discovery attempt SII9234_i2c_write(SII9234_i2c_client, 0x96, 0x22); // use 1K and 2K setting SII9234_i2c_write(SII9234_i2c_client, 0x92, 0x86); // MHL CBUS discovery //SII9234_i2c_write (0xC8, 0x07, 0xF6); // Increase DDC translation layer timer //SII9234_i2c_write (0xC8, 0x40, 0x02); // CBUS drive strength to 10 (0x2 value) //CBUS & Discovery END SII9234_i2c_write(SII9234_i2c_client, 0x0D, 0x1C); // Enable HDMI Trans-code mode & DDC port SII9234_i2c_write(SII9234_i2c_client, 0x05, 0x04); // Bring out of reset & Enable Auto Soft reset on SCDT = 0 SII9234_i2c_write(SII9234_i2c_client, 0x74, 0xFF); // Clear interrupts SII9234_i2c_write(SII9234_i2c_client, 0x78, 0x00); // Disable Interrupts SII9234_i2c_write(SII9234_i2c_client, 0xC7, 0x00); // HW TPI mode SII9234_i2c_write(SII9234_i2c_client, 0x1A, 0x00); // Enable TMDS output SII9234_i2c_write(SII9234_i2c_client, 0x1E, 0x00); // Put device in Active mode SII9234_i2c_write(SII9234_i2c_client, 0x3C, 0x03); // Interrupt Status Setup RSEN and HPD */ //u8 data; // Power Up SII9234_i2c_write(SII9234A_i2c_client, 0x3D, 0x3F); // Power up CVCC 1.2V core SII9234_i2c_write(SII9234B_i2c_client, 0x11, 0x01); // Enable TxPLL Clock SII9234_i2c_write(SII9234B_i2c_client, 0x12, 0x15); // Enable Tx Clock Path & Equalizer SII9234_i2c_write(SII9234_i2c_client, 0x08, 0x35); // Power Up TMDS Tx Core SII9234_i2c_write(SII9234B_i2c_client, 0x17, 0x03); SII9234_i2c_write(SII9234B_i2c_client, 0x1A, 0x20); SII9234_i2c_write(SII9234B_i2c_client, 0x22, 0x8A); SII9234_i2c_write(SII9234B_i2c_client, 0x23, 0x6A); SII9234_i2c_write(SII9234B_i2c_client, 0x24, 0xAA); SII9234_i2c_write(SII9234B_i2c_client, 0x29, 0xCA); SII9234_i2c_write(SII9234B_i2c_client, 0x26, 0xEA); SII9234_i2c_write(SII9234B_i2c_client, 0x4C, 0xA0); SII9234_i2c_write(SII9234B_i2c_client, 0x4D, 0x00); SII9234_i2c_write(SII9234_i2c_client, 0x80, 0x14); // Enable Rx PLL Clock Value SII9234_i2c_write(SII9234B_i2c_client, 0x45, 0x44); SII9234_i2c_write(SII9234B_i2c_client, 0x31, 0x0A); //SII9234_i2c_write(SII9234_i2c_client, 0xA0, 0xD0); SII9234_i2c_write(SII9234_i2c_client, 0xA1, 0xFC); SII9234_i2c_write(SII9234_i2c_client, 0xA3, 0xFA); SII9234_i2c_write(SII9234_i2c_client, 0x2B, 0x01); SII9234_i2c_write(SII9234_i2c_client, 0x91, 0xE5); SII9234_i2c_write(SII9234_i2c_client, 0xA5, 0x00); SII9234_i2c_write(SII9234_i2c_client, 0x90, 0x27); // Enable CBUS discovery SII9234_i2c_write(SII9234_i2c_client, 0x05, 0x04); SII9234_i2c_write(SII9234_i2c_client, 0x0D, 0x1C); // HDMI Transcode mode enable /* SII9234_i2c_read(SII9234A_i2c_client, 0x3D, &data); printk("SII9234_i2c_read A 0x3D: 0x%02x\n", data); SII9234_i2c_read(SII9234B_i2c_client, 0x11, &data); printk("SII9234_i2c_read B 0x11: 0x%02x\n", data); SII9234_i2c_read(SII9234B_i2c_client, 0x12, &data); printk("SII9234_i2c_read B 0x12: 0x%02x\n", data); SII9234_i2c_read(SII9234_i2c_client, 0x08, &data); printk("SII9234_i2c_read 0x08: 0x%02x\n", data); SII9234_i2c_read(SII9234_i2c_client, 0x80, &data); printk("SII9234_i2c_read 0x80: 0x%02x\n", data); SII9234_i2c_read(SII9234_i2c_client, 0x90, &data); printk("SII9234_i2c_read 0x90: 0x%02x\n", data); SII9234_i2c_read(SII9234_i2c_client, 0x0D, &data); printk("SII9234_i2c_read 0x0D: 0x%02x\n", data); */ }
void WriteByteTPI (u8 Offset, u8 Data) { SII9234_i2c_write(SII9234_i2c_client, Offset, Data); }