summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbcm4329.kobin263236 -> 258840 bytes
-rwxr-xr-xinit.herring.rc4
-rwxr-xr-xkernelbin2403024 -> 2837932 bytes
-rwxr-xr-xlibaudio/AudioHardwareALSA.cpp91
-rwxr-xr-xlibaudio/AudioHardwareALSA.h4
-rw-r--r--liboverlay/overlay.cpp7
-rw-r--r--libsensors/sensors.cpp10
7 files changed, 89 insertions, 27 deletions
diff --git a/bcm4329.ko b/bcm4329.ko
index 28ce8d1..0d592e2 100755
--- a/bcm4329.ko
+++ b/bcm4329.ko
Binary files differ
diff --git a/init.herring.rc b/init.herring.rc
index a029716..944151e 100755
--- a/init.herring.rc
+++ b/init.herring.rc
@@ -19,6 +19,10 @@ on boot
# phone
setprop ro.telephony.call_ring.multiple 0
+# change permission for uart_switch
+ chown radio radio /sys/class/sec/uart_switch/UART_SEL/value
+ chmod 660 /sys/class/sec/uart_switch/UART_SEL/value
+
# create data/gps for GPS demon
mkdir /data/gps 700 gps system
chown gps system /data/gps
diff --git a/kernel b/kernel
index f4649c9..2e269d7 100755
--- a/kernel
+++ b/kernel
Binary files differ
diff --git a/libaudio/AudioHardwareALSA.cpp b/libaudio/AudioHardwareALSA.cpp
index 4df3c42..db2a767 100755
--- a/libaudio/AudioHardwareALSA.cpp
+++ b/libaudio/AudioHardwareALSA.cpp
@@ -210,7 +210,8 @@ AudioHardwareALSA::AudioHardwareALSA() :
mSecRilLibHandle(NULL),
mRilClient(0),
mVrModeEnabled(false),
- mActivatedCP(false)
+ mActivatedCP(false),
+ mBluetoothECOff(false)
{
snd_lib_error_set_handler(&ALSAErrorHandler);
mMixer = new ALSAMixer;
@@ -539,8 +540,11 @@ status_t AudioHardwareALSA::doRouting_l(uint32_t device, bool force)
case AudioSystem::ROUTE_BLUETOOTH_SCO:
case AudioSystem::ROUTE_BLUETOOTH_SCO_HEADSET:
case AudioSystem::ROUTE_BLUETOOTH_SCO_CARKIT:
- LOGI("### incall mode bluetooth route");
- setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH);
+ LOGI("### incall mode bluetooth route %s NR", mBluetoothECOff ? "NO" : "");
+ if (mBluetoothECOff)
+ setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH_NO_NR);
+ else
+ setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH);
break;
case AudioSystem::ROUTE_HEADSET :
@@ -562,21 +566,6 @@ status_t AudioHardwareALSA::doRouting_l(uint32_t device, bool force)
ret = mOutput->setDevice(mode, device, PLAYBACK, force);
- if (mSecRilLibHandle && (connectRILDIfRequired() == OK) ) {
- if (AudioSystem::MODE_IN_CALL == mode) {
- if (!mActivatedCP) {
- setCallClockSync(mRilClient, SOUND_CLOCK_START);
- mActivatedCP = true;
- }
- }
-
- if (AudioSystem::MODE_NORMAL == mode) {
- if(mActivatedCP)
- mActivatedCP = false;
- }
- }
-
-
return ret;
}
@@ -665,6 +654,14 @@ status_t AudioHardwareALSA::setMode(int mode)
status_t status = AudioHardwareBase::setMode(mode);
LOGV("setMode() : new %d, old %d", mMode, prevMode);
if (status == NO_ERROR) {
+ if ( (mMode == AudioSystem::MODE_RINGTONE) || (mMode == AudioSystem::MODE_IN_CALL) )
+ {
+ if ( (!mActivatedCP) && (mSecRilLibHandle) && (connectRILDIfRequired() == OK) ) {
+ setCallClockSync(mRilClient, SOUND_CLOCK_START);
+ mActivatedCP = true;
+ }
+ }
+
// make sure that doAudioRouteOrMute() is called by doRouting()
// when entering or exiting in call mode even if the new device
// selected is the same as current one.
@@ -680,6 +677,11 @@ status_t AudioHardwareALSA::setMode(int mode)
mOutput->close();
}
}
+
+ if (mMode == AudioSystem::MODE_NORMAL) {
+ if(mActivatedCP)
+ mActivatedCP = false;
+ }
}
return status;
@@ -705,6 +707,54 @@ int AudioHardwareALSA::setVoiceRecordGain_l(bool enable)
return NO_ERROR;
}
+status_t AudioHardwareALSA::setParameters(const String8& keyValuePairs)
+{
+ AudioParameter param = AudioParameter(keyValuePairs);
+ String8 bt_nrec_key = String8("bt_headset_nrec");
+ String8 value;
+
+ LOGV("setParameters(%s)", keyValuePairs.string());
+
+ if (param.get(bt_nrec_key, value) == NO_ERROR) {
+ setBluetoothNrEcOnOff((value == "on") ? false : true);
+ }
+
+ return NO_ERROR;
+}
+
+void AudioHardwareALSA::setBluetoothNrEcOnOff(bool disable)
+{
+ LOGV("setBluetoothNrEcOnOff(%s)", disable ? "true" : "false");
+
+ if (disable != mBluetoothECOff)
+ {
+ mBluetoothECOff = disable;
+
+ if ( (mOutput) && (AudioSystem::MODE_IN_CALL == mMode) &&
+ (mSecRilLibHandle) && (connectRILDIfRequired() == OK)) {
+
+ uint32_t device = mOutput->device();
+
+ switch (device) {
+ case AudioSystem::ROUTE_BLUETOOTH_SCO:
+ case AudioSystem::ROUTE_BLUETOOTH_SCO_HEADSET:
+ case AudioSystem::ROUTE_BLUETOOTH_SCO_CARKIT:
+ LOGV("### incall mode bluetooth EC %s route", mBluetoothECOff ? "OFF" : "ON");
+ if (mBluetoothECOff)
+ setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH_NO_NR);
+ else
+ setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH);
+ break;
+
+ default :
+ LOGE("Bluetooth path is not activated!!");
+ break;
+ }
+ }
+ }
+}
+
+
// ----------------------------------------------------------------------------
ALSAStreamOps::ALSAStreamOps() :
@@ -1627,6 +1677,7 @@ ssize_t AudioStreamInALSA::read(void *buffer, ssize_t bytes)
} else {
n = status;
}
+ frames = snd_pcm_bytes_to_frames(mHandle, bytes);
} else {
n = frames;
}
@@ -1736,7 +1787,7 @@ status_t AudioStreamInALSA::getNextBuffer(ALSABufferProvider::Buffer* buffer)
(uint8_t *)mPcmIn +
(mInPcmInBuf * mDefaults->channelCount * sizeof(int16_t)),
PERIOD_SZ_CAPTURE - mInPcmInBuf);
- if (mReadStatus <= 0) {
+ if (mReadStatus < 0) {
buffer->raw = NULL;
buffer->frameCount = 0;
LOGV("resampler read error %d", mReadStatus);
@@ -2452,7 +2503,7 @@ int ALSADownsampler::resample(int16_t* out, size_t *outFrameCount)
}
if (out == NULL || outFrameCount == NULL) {
- return mStatus;
+ return BAD_VALUE;
}
int16_t *outLeft = mTmp2Left;
diff --git a/libaudio/AudioHardwareALSA.h b/libaudio/AudioHardwareALSA.h
index eac7b7a..c3b6caa 100755
--- a/libaudio/AudioHardwareALSA.h
+++ b/libaudio/AudioHardwareALSA.h
@@ -350,6 +350,8 @@ namespace android
int setVoiceRecordGain(bool enable);
int setVoiceRecordGain_l(bool enable);
+ virtual status_t setParameters(const String8& keyValuePairs);
+
protected:
/**
* doRouting actually initiates the routing. A call to setRouting
@@ -375,6 +377,7 @@ namespace android
HRilClient mRilClient;
bool mVrModeEnabled;
bool mActivatedCP;
+ bool mBluetoothECOff;
HRilClient (*openClientRILD) (void);
int (*disconnectRILD) (HRilClient);
@@ -387,6 +390,7 @@ namespace android
void loadRILD(void);
status_t connectRILDIfRequired(void);
+ void setBluetoothNrEcOnOff(bool disable);
};
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp
index 73c3501..12b747f 100644
--- a/liboverlay/overlay.cpp
+++ b/liboverlay/overlay.cpp
@@ -802,13 +802,16 @@ static int overlay_setParameter(struct overlay_control_device_t *dev,
stage->rotation = 0;
stage->flip = V4L2_CID_VFLIP;
break;
+ /*
+ * FIMC rotates first. but android devices flip first.
+ */
case OVERLAY_TRANSFORM_ROT_90+OVERLAY_TRANSFORM_FLIP_H:
stage->rotation = 90;
- stage->flip = V4L2_CID_HFLIP;
+ stage->flip = V4L2_CID_VFLIP;
break;
case OVERLAY_TRANSFORM_ROT_90+OVERLAY_TRANSFORM_FLIP_V:
stage->rotation = 90;
- stage->flip = V4L2_CID_VFLIP;
+ stage->flip = V4L2_CID_HFLIP;
break;
default:
diff --git a/libsensors/sensors.cpp b/libsensors/sensors.cpp
index 6f77007..7f342d0 100644
--- a/libsensors/sensors.cpp
+++ b/libsensors/sensors.cpp
@@ -70,11 +70,11 @@ static const struct sensor_t sSensorList[] = {
{ "KR3DM 3-axis Accelerometer",
"STMicroelectronics",
1, SENSORS_ACCELERATION_HANDLE,
- SENSOR_TYPE_ACCELEROMETER, 4.0f, 1.0f/720.0f, 1.0f, 0, { } },
+ SENSOR_TYPE_ACCELEROMETER, 2*GRAVITY_EARTH, (2*GRAVITY_EARTH)/(256*8), 0.23f, 0, { } },
{ "AK8973 3-axis Magnetic field sensor",
"Asahi Kasei Microdevices",
1, SENSORS_MAGNETIC_FIELD_HANDLE,
- SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, 1.0f, 6.8f, 0, { } },
+ SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, 1.0f/256, 6.8f, 0, { } },
{ "AK8973 Orientation sensor",
"Asahi Kasei Microdevices",
1, SENSORS_ORIENTATION_HANDLE,
@@ -82,15 +82,15 @@ static const struct sensor_t sSensorList[] = {
{ "GP2A Light sensor",
"Sharp",
1, SENSORS_LIGHT_HANDLE,
- SENSOR_TYPE_LIGHT, 1.0, 1, 20, 0, { } },
+ SENSOR_TYPE_LIGHT, 3000.0f, 1.0f, 0.75f, 0, { } },
{ "GP2A Proximity sensor",
"Sharp",
1, SENSORS_PROXIMITY_HANDLE,
- SENSOR_TYPE_PROXIMITY, 1.0, 1, 20, 0, { } },
+ SENSOR_TYPE_PROXIMITY, 5.0f, 5.0f, 0.75f, 0, { } },
{ "K3G Gyroscope sensor",
"STMicroelectronics",
1, SENSORS_GYROSCOPE_HANDLE,
- SENSOR_TYPE_GYROSCOPE, 1.0, 1, 20, 0, { } },
+ SENSOR_TYPE_GYROSCOPE, 2000*M_PI/180.0f, (70.0f/1000.0f)*((float)M_PI/180.0f), 6.1f, 0, { } },
};