mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
[media] drxk: Don't assume a default firmware name
Move the ngene/ddbridge firmware into their drivers. There are two reasons for that: 1) The firmware used there didn't work for a few devices I tested here (Terratec H5, H6 and H7); 2) At least Terratec H7 doesn't seem to require a firmware for it to work. After this change, if firmware is not specified, the driver will use a rom-based firmware (this seems to be the case for Terratec H7, although I need to better check the USB dumps to be sure about that). In any case, the firmware seems to be optional, as the DRX-K driver don't return the firmware load error. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
f2ba9e5dda
commit
da989e0bc7
@ -578,6 +578,7 @@ static int demod_attach_drxk(struct ddb_input *input)
|
||||
struct drxk_config config;
|
||||
|
||||
memset(&config, 0, sizeof(config));
|
||||
config.microcode_name = "drxk_a3.mc";
|
||||
config.adr = 0x29 + (input->nr & 1);
|
||||
|
||||
fe = input->fe = dvb_attach(drxk_attach, &config, i2c);
|
||||
|
@ -55,7 +55,8 @@ static struct drxk_config terratec_h7_drxk = {
|
||||
.adr = 0x29,
|
||||
.single_master = 1,
|
||||
.no_i2c_bridge = 0,
|
||||
.microcode_name = "dvb-usb-terratec-h5-drxk.fw",
|
||||
.max_size = 64,
|
||||
// .microcode_name = "dvb-usb-terratec-h5-drxk.fw",
|
||||
};
|
||||
|
||||
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
@ -127,7 +128,8 @@ static int az6007_usb_out_op(struct dvb_usb_device *d, u8 req, u16 value,
|
||||
debug_dump(b, blen, deb_xfer);
|
||||
|
||||
if (blen > 64) {
|
||||
err("az6007: doesn't suport I2C transactions longer than 64 bytes\n");
|
||||
err("az6007: tried to write %d bytes, but I2C max size is 64 bytes\n",
|
||||
blen);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@ -395,6 +397,7 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
adap->fe2->tuner_priv = adap->fe->tuner_priv;
|
||||
memcpy(&adap->fe2->ops.tuner_ops,
|
||||
&adap->fe->ops.tuner_ops, sizeof(adap->fe->ops.tuner_ops));
|
||||
|
||||
return 0;
|
||||
|
||||
out_free:
|
||||
@ -572,7 +575,6 @@ static struct dvb_usb_device_properties az6007_properties = {
|
||||
.num_adapters = 1,
|
||||
.adapter = {
|
||||
{
|
||||
/* .caps = DVB_USB_ADAP_RECEIVES_204_BYTE_TS, */
|
||||
.streaming_ctrl = az6007_streaming_ctrl,
|
||||
.frontend_attach = az6007_frontend_attach,
|
||||
|
||||
|
@ -6070,9 +6070,7 @@ static int init_drxk(struct drxk_state *state)
|
||||
if (status < 0)
|
||||
goto error;
|
||||
|
||||
if (!state->microcode_name)
|
||||
load_microcode(state, "drxk_a3.mc");
|
||||
else
|
||||
if (state->microcode_name)
|
||||
load_microcode(state, state->microcode_name);
|
||||
|
||||
/* disable token-ring bus through OFDM block for possible ucode upload */
|
||||
|
@ -216,6 +216,7 @@ static int demod_attach_drxk(struct ngene_channel *chan,
|
||||
struct drxk_config config;
|
||||
|
||||
memset(&config, 0, sizeof(config));
|
||||
config.microcode_name = "drxk_a3.mc";
|
||||
config.adr = 0x29 + (chan->number ^ 2);
|
||||
|
||||
chan->fe = dvb_attach(drxk_attach, &config, i2c);
|
||||
|
Loading…
Reference in New Issue
Block a user