aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Malmborn <magnus.malmborn@stericsson.com>2010-06-11 14:38:13 +0200
committerJohn Rigby <john.rigby@linaro.org>2010-09-02 22:45:42 -0600
commit8eba235f737a41b41f0cd5e5cf60c3aef1261eff (patch)
treeb3789e632aed83d09cd101438083e802b4650161
parent6393ee3ef34f7be13d703370cba2273bc634d0f3 (diff)
downloadlinux-2.6.34-ux500-8eba235f737a41b41f0cd5e5cf60c3aef1261eff.tar.gz
STE_CONN: Update CG2900 ssf-file and firmware
Updates the static settings and firmware for the CG2900 multi-function connectivity chip. The new ssf is based on the reference file V11 and adds correct settings for FM and BT-SCO audio in the U8500 platform. ST-Ericsson ID: 263723 Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Change-Id: Ia942a2c55de31e2cc4eb755eae9033e80bd6a0ae Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2535 Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
-rw-r--r--drivers/mfd/ste_conn/ste_cg2900.c185
-rwxr-xr-xfirmware/CG2900_1_05_SOC_generic_V11_mod.fw.orgbin0 -> 944 bytes
-rwxr-xr-xfirmware/CG2900_1_05_V5_FMoI2S.fw.orgbin369 -> 0 bytes
-rwxr-xr-xfirmware/CG2900_1_0C4_1C1.fw.orgbin6904 -> 0 bytes
-rwxr-xr-xfirmware/CG2900_1_0C4_1C5.fw.orgbin0 -> 10884 bytes
-rw-r--r--firmware/Makefile3
-rwxr-xr-xfirmware/STLC2600_R7_00_01.fw.orgbin363 -> 0 bytes
-rwxr-xr-xfirmware/STLC2690_R7_00_A1_E5.fw.orgbin6384 -> 0 bytes
-rwxr-xr-xfirmware/ste_conn_patch_info.fw.org9
-rwxr-xr-xfirmware/ste_conn_settings_info.fw.org11
10 files changed, 4 insertions, 204 deletions
diff --git a/drivers/mfd/ste_conn/ste_cg2900.c b/drivers/mfd/ste_conn/ste_cg2900.c
index f9795d3187f..9e827a678cd 100644
--- a/drivers/mfd/ste_conn/ste_cg2900.c
+++ b/drivers/mfd/ste_conn/ste_cg2900.c
@@ -38,9 +38,6 @@
#include "ste_conn_ccd.h"
#include "ste_conn_debug.h"
-/* ENABLE_SYS_CLK_OUT - Enable system clock out on chip */
-#define ENABLE_SYS_CLK_OUT
-
#define CG2900_LINE_BUFFER_LENGTH 128
#define CG2900_FILENAME_MAX 128
@@ -321,44 +318,6 @@ static const uint8_t cg2900_msg_vs_system_reset_cmd_req[] = {
0x00
};
-#ifdef ENABLE_SYS_CLK_OUT
-/*
- * cg2900_msg_read_register_0x40014004 -
- * Hardcoded HCI Read_Register 0x40014004
- */
-static const uint8_t cg2900_msg_read_register_0x40014004[] = {
- 0x00, /* Reserved for H4 channel*/
- HCI_BT_MAKE_FIRST_BYTE_IN_CMD(CG2900_BT_OCF_VS_READ_REGISTER),
- HCI_BT_MAKE_SECOND_BYTE_IN_CMD(HCI_BT_OGF_VS, CG2900_BT_OCF_VS_READ_REGISTER),
- 0x05, /* HCI command length. */
- 0x01, /* Register type = 32-bit*/
- 0X04, /* Memory address byte 1*/
- 0X40, /* Memory address byte 2*/
- 0X01, /* Memory address byte 3*/
- 0X40 /* Memory address byte 4*/
-};
-
-/*
- * cg2900_msg_write_register_0x40014004 -
- * Hardcoded HCI Write_Register 0x40014004
- */
-static const uint8_t cg2900_msg_write_register_0x40014004[] = {
- 0x00, /* Reserved for H4 channel*/
- HCI_BT_MAKE_FIRST_BYTE_IN_CMD(CG2900_BT_OCF_VS_WRITE_REGISTER),
- HCI_BT_MAKE_SECOND_BYTE_IN_CMD(HCI_BT_OGF_VS, CG2900_BT_OCF_VS_WRITE_REGISTER),
- 0x09, /* HCI command length. */
- 0x01, /* Register type = 32-bit*/
- 0X04, /* Memory address byte 1*/
- 0X40, /* Memory address byte 2*/
- 0X01, /* Memory address byte 3*/
- 0X40, /* Memory address byte 4*/
- 0X00, /* Register value byte 1*/
- 0X00, /* Register value byte 2*/
- 0X00, /* Register value byte 3*/
- 0X00 /* Register value byte 4*/
-};
-#endif /*ENABLE_SYS_CLK_OUT*/
-
/*
* time_500ms - 500 millisecond time struct.
*/
@@ -405,10 +364,6 @@ static bool cg2900_fm_is_do_cmd_irpt(uint16_t irpt_val);
static bool cg2900_handle_internal_rx_data_bt_evt(struct sk_buff *skb);
static void cg2900_create_work_item(work_func_t work_func, struct sk_buff *skb, void *data);
static bool cg2900_handle_reset_cmd_complete_evt(uint8_t *data);
-#ifdef ENABLE_SYS_CLK_OUT
-static bool cg2900_handle_vs_read_register_cmd_complete_evt(uint8_t *data);
-static bool cg2900_handle_vs_write_register_cmd_complete_evt(uint8_t *data);
-#endif /* ENABLE_SYS_CLK_OUT */
static bool cg2900_handle_vs_store_in_fs_cmd_complete_evt(uint8_t *data);
static bool cg2900_handle_vs_write_file_block_cmd_complete_evt(uint8_t *data);
static bool cg2900_handle_vs_power_switch_off_cmd_complete_evt(uint8_t *data);
@@ -997,14 +952,6 @@ static bool cg2900_handle_internal_rx_data_bt_evt(struct sk_buff *skb)
case CG2900_BT_OCF_VS_SYSTEM_RESET:
pkt_handled = cg2900_handle_vs_system_reset_cmd_complete_evt(data);
break;
-#ifdef ENABLE_SYS_CLK_OUT
- case CG2900_BT_OCF_VS_READ_REGISTER:
- pkt_handled = cg2900_handle_vs_read_register_cmd_complete_evt(data);
- break;
- case CG2900_BT_OCF_VS_WRITE_REGISTER:
- pkt_handled = cg2900_handle_vs_write_register_cmd_complete_evt(data);
- break;
-#endif /* ENABLE_SYS_CLK_OUT */
default:
break;
}; /* switch (hci_ocf) */
@@ -1083,126 +1030,6 @@ static bool cg2900_handle_reset_cmd_complete_evt(uint8_t *data)
}
-#ifdef ENABLE_SYS_CLK_OUT
-/**
- * cg2900_handle_vs_read_register_cmd_complete_evt() - Handle a received HCI Command Complete event
- * for a VS ReadRegister command.
- * @data: Pointer to received HCI data packet.
- *
- * Returns:
- * True, if packet was handled internally,
- * False, otherwise.
- */
-static bool cg2900_handle_vs_read_register_cmd_complete_evt(uint8_t *data)
-{
- bool pkt_handled = false;
-
- if (cg2900_info->boot_state == BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_HIGH) {
- uint8_t status = data[0];
-
- if (HCI_BT_ERROR_NO_ERROR == status) {
- /* Received good confirmation. Start work to continue */
- uint8_t data_out[(sizeof(cg2900_msg_write_register_0x40014004))];
- memcpy(&data_out[0], cg2900_msg_write_register_0x40014004, sizeof(cg2900_msg_write_register_0x40014004));
-
- STE_CONN_DBG_DATA_CONTENT("Read register 0x40014004 value 0x%02X 0x%02X 0x%02X 0x%02X",
- data[1], data[2], data[3], data[4]);
- /* Little endian Set bit 12 to value 1 */
- data[2] = data[2] | 0x10;
- STE_CONN_DBG_DATA_CONTENT("Write register 0x40014004 value 0x%02X 0x%02X 0x%02X 0x%02X",
- data[1], data[2], data[3], data[4]);
- /* Copy value to be written */
- memcpy(&data_out[9], &data[1], 4);
- cg2900_create_and_send_bt_cmd(&data_out[0], sizeof(cg2900_msg_write_register_0x40014004));
-
- } else {
- STE_CONN_ERR("Command complete for ReadRegister received with error 0x%X", status);
- CG2900_SET_BOOT_STATE(BOOT_STATE_FAILED);
- cg2900_create_work_item(cg2900_work_reset_after_error, NULL, NULL);
- }
- /* We have now handled the packet */
- pkt_handled = true;
-
- } else if (cg2900_info->boot_state == BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_LOW) {
- uint8_t status = data[0];
-
- if (HCI_BT_ERROR_NO_ERROR == status) {
- /* Received good confirmation. Start work to continue */
- uint8_t data_out[(sizeof(cg2900_msg_write_register_0x40014004))];
- memcpy(&data_out[0], cg2900_msg_write_register_0x40014004, sizeof(cg2900_msg_write_register_0x40014004));
-
- STE_CONN_DBG_DATA_CONTENT("Read register 0x40014004 value 0x%02X 0x%02X 0x%02X 0x%02X",
- data[1], data[2], data[3], data[4]);
- /* Little endian Set bit 12 to value 0 */
- data[2] = data[2] & 0xEF;
- STE_CONN_DBG_DATA_CONTENT("Write register 0x40014004 value 0x%02X 0x%02X 0x%02X 0x%02X",
- data[1], data[2], data[3], data[4]);
- /* Copy value to be written */
- memcpy(&data_out[9], &data[1], 4);
- cg2900_create_and_send_bt_cmd(&data_out[0], sizeof(cg2900_msg_write_register_0x40014004));
-
- } else {
- STE_CONN_ERR("Command complete for ReadRegister received with error 0x%X", status);
- CG2900_SET_BOOT_STATE(BOOT_STATE_FAILED);
- cg2900_create_work_item(cg2900_work_reset_after_error, NULL, NULL);
- }
- /* We have now handled the packet */
- pkt_handled = true;
- }
- return pkt_handled;
-}
-
-/**
- * cg2900_handle_vs_write_register_cmd_complete_evt() - Handle a received HCI Command Complete event
- * for a VS ReadRegister command.
- * @data: Pointer to received HCI data packet.
- *
- * Returns:
- * True, if packet was handled internally,
- * False, otherwise.
- */
-static bool cg2900_handle_vs_write_register_cmd_complete_evt(uint8_t *data)
-{
- bool pkt_handled = false;
-
- if (cg2900_info->boot_state == BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_HIGH) {
- uint8_t status = data[0];
-
- if (HCI_BT_ERROR_NO_ERROR == status) {
- /* Received good confirmation*/
- cg2900_create_and_send_bt_cmd(cg2900_msg_read_register_0x40014004,
- sizeof(cg2900_msg_read_register_0x40014004));
- CG2900_SET_BOOT_STATE(BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_LOW);
- } else {
- STE_CONN_ERR("Command complete for WriteRegister received with error 0x%X", status);
- CG2900_SET_BOOT_STATE(BOOT_STATE_FAILED);
- cg2900_create_work_item(cg2900_work_reset_after_error, NULL, NULL);
- }
- /* We have now handled the packet */
- pkt_handled = true;
- } else if (cg2900_info->boot_state == BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_LOW) {
- uint8_t status = data[0];
-
- if (HCI_BT_ERROR_NO_ERROR == status) {
- /* Received good confirmation
- * The boot sequence is now finished successfully
- * Set states and signal to waiting thread.
- */
- CG2900_SET_BOOT_STATE(BOOT_STATE_READY);
- ste_conn_cpd_chip_startup_finished(0);
- } else {
- STE_CONN_ERR("Command complete for WriteRegister received with error 0x%X", status);
- CG2900_SET_BOOT_STATE(BOOT_STATE_FAILED);
- cg2900_create_work_item(cg2900_work_reset_after_error, NULL, NULL);
- }
- /* We have now handled the packet */
- pkt_handled = true;
- }
-
- return pkt_handled;
-}
-#endif /* ENABLE_SYS_CLK_OUT */
-
/**
* cg2900_handle_vs_store_in_fs_cmd_complete_evt() - Handle a received HCI Command Complete event
* for a VS StoreInFS command.
@@ -1316,14 +1143,6 @@ static bool cg2900_handle_vs_system_reset_cmd_complete_evt(uint8_t *data)
uint8_t status = data[0];
if (cg2900_info->boot_state == BOOT_STATE_ACTIVATE_PATCHES_AND_SETTINGS) {
-#ifdef ENABLE_SYS_CLK_OUT
- STE_CONN_INFO("SYS_CLK_OUT Enabled");
- if (HCI_BT_ERROR_NO_ERROR == status) {
- CG2900_SET_BOOT_STATE(BOOT_STATE_ACTIVATE_SYS_CLK_OUT_TOGGLE_HIGH);
- cg2900_create_and_send_bt_cmd(cg2900_msg_read_register_0x40014004,
- sizeof(cg2900_msg_read_register_0x40014004));
- }
-#else
STE_CONN_INFO("SYS_CLK_OUT Disabled");
if (HCI_BT_ERROR_NO_ERROR == status) {
/* The boot sequence is now finished successfully.
@@ -1331,9 +1150,7 @@ static bool cg2900_handle_vs_system_reset_cmd_complete_evt(uint8_t *data)
*/
CG2900_SET_BOOT_STATE(BOOT_STATE_READY);
ste_conn_cpd_chip_startup_finished(0);
- }
-#endif
- else {
+ } else {
STE_CONN_ERR("Received Reset complete event with status 0x%X", status);
CG2900_SET_BOOT_STATE(BOOT_STATE_FAILED);
ste_conn_cpd_chip_startup_finished(-EIO);
diff --git a/firmware/CG2900_1_05_SOC_generic_V11_mod.fw.org b/firmware/CG2900_1_05_SOC_generic_V11_mod.fw.org
new file mode 100755
index 00000000000..600246802ca
--- /dev/null
+++ b/firmware/CG2900_1_05_SOC_generic_V11_mod.fw.org
Binary files differ
diff --git a/firmware/CG2900_1_05_V5_FMoI2S.fw.org b/firmware/CG2900_1_05_V5_FMoI2S.fw.org
deleted file mode 100755
index 4b2549cd830..00000000000
--- a/firmware/CG2900_1_05_V5_FMoI2S.fw.org
+++ /dev/null
Binary files differ
diff --git a/firmware/CG2900_1_0C4_1C1.fw.org b/firmware/CG2900_1_0C4_1C1.fw.org
deleted file mode 100755
index c326f965bf4..00000000000
--- a/firmware/CG2900_1_0C4_1C1.fw.org
+++ /dev/null
Binary files differ
diff --git a/firmware/CG2900_1_0C4_1C5.fw.org b/firmware/CG2900_1_0C4_1C5.fw.org
new file mode 100755
index 00000000000..0373210f423
--- /dev/null
+++ b/firmware/CG2900_1_0C4_1C5.fw.org
Binary files differ
diff --git a/firmware/Makefile b/firmware/Makefile
index ceabbc6c8cc..f6bc27a0c52 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -140,8 +140,7 @@ fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
fw-shipped-$(CONFIG_MFD_STE_CONN) += ste_conn_patch_info.fw ste_conn_settings_info.fw \
STLC2600_R6_03_01.fw STLC2690_R6_03_A1_E5.fw \
STLC2600_R6_04_02.fw STLC2690_R6_04_A2.fw \
- STLC2600_R7_00_01.fw STLC2690_R7_00_A1_E5.fw \
- CG2900_1_0C4_1C1.fw CG2900_1_05_V5_FMoI2S.fw
+ CG2900_1_0C4_1C5.fw CG2900_1_05_SOC_generic_V11_mod.fw
fw-shipped-$(CONFIG_RADIO_CG2900) += ste_fm_bt_src_coeff_info.fw ste_fm_ext_src_coeff_info.fw \
ste_fm_fm_coeff_info.fw ste_fm_fm_prog_info.fw \
diff --git a/firmware/STLC2600_R7_00_01.fw.org b/firmware/STLC2600_R7_00_01.fw.org
deleted file mode 100755
index 1a2d14b1e0a..00000000000
--- a/firmware/STLC2600_R7_00_01.fw.org
+++ /dev/null
Binary files differ
diff --git a/firmware/STLC2690_R7_00_A1_E5.fw.org b/firmware/STLC2690_R7_00_A1_E5.fw.org
deleted file mode 100755
index 1f73bc1a04a..00000000000
--- a/firmware/STLC2690_R7_00_A1_E5.fw.org
+++ /dev/null
Binary files differ
diff --git a/firmware/ste_conn_patch_info.fw.org b/firmware/ste_conn_patch_info.fw.org
index 8fd1d679e2d..f6ea439a70b 100755
--- a/firmware/ste_conn_patch_info.fw.org
+++ b/firmware/ste_conn_patch_info.fw.org
@@ -10,12 +10,6 @@
#
#################
#
-# Patch file for ST Microelectronics - STLC2593 - 2500D with ID = 0x05 (R5.3)
-#
-0x0503 0x00F1 STLC2500_R5_03_A12.fw
-#
-#################
-#
# Patch file for ST Microelectronics - STLC2690 - Cut 2.1
#
0x0603 0x0014 STLC2690_R6_03_A1_E5.fw
@@ -25,7 +19,6 @@
#
# Patch file for ST-Ericsson - CG2900
#
-#0x0700 0x0011 STLC2690_R7_00_A1_E5.fw
-0x0700 0x0011 CG2900_1_0C4_1C1.fw
+0x0700 0x0011 CG2900_1_0C4_1C5.fw
#
################# \ No newline at end of file
diff --git a/firmware/ste_conn_settings_info.fw.org b/firmware/ste_conn_settings_info.fw.org
index e5d2ebcf7d5..5fadd4065a3 100755
--- a/firmware/ste_conn_settings_info.fw.org
+++ b/firmware/ste_conn_settings_info.fw.org
@@ -10,14 +10,6 @@
#
#################
#
-# Factory Settings for ST Microelectronics - STLC2593 - ST2500D R5.3
-#
-# These settings are for the S335, BT2.1 support is enabled.
-#
-0x0503 0x00F1 STLC2593_R5_03_07_EMP_R13Lisbon.fw
-#
-#################
-#
# Factory Settings for ST Microelectronics - STLC2690 - Cut 2.1
#
# These settings are for the S335, BT2.1 support is enabled.
@@ -30,7 +22,6 @@
#
# Factory Settings for ST-Ericsson - CG2900
#
-#0x0700 0x0011 STLC2600_R7_00_01.fw
-0x0700 0x0011 CG2900_1_05_V5_FMoI2S.fw
+0x0700 0x0011 CG2900_1_05_SOC_generic_V11_mod.fw
#
#################