Commit 9658105d authored by Robert Schlabbach's avatar Robert Schlabbach Committed by Mauro Carvalho Chehab

media: si2157: fix bandwidth stored in dev

Make digital tuning store the bandwidth in Hz in the private dev struct,
rather than the hardware-specific bandwidth property code, so that the
get_bandwidth() function returns the bandwidth in Hz, just as it already
does when using analog tuning.

Link: https://lore.kernel.org/linux-media/trinity-931c0e68-88af-46cc-91a1-986754798a4f-1641509499366@3c-app-gmx-bap68Reported-by: default avatarRobert Schlabbach <robert_s@gmx.net>
Signed-off-by: default avatarRobert Schlabbach <robert_s@gmx.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 95c4cd1d
...@@ -446,7 +446,8 @@ static int si2157_set_params(struct dvb_frontend *fe) ...@@ -446,7 +446,8 @@ static int si2157_set_params(struct dvb_frontend *fe)
struct dtv_frontend_properties *c = &fe->dtv_property_cache; struct dtv_frontend_properties *c = &fe->dtv_property_cache;
int ret; int ret;
struct si2157_cmd cmd; struct si2157_cmd cmd;
u8 bandwidth, delivery_system; u8 bw, delivery_system;
u32 bandwidth;
u32 if_frequency = 5000000; u32 if_frequency = 5000000;
dev_dbg(&client->dev, dev_dbg(&client->dev,
...@@ -458,16 +459,22 @@ static int si2157_set_params(struct dvb_frontend *fe) ...@@ -458,16 +459,22 @@ static int si2157_set_params(struct dvb_frontend *fe)
goto err; goto err;
} }
if (SUPPORTS_1700KHz(dev) && c->bandwidth_hz <= 1700000) if (SUPPORTS_1700KHz(dev) && c->bandwidth_hz <= 1700000) {
bandwidth = 9; bandwidth = 1700000;
else if (c->bandwidth_hz <= 6000000) bw = 9;
bandwidth = 6; } else if (c->bandwidth_hz <= 6000000) {
else if (SUPPORTS_1700KHz(dev) && c->bandwidth_hz <= 6100000) bandwidth = 6000000;
bandwidth = 10; bw = 6;
else if (c->bandwidth_hz <= 7000000) } else if (SUPPORTS_1700KHz(dev) && c->bandwidth_hz <= 6100000) {
bandwidth = 7; bandwidth = 6100000;
else bw = 10;
bandwidth = 8; } else if (c->bandwidth_hz <= 7000000) {
bandwidth = 7000000;
bw = 7;
} else {
bandwidth = 8000000;
bw = 8;
}
switch (c->delivery_system) { switch (c->delivery_system) {
case SYS_ATSC: case SYS_ATSC:
...@@ -497,7 +504,7 @@ static int si2157_set_params(struct dvb_frontend *fe) ...@@ -497,7 +504,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
} }
memcpy(cmd.args, "\x14\x00\x03\x07\x00\x00", 6); memcpy(cmd.args, "\x14\x00\x03\x07\x00\x00", 6);
cmd.args[4] = delivery_system | bandwidth; cmd.args[4] = delivery_system | bw;
if (dev->inversion) if (dev->inversion)
cmd.args[5] = 0x01; cmd.args[5] = 0x01;
cmd.wlen = 6; cmd.wlen = 6;
......
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