V4L/DVB: lgs8gxx: remove firmware for lgs8g75
The recently added support for lgs8g75 included some 8051 machine code without accompanying source code. Replace this with use of the firmware loader. Compile-tested only. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
73c994e4fb
commit
7638699c25
|
@ -584,6 +584,7 @@ config DVB_LGS8GL5
|
|||
config DVB_LGS8GXX
|
||||
tristate "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
|
||||
depends on DVB_CORE && I2C
|
||||
select FW_LOADER
|
||||
default m if DVB_FE_CUSTOMISE
|
||||
help
|
||||
A DMB-TH tuner module. Say Y when you want to support this frontend.
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
*/
|
||||
|
||||
#include <asm/div64.h>
|
||||
#include <linux/firmware.h>
|
||||
|
||||
#include "dvb_frontend.h"
|
||||
|
||||
|
@ -46,42 +47,6 @@ module_param(fake_signal_str, int, 0644);
|
|||
MODULE_PARM_DESC(fake_signal_str, "fake signal strength for LGS8913."
|
||||
"Signal strength calculation is slow.(default:on).");
|
||||
|
||||
static const u8 lgs8g75_initdat[] = {
|
||||
0x01, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xE4, 0xF5, 0xA8, 0xF5, 0xB8, 0xF5, 0x88, 0xF5,
|
||||
0x89, 0xF5, 0x87, 0x75, 0xD0, 0x00, 0x11, 0x50,
|
||||
0x11, 0x50, 0xF4, 0xF5, 0x80, 0xF5, 0x90, 0xF5,
|
||||
0xA0, 0xF5, 0xB0, 0x75, 0x81, 0x30, 0x80, 0x01,
|
||||
0x32, 0x90, 0x80, 0x12, 0x74, 0xFF, 0xF0, 0x90,
|
||||
0x80, 0x13, 0x74, 0x1F, 0xF0, 0x90, 0x80, 0x23,
|
||||
0x74, 0x01, 0xF0, 0x90, 0x80, 0x22, 0xF0, 0x90,
|
||||
0x00, 0x48, 0x74, 0x00, 0xF0, 0x90, 0x80, 0x4D,
|
||||
0x74, 0x05, 0xF0, 0x90, 0x80, 0x09, 0xE0, 0x60,
|
||||
0x21, 0x12, 0x00, 0xDD, 0x14, 0x60, 0x1B, 0x12,
|
||||
0x00, 0xDD, 0x14, 0x60, 0x15, 0x12, 0x00, 0xDD,
|
||||
0x14, 0x60, 0x0F, 0x12, 0x00, 0xDD, 0x14, 0x60,
|
||||
0x09, 0x12, 0x00, 0xDD, 0x14, 0x60, 0x03, 0x12,
|
||||
0x00, 0xDD, 0x90, 0x80, 0x42, 0xE0, 0x60, 0x0B,
|
||||
0x14, 0x60, 0x0C, 0x14, 0x60, 0x0D, 0x14, 0x60,
|
||||
0x0E, 0x01, 0xB3, 0x74, 0x04, 0x01, 0xB9, 0x74,
|
||||
0x05, 0x01, 0xB9, 0x74, 0x07, 0x01, 0xB9, 0x74,
|
||||
0x0A, 0xC0, 0xE0, 0x74, 0xC8, 0x12, 0x00, 0xE2,
|
||||
0xD0, 0xE0, 0x14, 0x70, 0xF4, 0x90, 0x80, 0x09,
|
||||
0xE0, 0x70, 0xAE, 0x12, 0x00, 0xF6, 0x12, 0x00,
|
||||
0xFE, 0x90, 0x00, 0x48, 0xE0, 0x04, 0xF0, 0x90,
|
||||
0x80, 0x4E, 0xF0, 0x01, 0x73, 0x90, 0x80, 0x08,
|
||||
0xF0, 0x22, 0xF8, 0x7A, 0x0C, 0x79, 0xFD, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9,
|
||||
0xF6, 0xDA, 0xF2, 0xD8, 0xEE, 0x22, 0x90, 0x80,
|
||||
0x65, 0xE0, 0x54, 0xFD, 0xF0, 0x22, 0x90, 0x80,
|
||||
0x65, 0xE0, 0x44, 0xC2, 0xF0, 0x22
|
||||
};
|
||||
|
||||
/* LGS8GXX internal helper functions */
|
||||
|
||||
static int lgs8gxx_write_reg(struct lgs8gxx_state *priv, u8 reg, u8 data)
|
||||
|
@ -627,9 +592,14 @@ static int lgs8913_init(struct lgs8gxx_state *priv)
|
|||
|
||||
static int lgs8g75_init_data(struct lgs8gxx_state *priv)
|
||||
{
|
||||
const u8 *p = lgs8g75_initdat;
|
||||
const struct firmware *fw;
|
||||
int rc;
|
||||
int i;
|
||||
|
||||
rc = request_firmware(&fw, "lgs8g75.fw", &priv->i2c->dev);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
lgs8gxx_write_reg(priv, 0xC6, 0x40);
|
||||
|
||||
lgs8gxx_write_reg(priv, 0x3D, 0x04);
|
||||
|
@ -640,16 +610,16 @@ static int lgs8g75_init_data(struct lgs8gxx_state *priv)
|
|||
lgs8gxx_write_reg(priv, 0x3B, 0x00);
|
||||
lgs8gxx_write_reg(priv, 0x38, 0x00);
|
||||
|
||||
for (i = 0; i < sizeof(lgs8g75_initdat); i++) {
|
||||
for (i = 0; i < fw->size; i++) {
|
||||
lgs8gxx_write_reg(priv, 0x38, 0x00);
|
||||
lgs8gxx_write_reg(priv, 0x3A, (u8)(i&0xff));
|
||||
lgs8gxx_write_reg(priv, 0x3B, (u8)(i>>8));
|
||||
lgs8gxx_write_reg(priv, 0x3C, *p);
|
||||
p++;
|
||||
lgs8gxx_write_reg(priv, 0x3C, fw->data[i]);
|
||||
}
|
||||
|
||||
lgs8gxx_write_reg(priv, 0x38, 0x00);
|
||||
|
||||
release_firmware(fw);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue