Skip to content

Commit

Permalink
media: si2157: unknown chip version Si2147-A30 ROM 0x50
Browse files Browse the repository at this point in the history
Fix firmware file names assignment in si2157 tuner, allow for running
devices without firmware files needed.

modprobe gives error: unknown chip version Si2147-A30 ROM 0x50
Device initialization is interrupted.

Caused by:
1. table si2157_tuners has swapped fields rom_id and required vs struct
   si2157_tuner_info.
2. both firmware file names can be null for devices with
   required == false - device uses build-in firmware in this case

Tested on this device:
	m07ca:1871 AVerMedia Technologies, Inc. TD310 DVB-T/T2/C dongle

[mchehab: fix mangled patch]
Link: https://bugzilla.kernel.org/show_bug.cgi?id=215726
Link: https://lore.kernel.org/lkml/[email protected]/
Link: https://lore.kernel.org/linux-media/[email protected]
Fixes: 1c35ba3 ("media: si2157: use a different namespace for firmware")
Cc: [email protected] # 5.17.x
Signed-off-by: Piotr Chmura <[email protected]>
Tested-by: Robert Schlabbach <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
Piotr Chmura authored and mchehab committed Apr 9, 2022
1 parent 62c3186 commit 3ae87d2
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions drivers/media/tuners/si2157.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,16 @@ static int si2157_cmd_execute(struct i2c_client *client, struct si2157_cmd *cmd)
}

static const struct si2157_tuner_info si2157_tuners[] = {
{ SI2141, false, 0x60, SI2141_60_FIRMWARE, SI2141_A10_FIRMWARE },
{ SI2141, false, 0x61, SI2141_61_FIRMWARE, SI2141_A10_FIRMWARE },
{ SI2146, false, 0x11, SI2146_11_FIRMWARE, NULL },
{ SI2147, false, 0x50, SI2147_50_FIRMWARE, NULL },
{ SI2148, true, 0x32, SI2148_32_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2148, true, 0x33, SI2148_33_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2157, false, 0x50, SI2157_50_FIRMWARE, SI2157_A30_FIRMWARE },
{ SI2158, false, 0x50, SI2158_50_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2158, false, 0x51, SI2158_51_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2177, false, 0x50, SI2177_50_FIRMWARE, SI2157_A30_FIRMWARE },
{ SI2141, 0x60, false, SI2141_60_FIRMWARE, SI2141_A10_FIRMWARE },
{ SI2141, 0x61, false, SI2141_61_FIRMWARE, SI2141_A10_FIRMWARE },
{ SI2146, 0x11, false, SI2146_11_FIRMWARE, NULL },
{ SI2147, 0x50, false, SI2147_50_FIRMWARE, NULL },
{ SI2148, 0x32, true, SI2148_32_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2148, 0x33, true, SI2148_33_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2157, 0x50, false, SI2157_50_FIRMWARE, SI2157_A30_FIRMWARE },
{ SI2158, 0x50, false, SI2158_50_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2158, 0x51, false, SI2158_51_FIRMWARE, SI2158_A20_FIRMWARE },
{ SI2177, 0x50, false, SI2177_50_FIRMWARE, SI2157_A30_FIRMWARE },
};

static int si2157_load_firmware(struct dvb_frontend *fe,
Expand Down Expand Up @@ -178,7 +178,7 @@ static int si2157_find_and_load_firmware(struct dvb_frontend *fe)
}
}

if (!fw_name && !fw_alt_name) {
if (required && !fw_name && !fw_alt_name) {
dev_err(&client->dev,
"unknown chip version Si21%d-%c%c%c ROM 0x%02x\n",
part_id, cmd.args[1], cmd.args[3], cmd.args[4], rom_id);
Expand Down

0 comments on commit 3ae87d2

Please sign in to comment.