Commit 57df5373 authored by Gon Solo's avatar Gon Solo Committed by Mauro Carvalho Chehab

media: si2157: Add option for not downloading firmware.

While at it, convert to kernel-doc format and use bits instead of bools.
Signed-off-by: default avatarGon Solo <gonsolo@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent d7f9e850
...@@ -118,6 +118,11 @@ static int si2157_init(struct dvb_frontend *fe) ...@@ -118,6 +118,11 @@ static int si2157_init(struct dvb_frontend *fe)
goto err; goto err;
} }
if (dev->dont_load_firmware) {
dev_info(&client->dev, "device is buggy, skipping firmware download\n");
goto skip_fw_download;
}
/* query chip revision */ /* query chip revision */
memcpy(cmd.args, "\x02", 1); memcpy(cmd.args, "\x02", 1);
cmd.wlen = 1; cmd.wlen = 1;
...@@ -440,6 +445,7 @@ static int si2157_probe(struct i2c_client *client, ...@@ -440,6 +445,7 @@ static int si2157_probe(struct i2c_client *client,
i2c_set_clientdata(client, dev); i2c_set_clientdata(client, dev);
dev->fe = cfg->fe; dev->fe = cfg->fe;
dev->inversion = cfg->inversion; dev->inversion = cfg->inversion;
dev->dont_load_firmware = cfg->dont_load_firmware;
dev->if_port = cfg->if_port; dev->if_port = cfg->if_port;
dev->chiptype = (u8)id->driver_data; dev->chiptype = (u8)id->driver_data;
dev->if_frequency = 5000000; /* default value of property 0x0706 */ dev->if_frequency = 5000000; /* default value of property 0x0706 */
......
...@@ -11,29 +11,34 @@ ...@@ -11,29 +11,34 @@
#include <media/media-device.h> #include <media/media-device.h>
#include <media/dvb_frontend.h> #include <media/dvb_frontend.h>
/* /**
* I2C address * struct si2157_config - configuration parameters for si2157
* 0x60 *
* @fe:
* frontend returned by driver
* @mdev:
* media device returned by driver
* @inversion:
* spectral inversion
* @dont_load_firmware:
* Instead of uploading a new firmware, use the existing one
* @if_port:
* Port selection
* Select the RF interface to use (pins 9+11 or 12+13)
*
* Note:
* The I2C address of this demod is 0x60.
*/ */
struct si2157_config { struct si2157_config {
/*
* frontend
*/
struct dvb_frontend *fe; struct dvb_frontend *fe;
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
struct media_device *mdev; struct media_device *mdev;
#endif #endif
/* unsigned int inversion:1;
* Spectral Inversion unsigned int dont_load_firmware:1;
*/
bool inversion;
/*
* Port selection
* Select the RF interface to use (pins 9+11 or 12+13)
*/
u8 if_port; u8 if_port;
}; };
......
...@@ -23,8 +23,9 @@ enum si2157_pads { ...@@ -23,8 +23,9 @@ enum si2157_pads {
struct si2157_dev { struct si2157_dev {
struct mutex i2c_mutex; struct mutex i2c_mutex;
struct dvb_frontend *fe; struct dvb_frontend *fe;
bool active; unsigned int active:1;
bool inversion; unsigned int inversion:1;
unsigned int dont_load_firmware:1;
u8 chiptype; u8 chiptype;
u8 if_port; u8 if_port;
u32 if_frequency; u32 if_frequency;
......
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