You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
V4L/DVB: Support or LME2510(C) DM04/QQBOX USB DVB-S BOXES
DM04/QQBOX DVB-S USB BOX with LME2510C+SHARP:BS2F7HZ7395 or LME2510+LGTDQT-P001F tuner. [mchehab@redhat.com: Fix merge conflicts/compilation and CodingStyle issues] Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
9d10f3d7e7
commit
d2f918bba7
@@ -26,7 +26,8 @@ use IO::Handle;
|
||||
"dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
|
||||
"or51211", "or51132_qam", "or51132_vsb", "bluebird",
|
||||
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
|
||||
"af9015", "ngene", "az6027");
|
||||
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
|
||||
"lme2510c_s7395_old");
|
||||
|
||||
# Check args
|
||||
syntax() if (scalar(@ARGV) != 1);
|
||||
@@ -584,6 +585,49 @@ sub az6027{
|
||||
|
||||
$firmware;
|
||||
}
|
||||
|
||||
sub lme2510_lg {
|
||||
my $sourcefile = "LMEBDA_DVBS.sys";
|
||||
my $hash = "fc6017ad01e79890a97ec53bea157ed2";
|
||||
my $outfile = "dvb-usb-lme2510-lg.fw";
|
||||
my $hasho = "caa065d5fdbd2c09ad57b399bbf55cad";
|
||||
|
||||
checkstandard();
|
||||
|
||||
verify($sourcefile, $hash);
|
||||
extract($sourcefile, 4168, 3841, $outfile);
|
||||
verify($outfile, $hasho);
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub lme2510c_s7395 {
|
||||
my $sourcefile = "US2A0D.sys";
|
||||
my $hash = "b0155a8083fb822a3bd47bc360e74601";
|
||||
my $outfile = "dvb-usb-lme2510c-s7395.fw";
|
||||
my $hasho = "3a3cf1aeebd17b6ddc04cebe131e94cf";
|
||||
|
||||
checkstandard();
|
||||
|
||||
verify($sourcefile, $hash);
|
||||
extract($sourcefile, 37248, 3720, $outfile);
|
||||
verify($outfile, $hasho);
|
||||
$outfile;
|
||||
}
|
||||
|
||||
sub lme2510c_s7395_old {
|
||||
my $sourcefile = "LMEBDA_DVBS7395C.sys";
|
||||
my $hash = "7572ae0eb9cdf91baabd7c0ba9e09b31";
|
||||
my $outfile = "dvb-usb-lme2510c-s7395.fw";
|
||||
my $hasho = "90430c5b435eb5c6f88fd44a9d950674";
|
||||
|
||||
checkstandard();
|
||||
|
||||
verify($sourcefile, $hash);
|
||||
extract($sourcefile, 4208, 3881, $outfile);
|
||||
verify($outfile, $hasho);
|
||||
$outfile;
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Utilities
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
To extract firmware for the DM04/QQBOX you need to copy the
|
||||
following file(s) to this directory.
|
||||
|
||||
for DM04+/QQBOX LME2510C (Sharp 7395 Tuner)
|
||||
-------------------------------------------
|
||||
|
||||
The Sharp 7395 driver can be found in windows/system32/driver
|
||||
|
||||
US2A0D.sys (dated 17 Mar 2009)
|
||||
|
||||
|
||||
and run
|
||||
./get_dvb_firmware lme2510c_s7395
|
||||
|
||||
will produce
|
||||
dvb-usb-lme2510c-s7395.fw
|
||||
|
||||
An alternative but older firmware can be found on the driver
|
||||
disk DVB-S_EN_3.5A in BDADriver/driver
|
||||
|
||||
LMEBDA_DVBS7395C.sys (dated 18 Jan 2008)
|
||||
|
||||
and run
|
||||
./get_dvb_firmware lme2510c_s7395_old
|
||||
|
||||
will produce
|
||||
dvb-usb-lme2510c-s7395.fw
|
||||
|
||||
--------------------------------------------------------------------
|
||||
|
||||
The LG firmware can be found on the driver
|
||||
disk DM04+_5.1A[LG] in BDADriver/driver
|
||||
|
||||
for DM04 LME2510 (LG Tuner)
|
||||
---------------------------
|
||||
|
||||
LMEBDA_DVBS.sys (dated 13 Nov 2007)
|
||||
|
||||
and run
|
||||
./get_dvb_firmware lme2510_lg
|
||||
|
||||
will produce
|
||||
dvb-usb-lme2510-lg.fw
|
||||
|
||||
|
||||
Other LG firmware can be extracted manually from US280D.sys
|
||||
only found in windows/system32/driver.
|
||||
However, this firmware does not run very well under Windows
|
||||
or with the Linux driver.
|
||||
|
||||
dd if=US280D.sys ibs=1 skip=36856 count=3976 of=dvb-usb-lme2510-lg.fw
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Copy the firmware file(s) to /lib/firmware
|
||||
@@ -39,6 +39,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
||||
rc-kworld-315u.o \
|
||||
rc-kworld-plus-tv-analog.o \
|
||||
rc-lirc.o \
|
||||
rc-lme2510.o \
|
||||
rc-manli.o \
|
||||
rc-msi-tvanywhere.o \
|
||||
rc-msi-tvanywhere-plus.o \
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
/* LME2510 remote control
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2010 Malcolm Priestley (tvboxspy@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <media/rc-map.h>
|
||||
|
||||
|
||||
static struct ir_scancode lme2510_rc[] = {
|
||||
{ 0xba45, KEY_0 },
|
||||
{ 0xa05f, KEY_1 },
|
||||
{ 0xaf50, KEY_2 },
|
||||
{ 0xa25d, KEY_3 },
|
||||
{ 0xbe41, KEY_4 },
|
||||
{ 0xf50a, KEY_5 },
|
||||
{ 0xbd42, KEY_6 },
|
||||
{ 0xb847, KEY_7 },
|
||||
{ 0xb649, KEY_8 },
|
||||
{ 0xfa05, KEY_9 },
|
||||
{ 0xbc43, KEY_POWER },
|
||||
{ 0xb946, KEY_SUBTITLE },
|
||||
{ 0xf906, KEY_PAUSE },
|
||||
{ 0xfc03, KEY_MEDIA_REPEAT},
|
||||
{ 0xfd02, KEY_PAUSE },
|
||||
{ 0xa15e, KEY_VOLUMEUP },
|
||||
{ 0xa35c, KEY_VOLUMEDOWN },
|
||||
{ 0xf609, KEY_CHANNELUP },
|
||||
{ 0xe51a, KEY_CHANNELDOWN },
|
||||
{ 0xe11e, KEY_PLAY },
|
||||
{ 0xe41b, KEY_ZOOM },
|
||||
{ 0xa659, KEY_MUTE },
|
||||
{ 0xa55a, KEY_TV },
|
||||
{ 0xe718, KEY_RECORD },
|
||||
{ 0xf807, KEY_EPG },
|
||||
{ 0xfe01, KEY_STOP },
|
||||
|
||||
};
|
||||
|
||||
static struct rc_keymap lme2510_map = {
|
||||
.map = {
|
||||
.scan = lme2510_rc,
|
||||
.size = ARRAY_SIZE(lme2510_rc),
|
||||
.ir_type = IR_TYPE_UNKNOWN,
|
||||
.name = RC_MAP_LME2510,
|
||||
}
|
||||
};
|
||||
|
||||
static int __init init_rc_lme2510_map(void)
|
||||
{
|
||||
return ir_register_map(&lme2510_map);
|
||||
}
|
||||
|
||||
static void __exit exit_rc_lme2510_map(void)
|
||||
{
|
||||
ir_unregister_map(&lme2510_map);
|
||||
}
|
||||
|
||||
module_init(init_rc_lme2510_map)
|
||||
module_exit(exit_rc_lme2510_map)
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com");
|
||||
@@ -347,3 +347,14 @@ config DVB_USB_AZ6027
|
||||
select DVB_STB6100 if !DVB_FE_CUSTOMISE
|
||||
help
|
||||
Say Y here to support the AZ6027 device
|
||||
|
||||
config DVB_USB_LME2510
|
||||
tristate "LME DM04/QQBOX DVB-S USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_TDA10086 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA826X if !DVB_FE_CUSTOMISE
|
||||
select DVB_STV0288 if !DVB_FE_CUSTOMISE
|
||||
select DVB_IX2505V if !DVB_FE_CUSTOMISE
|
||||
depends on IR_CORE
|
||||
help
|
||||
Say Y here to support the LME DM04/QQBOX DVB-S USB2.0 .
|
||||
|
||||
@@ -88,6 +88,9 @@ obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o
|
||||
dvb-usb-az6027-objs = az6027.o
|
||||
obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o
|
||||
|
||||
dvb-usb-lmedm04-objs = lmedm04.o
|
||||
obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o
|
||||
|
||||
EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
|
||||
# due to tuner-xc3028
|
||||
EXTRA_CFLAGS += -Idrivers/media/common/tuners
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,187 @@
|
||||
/* DVB USB compliant linux driver for
|
||||
*
|
||||
* DM04/QQBOX DVB-S USB BOX LME2510C + SHARP:BS2F7HZ7395
|
||||
* LME2510C + LGTDQT-P001F
|
||||
*
|
||||
* MVB7395 (LME2510C+SHARP:BS2F7HZ7395)
|
||||
* SHARP:BS2F7HZ7395 = (STV0288+Sharp IX2505V)
|
||||
*
|
||||
* MVB0001F (LME2510C+LGTDQT-P001F)
|
||||
* LG TDQY - P001F =(TDA8263 + TDA10086H)
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 2.
|
||||
* *
|
||||
* see Documentation/dvb/README.dvb-usb for more information
|
||||
*/
|
||||
#ifndef _DVB_USB_LME2510_H_
|
||||
#define _DVB_USB_LME2510_H_
|
||||
|
||||
/* Streamer & PID
|
||||
*
|
||||
* Note: These commands do not actually stop the streaming
|
||||
* but form some kind of packet filtering/stream count
|
||||
* or tuning related functions.
|
||||
* 06 XX
|
||||
* offset 1 = 00 Enable Streaming
|
||||
*
|
||||
*
|
||||
* PID
|
||||
* 03 XX XX ----> reg number ---> setting....20 XX
|
||||
* offset 1 = length
|
||||
* offset 2 = start of data
|
||||
* end byte -1 = 20
|
||||
* end byte = clear pid always a0, other wise 9c, 9a ??
|
||||
*
|
||||
* RESET (also clears PID filter)
|
||||
* 3a 01 00
|
||||
*/
|
||||
#define LME_ST_ON_W {0x06, 0x00}
|
||||
#define LME_RESET {0x3a, 0x01, 0x00}
|
||||
#define LME_CLEAR_PID {0x03, 0x02, 0x20, 0xa0}
|
||||
|
||||
|
||||
/* LME Power Control
|
||||
* 07 XX XX
|
||||
* offset 1 = 01 Power? my device cannot be powered down
|
||||
* offset 2 = 00=Voltage low 01=Voltage high
|
||||
*/
|
||||
|
||||
#define LME_VOLTAGE_L {0x07, 0x01, 0x00}
|
||||
#define LME_VOLTAGE_H {0x07, 0x01, 0x01}
|
||||
|
||||
|
||||
/* Initial stv0288 settings for 7395 Frontend */
|
||||
static u8 s7395_inittab[] = {
|
||||
0x00, 0x11,
|
||||
0x01, 0x15,
|
||||
0x02, 0x20,
|
||||
0x03, 0x8e,
|
||||
0x04, 0x8e,
|
||||
0x05, 0x12,
|
||||
0x06, 0xff,
|
||||
0x07, 0x20,
|
||||
0x08, 0x00,
|
||||
0x09, 0x00,
|
||||
0x0a, 0x04,
|
||||
0x0b, 0x00,
|
||||
0x0c, 0x00,
|
||||
0x0d, 0x00,
|
||||
0x0e, 0xc1,
|
||||
0x0f, 0x54,
|
||||
0x10, 0x40,
|
||||
0x11, 0x7a,
|
||||
0x12, 0x03,
|
||||
0x13, 0x48,
|
||||
0x14, 0x84,
|
||||
0x15, 0xc5,
|
||||
0x16, 0xb8,
|
||||
0x17, 0x9c,
|
||||
0x18, 0x00,
|
||||
0x19, 0xa6,
|
||||
0x1a, 0x88,
|
||||
0x1b, 0x8f,
|
||||
0x1c, 0xf0,
|
||||
0x1e, 0x80,
|
||||
0x20, 0x0b,
|
||||
0x21, 0x54,
|
||||
0x22, 0xff,
|
||||
0x23, 0x01,
|
||||
0x24, 0x9a,
|
||||
0x25, 0x7f,
|
||||
0x26, 0x00,
|
||||
0x27, 0x00,
|
||||
0x28, 0x46,
|
||||
0x29, 0x66,
|
||||
0x2a, 0x90,
|
||||
0x2b, 0xfa,
|
||||
0x2c, 0xd9,
|
||||
0x2d, 0x02,
|
||||
0x2e, 0xb1,
|
||||
0x2f, 0x00,
|
||||
0x30, 0x0,
|
||||
0x31, 0x1e,
|
||||
0x32, 0x14,
|
||||
0x33, 0x0f,
|
||||
0x34, 0x09,
|
||||
0x35, 0x0c,
|
||||
0x36, 0x05,
|
||||
0x37, 0x2f,
|
||||
0x38, 0x16,
|
||||
0x39, 0xbd,
|
||||
0x3a, 0x0,
|
||||
0x3b, 0x13,
|
||||
0x3c, 0x11,
|
||||
0x3d, 0x30,
|
||||
0x3e, 0x00,
|
||||
0x3f, 0x00,
|
||||
0x40, 0x63,
|
||||
0x41, 0x04,
|
||||
0x42, 0x60,
|
||||
0x43, 0x00,
|
||||
0x44, 0x00,
|
||||
0x45, 0x00,
|
||||
0x46, 0x00,
|
||||
0x47, 0x00,
|
||||
0x4a, 0x00,
|
||||
0x4b, 0xd1,
|
||||
0x4c, 0x33,
|
||||
0x50, 0x12,
|
||||
0x51, 0x36,
|
||||
0x52, 0x21,
|
||||
0x53, 0x94,
|
||||
0x54, 0xb2,
|
||||
0x55, 0x29,
|
||||
0x56, 0x64,
|
||||
0x57, 0x2b,
|
||||
0x58, 0x54,
|
||||
0x59, 0x86,
|
||||
0x5a, 0x00,
|
||||
0x5b, 0x9b,
|
||||
0x5c, 0x08,
|
||||
0x5d, 0x7f,
|
||||
0x5e, 0xff,
|
||||
0x5f, 0x8d,
|
||||
0x70, 0x0,
|
||||
0x71, 0x0,
|
||||
0x72, 0x0,
|
||||
0x74, 0x0,
|
||||
0x75, 0x0,
|
||||
0x76, 0x0,
|
||||
0x81, 0x0,
|
||||
0x82, 0x3f,
|
||||
0x83, 0x3f,
|
||||
0x84, 0x0,
|
||||
0x85, 0x0,
|
||||
0x88, 0x0,
|
||||
0x89, 0x0,
|
||||
0x8a, 0x0,
|
||||
0x8b, 0x0,
|
||||
0x8c, 0x0,
|
||||
0x90, 0x0,
|
||||
0x91, 0x0,
|
||||
0x92, 0x0,
|
||||
0x93, 0x0,
|
||||
0x94, 0x1c,
|
||||
0x97, 0x0,
|
||||
0xa0, 0x48,
|
||||
0xa1, 0x0,
|
||||
0xb0, 0xb8,
|
||||
0xb1, 0x3a,
|
||||
0xb2, 0x10,
|
||||
0xb3, 0x82,
|
||||
0xb4, 0x80,
|
||||
0xb5, 0x82,
|
||||
0xb6, 0x82,
|
||||
0xb7, 0x82,
|
||||
0xb8, 0x20,
|
||||
0xb9, 0x0,
|
||||
0xf0, 0x0,
|
||||
0xf1, 0x0,
|
||||
0xf2, 0xc0,
|
||||
0xff, 0xff,
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -96,6 +96,7 @@ void rc_map_init(void);
|
||||
#define RC_MAP_KWORLD_315U "rc-kworld-315u"
|
||||
#define RC_MAP_KWORLD_PLUS_TV_ANALOG "rc-kworld-plus-tv-analog"
|
||||
#define RC_MAP_LIRC "rc-lirc"
|
||||
#define RC_MAP_LME2510 "rc-lme2510"
|
||||
#define RC_MAP_MANLI "rc-manli"
|
||||
#define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus"
|
||||
#define RC_MAP_MSI_TVANYWHERE "rc-msi-tvanywhere"
|
||||
|
||||
Reference in New Issue
Block a user