diff options
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/mhl/sii9234.c | 22 | ||||
-rw-r--r-- | drivers/media/video/s5c73m3.c | 26 |
2 files changed, 44 insertions, 4 deletions
diff --git a/drivers/media/video/mhl/sii9234.c b/drivers/media/video/mhl/sii9234.c index c3fc95b..8ca25c6 100644 --- a/drivers/media/video/mhl/sii9234.c +++ b/drivers/media/video/mhl/sii9234.c @@ -1655,10 +1655,32 @@ void sii9234_process_msc_work(struct work_struct *work) } break; case CBUS_WRITE_STAT: + pr_debug("sii9234: cbus_command_response" + "CBUS_WRITE_STAT\n"); + cbus_read_reg(sii9234, CBUS_MSC_FIRST_DATA_IN_REG, + &p_msc_pkt->data_1); break; case CBUS_SET_INT: + if ((p_msc_pkt->offset == MHL_RCHANGE_INT) && + (p_msc_pkt->data_1 == MHL_INT_DSCR_CHG)) { + /* Write burst final step... + Req->GRT->Write->DSCR */ + pr_debug("sii9234: MHL_RCHANGE_INT &" + "MHL_INT_DSCR_CHG\n"); + } else if (p_msc_pkt->offset == MHL_RCHANGE_INT && + p_msc_pkt->data_1 == MHL_INT_DCAP_CHG) { + sii9234_enqueue_msc_work(sii9234, + CBUS_WRITE_STAT, + MHL_STATUS_REG_CONNECTED_RDY, + MHL_STATUS_DCAP_READY, 0x0); + } break; case CBUS_WRITE_BURST: + pr_debug("sii9234: cbus_command_response" + "MHL_WRITE_BURST\n"); + p_msc_pkt->command = CBUS_IDLE; + sii9234_enqueue_msc_work(sii9234, CBUS_SET_INT, + MHL_RCHANGE_INT, MHL_INT_DSCR_CHG, 0x0); break; case CBUS_READ_DEVCAP: ret = cbus_read_reg(sii9234, diff --git a/drivers/media/video/s5c73m3.c b/drivers/media/video/s5c73m3.c index 07fab10..ea07a34 100644 --- a/drivers/media/video/s5c73m3.c +++ b/drivers/media/video/s5c73m3.c @@ -802,6 +802,7 @@ static int s5c73m3_get_phone_fw_version(struct v4l2_subdev *sd) int err = 0; int retVal = 0; int fw_requested = 1; + int copied_fw_binary = 0; if (state->sensor_fw[0] == 'O') { sprintf(fw_path, "SlimISP_G%c.bin", @@ -895,19 +896,25 @@ request_fw: CHECK_ERR(retVal); retVal = s5c73m3_get_sensor_fw_binary(sd); CHECK_ERR(retVal); + copied_fw_binary = 1; goto request_fw; } + } + if (copied_fw_binary) { memcpy(state->phone_fw, - camfw_info[state->fw_index].ver, + state->sensor_fw, S5C73M3_FW_VER_LEN); - } + state->phone_fw[S5C73M3_FW_VER_LEN+1] = ' '; + } else { memcpy(state->phone_fw, camfw_info[state->fw_index].ver, S5C73M3_FW_VER_LEN); state->phone_fw[S5C73M3_FW_VER_LEN+1] = ' '; - - memcpy(sysfs_phone_fw, state->phone_fw, sizeof(state->phone_fw)); + } + memcpy(sysfs_phone_fw, + state->phone_fw, + sizeof(state->phone_fw)); cam_dbg("Phone_version = %s(index=%d)\n", state->phone_fw, state->fw_index); @@ -1083,6 +1090,17 @@ static int s5c73m3_check_fw(struct v4l2_subdev *sd, int download) #else err = s5c73m3_get_sensor_fw_binary(sd); CHECK_ERR(err); + + memcpy(state->phone_fw, + state->sensor_fw, + S5C73M3_FW_VER_LEN); + state->phone_fw[S5C73M3_FW_VER_LEN+1] = ' '; + + memcpy(sysfs_phone_fw, + state->phone_fw, + sizeof(state->phone_fw)); + cam_dbg("Changed to Phone_version = %s\n", + state->phone_fw); #endif } |