[PATCHv2] si2168: return error if set_frontend is called with invalid parameters
Commit Message
This patch is based on Antti's silabs branch.
According to dvb-frontend.h set_frontend may be called with bandwidth_hz set to
0 if automatic bandwidth is required. Si2168 does not support automatic
bandwidth and does not declare FE_CAN_BANDWIDTH_AUTO in caps.
This patch will change the behaviour in a way that EINVAL is returned if
bandwidth_hz is 0.
v2: remove error message, remove line break to comply with coding style.
Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
---
drivers/media/dvb-frontends/si2168.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
On 01/16/2015 08:36 PM, Olli Salonen wrote:
> This patch is based on Antti's silabs branch.
>
> According to dvb-frontend.h set_frontend may be called with bandwidth_hz set to
> 0 if automatic bandwidth is required. Si2168 does not support automatic
> bandwidth and does not declare FE_CAN_BANDWIDTH_AUTO in caps.
>
> This patch will change the behaviour in a way that EINVAL is returned if
> bandwidth_hz is 0.
>
> v2: remove error message, remove line break to comply with coding style.
>
> Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Antti
> ---
> drivers/media/dvb-frontends/si2168.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
> index 7f966f3..85acc54 100644
> --- a/drivers/media/dvb-frontends/si2168.c
> +++ b/drivers/media/dvb-frontends/si2168.c
> @@ -180,7 +180,10 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
> goto err;
> }
>
> - if (c->bandwidth_hz <= 5000000)
> + if (c->bandwidth_hz == 0) {
> + ret = -EINVAL;
> + goto err;
> + } else if (c->bandwidth_hz <= 5000000)
> bandwidth = 0x05;
> else if (c->bandwidth_hz <= 6000000)
> bandwidth = 0x06;
>
@@ -180,7 +180,10 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
goto err;
}
- if (c->bandwidth_hz <= 5000000)
+ if (c->bandwidth_hz == 0) {
+ ret = -EINVAL;
+ goto err;
+ } else if (c->bandwidth_hz <= 5000000)
bandwidth = 0x05;
else if (c->bandwidth_hz <= 6000000)
bandwidth = 0x06;