Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 366622
b: refs/heads/master
c: 9711a8a
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Mar 21, 2013
1 parent 6b9ff53 commit cceff06
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5ac14b60118071631bb0e2e50527c7528675648c
refs/heads/master: 9711a8a600a12d2895c18f31be1fc5b3c4d9b209
23 changes: 18 additions & 5 deletions trunk/drivers/media/common/siano/smscoreapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ static struct mutex g_smscore_deviceslock;
static struct list_head g_smscore_registry;
static struct mutex g_smscore_registrylock;

static int default_mode = 4;
static int default_mode = DEVICE_MODE_NONE;

module_param(default_mode, int, 0644);
MODULE_PARM_DESC(default_mode, "default firmware id (device mode)");
Expand Down Expand Up @@ -880,8 +880,15 @@ int smscore_configure_board(struct smscore_device_t *coredev)
*/
int smscore_start_device(struct smscore_device_t *coredev)
{
int rc = smscore_set_device_mode(
coredev, smscore_registry_getmode(coredev->devpath));
int rc;
int board_id = smscore_get_board_id(coredev);
int mode = smscore_registry_getmode(coredev->devpath);

/* Device is initialized as DEVICE_MODE_NONE */
if (board_id != SMS_BOARD_UNKNOWN && mode == DEVICE_MODE_NONE)
mode = sms_get_board(board_id)->default_mode;

rc = smscore_set_device_mode(coredev, mode);
if (rc < 0) {
sms_info("set device mode faile , rc %d", rc);
return rc;
Expand Down Expand Up @@ -1269,6 +1276,12 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev,

type = smscore_registry_gettype(coredev->devpath);

/* Prevent looking outside the smscore_fw_lkup table */
if (type <= SMS_UNKNOWN_TYPE || type >= SMS_NUM_OF_DEVICE_TYPES)
return NULL;
if (mode <= DEVICE_MODE_NONE || mode >= DEVICE_MODE_MAX)
return NULL;

if ((board_id == SMS_BOARD_UNKNOWN) || (lookup == 1)) {
sms_debug("trying to get fw name from lookup table mode %d type %d",
mode, type);
Expand Down Expand Up @@ -1338,7 +1351,7 @@ int smscore_set_device_mode(struct smscore_device_t *coredev, int mode)

sms_debug("set device mode to %d", mode);
if (coredev->device_flags & SMS_DEVICE_FAMILY2) {
if (mode < DEVICE_MODE_DVBT || mode >= DEVICE_MODE_RAW_TUNER) {
if (mode <= DEVICE_MODE_NONE || mode >= DEVICE_MODE_MAX) {
sms_err("invalid mode specified %d", mode);
return -EINVAL;
}
Expand Down Expand Up @@ -1390,7 +1403,7 @@ int smscore_set_device_mode(struct smscore_device_t *coredev, int mode)
sms_err("device init failed, rc %d.", rc);
}
} else {
if (mode < DEVICE_MODE_DVBT || mode > DEVICE_MODE_MAX) {
if (mode <= DEVICE_MODE_NONE || mode >= DEVICE_MODE_MAX) {
sms_err("invalid mode specified %d", mode);
return -EINVAL;
}
Expand Down

0 comments on commit cceff06

Please sign in to comment.