bool SetConnectionState(uint32 ConnectionState, uint32 Input, uint32 Output) { /* printk("SetinputConnection ConnectionState = %d Input = %d Output = %d\n", ConnectionState, Input, Output); */ int connectReg = 0; switch (ConnectionState) { case Soc_Aud_InterCon_DisConnect: { /* printk("nConnectionState = %d\n", ConnectionState); */ if ((mConnectionState[Input][Output] & Soc_Aud_InterCon_Connection) == Soc_Aud_InterCon_Connection) { /* here to disconnect connect bits */ connectReg = mConnectionReg[Output]; if (CheckBitsandReg(connectReg, Input)) { Afe_Set_Reg(connectReg, 0, 1 << Input); mConnectionState[Input][Output] &= ~(Soc_Aud_InterCon_Connection); } } if ((mConnectionState[Input][Output] & Soc_Aud_InterCon_ConnectionShift) == Soc_Aud_InterCon_ConnectionShift) { /* here to disconnect connect shift bits */ if (CheckBitsandReg(AFE_CONN_RS, Input)) { Afe_Set_Reg(AFE_CONN_RS, 0, 1 << Input); mConnectionState[Input][Output] &= ~(Soc_Aud_InterCon_ConnectionShift); } } break; } case Soc_Aud_InterCon_Connection: { /* printk("nConnectionState = %d\n", ConnectionState); */ connectReg = mConnectionReg[Output]; if (CheckBitsandReg(connectReg, Input)) { Afe_Set_Reg(connectReg, 1 << Input, 1 << Input); mConnectionState[Input][Output] |= Soc_Aud_InterCon_Connection; } break; } case Soc_Aud_InterCon_ConnectionShift: { /* printk("nConnectionState = %d\n", ConnectionState); */ if (CheckBitsandReg(AFE_CONN_RS, Input)) { Afe_Set_Reg(AFE_CONN_RS, 1 << Input, 1 << Input); mConnectionState[Input][Output] |= Soc_Aud_InterCon_ConnectionShift; } break; } default: pr_err("no this state ConnectionState = %d\n", ConnectionState); break; } return true; }
bool SetConnectionState(uint32 ConnectionState, uint32 Input, uint32 Output) { //printk("SetinputConnection ConnectionState = %d Input = %d Output = %d\n", ConnectionState, Input, Output); if ((mConnectionTable[Input][Output]) < 0) { printk("no connection mpConnectionTable[%d][%d] = %d\n", Input, Output, mConnectionTable[Input][Output]); } else if ((mConnectionTable[Input][Output]) == 0) { printk("test only !! mpConnectionTable[%d][%d] = %d\n", Input, Output, mConnectionTable[Input][Output]); } else { if (mConnectionTable[Input][Output]) { int connectionBits = 0; int connectReg = 0; switch (ConnectionState) { case Soc_Aud_InterCon_DisConnect: { //printk("nConnectionState = %d \n", ConnectionState); if ((mConnectionState[Input][Output]&Soc_Aud_InterCon_Connection) == Soc_Aud_InterCon_Connection) { // here to disconnect connect bits connectionBits = mConnectionbits[Input][Output]; connectReg = mConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { Afe_Set_Reg(connectReg, 0 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] &= ~(Soc_Aud_InterCon_Connection); } } if ((mConnectionState[Input][Output]&Soc_Aud_InterCon_ConnectionShift) == Soc_Aud_InterCon_ConnectionShift) { // here to disconnect connect shift bits connectionBits = mShiftConnectionbits[Input][Output]; connectReg = mShiftConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { Afe_Set_Reg(connectReg, 0 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] &= ~(Soc_Aud_InterCon_ConnectionShift); } } break; } case Soc_Aud_InterCon_Connection: { //printk("nConnectionState = %d \n", ConnectionState); // here to disconnect connect shift bits connectionBits = mConnectionbits[Input][Output]; connectReg = mConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { Afe_Set_Reg(connectReg, 1 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] |= Soc_Aud_InterCon_Connection; } break; } case Soc_Aud_InterCon_ConnectionShift: { //printk("nConnectionState = %d \n", ConnectionState); if ((mConnectionTable[Input][Output]&Soc_Aud_InterCon_ConnectionShift) != Soc_Aud_InterCon_ConnectionShift) { printk("donn't support shift opeartion"); break; } connectionBits = mShiftConnectionbits[Input][Output]; connectReg = mShiftConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { Afe_Set_Reg(connectReg, 1 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] |= Soc_Aud_InterCon_ConnectionShift; } break; } default: printk("no this state ConnectionState = %d \n", ConnectionState); break; } } } return true; }
status_t AudioInterConnection::SetinputConnection(uint32 ConnectionState, uint32 Input, uint32 Output) { ALOGD("SetinputConnection ConnectionState = %d Input = %d Output = %d\n", ConnectionState, Input, Output); if ((mConnectionTable[Input][Output]) < 0) { ALOGD("no connection mpConnectionTable[%d][%d] = %d\n", Input, Output, mConnectionTable[Input][Output]); } else if ((mConnectionTable[Input][Output]) == 0) { ALOGD("test only !! mpConnectionTable[%d][%d] = %d\n", Input, Output, mConnectionTable[Input][Output]); } else { if (mConnectionTable[Input][Output]) { int connectionBits = 0; int connectReg = 0; switch (ConnectionState) { case (int)AudioDigitalType::DisConnect: { ALOGD("nConnectionState = %d \n", ConnectionState); if ((mConnectionState[Input][Output]&AudioDigitalType::Connection) == AudioDigitalType::Connection) { // here to disconnect connect bits connectionBits = mConnectionbits[Input][Output]; connectReg = mConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { mAduioAfeInstanse->SetAfeReg(connectReg, 0 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] &= ~(AudioDigitalType::Connection); } } if ((mConnectionState[Input][Output]&AudioDigitalType::ConnectionShift) == AudioDigitalType::ConnectionShift) { // here to disconnect connect shift bits connectionBits = mShiftConnectionbits[Input][Output]; connectReg = mShiftConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { mAduioAfeInstanse->SetAfeReg(connectReg, 0 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] &= ~(AudioDigitalType::ConnectionShift); } } break; } case (int)AudioDigitalType::Connection: { ALOGD("nConnectionState = %d \n", ConnectionState); // here to disconnect connect shift bits connectionBits = mConnectionbits[Input][Output]; connectReg = mConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { mAduioAfeInstanse->SetAfeReg(connectReg, 1 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] |= AudioDigitalType::Connection; } break; } case (int)AudioDigitalType::ConnectionShift: { ALOGD("nConnectionState = %d \n", ConnectionState); if ((mConnectionTable[Input][Output]&AudioDigitalType::ConnectionShift) != AudioDigitalType::ConnectionShift) { ALOGD("donn't support shift opeartion"); break; } connectionBits = mShiftConnectionbits[Input][Output]; connectReg = mShiftConnectionReg[Input][Output]; if (CheckBitsandReg(connectReg, connectionBits)) { mAduioAfeInstanse->SetAfeReg(connectReg, 1 << connectionBits, 1 << connectionBits); mConnectionState[Input][Output] |= AudioDigitalType::ConnectionShift; } break; } default: ALOGD("no this state ConnectionState = %d \n", ConnectionState); break; } } } return NO_ERROR; }