Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 595a83f4 authored by Istvan Varga's avatar Istvan Varga Committed by Mauro Carvalho Chehab
Browse files

[media] xc4000: check_firmware() cleanup



This patch makes the following fixes in check_firmware():
  - there is only one BASE and INIT1 firmware for XC4000
  - loading SCODE is needed also for FM radio

Signed-off-by: default avatarIstvan Varga <istvan_v@mailbox.hu>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent ffce6266
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -903,7 +903,7 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,
	struct xc4000_priv         *priv = fe->tuner_priv;
	struct firmware_properties new_fw;
	int			   rc = 0, is_retry = 0;
	u16			   version, hwmodel;
	u16			   version = 0, hwmodel;
	v4l2_std_id		   std0;
	u8			   hw_major, hw_minor, fw_major, fw_minor;

@@ -945,8 +945,7 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,
	}

	/* No need to reload base firmware if it matches */
	if (((BASE | new_fw.type) & BASE_TYPES) ==
	    (priv->cur_fw.type & BASE_TYPES)) {
	if (priv->cur_fw.type & BASE) {
		dprintk(1, "BASE firmware not changed.\n");
		goto skip_base;
	}
@@ -961,7 +960,7 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,

	/* BASE firmwares are all std0 */
	std0 = 0;
	rc = load_firmware(fe, BASE | new_fw.type, &std0);
	rc = load_firmware(fe, BASE, &std0);
	if (rc < 0) {
		printk("Error %d while loading base firmware\n", rc);
		goto fail;
@@ -970,10 +969,9 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,
	/* Load INIT1, if needed */
	dprintk(1, "Load init1 firmware, if exists\n");

	rc = load_firmware(fe, BASE | INIT1 | new_fw.type, &std0);
	rc = load_firmware(fe, BASE | INIT1, &std0);
	if (rc == -ENOENT)
		rc = load_firmware(fe, (BASE | INIT1 | new_fw.type) & ~F8MHZ,
				   &std0);
		rc = load_firmware(fe, BASE | INIT1, &std0);
	if (rc < 0 && rc != -ENOENT) {
		tuner_err("Error %d while loading init1 firmware\n",
			  rc);
@@ -1007,9 +1005,6 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type,
		goto check_device;
	}

	if (new_fw.type & FM)
		goto check_device;

	/* Load SCODE firmware, if exists */
	rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
			new_fw.int_freq, new_fw.scode_nr);