Commit da989e0b authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[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: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent f2ba9e5d
...@@ -578,6 +578,7 @@ static int demod_attach_drxk(struct ddb_input *input) ...@@ -578,6 +578,7 @@ static int demod_attach_drxk(struct ddb_input *input)
struct drxk_config config; struct drxk_config config;
memset(&config, 0, sizeof(config)); memset(&config, 0, sizeof(config));
config.microcode_name = "drxk_a3.mc";
config.adr = 0x29 + (input->nr & 1); config.adr = 0x29 + (input->nr & 1);
fe = input->fe = dvb_attach(drxk_attach, &config, i2c); fe = input->fe = dvb_attach(drxk_attach, &config, i2c);
......
...@@ -55,7 +55,8 @@ static struct drxk_config terratec_h7_drxk = { ...@@ -55,7 +55,8 @@ static struct drxk_config terratec_h7_drxk = {
.adr = 0x29, .adr = 0x29,
.single_master = 1, .single_master = 1,
.no_i2c_bridge = 0, .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) 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, ...@@ -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); debug_dump(b, blen, deb_xfer);
if (blen > 64) { 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; return -EOPNOTSUPP;
} }
...@@ -395,6 +397,7 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap) ...@@ -395,6 +397,7 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
adap->fe2->tuner_priv = adap->fe->tuner_priv; adap->fe2->tuner_priv = adap->fe->tuner_priv;
memcpy(&adap->fe2->ops.tuner_ops, memcpy(&adap->fe2->ops.tuner_ops,
&adap->fe->ops.tuner_ops, sizeof(adap->fe->ops.tuner_ops)); &adap->fe->ops.tuner_ops, sizeof(adap->fe->ops.tuner_ops));
return 0; return 0;
out_free: out_free:
...@@ -572,7 +575,6 @@ static struct dvb_usb_device_properties az6007_properties = { ...@@ -572,7 +575,6 @@ static struct dvb_usb_device_properties az6007_properties = {
.num_adapters = 1, .num_adapters = 1,
.adapter = { .adapter = {
{ {
/* .caps = DVB_USB_ADAP_RECEIVES_204_BYTE_TS, */
.streaming_ctrl = az6007_streaming_ctrl, .streaming_ctrl = az6007_streaming_ctrl,
.frontend_attach = az6007_frontend_attach, .frontend_attach = az6007_frontend_attach,
......
...@@ -6070,9 +6070,7 @@ static int init_drxk(struct drxk_state *state) ...@@ -6070,9 +6070,7 @@ static int init_drxk(struct drxk_state *state)
if (status < 0) if (status < 0)
goto error; goto error;
if (!state->microcode_name) if (state->microcode_name)
load_microcode(state, "drxk_a3.mc");
else
load_microcode(state, state->microcode_name); load_microcode(state, state->microcode_name);
/* disable token-ring bus through OFDM block for possible ucode upload */ /* disable token-ring bus through OFDM block for possible ucode upload */
......
...@@ -216,6 +216,7 @@ static int demod_attach_drxk(struct ngene_channel *chan, ...@@ -216,6 +216,7 @@ static int demod_attach_drxk(struct ngene_channel *chan,
struct drxk_config config; struct drxk_config config;
memset(&config, 0, sizeof(config)); memset(&config, 0, sizeof(config));
config.microcode_name = "drxk_a3.mc";
config.adr = 0x29 + (chan->number ^ 2); config.adr = 0x29 + (chan->number ^ 2);
chan->fe = dvb_attach(drxk_attach, &config, i2c); chan->fe = dvb_attach(drxk_attach, &config, i2c);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment