Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 366621
b: refs/heads/master
c: 5ac14b6
h: refs/heads/master
i:
  366619: 3004880
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Mar 21, 2013
1 parent 813405b commit 6b9ff53
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 38 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: 6a28bd94f4d068b6de65517e52f52b6840603d0a
refs/heads/master: 5ac14b60118071631bb0e2e50527c7528675648c
91 changes: 54 additions & 37 deletions trunk/drivers/media/common/siano/smscoreapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1063,9 +1063,11 @@ static int smscore_load_firmware_from_file(struct smscore_device_t *coredev,
const struct firmware *fw;

char *fw_filename = smscore_get_fw_filename(coredev, mode, lookup);
sms_debug("Firmware name: %s\n", fw_filename);
if (!strcmp(fw_filename, "none"))
if (!fw_filename) {
sms_info("mode %d not supported on this device", mode);
return -ENOENT;
}
sms_debug("Firmware name: %s", fw_filename);

if (loadfirmware_handler == NULL && !(coredev->device_flags
& SMS_DEVICE_FAMILY2))
Expand Down Expand Up @@ -1198,32 +1200,53 @@ static int smscore_detect_mode(struct smscore_device_t *coredev)
return rc;
}

static char *smscore_fw_lkup[][SMS_NUM_OF_DEVICE_TYPES] = {
/*Stellar, NOVA A0, Nova B0, VEGA, VENICE, MING, PELE, RIO, DENVER_1530, DENVER_2160 */
/*DVBT*/
{ "none", "dvb_nova_12mhz.inp", "dvb_nova_12mhz_b0.inp", "none", "none", "none", "none", "dvb_rio.inp", "none", "none" },
/*DVBH*/
{ "none", "dvb_nova_12mhz.inp", "dvb_nova_12mhz_b0.inp", "none", "none", "none", "none", "dvbh_rio.inp", "none", "none" },
/*TDMB*/
{ "none", "tdmb_nova_12mhz.inp", "tdmb_nova_12mhz_b0.inp", "none", "none", "none", "none", "none", "none", "tdmb_denver.inp" },
/*DABIP*/
{ "none", "none", "none", "none", "none", "none", "none", "none", "none", "none" },
/*DVBT_BDA*/
{ "none", "dvb_nova_12mhz.inp", "dvb_nova_12mhz_b0.inp", "none", "none", "none", "none", "dvb_rio.inp", "none", "none" },
/*ISDBT*/
{ "none", "isdbt_nova_12mhz.inp", "isdbt_nova_12mhz_b0.inp", "none", "none", "none", "isdbt_pele.inp", "isdbt_rio.inp", "none", "none" },
/*ISDBT_BDA*/
{ "none", "isdbt_nova_12mhz.inp", "isdbt_nova_12mhz_b0.inp", "none", "none", "none", "isdbt_pele.inp", "isdbt_rio.inp", "none", "none" },
/*CMMB*/
{ "none", "none", "none", "cmmb_vega_12mhz.inp", "cmmb_venice_12mhz.inp", "cmmb_ming_app.inp", "none", "none", "none", "none" },
/*RAW - not supported*/
{ "none", "none", "none", "none", "none", "none", "none", "none", "none", "none" },
/*FM*/
{ "none", "none", "fm_radio.inp", "none", "none", "none", "none", "fm_radio_rio.inp", "none", "none" },
/*FM_BDA*/
{ "none", "none", "fm_radio.inp", "none", "none", "none", "none", "fm_radio_rio.inp", "none", "none" },
/*ATSC*/
{ "none", "none", "none", "none", "none", "none", "none", "none", "atsc_denver.inp", "none" }
static char *smscore_fw_lkup[][DEVICE_MODE_MAX] = {
[SMS_NOVA_A0] = {
[DEVICE_MODE_DVBT] = "dvb_nova_12mhz.inp",
[DEVICE_MODE_DVBH] = "dvb_nova_12mhz.inp",
[DEVICE_MODE_DAB_TDMB] = "tdmb_nova_12mhz.inp",
[DEVICE_MODE_DVBT_BDA] = "dvb_nova_12mhz.inp",
[DEVICE_MODE_ISDBT] = "isdbt_nova_12mhz.inp",
[DEVICE_MODE_ISDBT_BDA] = "isdbt_nova_12mhz.inp",
},
[SMS_NOVA_B0] = {
[DEVICE_MODE_DVBT] = "dvb_nova_12mhz_b0.inp",
[DEVICE_MODE_DVBH] = "dvb_nova_12mhz_b0.inp",
[DEVICE_MODE_DAB_TDMB] = "tdmb_nova_12mhz_b0.inp",
[DEVICE_MODE_DVBT_BDA] = "dvb_nova_12mhz_b0.inp",
[DEVICE_MODE_ISDBT] = "isdbt_nova_12mhz_b0.inp",
[DEVICE_MODE_ISDBT_BDA] = "isdbt_nova_12mhz_b0.inp",
[DEVICE_MODE_FM_RADIO] = "fm_radio.inp",
[DEVICE_MODE_FM_RADIO_BDA] = "fm_radio.inp",
},
[SMS_VEGA] = {
[DEVICE_MODE_CMMB] = "cmmb_vega_12mhz.inp",
},
[SMS_VENICE] = {
[DEVICE_MODE_CMMB] = "cmmb_venice_12mhz.inp",
},
[SMS_MING] = {
[DEVICE_MODE_CMMB] = "cmmb_ming_app.inp",
},
[SMS_PELE] = {
[DEVICE_MODE_ISDBT] = "isdbt_pele.inp",
[DEVICE_MODE_ISDBT_BDA] = "isdbt_pele.inp",
},
[SMS_RIO] = {
[DEVICE_MODE_DVBT] = "dvb_rio.inp",
[DEVICE_MODE_DVBH] = "dvbh_rio.inp",
[DEVICE_MODE_DVBT_BDA] = "dvb_rio.inp",
[DEVICE_MODE_ISDBT] = "isdbt_rio.inp",
[DEVICE_MODE_ISDBT_BDA] = "isdbt_rio.inp",
[DEVICE_MODE_FM_RADIO] = "fm_radio_rio.inp",
[DEVICE_MODE_FM_RADIO_BDA] = "fm_radio_rio.inp",
},
[SMS_DENVER_1530] = {
[DEVICE_MODE_ATSC] = "atsc_denver.inp",
},
[SMS_DENVER_2160] = {
[DEVICE_MODE_DAB_TDMB] = "tdmb_denver.inp",
},
};

/**
Expand All @@ -1249,22 +1272,16 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
if ((board_id == SMS_BOARD_UNKNOWN) || (lookup == 1)) {
sms_debug("trying to get fw name from lookup table mode %d type %d",
mode, type);
return smscore_fw_lkup[mode][type];
return smscore_fw_lkup[type][mode];
}

sms_debug("trying to get fw name from sms_boards board_id %d mode %d",
board_id, mode);
fw = sms_get_board(board_id)->fw;
if (fw == NULL) {
sms_debug("cannot find fw name in sms_boards, getting from lookup table mode %d type %d",
mode, type);
return smscore_fw_lkup[mode][type];
}

if (fw[mode] == NULL) {
if (!fw || !fw[mode]) {
sms_debug("cannot find fw name in sms_boards, getting from lookup table mode %d type %d",
mode, type);
return smscore_fw_lkup[mode][type];
return smscore_fw_lkup[type][mode];
}

return fw[mode];
Expand Down

0 comments on commit 6b9ff53

Please sign in to comment.