* [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift @ 2010-02-15 17:37 stefan.ringel 2010-02-15 17:37 ` [PATCH 02/11] tm6000: add i2c bus id for tm6000 stefan.ringel 2010-02-15 18:36 ` [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift Devin Heitmueller 0 siblings, 2 replies; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c index ed50168..e051caa 100644 --- a/drivers/media/common/tuners/tuner-xc2028.c +++ b/drivers/media/common/tuners/tuner-xc2028.c @@ -1114,7 +1114,12 @@ static int xc2028_set_params(struct dvb_frontend *fe, /* All S-code tables need a 200kHz shift */ if (priv->ctrl.demod) { - demod = priv->ctrl.demod + 200; + if ((priv->firm_version == 0x0306) && + (priv->ctrl.demod == XC3028_FE_ZARLINK456) && + ((type & DTV78) || (type & DTV8))) + demod = priv->ctrl.demod; + else + demod = priv->ctrl.demod + 200; /* * The DTV7 S-code table needs a 700 kHz shift. * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 02/11] tm6000: add i2c bus id for tm6000 2010-02-15 17:37 [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 03/11] tm6000: add additional init register stefan.ringel 2010-02-15 18:36 ` [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift Devin Heitmueller 1 sibling, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-i2c.c b/drivers/staging/tm6000/tm6000-i2c.c index 05df06b..6b17d0b 100644 --- a/drivers/staging/tm6000/tm6000-i2c.c +++ b/drivers/staging/tm6000/tm6000-i2c.c @@ -32,8 +32,6 @@ #include "tuner-xc2028.h" -/*FIXME: Hack to avoid needing to patch i2c-id.h */ -#define I2C_HW_B_TM6000 I2C_HW_B_EM28XX /* ----------------------------------------------------------- */ static unsigned int i2c_debug = 0; diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index e844a0b..09e3a4e 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h @@ -42,6 +42,7 @@ #define I2C_HW_B_AU0828 0x010023 /* auvitek au0828 usb bridge */ #define I2C_HW_B_CX231XX 0x010024 /* Conexant CX231XX USB based cards */ #define I2C_HW_B_HDPVR 0x010025 /* Hauppauge HD PVR */ +#define I2C_HW_B_TM6000 0x010026 /* TM5600/TM6000/TM6010 media bridge */ /* --- SGI adapters */ #define I2C_HW_SGI_VINO 0x160000 -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 03/11] tm6000: add additional init register 2010-02-15 17:37 ` [PATCH 02/11] tm6000: add i2c bus id for tm6000 stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 04/11] tm6000: add different tuner reset for terratec stefan.ringel 0 siblings, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-core.c b/drivers/staging/tm6000/tm6000-core.c index 9d66a3f..2c9eb74 100644 --- a/drivers/staging/tm6000/tm6000-core.c +++ b/drivers/staging/tm6000/tm6000-core.c @@ -414,6 +414,13 @@ struct reg_init tm6010_init_tab[] = { { REQ_05_SET_GET_USBREG, 0x18, 0x00 }, + { REQ_07_SET_GET_AVREG, 0xdc, 0xaa }, + { REQ_07_SET_GET_AVREG, 0xdd, 0x30 }, + { REQ_07_SET_GET_AVREG, 0xde, 0x20 }, + { REQ_07_SET_GET_AVREG, 0xdf, 0xd0 }, + { REQ_04_EN_DISABLE_MCU_INT, 0x02, 0x00 }, + { REQ_07_SET_GET_AVREG, 0xd8, 0x2f }, + /* set remote wakeup key:any key wakeup */ { REQ_07_SET_GET_AVREG, 0xe5, 0xfe }, { REQ_07_SET_GET_AVREG, 0xda, 0xff }, -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 04/11] tm6000: add different tuner reset for terratec 2010-02-15 17:37 ` [PATCH 03/11] tm6000: add additional init register stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 05/11] tm6000: add card setup for terratec cinergy hybrid stefan.ringel 0 siblings, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c index ff04bba..5a8d716 100644 --- a/drivers/staging/tm6000/tm6000-cards.c +++ b/drivers/staging/tm6000/tm6000-cards.c @@ -269,12 +269,28 @@ int tm6000_tuner_callback(void *ptr, int component, int command, int arg) /* Reset codes during load firmware */ switch (arg) { case 0: - tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, - dev->tuner_reset_gpio, 0x00); - msleep(130); - tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, - dev->tuner_reset_gpio, 0x01); - msleep(130); + /* newer tuner can faster reset */ + switch(dev->model) { + case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE: + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, + dev->tuner_reset_gpio, 0x01); + msleep(60); + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, + dev->tuner_reset_gpio, 0x00); + msleep(75); + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, + dev->tuner_reset_gpio, 0x01); + msleep(60); + break; + default: + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, + dev->tuner_reset_gpio, 0x00); + msleep(130); + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, + dev->tuner_reset_gpio, 0x01); + msleep(130); + break; + } break; case 1: tm6000_set_reg (dev, REQ_04_EN_DISABLE_MCU_INT, -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 05/11] tm6000: add card setup for terratec cinergy hybrid 2010-02-15 17:37 ` [PATCH 04/11] tm6000: add different tuner reset for terratec stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 06/11] tm6000: reset the numbers of feeds to 8 stefan.ringel 0 siblings, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c index 5a8d716..7a60e5c 100644 --- a/drivers/staging/tm6000/tm6000-cards.c +++ b/drivers/staging/tm6000/tm6000-cards.c @@ -332,6 +332,31 @@ int tm6000_cards_setup(struct tm6000_core *dev) tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_3, 0x01); msleep(11); break; + case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE: + /* Turn zarlink zl10353 on */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x00); + msleep(15); + /* Reset zarlink zl10353 */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_1, 0x00); + msleep(50); + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_1, 0x01); + msleep(15); + /* Turn zarlink zl10353 off */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x01); + msleep(15); + /* ir ? */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_0, 0x01); + msleep(15); + /* Power led on (blue) */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_7, 0x00); + msleep(15); + /* DVB led off (orange) */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_5, 0x01); + msleep(15); + /* Turn zarlink zl10353 on */ + tm6000_set_reg (dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x00); + msleep(15); + break; default: break; } -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 06/11] tm6000: reset the numbers of feeds to 8 2010-02-15 17:37 ` [PATCH 05/11] tm6000: add card setup for terratec cinergy hybrid stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 07/11] tm6000: add i2c send recv functions stefan.ringel 0 siblings, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-dvb.c b/drivers/staging/tm6000/tm6000-dvb.c index e16d55e..12a0758 100644 --- a/drivers/staging/tm6000/tm6000-dvb.c +++ b/drivers/staging/tm6000/tm6000-dvb.c @@ -285,8 +285,8 @@ int tm6000_dvb_register(struct tm6000_core *dev) dvb->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING; dvb->demux.priv = dev; - dvb->demux.filternum = 5; /* 256; */ - dvb->demux.feednum = 5; /* 256; */ + dvb->demux.filternum = 8; + dvb->demux.feednum = 8; dvb->demux.start_feed = tm6000_start_feed; dvb->demux.stop_feed = tm6000_stop_feed; dvb->demux.write_to_decoder = NULL; -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 07/11] tm6000: add i2c send recv functions 2010-02-15 17:37 ` [PATCH 06/11] tm6000: reset the numbers of feeds to 8 stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 08/11] tm6000: special request for all tuner stefan.ringel 2010-02-18 20:28 ` [PATCH 07/11] tm6000: add i2c send recv functions Mauro Carvalho Chehab 0 siblings, 2 replies; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-i2c.c b/drivers/staging/tm6000/tm6000-i2c.c index 6b17d0b..9d02674 100644 --- a/drivers/staging/tm6000/tm6000-i2c.c +++ b/drivers/staging/tm6000/tm6000-i2c.c @@ -42,6 +42,32 @@ MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); printk(KERN_DEBUG "%s at %s: " fmt, \ dev->name, __FUNCTION__ , ##args); } while (0) +int tm6000_i2c_send_byte (struct tm6000_core *dev, unsigned char addr, __u8 reg, char *buf, int len) +{ + return tm6000_read_write_usb (dev, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_16_SET_GET_I2C_WR1_RND, addr | reg << 8, 0, buf, len); +} + +int tm6000_i2c_recv_byte (struct tm6000_core *dev, unsigned char addr, __u8 reg, char *buf, int len) +{ + int rc: + + rc = tm6000_read_write_usb (dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_16_SET_GET_I2C_WR1_RND, addr | reg << 8, 0, buf, len); + + return rc; +} + +int tm6000_i2c_recv_word (struct tm6000_core *dev, unsigned char addr, __u16 reg, char *buf , int len) +{ + int rc; + + rc = tm6000_read_write_usb (dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_14_SET_GET_I2C_WR2_RND, addr, reg, buf, len); + + return rc; +} + static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num) { @@ -76,13 +102,14 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, i2c_dprintk(2, "; joined to read %s len=%d:", i == num - 2 ? "stop" : "nonstop", msgs[i + 1].len); - rc = tm6000_read_write_usb (dev, - USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - msgs[i].len == 1 ? REQ_16_SET_GET_I2C_WR1_RDN - : REQ_14_SET_GET_I2C_WR2_RDN, - addr | msgs[i].buf[0] << 8, - msgs[i].len == 1 ? 0 : msgs[i].buf[1], - msgs[i + 1].buf, msgs[i + 1].len); + + if (msgs[i].len == 1) { + rc = tm6000_i2c_recv_byte (dev, addr, msgs[i].buf[0], + msgs[i + 1].buf, msgs[i + 1].len); + } else { + rc = tm6000_i2c_recv_word (dev, addr, msgs[i].buf[0] << 8 | msgs[i].buf[1], + msgs[i + 1].buf, msgs[i + 1].len); + } i++; if ((dev->dev_type == TM6010) && (addr == 0xc2)) { @@ -97,10 +124,8 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, if (i2c_debug >= 2) for (byte = 0; byte < msgs[i].len; byte++) printk(" %02x", msgs[i].buf[byte]); - rc = tm6000_read_write_usb(dev, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - REQ_16_SET_GET_I2C_WR1_RDN, - addr | msgs[i].buf[0] << 8, 0, + + rc = tm6000_i2c_send_byte(dev, addr, msgs[i].buf[0], msgs[i].buf + 1, msgs[i].len - 1); if ((dev->dev_type == TM6010) && (addr == 0xc2)) { -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 08/11] tm6000: special request for all tuner 2010-02-15 17:37 ` [PATCH 07/11] tm6000: add i2c send recv functions stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host stefan.ringel 2010-02-18 20:28 ` [PATCH 07/11] tm6000: add i2c send recv functions Mauro Carvalho Chehab 1 sibling, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-i2c.c b/drivers/staging/tm6000/tm6000-i2c.c index 9d02674..ef11d48 100644 --- a/drivers/staging/tm6000/tm6000-i2c.c +++ b/drivers/staging/tm6000/tm6000-i2c.c @@ -112,7 +112,7 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, } i++; - if ((dev->dev_type == TM6010) && (addr == 0xc2)) { + if (addr == dev->tuner_addr) { tm6000_set_reg(dev, 0x32, 0,0); tm6000_set_reg(dev, 0x33, 0,0); } @@ -128,7 +128,7 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, rc = tm6000_i2c_send_byte(dev, addr, msgs[i].buf[0], msgs[i].buf + 1, msgs[i].len - 1); - if ((dev->dev_type == TM6010) && (addr == 0xc2)) { + if (addr == dev->tuner_addr) { tm6000_set_reg(dev, 0x32, 0,0); tm6000_set_reg(dev, 0x33, 0,0); } -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host 2010-02-15 17:37 ` [PATCH 08/11] tm6000: special request for all tuner stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 10/11] tm6000: remove hack.c hack.h, switch to zl10353 module stefan.ringel 2010-02-18 20:20 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host Mauro Carvalho Chehab 0 siblings, 2 replies; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/media/dvb/frontends/zl10353.c b/drivers/media/dvb/frontends/zl10353.c index 8c61271..9716d7e 100644 --- a/drivers/media/dvb/frontends/zl10353.c +++ b/drivers/media/dvb/frontends/zl10353.c @@ -74,7 +74,7 @@ static int zl10353_write(struct dvb_frontend *fe, u8 *ibuf, int ilen) return 0; } -static int zl10353_read_register(struct zl10353_state *state, u8 reg) +static int zl10353_read1_register(struct zl10353_state *state, u8 reg) { int ret; u8 b0[1] = { reg }; @@ -97,6 +97,41 @@ static int zl10353_read_register(struct zl10353_state *state, u8 reg) return b1[0]; } +static int zl10353_read2_register(struct zl10353_state *state, u8 reg) +{ + int ret; + u8 b0[1] = { reg - 1 }; + u8 b1[1] = { 0 }; + struct i2c_msg msg[2] = { { .addr = state->config.demod_address, + .flags = 0, + .buf = b0, .len = 1 }, + { .addr = state->config.demod_address, + .flags = I2C_M_RD, + .buf = b1, .len = 2 } }; + + ret = i2c_transfer(state->i2c, msg, 2); + + if (ret != 2) { + printk("%s: readreg error (reg=%d, ret==%i)\n", + __func__, reg, ret); + return ret; + } + + return b1[1]; +} + +static int zl10353_read_register(struct zl10353_state *state, u8 reg) +{ + int ret; + + if ((state->i2c->id == I2C_HW_B_TM6000) && (reg % 2 == 0)) + ret = zl10353_read2_register(state, reg); + else + ret = zl10353_read1_register(state, reg); + + return ret; +} + static void zl10353_dump_regs(struct dvb_frontend *fe) { struct zl10353_state *state = fe->demodulator_priv; -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 10/11] tm6000: remove hack.c hack.h, switch to zl10353 module 2010-02-15 17:37 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 2010-02-15 17:37 ` [PATCH 11/11] tm6000: change version to 0.0.2 stefan.ringel 2010-02-18 20:20 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host Mauro Carvalho Chehab 1 sibling, 1 reply; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/Makefile b/drivers/staging/tm6000/Makefile index f904d57..8a7faad 100644 --- a/drivers/staging/tm6000/Makefile +++ b/drivers/staging/tm6000/Makefile @@ -6,7 +6,6 @@ tm6000-objs := tm6000-cards.o \ ifeq ($(CONFIG_VIDEO_TM6000_DVB),y) tm6000-objs += tm6000-dvb.o \ - hack.o endif obj-$(CONFIG_VIDEO_TM6000) += tm6000.o diff --git a/drivers/staging/tm6000/hack.c b/drivers/staging/tm6000/hack.c deleted file mode 100644 index fdc7078..0000000 --- a/drivers/staging/tm6000/hack.c +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - -/* - hack.h - hackish code that needs to be improved (or removed) at a - later point - - Copyright (C) 2007 Michel Ludwig <michel.ludwig@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 version 2 - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "hack.h" - -#include "tm6000.h" - -#include <linux/usb.h> - -static inline int tm6000_snd_control_msg(struct tm6000_core *dev, __u8 request, __u16 value, __u16 index, void *data, __u16 size) -{ - return tm6000_read_write_usb (dev, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, request, value, index, data, size); -} - -static int pseudo_zl10353_pll(struct tm6000_core *tm6000_dev, struct dvb_frontend_parameters *p) -{ - u8 *data = kzalloc(50*sizeof(u8), GFP_KERNEL); - -printk(KERN_ALERT "should set frequency %u\n", p->frequency); -printk(KERN_ALERT "and bandwith %u\n", p->u.ofdm.bandwidth); - - if(tm6000_dev->dvb->frontend->ops.tuner_ops.set_params) { - tm6000_dev->dvb->frontend->ops.tuner_ops.set_params(tm6000_dev->dvb->frontend, p); - } - else { - printk(KERN_ALERT "pseudo zl10353: couldn't set tuner parameters\n"); - } - - // init ZL10353 -/* data[0] = 0x0b; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x501e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x80; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x551e, 0x00, data, 0x1); - msleep(100); - data[0] = 0x01; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0xea1e, 0x00, data, 0x1); - msleep(100); - data[0] = 0x00; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0xea1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x1c; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x561e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x40; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x5e1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x36; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x641e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x67; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x651e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe5; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x661e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x19; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe9; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6d1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x44; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x511e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x46; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x521e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x15; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x531e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x0f; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x541e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x75; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x5c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x01; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x00; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - - msleep(50); - - switch(p->u.ofdm.bandwidth) { - case BANDWIDTH_8_MHZ: - data[0] = 0x00; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x36; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x641e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x67; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x651e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe5; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x661e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x19; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe9; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6d1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x44; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x511e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x46; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x521e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x15; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x531e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x0f; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x541e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x75; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x5c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x01; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - break; - - default: - printk(KERN_ALERT "tm6000: bandwidth not supported\n"); - case BANDWIDTH_7_MHZ: - data[0] = 0x00; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x35; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x641e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x5a; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x651e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe9; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x661e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x19; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0xe9; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x6d1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x44; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x511e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x46; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x521e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x15; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x531e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x0f; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x541e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x86; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x5c1e, 0x00, data, 0x1); - msleep(15); - data[0] = 0x01; - ret = tm6000_snd_control_msg(tm6000_dev, 0x10, 0x701e, 0x00, data, 0x1); - msleep(15); - break; - } -*/ - switch(p->u.ofdm.bandwidth) { - case BANDWIDTH_8_MHZ: - data[0] = 0x03; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x501e,0,data,1); - msleep(40); - data[0] = 0x44; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x511e,0,data,1); - msleep(40); - data[0] = 0x40; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x551e,0,data,1); - msleep(40); - data[0] = 0x46; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x521e,0,data,1); - msleep(40); - data[0] = 0x15; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x531e,0,data,1); - msleep(40); - data[0] = 0x0f; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x541e,0,data,1); - msleep(40); - data[0] = 0x80; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x551e,0,data,1); - msleep(40); - data[0] = 0x01; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xea1e,0,data,1); - msleep(40); - data[0] = 0x00; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xea1e,0,data,1); - msleep(40); - data[0] = 0x8b; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x631e,0,data,1); - msleep(40); - data[0] = 0x75; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xcc1e,0,data,1); - msleep(40); - data[0] = 0xe6; //0x19; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x6c1e,0,data,1); - msleep(40); - data[0] = 0x09; //0xf7; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x6d1e,0,data,1); - msleep(40); - data[0] = 0x67; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x651e,0,data,1); - msleep(40); - data[0] = 0xe5; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x661e,0,data,1); - msleep(40); - data[0] = 0x75; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5c1e,0,data,1); - msleep(40); - data[0] = 0x17; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5f1e,0,data,1); - msleep(40); - data[0] = 0x40; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5e1e,0,data,1); - msleep(40); - data[0] = 0x01; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x701e,0,data,1); - msleep(40); - break; - case BANDWIDTH_7_MHZ: - data[0] = 0x03; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x501e,0,data,1); - msleep(40); - data[0] = 0x44; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x511e,0,data,1); - msleep(40); - data[0] = 0x40; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x551e,0,data,1); - msleep(40); - data[0] = 0x46; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x521e,0,data,1); - msleep(40); - data[0] = 0x15; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x531e,0,data,1); - msleep(40); - data[0] = 0x0f; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x541e,0,data,1); - msleep(40); - data[0] = 0x80; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x551e,0,data,1); - msleep(40); - data[0] = 0x01; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xea1e,0,data,1); - msleep(40); - data[0] = 0x00; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xea1e,0,data,1); - msleep(40); - data[0] = 0x83; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x631e,0,data,1); - msleep(40); - data[0] = 0xa3; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0xcc1e,0,data,1); - msleep(40); - data[0] = 0xe6; //0x19; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x6c1e,0,data,1); - msleep(40); - data[0] = 0x09; //0xf7; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x6d1e,0,data,1); - msleep(40); - data[0] = 0x5a; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x651e,0,data,1); - msleep(40); - data[0] = 0xe9; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x661e,0,data,1); - msleep(40); - data[0] = 0x86; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5c1e,0,data,1); - msleep(40); - data[0] = 0x17; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5f1e,0,data,1); - msleep(40); - data[0] = 0x40; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x5e1e,0,data,1); - msleep(40); - data[0] = 0x01; - tm6000_read_write_usb(tm6000_dev,0x40,0x10,0x701e,0,data,1); - msleep(40); - break; - default: - printk(KERN_ALERT "tm6000: bandwidth not supported\n"); - } - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x051f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x051f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x051f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x051f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x051f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x0f1f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x091f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - tm6000_read_write_usb(tm6000_dev,0xc0,0x10,0x0b1f,0,data,2); - printk(KERN_INFO "buf %#x %#x \n", data[0], data[1]); - msleep(40); - - kfree(data); - - return 0; -}; - - - -int pseudo_zl10353_set_frontend(struct dvb_frontend *fe, - struct dvb_frontend_parameters *p) -{ - struct tm6000_core *tm6000_dev = fe->dvb->priv; - u32 status; - - if(p != NULL) { -// mutex_lock(&tm6000_dev->mutex); - pseudo_zl10353_pll(tm6000_dev, p); -// mutex_unlock(&tm6000_dev->mutex); - } - - if(tm6000_dev->dvb->frontend->ops.read_status) { - tm6000_dev->dvb->frontend->ops.read_status(tm6000_dev->dvb->frontend, &status); - printk(KERN_ALERT "demodulator status: FE_HAS_CARRIER %i \n", (status & FE_HAS_CARRIER)); - printk(KERN_ALERT "demodulator status: FE_HAS_VITERBI %i \n", (status & FE_HAS_VITERBI)); - printk(KERN_ALERT "demodulator status: FE_HAS_LOCK %i \n", (status & FE_HAS_LOCK)); - printk(KERN_ALERT "demodulator status: FE_HAS_SYNC %i \n", (status & FE_HAS_SYNC)); - printk(KERN_ALERT "demodulator status: FE_HAS_SIGNAL %i \n", (status & FE_HAS_SIGNAL)); - } - else { - printk(KERN_ALERT "pseudo zl10353: couldn't read demodulator status\n"); - } - return 0; -} - -int pseudo_zl10353_read_status(struct dvb_frontend *fe, fe_status_t *status) -{ - - *status = FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK | FE_HAS_SIGNAL; - - return 0; -} - -struct dvb_frontend* pseudo_zl10353_attach(struct tm6000_core *dev, - const struct zl10353_config *config, - struct i2c_adapter *i2c) -{ - struct tm6000_dvb *dvb = dev->dvb; - - dvb->frontend = dvb_attach(zl10353_attach, config, i2c); - if(!dvb->frontend) { - printk(KERN_ERR "Error during zl10353_attach!\n"); - return NULL; - } - - /* override some functions with our implementations */ - dvb->frontend->ops.set_frontend = pseudo_zl10353_set_frontend; - dvb->frontend->ops.read_status = pseudo_zl10353_read_status; - dvb->frontend->frontend_priv = dev; - - return dvb->frontend; -} diff --git a/drivers/staging/tm6000/hack.h b/drivers/staging/tm6000/hack.h deleted file mode 100644 index 96f1b61..0000000 --- a/drivers/staging/tm6000/hack.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - hack.h - hackish code that needs to be improved (or removed) at a - later point - - Copyright (C) 2007 Michel Ludwig <michel.ludwig@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 version 2 - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef HACK_H -#define HACK_H - -#include <linux/i2c.h> - -#include "zl10353.h" -#include "dvb_frontend.h" - -struct tm6000_core; - -int pseudo_zl103530_init(struct dvb_frontend *fe); - -int pseudo_zl10353_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p); - -int pseudo_zl10353_read_status(struct dvb_frontend *fe, fe_status_t *status); - -int pseudo_zl10353_read_signal_strength(struct dvb_frontend* fe, u16* strength); - -int pseudo_zl10353_read_snr(struct dvb_frontend *fe, u16 *snr); - -struct dvb_frontend* pseudo_zl10353_attach(struct tm6000_core *dev, - const struct zl10353_config *config, - struct i2c_adapter *i2c); - -#endif diff --git a/drivers/staging/tm6000/tm6000-dvb.c b/drivers/staging/tm6000/tm6000-dvb.c index 12a0758..9010f69 100644 --- a/drivers/staging/tm6000/tm6000-dvb.c +++ b/drivers/staging/tm6000/tm6000-dvb.c @@ -23,8 +23,6 @@ #include "tm6000.h" #include "tm6000-regs.h" -#include "hack.h" - #include "zl10353.h" #include <media/tuner.h> @@ -222,8 +220,7 @@ int tm6000_dvb_attach_frontend(struct tm6000_core *dev) .disable_i2c_gate_ctrl = 1, }; - dvb->frontend = pseudo_zl10353_attach(dev, &config, -/* dvb->frontend = dvb_attach (zl10353_attach, &config, */ + dvb->frontend = dvb_attach (zl10353_attach, &config, &dev->i2c_adap); } else { -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 11/11] tm6000: change version to 0.0.2 2010-02-15 17:37 ` [PATCH 10/11] tm6000: remove hack.c hack.h, switch to zl10353 module stefan.ringel @ 2010-02-15 17:37 ` stefan.ringel 0 siblings, 0 replies; 17+ messages in thread From: stefan.ringel @ 2010-02-15 17:37 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000.h b/drivers/staging/tm6000/tm6000.h index 8611092..8285c5a 100644 --- a/drivers/staging/tm6000/tm6000.h +++ b/drivers/staging/tm6000/tm6000.h @@ -37,7 +37,7 @@ #include "dvb_frontend.h" #include "dmxdev.h" -#define TM6000_VERSION KERNEL_VERSION(0, 0, 1) +#define TM6000_VERSION KERNEL_VERSION(0, 0, 2) /* Inputs */ -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host 2010-02-15 17:37 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host stefan.ringel 2010-02-15 17:37 ` [PATCH 10/11] tm6000: remove hack.c hack.h, switch to zl10353 module stefan.ringel @ 2010-02-18 20:20 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 17+ messages in thread From: Mauro Carvalho Chehab @ 2010-02-18 20:20 UTC (permalink / raw) To: stefan.ringel; +Cc: linux-media, dheitmueller stefan.ringel@arcor.de wrote: > From: Stefan Ringel <stefan.ringel@arcor.de> > > Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> > > diff --git a/drivers/media/dvb/frontends/zl10353.c b/drivers/media/dvb/frontends/zl10353.c > index 8c61271..9716d7e 100644 > --- a/drivers/media/dvb/frontends/zl10353.c > +++ b/drivers/media/dvb/frontends/zl10353.c > @@ -74,7 +74,7 @@ static int zl10353_write(struct dvb_frontend *fe, u8 *ibuf, int ilen) > return 0; > } > > -static int zl10353_read_register(struct zl10353_state *state, u8 reg) > +static int zl10353_read1_register(struct zl10353_state *state, u8 reg) > { > int ret; > u8 b0[1] = { reg }; > @@ -97,6 +97,41 @@ static int zl10353_read_register(struct zl10353_state *state, u8 reg) > return b1[0]; > } > > +static int zl10353_read2_register(struct zl10353_state *state, u8 reg) > +{ > + int ret; > + u8 b0[1] = { reg - 1 }; > + u8 b1[1] = { 0 }; > + struct i2c_msg msg[2] = { { .addr = state->config.demod_address, > + .flags = 0, > + .buf = b0, .len = 1 }, > + { .addr = state->config.demod_address, > + .flags = I2C_M_RD, > + .buf = b1, .len = 2 } }; > + > + ret = i2c_transfer(state->i2c, msg, 2); > + > + if (ret != 2) { > + printk("%s: readreg error (reg=%d, ret==%i)\n", > + __func__, reg, ret); > + return ret; > + } > + > + return b1[1]; > +} This patch doesn't look correct to me. The size of the zl10353 read register doesn't change when it is used with tm6000. The solution should be at tm6000-i2c, basically using the same REQ for 2 bytes when only 1 byte is being read. Cheers, Mauro ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 07/11] tm6000: add i2c send recv functions 2010-02-15 17:37 ` [PATCH 07/11] tm6000: add i2c send recv functions stefan.ringel 2010-02-15 17:37 ` [PATCH 08/11] tm6000: special request for all tuner stefan.ringel @ 2010-02-18 20:28 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 17+ messages in thread From: Mauro Carvalho Chehab @ 2010-02-18 20:28 UTC (permalink / raw) To: stefan.ringel; +Cc: linux-media, dheitmueller stefan.ringel@arcor.de wrote: > From: Stefan Ringel <stefan.ringel@arcor.de> > > Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> Why do you need to split it into two functions? It should be noticed that the naming tm6000_i2c_recv_word is wrong, since the size can be bigger than 2. Also, this patch broke compilation on -git: CC [M] drivers/staging/tm6000/tm6000-i2c.o drivers/staging/tm6000/tm6000-i2c.c: In function ‘tm6000_i2c_send_byte’: drivers/staging/tm6000/tm6000-i2c.c:50: error: ‘REQ_16_SET_GET_I2C_WR1_RND’ undeclared (first use in this function) drivers/staging/tm6000/tm6000-i2c.c:50: error: (Each undeclared identifier is reported only once drivers/staging/tm6000/tm6000-i2c.c:50: error: for each function it appears in.) drivers/staging/tm6000/tm6000-i2c.c: In function ‘tm6000_i2c_recv_byte’: drivers/staging/tm6000/tm6000-i2c.c:55: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token drivers/staging/tm6000/tm6000-i2c.c:55: error: expected expression before ‘:’ token drivers/staging/tm6000/tm6000-i2c.c:60: error: ‘rc’ undeclared (first use in this function) drivers/staging/tm6000/tm6000-i2c.c: In function ‘tm6000_i2c_recv_word’: drivers/staging/tm6000/tm6000-i2c.c:68: error: ‘REQ_14_SET_GET_I2C_WR2_RND’ undeclared (first use in this function) make[1]: ** [drivers/staging/tm6000/tm6000-i2c.o] Erro 1 Cheers, Mauro ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift 2010-02-15 17:37 [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift stefan.ringel 2010-02-15 17:37 ` [PATCH 02/11] tm6000: add i2c bus id for tm6000 stefan.ringel @ 2010-02-15 18:36 ` Devin Heitmueller 2010-02-15 19:19 ` Stefan Ringel 1 sibling, 1 reply; 17+ messages in thread From: Devin Heitmueller @ 2010-02-15 18:36 UTC (permalink / raw) To: stefan.ringel; +Cc: linux-media, mchehab On Mon, Feb 15, 2010 at 12:37 PM, <stefan.ringel@arcor.de> wrote: > From: Stefan Ringel <stefan.ringel@arcor.de> > > Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> > > diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c > index ed50168..e051caa 100644 > --- a/drivers/media/common/tuners/tuner-xc2028.c > +++ b/drivers/media/common/tuners/tuner-xc2028.c > @@ -1114,7 +1114,12 @@ static int xc2028_set_params(struct dvb_frontend *fe, > > /* All S-code tables need a 200kHz shift */ > if (priv->ctrl.demod) { > - demod = priv->ctrl.demod + 200; > + if ((priv->firm_version == 0x0306) && > + (priv->ctrl.demod == XC3028_FE_ZARLINK456) && > + ((type & DTV78) || (type & DTV8))) > + demod = priv->ctrl.demod; > + else > + demod = priv->ctrl.demod + 200; > /* > * The DTV7 S-code table needs a 700 kHz shift. > * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this I would still like to better understand the origin of this change. Was the tm6000 board not locking without it? Was this change based on any documented source? What basis are you using when deciding this issue is specific only to the zl10353 and not all boards using the xc3028L? We've got a number of boards already supported which use the xc3028L, so we need to ensure there is no regression introduced in those boards just to get yours working. Devin -- Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift 2010-02-15 18:36 ` [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift Devin Heitmueller @ 2010-02-15 19:19 ` Stefan Ringel 2010-02-15 20:29 ` Stefan Ringel 0 siblings, 1 reply; 17+ messages in thread From: Stefan Ringel @ 2010-02-15 19:19 UTC (permalink / raw) To: Devin Heitmueller; +Cc: linux-media, mchehab [-- Attachment #1: Type: text/plain, Size: 2044 bytes --] Am 15.02.2010 19:36, schrieb Devin Heitmueller: > On Mon, Feb 15, 2010 at 12:37 PM, <stefan.ringel@arcor.de> wrote: > >> From: Stefan Ringel <stefan.ringel@arcor.de> >> >> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> >> >> diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c >> index ed50168..e051caa 100644 >> --- a/drivers/media/common/tuners/tuner-xc2028.c >> +++ b/drivers/media/common/tuners/tuner-xc2028.c >> @@ -1114,7 +1114,12 @@ static int xc2028_set_params(struct dvb_frontend *fe, >> >> /* All S-code tables need a 200kHz shift */ >> if (priv->ctrl.demod) { >> - demod = priv->ctrl.demod + 200; >> + if ((priv->firm_version == 0x0306) && >> + (priv->ctrl.demod == XC3028_FE_ZARLINK456) && >> + ((type & DTV78) || (type & DTV8))) >> + demod = priv->ctrl.demod; >> + else >> + demod = priv->ctrl.demod + 200; >> /* >> * The DTV7 S-code table needs a 700 kHz shift. >> * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this >> > I would still like to better understand the origin of this change. > Was the tm6000 board not locking without it? Was this change based on > any documented source? What basis are you using when deciding this > issue is specific only to the zl10353 and not all boards using the > xc3028L? > > We've got a number of boards already supported which use the xc3028L, > so we need to ensure there is no regression introduced in those boards > just to get yours working. > > Devin > > Devin here in attachment the firmware table. You see, that it is has two entries for ZARLINK456, one for QAM, DTV6 and DTV7, and one for DTV78 and DTV8. The first have a shift from +200, the second doesn't. I can test for you without this patch to see what for demodulator status is has. Stefan Ringel -- Stefan Ringel <stefan.ringel@arcor.de> [-- Attachment #2: firmware-v36.txt --] [-- Type: text/plain, Size: 8034 bytes --] list action firmware file name: xc3028L-v36.fw firmware name: xc2028 firmware version: 3.6 (774) standards: 81 Firmware 0, type: BASE FW F8MHZ (0x00000003), id: (0000000000000000), size: 9144 Firmware 1, type: BASE FW F8MHZ MTS (0x00000007), id: (0000000000000000), size: 9030 Firmware 2, type: BASE FW FM (0x00000401), id: (0000000000000000), size: 9054 Firmware 3, type: BASE FW FM INPUT1 (0x00000c01), id: (0000000000000000), size: 9068 Firmware 4, type: BASE FW (0x00000001), id: (0000000000000000), size: 9132 Firmware 5, type: BASE FW MTS (0x00000005), id: (0000000000000000), size: 9006 Firmware 6, type: STD FW (0x00000000), id: PAL/BG (0000000000000007), size: 161 Firmware 7, type: STD FW MTS (0x00000004), id: PAL/BG (0000000000000007), size: 169 Firmware 8, type: STD FW (0x00000000), id: PAL/BG (0000000000000007), size: 161 Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG (0000000000000007), size: 169 Firmware 10, type: STD FW (0x00000000), id: PAL/BG (0000000000000007), size: 161 Firmware 11, type: STD FW MTS (0x00000004), id: PAL/BG (0000000000000007), size: 169 Firmware 12, type: STD FW (0x00000000), id: PAL/BG (0000000000000007), size: 161 Firmware 13, type: STD FW MTS (0x00000004), id: PAL/BG (0000000000000007), size: 169 Firmware 14, type: STD FW (0x00000000), id: PAL/DK (00000000000000e0), size: 161 Firmware 15, type: STD FW MTS (0x00000004), id: PAL/DK (00000000000000e0), size: 169 Firmware 16, type: STD FW (0x00000000), id: PAL/DK (00000000000000e0), size: 161 Firmware 17, type: STD FW MTS (0x00000004), id: PAL/DK (00000000000000e0), size: 169 Firmware 18, type: STD FW (0x00000000), id: SECAM/K1 (0000000000200000), size: 161 Firmware 19, type: STD FW MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169 Firmware 20, type: STD FW (0x00000000), id: SECAM/K3 (0000000004000000), size: 161 Firmware 21, type: STD FW MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169 Firmware 22, type: STD FW D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149 Firmware 23, type: STD FW D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149 Firmware 24, type: STD FW D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149 Firmware 25, type: STD FW D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149 Firmware 26, type: STD FW D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149 Firmware 27, type: STD FW D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149 Firmware 28, type: STD FW D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149 Firmware 29, type: STD FW D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149 Firmware 30, type: STD FW D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149 Firmware 31, type: STD FW FM (0x00000400), id: (0000000000000000), size: 135 Firmware 32, type: STD FW (0x00000000), id: PAL/I (0000000000000010), size: 161 Firmware 33, type: STD FW MTS (0x00000004), id: PAL/I (0000000000000010), size: 169 Firmware 34, type: STD FW (0x00000000), id: SECAM/L (0000000000400000), size: 161 Firmware 35, type: STD FW (0x00000000), id: SECAM/Lc (0000000000800000), size: 161 Firmware 36, type: STD FW (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161 Firmware 37, type: STD FW LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161 Firmware 38, type: STD FW LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161 Firmware 39, type: STD FW MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169 Firmware 40, type: STD FW (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 Firmware 41, type: STD FW LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 Firmware 42, type: STD FW LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 Firmware 43, type: STD FW (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161 Firmware 44, type: STD FW MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 Firmware 45, type: STD FW MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 Firmware 46, type: STD FW MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 Firmware 47, type: SCODE FW HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192 Firmware 48, type: SCODE FW HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192 Firmware 49, type: SCODE FW HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192 Firmware 50, type: SCODE FW HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192 Firmware 51, type: SCODE FW DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192 Firmware 52, type: SCODE FW HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192 Firmware 53, type: SCODE FW DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192 Firmware 54, type: SCODE FW HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192 Firmware 55, type: SCODE FW MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192 Firmware 56, type: SCODE FW HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192 Firmware 57, type: SCODE FW MTS LCD NOGD MONO IF HAS IF (0x6002b004), IF = 4.50 MHz id: NTSC PAL/M PAL/N (000000000000b700), size: 192 Firmware 58, type: SCODE FW DTV78 DTV8 ZARLINK456 HAS IF (0x62000300), IF = 4.56 MHz id: (0000000000000000), size: 192 Firmware 59, type: SCODE FW LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192 Firmware 60, type: SCODE FW DTV6 QAM DTV7 ZARLINK456 HAS IF (0x620000e0), IF = 4.76 MHz id: (0000000000000000), size: 192 Firmware 61, type: SCODE FW HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192 Firmware 62, type: SCODE FW DTV78 DTV8 DIBCOM52 HAS IF (0x61000300), IF = 5.20 MHz id: (0000000000000000), size: 192 Firmware 63, type: SCODE FW HAS IF (0x60000000), IF = 5.26 MHz id: (0000000000000000), size: 192 Firmware 64, type: SCODE FW MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG (0000000000000007), size: 192 Firmware 65, type: SCODE FW DTV7 DTV8 DIBCOM52 CHINA HAS IF (0x65000280), IF = 5.40 MHz id: (0000000000000000), size: 192 Firmware 66, type: SCODE FW DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192 Firmware 67, type: SCODE FW HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG (0000000000000007), size: 192 Firmware 68, type: SCODE FW HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG (0000000000000007), size: 192 Firmware 69, type: SCODE FW HAS IF (0x60000000), IF = 5.90 MHz id: (0000000000000000), size: 192 Firmware 70, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/DK PAL/I SECAM/K3 SECAM/L SECAM/Lc (0000000004c000f0), size: 192 Firmware 71, type: SCODE FW DTV6 QAM ATSC LG60 F6MHZ HAS IF (0x68050060), IF = 6.20 MHz id: (0000000000000000), size: 192 Firmware 72, type: SCODE FW HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192 Firmware 73, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192 Firmware 74, type: SCODE FW HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192 Firmware 75, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.50 MHz id: PAL/DK SECAM/K3 (00000000040000e0), size: 192 Firmware 76, type: SCODE FW DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192 Firmware 77, type: SCODE FW HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK (00000000000000e0), size: 192 Firmware 78, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK (00000000000000e0), size: 192 Firmware 79, type: SCODE FW DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192 Firmware 80, type: SCODE FW HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift 2010-02-15 19:19 ` Stefan Ringel @ 2010-02-15 20:29 ` Stefan Ringel 0 siblings, 0 replies; 17+ messages in thread From: Stefan Ringel @ 2010-02-15 20:29 UTC (permalink / raw) To: Devin Heitmueller; +Cc: linux-media, mchehab [-- Attachment #1: Type: text/plain, Size: 2276 bytes --] Am 15.02.2010 20:19, schrieb Stefan Ringel: > Am 15.02.2010 19:36, schrieb Devin Heitmueller: > >> On Mon, Feb 15, 2010 at 12:37 PM, <stefan.ringel@arcor.de> wrote: >> >> >>> From: Stefan Ringel <stefan.ringel@arcor.de> >>> >>> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> >>> >>> diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c >>> index ed50168..e051caa 100644 >>> --- a/drivers/media/common/tuners/tuner-xc2028.c >>> +++ b/drivers/media/common/tuners/tuner-xc2028.c >>> @@ -1114,7 +1114,12 @@ static int xc2028_set_params(struct dvb_frontend *fe, >>> >>> /* All S-code tables need a 200kHz shift */ >>> if (priv->ctrl.demod) { >>> - demod = priv->ctrl.demod + 200; >>> + if ((priv->firm_version == 0x0306) && >>> + (priv->ctrl.demod == XC3028_FE_ZARLINK456) && >>> + ((type & DTV78) || (type & DTV8))) >>> + demod = priv->ctrl.demod; >>> + else >>> + demod = priv->ctrl.demod + 200; >>> /* >>> * The DTV7 S-code table needs a 700 kHz shift. >>> * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this >>> >>> >> I would still like to better understand the origin of this change. >> Was the tm6000 board not locking without it? Was this change based on >> any documented source? What basis are you using when deciding this >> issue is specific only to the zl10353 and not all boards using the >> xc3028L? >> >> We've got a number of boards already supported which use the xc3028L, >> so we need to ensure there is no regression introduced in those boards >> just to get yours working. >> >> Devin >> >> >> > Devin here in attachment the firmware table. You see, that it is has two > entries for ZARLINK456, one for QAM, DTV6 and DTV7, and one for DTV78 > and DTV8. The first have a shift from +200, the second doesn't. I can > test for you without this patch to see what for demodulator status is has. > > Stefan Ringel > > Darvin, I have the test result. The first once is with my patch and the second without my patch. -- Stefan Ringel <stefan.ringel@arcor.de> [-- Attachment #2: test1.txt --] [-- Type: text/plain, Size: 60146 bytes --] with this patch linux-v5dy:/usr/src/src/tm6000/v4l-dvb # scan /usr/share/dvb/dvb-t/de-Berlin scanning /usr/share/dvb/dvb-t/de-Berlin using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' initial transponder 177500000 1 3 9 1 1 2 0 initial transponder 191500000 1 2 9 1 1 2 0 initial transponder 506000000 0 2 9 1 1 2 0 initial transponder 522000000 0 2 9 1 1 2 0 initial transponder 570000000 0 2 9 1 1 3 0 initial transponder 618000000 0 2 9 3 1 3 0 initial transponder 658000000 0 2 9 1 1 2 0 initial transponder 754000000 0 2 9 1 1 2 0 initial transponder 778000000 0 2 9 1 1 2 0 >>> tune to: 177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x000f: pmt_pid 0x00f0 ARD -- WDR K�ln (running) 0x0000 0x0010: pmt_pid 0x0100 ARD -- S�dwest BW/RP (running) 0x0000 0x4003: pmt_pid 0x0030 MEDIA BROADCAST -- HSE24 (running) 0x0000 0x401d: pmt_pid 0x01d0 MEDIA BROADCAST -- TELE 5 (running) Network Name 'MEDIA BROADCAST' >>> tune to: 191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x0009: pmt_pid 0x0384 ARD -- ARD-Data-1 (running) 0x0000 0x0002: pmt_pid 0x00c8 ARD -- arte (running) 0x0000 0x0001: pmt_pid 0x0064 ARD -- MDR Sachsen (running) 0x0000 0x0003: pmt_pid 0x012c ARD -- NDR FERNSEHEN (running) 0x0000 0x000a: pmt_pid 0x03e8 ARD -- ARD-Data-2 (running) Network Name 'RBB-Brbg1 ' >>> tune to: 506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4015: pmt_pid 0x0150 RTL World -- RTL Television (running) 0x0000 0x4016: pmt_pid 0x0160 RTL World -- RTL2 (running) 0x0000 0x401b: pmt_pid 0x01b0 RTL World -- Super RTL (running) 0x0000 0x4022: pmt_pid 0x0220 RTL World -- VOX (running) Network Name 'MEDIA BROADCAST' >>> tune to: 522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0102 0x000d: pmt_pid 0x0514 ARD -- Phoenix (running) 0x0102 0x000c: pmt_pid 0x04b0 ARD -- rbb Berlin (running) 0x0102 0x000b: pmt_pid 0x044c ARD -- rbb Brandenburg (running) 0x0102 0x000e: pmt_pid 0x0578 ARD -- Das Erste (running) 0x0102 0x000f: pmt_pid 0x05dc ARD -- EinsExtra (running) Network Name 'DVB-T Berlin/Brandenburg' >>> tune to: 570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE 0x0000 0x0203: pmt_pid 0x0230 ZDFmobil -- 3sat (running) 0x0000 0x0205: pmt_pid 0x0250 ZDFmobil -- neo/KiKa (running) 0x0000 0x0202: pmt_pid 0x0220 ZDFmobil -- ZDF (running) 0x0000 0x0204: pmt_pid 0x0240 ZDFmobil -- ZDFinfokanal (running) Network Name 'ZDF' >>> tune to: 618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE 0x0000 0x4014: pmt_pid 0x0140 MEDIA BROADCAST -- QVC (running) 0x0000 0x402a: pmt_pid 0x02a0 MEDIA BROADCAST -- Bibel TV (running) 0x0000 0x402e: pmt_pid 0x02e0 BetaDigital -- DAS VIERTE (running) 0x0000 0x4030: pmt_pid 0x0300 MEDIA BROADCAST -- freies 1.Programm (running) 0x0000 0x4031: pmt_pid 0x0310 MEDIA BROADCAST -- freies 3.Programm (running) 0x0000 0x678e: pmt_pid 0x08e0 MEDIA BROADCAST -- freies 2.Programm (running) Network Name 'MEDIA BROADCAST' >>> tune to: 658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4018: pmt_pid 0x0180 ProSiebenSat.1 -- SAT.1 (running) 0x0000 0x4013: pmt_pid 0x0130 ProSiebenSat.1 -- ProSieben (running) 0x0000 0x400a: pmt_pid 0x00a0 ProSiebenSat.1 -- kabel eins (running) 0x0000 0x400e: pmt_pid 0x00e0 ProSiebenSat.1 -- N24 (running) Network Name 'MEDIA BROADCAST' >>> tune to: 754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4024: pmt_pid 0x0240 MEDIA BROADCAST -- Eurosport (running) 0x0000 0x4011: pmt_pid 0x0110 BetaDigital -- 9Live (running) 0x0000 0x4008: pmt_pid 0x0080 BetaDigital -- DSF (running) 0x0000 0x40c3: pmt_pid 0x0c30 MEDIA BROADCAST -- TV.Berlin (running) Network Name 'MEDIA BROADCAST' >>> tune to: 778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4025: pmt_pid 0x0250 MEDIA BROADCAST -- Channel 21/Euronews (running) 0x0000 0x678b: pmt_pid 0x08b0 MEDIA BROADCAST -- JayJay.FM (running) 0x0000 0x6782: pmt_pid 0x0820 MEDIA BROADCAST -- 104.6 RTL (running) 0x0000 0x6787: pmt_pid 0x0870 MEDIA BROADCAST -- Radio Paloma (running) 0x0000 0x678a: pmt_pid 0x08a0 MEDIA BROADCAST -- Spreeradio (running) 0x0000 0x6026: pmt_pid 0x0260 MEDIA BROADCAST -- 104.6RTL- Best Of Modern Rock And Pop (running) 0x0000 0x6013: pmt_pid 0x0130 Eurociel -- Radio Horeb (running) 0x0000 0x4010: pmt_pid 0x0100 RTL World -- n-tv (running) 0x0000 0x6014: pmt_pid 0x0140 BetaDigital -- ERF Radio (running) 0x0000 0x6011: pmt_pid 0x0110 BetaDigital -- sunshine live (running) 0x0000 0x678e: pmt_pid 0x08e0 MEDIA BROADCAST -- JayJay.VR (running) Network Name 'MEDIA BROADCAST' dumping lists (47 services) WDR K�ln:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:241:242:15 S�dwest BW/RP:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:257:258:16 HSE24:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:49:50:16387 TELE 5:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:465:466:16413 MDR Sachsen:191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:101:102:1 ARD-Data-2:191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:10 ARD-Data-1:191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:9 NDR FERNSEHEN:191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:301:302:3 arte:191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:201:202:2 RTL Television:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:337:338:16405 RTL2:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:353:354:16406 Super RTL:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:433:434:16411 VOX:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:545:546:16418 Das Erste:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1401:1402:14 rbb Berlin:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1201:1202:12 rbb Brandenburg:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1201:1202:11 Phoenix:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1301:1302:13 EinsExtra:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1501:1502:15 ZDF:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:545:546:514 3sat:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:561:562:515 neo/KiKa:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:593:594:517 ZDFinfokanal:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:577:578:516 QVC:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:321:322:16404 Bibel TV:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:673:674:16426 DAS VIERTE:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:737:738:16430 freies 1.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:16432 freies 3.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:16433 freies 2.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:26510 SAT.1:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:385:386:16408 ProSieben:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:305:306:16403 kabel eins:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:162:16394 N24:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:225:226:16398 Eurosport:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:577:578:16420 DSF:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:129:130:16392 TV.Berlin:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:3121:3122:16579 9Live:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:273:274:16401 Channel 21/Euronews:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:593:594:16421 104.6 RTL:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2082:26498 Radio Paloma:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2162:26503 Spreeradio:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2210:26506 104.6RTL- Best Of Modern Rock And Pop:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:610:24614 Radio Horeb:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:306:24595 n-tv:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:257:258:16400 ERF Radio:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:322:24596 sunshine live:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:274:24593 JayJay.VR:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:2273:2226:26510 JayJay.FM:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2226:26507 Done. linux-v5dy:/home/stefan/Dokumente # femon FE: Zarlink ZL10353 DVB-T (DVBT) status | signal a2c8 | snr 7d7d | ber 00000000 | unc 0000189c | status CVYL | signal a358 | snr 9191 | ber 00000000 | unc 000018a0 | FE_HAS_LOCK status CVYL | signal a3cc | snr bdbd | ber 00000000 | unc 000018a0 | FE_HAS_LOCK status CVYL | signal a390 | snr d2d2 | ber 00000000 | unc 000018a0 | FE_HAS_LOCK status CVYL | signal a428 | snr bfbf | ber 00000000 | unc 000018a0 | FE_HAS_LOCK status CVYL | signal a3cc | snr aeae | ber 00000000 | unc 000018a3 | FE_HAS_LOCK status CVYL | signal a45c | snr bfbf | ber 00000000 | unc 000018a3 | FE_HAS_LOCK status CVYL | signal a490 | snr a4a4 | ber 00000000 | unc 000018a3 | FE_HAS_LOCK without this patch linux-v5dy:/usr/src/src/tm6000/v4l-dvb # scan /usr/share/dvb/dvb-t/de-Berlin scanning /usr/share/dvb/dvb-t/de-Berlin using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' initial transponder 177500000 1 3 9 1 1 2 0 initial transponder 191500000 1 2 9 1 1 2 0 initial transponder 506000000 0 2 9 1 1 2 0 initial transponder 522000000 0 2 9 1 1 2 0 initial transponder 570000000 0 2 9 1 1 3 0 initial transponder 618000000 0 2 9 3 1 3 0 initial transponder 658000000 0 2 9 1 1 2 0 initial transponder 754000000 0 2 9 1 1 2 0 initial transponder 778000000 0 2 9 1 1 2 0 >>> tune to: 177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE WARNING: filter timeout pid 0x0011 WARNING: filter timeout pid 0x0010 >>> tune to: 191500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE WARNING: filter timeout pid 0x0011 WARNING: filter timeout pid 0x0000 WARNING: filter timeout pid 0x0010 >>> tune to: 506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4015: pmt_pid 0x0150 RTL World -- RTL Television (running) 0x0000 0x4016: pmt_pid 0x0160 RTL World -- RTL2 (running) 0x0000 0x401b: pmt_pid 0x01b0 RTL World -- Super RTL (running) 0x0000 0x4022: pmt_pid 0x0220 RTL World -- VOX (running) Network Name 'MEDIA BROADCAST' >>> tune to: 522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x000d: pmt_pid 0x0514 ARD -- Phoenix (running) 0x0000 0x000c: pmt_pid 0x04b0 ARD -- rbb Berlin (running) 0x0000 0x000b: pmt_pid 0x044c ARD -- rbb Brandenburg (running) 0x0000 0x000e: pmt_pid 0x0578 ARD -- Das Erste (running) 0x0000 0x000f: pmt_pid 0x05dc ARD -- EinsExtra (running) Network Name 'DVB-T Berlin/Brandenburg' >>> tune to: 570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE 0x0000 0x0203: pmt_pid 0x0230 ZDFmobil -- 3sat (running) 0x0000 0x0205: pmt_pid 0x0250 ZDFmobil -- neo/KiKa (running) 0x0000 0x0202: pmt_pid 0x0220 ZDFmobil -- ZDF (running) 0x0000 0x0204: pmt_pid 0x0240 ZDFmobil -- ZDFinfokanal (running) Network Name 'ZDF' >>> tune to: 618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE 0x0000 0x4014: pmt_pid 0x0140 MEDIA BROADCAST -- QVC (running) 0x0000 0x402a: pmt_pid 0x02a0 MEDIA BROADCAST -- Bibel TV (running) 0x0000 0x402e: pmt_pid 0x02e0 BetaDigital -- DAS VIERTE (running) 0x0000 0x4030: pmt_pid 0x0300 MEDIA BROADCAST -- freies 1.Programm (running) 0x0000 0x4031: pmt_pid 0x0310 MEDIA BROADCAST -- freies 3.Programm (running) 0x0000 0x678e: pmt_pid 0x08e0 MEDIA BROADCAST -- freies 2.Programm (running) Network Name 'MEDIA BROADCAST' >>> tune to: 658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4018: pmt_pid 0x0180 ProSiebenSat.1 -- SAT.1 (running) 0x0000 0x4013: pmt_pid 0x0130 ProSiebenSat.1 -- ProSieben (running) 0x0000 0x400a: pmt_pid 0x00a0 ProSiebenSat.1 -- kabel eins (running) 0x0000 0x400e: pmt_pid 0x00e0 ProSiebenSat.1 -- N24 (running) Network Name 'MEDIA BROADCAST' >>> tune to: 754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4024: pmt_pid 0x0240 MEDIA BROADCAST -- Eurosport (running) 0x0000 0x4011: pmt_pid 0x0110 BetaDigital -- 9Live (running) 0x0000 0x4008: pmt_pid 0x0080 BetaDigital -- DSF (running) 0x0000 0x40c3: pmt_pid 0x0c30 MEDIA BROADCAST -- TV.Berlin (running) Network Name 'MEDIA BROADCAST' >>> tune to: 778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x4025: pmt_pid 0x0250 MEDIA BROADCAST -- Channel 21/Euronews (running) 0x0000 0x678b: pmt_pid 0x08b0 MEDIA BROADCAST -- JayJay.FM (running) 0x0000 0x6782: pmt_pid 0x0820 MEDIA BROADCAST -- 104.6 RTL (running) 0x0000 0x6787: pmt_pid 0x0870 MEDIA BROADCAST -- Radio Paloma (running) 0x0000 0x678a: pmt_pid 0x08a0 MEDIA BROADCAST -- Spreeradio (running) 0x0000 0x6026: pmt_pid 0x0260 MEDIA BROADCAST -- 104.6RTL- Best Of Modern Rock And Pop (running) 0x0000 0x6013: pmt_pid 0x0130 Eurociel -- Radio Horeb (running) 0x0000 0x4010: pmt_pid 0x0100 RTL World -- n-tv (running) 0x0000 0x6014: pmt_pid 0x0140 BetaDigital -- ERF Radio (running) 0x0000 0x6011: pmt_pid 0x0110 BetaDigital -- sunshine live (running) 0x0000 0x678e: pmt_pid 0x08e0 MEDIA BROADCAST -- JayJay.VR (running) Network Name 'MEDIA BROADCAST' dumping lists (42 services) [000f]:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:241:242:15 [0010]:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:257:258:16 [4003]:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:49:50:16387 [401d]:177500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:465:466:16413 RTL Television:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:337:338:16405 RTL2:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:353:354:16406 Super RTL:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:433:434:16411 VOX:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:545:546:16418 Das Erste:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1401:1402:14 rbb Berlin:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1201:1202:12 rbb Brandenburg:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1201:1202:11 Phoenix:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1301:1302:13 EinsExtra:522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1501:1502:15 ZDF:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:545:546:514 3sat:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:561:562:515 neo/KiKa:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:593:594:517 ZDFinfokanal:570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:577:578:516 QVC:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:321:322:16404 Bibel TV:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:673:674:16426 DAS VIERTE:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:737:738:16430 freies 1.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:16432 freies 3.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:16433 freies 2.Programm:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:785:786:26510 SAT.1:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:385:386:16408 ProSieben:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:305:306:16403 kabel eins:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:162:16394 N24:658000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:225:226:16398 Eurosport:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:577:578:16420 DSF:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:129:130:16392 TV.Berlin:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:3121:3122:16579 9Live:754000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:273:274:16401 Channel 21/Euronews:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:593:594:16421 104.6 RTL:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2082:26498 Radio Paloma:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2162:26503 Spreeradio:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2210:26506 104.6RTL- Best Of Modern Rock And Pop:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:610:24614 Radio Horeb:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:306:24595 n-tv:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:257:258:16400 ERF Radio:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:322:24596 sunshine live:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:274:24593 JayJay.VR:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:2273:2226:26510 JayJay.FM:778000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:2226:26507 Done. linux-v5dy:/home/stefan/Dokumente # femon FE: Zarlink ZL10353 DVB-T (DVBT) status | signal a0e8 | snr 4444 | ber 00000000 | unc 0000041a | status CVYL | signal a134 | snr 7a7a | ber 00000000 | unc 00002eb5 | FE_HAS_LOCK status CVYL | signal a14c | snr 7b7b | ber 00000000 | unc 0000ba4c | FE_HAS_LOCK status CV | signal a194 | snr 3737 | ber 00000000 | unc 0001583a | status CVYL | signal a1a4 | snr a9a9 | ber 00000000 | unc 0001583a | FE_HAS_LOCK status CVYL | signal a194 | snr c3c3 | ber 00000000 | unc 0001583a | FE_HAS_LOCK status CVYL | signal a210 | snr bbbb | ber 00000000 | unc 0001583a | FE_HAS_LOCK status CVYL | signal a13c | snr 9999 | ber 00000000 | unc 00015e93 | FE_HAS_LOCK status CVYL | signal a2bc | snr b1b1 | ber 00000000 | unc 00015e93 | FE_HAS_LOCK status CVYL | signal a274 | snr 8b8b | ber 00000000 | unc 00015e93 | FE_HAS_LOCK status CVYL | signal a248 | snr a6a6 | ber 00000000 | unc 00015ff2 | FE_HAS_LOCK ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 07/11] tm6000: add i2c send recv functions @ 2010-02-18 21:11 stefan.ringel 0 siblings, 0 replies; 17+ messages in thread From: stefan.ringel @ 2010-02-18 21:11 UTC (permalink / raw) To: linux-media; +Cc: mchehab, dheitmueller, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> diff --git a/drivers/staging/tm6000/tm6000-i2c.c b/drivers/staging/tm6000/tm6000-i2c.c index 6b17d0b..9d02674 100644 --- a/drivers/staging/tm6000/tm6000-i2c.c +++ b/drivers/staging/tm6000/tm6000-i2c.c @@ -42,6 +42,32 @@ MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); printk(KERN_DEBUG "%s at %s: " fmt, \ dev->name, __FUNCTION__ , ##args); } while (0) +int tm6000_i2c_send_byte (struct tm6000_core *dev, unsigned char addr, __u8 reg, char *buf, int len) +{ + return tm6000_read_write_usb (dev, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len); +} + +int tm6000_i2c_recv_byte (struct tm6000_core *dev, unsigned char addr, __u8 reg, char *buf, int len) +{ + int rc: + + rc = tm6000_read_write_usb (dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_16_SET_GET_I2C_WR1_RDN, addr | reg << 8, 0, buf, len); + + return rc; +} + +int tm6000_i2c_recv_word (struct tm6000_core *dev, unsigned char addr, __u16 reg, char *buf , int len) +{ + int rc; + + rc = tm6000_read_write_usb (dev, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + REQ_14_SET_GET_I2C_WR2_RDN, addr, reg, buf, len); + + return rc; +} + static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num) { @@ -76,13 +102,14 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, i2c_dprintk(2, "; joined to read %s len=%d:", i == num - 2 ? "stop" : "nonstop", msgs[i + 1].len); - rc = tm6000_read_write_usb (dev, - USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - msgs[i].len == 1 ? REQ_16_SET_GET_I2C_WR1_RDN - : REQ_14_SET_GET_I2C_WR2_RDN, - addr | msgs[i].buf[0] << 8, - msgs[i].len == 1 ? 0 : msgs[i].buf[1], - msgs[i + 1].buf, msgs[i + 1].len); + + if (msgs[i].len == 1) { + rc = tm6000_i2c_recv_byte (dev, addr, msgs[i].buf[0], + msgs[i + 1].buf, msgs[i + 1].len); + } else { + rc = tm6000_i2c_recv_word (dev, addr, msgs[i].buf[0] << 8 | msgs[i].buf[1], + msgs[i + 1].buf, msgs[i + 1].len); + } i++; if ((dev->dev_type == TM6010) && (addr == 0xc2)) { @@ -97,10 +124,8 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap, if (i2c_debug >= 2) for (byte = 0; byte < msgs[i].len; byte++) printk(" %02x", msgs[i].buf[byte]); - rc = tm6000_read_write_usb(dev, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - REQ_16_SET_GET_I2C_WR1_RDN, - addr | msgs[i].buf[0] << 8, 0, + + rc = tm6000_i2c_send_byte(dev, addr, msgs[i].buf[0], msgs[i].buf + 1, msgs[i].len - 1); if ((dev->dev_type == TM6010) && (addr == 0xc2)) { -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2010-02-18 21:11 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-02-15 17:37 [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift stefan.ringel 2010-02-15 17:37 ` [PATCH 02/11] tm6000: add i2c bus id for tm6000 stefan.ringel 2010-02-15 17:37 ` [PATCH 03/11] tm6000: add additional init register stefan.ringel 2010-02-15 17:37 ` [PATCH 04/11] tm6000: add different tuner reset for terratec stefan.ringel 2010-02-15 17:37 ` [PATCH 05/11] tm6000: add card setup for terratec cinergy hybrid stefan.ringel 2010-02-15 17:37 ` [PATCH 06/11] tm6000: reset the numbers of feeds to 8 stefan.ringel 2010-02-15 17:37 ` [PATCH 07/11] tm6000: add i2c send recv functions stefan.ringel 2010-02-15 17:37 ` [PATCH 08/11] tm6000: special request for all tuner stefan.ringel 2010-02-15 17:37 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host stefan.ringel 2010-02-15 17:37 ` [PATCH 10/11] tm6000: remove hack.c hack.h, switch to zl10353 module stefan.ringel 2010-02-15 17:37 ` [PATCH 11/11] tm6000: change version to 0.0.2 stefan.ringel 2010-02-18 20:20 ` [PATCH 09/11] zl10353: tm6000: bugfix reading problems with tm6000 i2c host Mauro Carvalho Chehab 2010-02-18 20:28 ` [PATCH 07/11] tm6000: add i2c send recv functions Mauro Carvalho Chehab 2010-02-15 18:36 ` [PATCH 01/11] xc2028: tm6000: bugfix firmware xc3028L-v36.fw used with Zarlink and DTV78 or DTV8 no shift Devin Heitmueller 2010-02-15 19:19 ` Stefan Ringel 2010-02-15 20:29 ` Stefan Ringel -- strict thread matches above, loose matches on Subject: below -- 2010-02-18 21:11 [PATCH 07/11] tm6000: add i2c send recv functions stefan.ringel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox