Message ID | 201001311545.09620.liplianin@me.by (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Return-path: <linux-media-owner@vger.kernel.org> Envelope-to: mchehab@infradead.org Delivery-date: Sun, 31 Jan 2010 13:46:19 +0000 Received: from bombadil.infradead.org [18.85.46.34] by pedra with IMAP (fetchmail-6.3.6) for <mchehab@localhost> (single-drop); Sun, 31 Jan 2010 13:55:14 -0200 (BRST) Received: from vger.kernel.org ([209.132.180.67]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1Nba83-00018Q-69; Sun, 31 Jan 2010 13:46:19 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753824Ab0AaNqR (ORCPT <rfc822; kmpark@infradead.org> + 1 other); Sun, 31 Jan 2010 08:46:17 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753795Ab0AaNqR (ORCPT <rfc822;linux-media-outgoing>); Sun, 31 Jan 2010 08:46:17 -0500 Received: from mail-bw0-f227.google.com ([209.85.218.227]:52031 "EHLO mail-bw0-f227.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753786Ab0AaNqP (ORCPT <rfc822;linux-media@vger.kernel.org>); Sun, 31 Jan 2010 08:46:15 -0500 Received: by bwz27 with SMTP id 27so2430176bwz.21 for <linux-media@vger.kernel.org>; Sun, 31 Jan 2010 05:46:14 -0800 (PST) Received: by 10.204.35.72 with SMTP id o8mr1117133bkd.68.1264945574151; Sun, 31 Jan 2010 05:46:14 -0800 (PST) Received: from useri.localnet ([212.98.173.132]) by mx.google.com with ESMTPS id 16sm1684168bwz.7.2010.01.31.05.46.11 (version=SSLv3 cipher=RC4-MD5); Sun, 31 Jan 2010 05:46:12 -0800 (PST) From: "Igor M. Liplianin" <liplianin@me.by> To: paul10@planar.id.au, "linux-media" <linux-media@vger.kernel.org>, Christian =?iso-8859-1?q?H=FCppe?= <christian.hueppe@web.de> Subject: Re: DM1105: could not attach frontend 195d:1105 Date: Sun, 31 Jan 2010 15:45:09 +0200 User-Agent: KMail/1.11.4 (Linux/2.6.33-rc4; KDE/4.2.4; i686; ; ) References: <3bf14d196e3bc8717d910d09a623f98e@mail.velocitynet.com.au> <8f772b00c9ad2033899eeb1913ee42e0@mail.velocitynet.com.au> <52aaba8d0f6ba9e6928ea68d96565bf4@mail.velocitynet.com.au> In-Reply-To: <52aaba8d0f6ba9e6928ea68d96565bf4@mail.velocitynet.com.au> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_llYZLd2RTRM1+KK" Message-Id: <201001311545.09620.liplianin@me.by> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: <linux-media.vger.kernel.org> X-Mailing-List: linux-media@vger.kernel.org |
Commit Message
Igor M. Liplianin
Jan. 31, 2010, 1:45 p.m. UTC
On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: > Igor wrote: > > Oh, that is wrong. It is registers addresses, Never touch this. > > > > Let's look on that part of code: > > > > /* GPIO's for LNB power control */ > > #define DM1105_LNB_MASK 0x00000000 // later in > > code write it to > > > DM1105_GPIOCTR, all GPIO's as OUT > > #define DM1105_LNB_OFF 0x00020000 // later in > > code write it to > > > DM1105_GPIOVAL, set GPIO17 to HIGH > > > > But you have not to change this. > > Right way is to write another entry in cards structure and so on. > > Better leave it to me. > > > > Regards > > Igor > > Thanks for all your help, I understand better now. I have moved to code > like that at the bottom. It still doesn't work, but feels a lot closer. > > Before I keep playing with values, I want to check I'm on the right track. > Does it look right? Specific questions: > 1. I see there is a hw_init function. Should I be using that? I put the > logic into fe_attach because there was already card-specific logic in > there. But this feels like hw initialisation. > > 2. Should I set the control to input or output? I'm assuming input = 1. > > 3. Would pin 15 be numbered from the left or right - is it 0x4, or 0x2000? > > Thanks, > > Paul > > *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 > --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 > *************** > *** 51,56 **** > --- 51,57 ---- > #define DM1105_BOARD_DVBWORLD_2002 1 > #define DM1105_BOARD_DVBWORLD_2004 2 > #define DM1105_BOARD_AXESS_DM05 3 > + #define DM1105_BOARD_UNBRANDED 4 > > /* ----------------------------------------------- */ > /* > *************** > *** 171,176 **** > --- 172,181 ---- > #define DM05_LNB_13V 0x00020000 > #define DM05_LNB_18V 0x00030000 > > + /* GPIO's for demod reset for unbranded 195d:1105 */ > + #define UNBRANDED_DEMOD_MASK 0x00008000 > + #define UNBRANDED_DEMOD_RESET 0x00008000 > + > static unsigned int card[] = {[0 ... 3] = UNSET }; > module_param_array(card, int, NULL, 0444); > MODULE_PARM_DESC(card, "card type"); > *************** > *** 206,211 **** > --- 211,219 ---- > [DM1105_BOARD_AXESS_DM05] = { > .name = "Axess/EasyTv DM05", > }, > + [DM1105_BOARD_UNBRANDED] = { > + .name = "Unbranded 195d:1105", > + }, > }; > > static const struct dm1105_subid dm1105_subids[] = { > *************** > *** 229,234 **** > --- 237,246 ---- > .subvendor = 0x195d, > .subdevice = 0x1105, > .card = DM1105_BOARD_AXESS_DM05, > + }, { > + .subvendor = 0x195d, > + .subdevice = 0x1105, > + .card = DM1105_BOARD_UNBRANDED, > }, > }; > > *************** > *** 698,703 **** > --- 710,727 ---- > dm1105dvb->fe->ops.set_voltage = > dm1105dvb_set_voltage; > > break; > + case DM1105_BOARD_UNBRANDED: > + printk(KERN_ERR "Attaching as board_unbranded\n"); > + outl(UNBRANDED_DEMOD_MASK, dm_io_mem(DM1105_GPIOCTR)); > + outl(UNBRANDED_DEMOD_RESET , dm_io_mem(DM1105_GPIOVAL)); > + dm1105dvb->fe = dvb_attach( > + si21xx_attach, &serit_config, > + &dm1105dvb->i2c_adap); > + if (dm1105dvb->fe) > + dm1105dvb->fe->ops.set_voltage = > + dm1105dvb_set_voltage; > + > + break; > case DM1105_BOARD_DVBWORLD_2002: > case DM1105_BOARD_AXESS_DM05: > default: Some things are missed, like keep GPIO15 high in set_voltage function. Try attached patch against current v4l-dvb tree with modprobe option card=4 modprobe dm1105 card=4
Comments
Hi there, dmesg output with patched dm1105.c against current v4l-dvb 'modprob dm1105 card=4' dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 DVB: registering new adapter (dm1105) dm1105 0000:05:0f.0: MAC dd49b0dc dm1105 0000:05:0f.0: could not attach frontend dm1105 0000:05:0f.0: PCI INT A disabled Thanks Nameer Kazzaz Igor M. Liplianin wrote: > On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: > >> Igor wrote: >> >>> Oh, that is wrong. It is registers addresses, Never touch this. >>> >>> Let's look on that part of code: >>> >>> /* GPIO's for LNB power control */ >>> #define DM1105_LNB_MASK 0x00000000 // later in >>> >> code write it to >> >> >>> DM1105_GPIOCTR, all GPIO's as OUT >>> #define DM1105_LNB_OFF 0x00020000 // later in >>> >> code write it to >> >> >>> DM1105_GPIOVAL, set GPIO17 to HIGH >>> >>> But you have not to change this. >>> Right way is to write another entry in cards structure and so on. >>> Better leave it to me. >>> >>> Regards >>> Igor >>> >> Thanks for all your help, I understand better now. I have moved to code >> like that at the bottom. It still doesn't work, but feels a lot closer. >> >> Before I keep playing with values, I want to check I'm on the right track. >> Does it look right? Specific questions: >> 1. I see there is a hw_init function. Should I be using that? I put the >> logic into fe_attach because there was already card-specific logic in >> there. But this feels like hw initialisation. >> >> 2. Should I set the control to input or output? I'm assuming input = 1. >> >> 3. Would pin 15 be numbered from the left or right - is it 0x4, or 0x2000? >> >> Thanks, >> >> Paul >> >> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 >> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 >> *************** >> *** 51,56 **** >> --- 51,57 ---- >> #define DM1105_BOARD_DVBWORLD_2002 1 >> #define DM1105_BOARD_DVBWORLD_2004 2 >> #define DM1105_BOARD_AXESS_DM05 3 >> + #define DM1105_BOARD_UNBRANDED 4 >> >> /* ----------------------------------------------- */ >> /* >> *************** >> *** 171,176 **** >> --- 172,181 ---- >> #define DM05_LNB_13V 0x00020000 >> #define DM05_LNB_18V 0x00030000 >> >> + /* GPIO's for demod reset for unbranded 195d:1105 */ >> + #define UNBRANDED_DEMOD_MASK 0x00008000 >> + #define UNBRANDED_DEMOD_RESET 0x00008000 >> + >> static unsigned int card[] = {[0 ... 3] = UNSET }; >> module_param_array(card, int, NULL, 0444); >> MODULE_PARM_DESC(card, "card type"); >> *************** >> *** 206,211 **** >> --- 211,219 ---- >> [DM1105_BOARD_AXESS_DM05] = { >> .name = "Axess/EasyTv DM05", >> }, >> + [DM1105_BOARD_UNBRANDED] = { >> + .name = "Unbranded 195d:1105", >> + }, >> }; >> >> static const struct dm1105_subid dm1105_subids[] = { >> *************** >> *** 229,234 **** >> --- 237,246 ---- >> .subvendor = 0x195d, >> .subdevice = 0x1105, >> .card = DM1105_BOARD_AXESS_DM05, >> + }, { >> + .subvendor = 0x195d, >> + .subdevice = 0x1105, >> + .card = DM1105_BOARD_UNBRANDED, >> }, >> }; >> >> *************** >> *** 698,703 **** >> --- 710,727 ---- >> dm1105dvb->fe->ops.set_voltage = >> dm1105dvb_set_voltage; >> >> break; >> + case DM1105_BOARD_UNBRANDED: >> + printk(KERN_ERR "Attaching as board_unbranded\n"); >> + outl(UNBRANDED_DEMOD_MASK, dm_io_mem(DM1105_GPIOCTR)); >> + outl(UNBRANDED_DEMOD_RESET , dm_io_mem(DM1105_GPIOVAL)); >> + dm1105dvb->fe = dvb_attach( >> + si21xx_attach, &serit_config, >> + &dm1105dvb->i2c_adap); >> + if (dm1105dvb->fe) >> + dm1105dvb->fe->ops.set_voltage = >> + dm1105dvb_set_voltage; >> + >> + break; >> case DM1105_BOARD_DVBWORLD_2002: >> case DM1105_BOARD_AXESS_DM05: >> default: >> > Some things are missed, like keep GPIO15 high in set_voltage function. > Try attached patch against current v4l-dvb tree with modprobe option card=4 > modprobe dm1105 card=4 > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Igor, What do you think ? if I can help you solve this, let me know what I can do. Thanks Nameer Nameer Kazzaz wrote: > Hi there, > dmesg output with patched dm1105.c against current v4l-dvb 'modprob > dm1105 card=4' > > dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 > DVB: registering new adapter (dm1105) > dm1105 0000:05:0f.0: MAC dd49b0dc > dm1105 0000:05:0f.0: could not attach frontend > dm1105 0000:05:0f.0: PCI INT A disabled > > Thanks > Nameer Kazzaz > > Igor M. Liplianin wrote: >> On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: >> >>> Igor wrote: >>> >>>> Oh, that is wrong. It is registers addresses, Never touch this. >>>> >>>> Let's look on that part of code: >>>> >>>> /* GPIO's for LNB power control */ >>>> #define DM1105_LNB_MASK 0x00000000 // later in >>>> >>> code write it to >>> >>> >>>> DM1105_GPIOCTR, all GPIO's as OUT >>>> #define DM1105_LNB_OFF 0x00020000 // later in >>>> >>> code write it to >>> >>> >>>> DM1105_GPIOVAL, set GPIO17 to HIGH >>>> >>>> But you have not to change this. >>>> Right way is to write another entry in cards structure and so on. >>>> Better leave it to me. >>>> >>>> Regards >>>> Igor >>>> >>> Thanks for all your help, I understand better now. I have moved to >>> code >>> like that at the bottom. It still doesn't work, but feels a lot >>> closer. >>> >>> Before I keep playing with values, I want to check I'm on the right >>> track. >>> Does it look right? Specific questions: >>> 1. I see there is a hw_init function. Should I be using that? I >>> put the >>> logic into fe_attach because there was already card-specific logic in >>> there. But this feels like hw initialisation. >>> >>> 2. Should I set the control to input or output? I'm assuming input >>> = 1. >>> >>> 3. Would pin 15 be numbered from the left or right - is it 0x4, or >>> 0x2000? >>> >>> Thanks, >>> >>> Paul >>> >>> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 >>> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 >>> *************** >>> *** 51,56 **** >>> --- 51,57 ---- >>> #define DM1105_BOARD_DVBWORLD_2002 1 >>> #define DM1105_BOARD_DVBWORLD_2004 2 >>> #define DM1105_BOARD_AXESS_DM05 3 >>> + #define DM1105_BOARD_UNBRANDED 4 >>> >>> /* ----------------------------------------------- */ >>> /* >>> *************** >>> *** 171,176 **** >>> --- 172,181 ---- >>> #define DM05_LNB_13V 0x00020000 >>> #define DM05_LNB_18V 0x00030000 >>> >>> + /* GPIO's for demod reset for unbranded 195d:1105 */ >>> + #define UNBRANDED_DEMOD_MASK 0x00008000 >>> + #define UNBRANDED_DEMOD_RESET 0x00008000 >>> + >>> static unsigned int card[] = {[0 ... 3] = UNSET }; >>> module_param_array(card, int, NULL, 0444); >>> MODULE_PARM_DESC(card, "card type"); >>> *************** >>> *** 206,211 **** >>> --- 211,219 ---- >>> [DM1105_BOARD_AXESS_DM05] = { >>> .name = "Axess/EasyTv DM05", >>> }, >>> + [DM1105_BOARD_UNBRANDED] = { >>> + .name = "Unbranded 195d:1105", >>> + }, >>> }; >>> >>> static const struct dm1105_subid dm1105_subids[] = { >>> *************** >>> *** 229,234 **** >>> --- 237,246 ---- >>> .subvendor = 0x195d, >>> .subdevice = 0x1105, >>> .card = DM1105_BOARD_AXESS_DM05, >>> + }, { >>> + .subvendor = 0x195d, >>> + .subdevice = 0x1105, >>> + .card = DM1105_BOARD_UNBRANDED, >>> }, >>> }; >>> >>> *************** >>> *** 698,703 **** >>> --- 710,727 ---- >>> dm1105dvb->fe->ops.set_voltage = >>> dm1105dvb_set_voltage; >>> >>> break; >>> + case DM1105_BOARD_UNBRANDED: >>> + printk(KERN_ERR "Attaching as board_unbranded\n"); >>> + outl(UNBRANDED_DEMOD_MASK, dm_io_mem(DM1105_GPIOCTR)); >>> + outl(UNBRANDED_DEMOD_RESET , >>> dm_io_mem(DM1105_GPIOVAL)); >>> + dm1105dvb->fe = dvb_attach( >>> + si21xx_attach, &serit_config, >>> + &dm1105dvb->i2c_adap); >>> + if (dm1105dvb->fe) >>> + dm1105dvb->fe->ops.set_voltage = >>> + dm1105dvb_set_voltage; >>> + >>> + break; >>> case DM1105_BOARD_DVBWORLD_2002: >>> case DM1105_BOARD_AXESS_DM05: >>> default: >>> >> Some things are missed, like keep GPIO15 high in set_voltage function. >> Try attached patch against current v4l-dvb tree with modprobe option >> card=4 >> modprobe dm1105 card=4 >> > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2 ??????? 2010 17:21:46 Nameer Kazzaz wrote: > Hi Igor, > What do you think ? if I can help you solve this, let me know what I > can do. > > Thanks > Nameer > > Nameer Kazzaz wrote: > > Hi there, > > dmesg output with patched dm1105.c against current v4l-dvb 'modprob > > dm1105 card=4' > > > > dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 > > DVB: registering new adapter (dm1105) > > dm1105 0000:05:0f.0: MAC dd49b0dc > > dm1105 0000:05:0f.0: could not attach frontend > > dm1105 0000:05:0f.0: PCI INT A disabled > > > > Thanks > > Nameer Kazzaz > > > > Igor M. Liplianin wrote: > >> On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: > >>> Igor wrote: > >>>> Oh, that is wrong. It is registers addresses, Never touch this. > >>>> > >>>> Let's look on that part of code: > >>>> > >>>> /* GPIO's for LNB power control */ > >>>> #define DM1105_LNB_MASK 0x00000000 // later in > >>> > >>> code write it to > >>> > >>>> DM1105_GPIOCTR, all GPIO's as OUT > >>>> #define DM1105_LNB_OFF 0x00020000 // later in > >>> > >>> code write it to > >>> > >>>> DM1105_GPIOVAL, set GPIO17 to HIGH > >>>> > >>>> But you have not to change this. > >>>> Right way is to write another entry in cards structure and so on. > >>>> Better leave it to me. > >>>> > >>>> Regards > >>>> Igor > >>> > >>> Thanks for all your help, I understand better now. I have moved to > >>> code > >>> like that at the bottom. It still doesn't work, but feels a lot > >>> closer. > >>> > >>> Before I keep playing with values, I want to check I'm on the right > >>> track. > >>> Does it look right? Specific questions: > >>> 1. I see there is a hw_init function. Should I be using that? I > >>> put the > >>> logic into fe_attach because there was already card-specific logic in > >>> there. But this feels like hw initialisation. > >>> > >>> 2. Should I set the control to input or output? I'm assuming input > >>> = 1. > >>> > >>> 3. Would pin 15 be numbered from the left or right - is it 0x4, or > >>> 0x2000? > >>> > >>> Thanks, > >>> > >>> Paul > >>> > >>> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 > >>> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 > >>> *************** > >>> *** 51,56 **** > >>> --- 51,57 ---- > >>> #define DM1105_BOARD_DVBWORLD_2002 1 > >>> #define DM1105_BOARD_DVBWORLD_2004 2 > >>> #define DM1105_BOARD_AXESS_DM05 3 > >>> + #define DM1105_BOARD_UNBRANDED 4 > >>> > >>> /* ----------------------------------------------- */ > >>> /* > >>> *************** > >>> *** 171,176 **** > >>> --- 172,181 ---- > >>> #define DM05_LNB_13V 0x00020000 > >>> #define DM05_LNB_18V 0x00030000 > >>> > >>> + /* GPIO's for demod reset for unbranded 195d:1105 */ > >>> + #define UNBRANDED_DEMOD_MASK 0x00008000 > >>> + #define UNBRANDED_DEMOD_RESET 0x00008000 > >>> + > >>> static unsigned int card[] = {[0 ... 3] = UNSET }; > >>> module_param_array(card, int, NULL, 0444); > >>> MODULE_PARM_DESC(card, "card type"); > >>> *************** > >>> *** 206,211 **** > >>> --- 211,219 ---- > >>> [DM1105_BOARD_AXESS_DM05] = { > >>> .name = "Axess/EasyTv DM05", > >>> }, > >>> + [DM1105_BOARD_UNBRANDED] = { > >>> + .name = "Unbranded 195d:1105", > >>> + }, > >>> }; > >>> > >>> static const struct dm1105_subid dm1105_subids[] = { > >>> *************** > >>> *** 229,234 **** > >>> --- 237,246 ---- > >>> .subvendor = 0x195d, > >>> .subdevice = 0x1105, > >>> .card = DM1105_BOARD_AXESS_DM05, > >>> + }, { > >>> + .subvendor = 0x195d, > >>> + .subdevice = 0x1105, > >>> + .card = DM1105_BOARD_UNBRANDED, > >>> }, > >>> }; > >>> > >>> *************** > >>> *** 698,703 **** > >>> --- 710,727 ---- > >>> dm1105dvb->fe->ops.set_voltage = > >>> dm1105dvb_set_voltage; > >>> > >>> break; > >>> + case DM1105_BOARD_UNBRANDED: > >>> + printk(KERN_ERR "Attaching as board_unbranded\n"); > >>> + outl(UNBRANDED_DEMOD_MASK, dm_io_mem(DM1105_GPIOCTR)); > >>> + outl(UNBRANDED_DEMOD_RESET , > >>> dm_io_mem(DM1105_GPIOVAL)); > >>> + dm1105dvb->fe = dvb_attach( > >>> + si21xx_attach, &serit_config, > >>> + &dm1105dvb->i2c_adap); > >>> + if (dm1105dvb->fe) > >>> + dm1105dvb->fe->ops.set_voltage = > >>> + dm1105dvb_set_voltage; > >>> + > >>> + break; > >>> case DM1105_BOARD_DVBWORLD_2002: > >>> case DM1105_BOARD_AXESS_DM05: > >>> default: > >> > >> Some things are missed, like keep GPIO15 high in set_voltage function. > >> Try attached patch against current v4l-dvb tree with modprobe option > >> card=4 > >> modprobe dm1105 card=4 Hi Nameer, You can modify sended by me patch to guess GPIO pin. Simply try all of them, it is only 17. Just replace all appearances DM1105_GPIO(15) with number you want.
Igor M. Liplianin wrote: > On 2 ??????? 2010 17:21:46 Nameer Kazzaz wrote: > >> Hi Igor, >> What do you think ? if I can help you solve this, let me know what I >> can do. >> >> Thanks >> Nameer >> >> Nameer Kazzaz wrote: >> >>> Hi there, >>> dmesg output with patched dm1105.c against current v4l-dvb 'modprob >>> dm1105 card=4' >>> >>> dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 >>> DVB: registering new adapter (dm1105) >>> dm1105 0000:05:0f.0: MAC dd49b0dc >>> dm1105 0000:05:0f.0: could not attach frontend >>> dm1105 0000:05:0f.0: PCI INT A disabled >>> >>> Thanks >>> Nameer Kazzaz >>> >>> Igor M. Liplianin wrote: >>> >>>> On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: >>>> >>>>> Igor wrote: >>>>> >>>>>> Oh, that is wrong. It is registers addresses, Never touch this. >>>>>> >>>>>> Let's look on that part of code: >>>>>> >>>>>> /* GPIO's for LNB power control */ >>>>>> #define DM1105_LNB_MASK 0x00000000 // later in >>>>>> >>>>> code write it to >>>>> >>>>> >>>>>> DM1105_GPIOCTR, all GPIO's as OUT >>>>>> #define DM1105_LNB_OFF 0x00020000 // later in >>>>>> >>>>> code write it to >>>>> >>>>> >>>>>> DM1105_GPIOVAL, set GPIO17 to HIGH >>>>>> >>>>>> But you have not to change this. >>>>>> Right way is to write another entry in cards structure and so on. >>>>>> Better leave it to me. >>>>>> >>>>>> Regards >>>>>> Igor >>>>>> >>>>> Thanks for all your help, I understand better now. I have moved to >>>>> code >>>>> like that at the bottom. It still doesn't work, but feels a lot >>>>> closer. >>>>> >>>>> Before I keep playing with values, I want to check I'm on the right >>>>> track. >>>>> Does it look right? Specific questions: >>>>> 1. I see there is a hw_init function. Should I be using that? I >>>>> put the >>>>> logic into fe_attach because there was already card-specific logic in >>>>> there. But this feels like hw initialisation. >>>>> >>>>> 2. Should I set the control to input or output? I'm assuming input >>>>> = 1. >>>>> >>>>> 3. Would pin 15 be numbered from the left or right - is it 0x4, or >>>>> 0x2000? >>>>> >>>>> Thanks, >>>>> >>>>> Paul >>>>> >>>>> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 >>>>> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 >>>>> *************** >>>>> *** 51,56 **** >>>>> --- 51,57 ---- >>>>> #define DM1105_BOARD_DVBWORLD_2002 1 >>>>> #define DM1105_BOARD_DVBWORLD_2004 2 >>>>> #define DM1105_BOARD_AXESS_DM05 3 >>>>> + #define DM1105_BOARD_UNBRANDED 4 >>>>> >>>>> /* ----------------------------------------------- */ >>>>> /* >>>>> *************** >>>>> *** 171,176 **** >>>>> --- 172,181 ---- >>>>> #define DM05_LNB_13V 0x00020000 >>>>> #define DM05_LNB_18V 0x00030000 >>>>> >>>>> + /* GPIO's for demod reset for unbranded 195d:1105 */ >>>>> + #define UNBRANDED_DEMOD_MASK 0x00008000 >>>>> + #define UNBRANDED_DEMOD_RESET 0x00008000 >>>>> + >>>>> static unsigned int card[] = {[0 ... 3] = UNSET }; >>>>> module_param_array(card, int, NULL, 0444); >>>>> MODULE_PARM_DESC(card, "card type"); >>>>> *************** >>>>> *** 206,211 **** >>>>> --- 211,219 ---- >>>>> [DM1105_BOARD_AXESS_DM05] = { >>>>> .name = "Axess/EasyTv DM05", >>>>> }, >>>>> + [DM1105_BOARD_UNBRANDED] = { >>>>> + .name = "Unbranded 195d:1105", >>>>> + }, >>>>> }; >>>>> >>>>> static const struct dm1105_subid dm1105_subids[] = { >>>>> *************** >>>>> *** 229,234 **** >>>>> --- 237,246 ---- >>>>> .subvendor = 0x195d, >>>>> .subdevice = 0x1105, >>>>> .card = DM1105_BOARD_AXESS_DM05, >>>>> + }, { >>>>> + .subvendor = 0x195d, >>>>> + .subdevice = 0x1105, >>>>> + .card = DM1105_BOARD_UNBRANDED, >>>>> }, >>>>> }; >>>>> >>>>> *************** >>>>> *** 698,703 **** >>>>> --- 710,727 ---- >>>>> dm1105dvb->fe->ops.set_voltage = >>>>> dm1105dvb_set_voltage; >>>>> >>>>> break; >>>>> + case DM1105_BOARD_UNBRANDED: >>>>> + printk(KERN_ERR "Attaching as board_unbranded\n"); >>>>> + outl(UNBRANDED_DEMOD_MASK, dm_io_mem(DM1105_GPIOCTR)); >>>>> + outl(UNBRANDED_DEMOD_RESET , >>>>> dm_io_mem(DM1105_GPIOVAL)); >>>>> + dm1105dvb->fe = dvb_attach( >>>>> + si21xx_attach, &serit_config, >>>>> + &dm1105dvb->i2c_adap); >>>>> + if (dm1105dvb->fe) >>>>> + dm1105dvb->fe->ops.set_voltage = >>>>> + dm1105dvb_set_voltage; >>>>> + >>>>> + break; >>>>> case DM1105_BOARD_DVBWORLD_2002: >>>>> case DM1105_BOARD_AXESS_DM05: >>>>> default: >>>>> >>>> Some things are missed, like keep GPIO15 high in set_voltage function. >>>> Try attached patch against current v4l-dvb tree with modprobe option >>>> card=4 >>>> modprobe dm1105 card=4 >>>> > Hi Nameer, > You can modify sended by me patch to guess GPIO pin. Simply try all of them, it is only 17. > Just replace all appearances DM1105_GPIO(15) with number you want. > Ok I will do that. Thanks Nameer -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Nameer Kazzaz wrote: > Igor M. Liplianin wrote: >> On 2 ??????? 2010 17:21:46 Nameer Kazzaz wrote: >> >>> Hi Igor, >>> What do you think ? if I can help you solve this, let me know >>> what I >>> can do. >>> >>> Thanks >>> Nameer >>> >>> Nameer Kazzaz wrote: >>> >>>> Hi there, >>>> dmesg output with patched dm1105.c against current v4l-dvb 'modprob >>>> dm1105 card=4' >>>> >>>> dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 >>>> DVB: registering new adapter (dm1105) >>>> dm1105 0000:05:0f.0: MAC dd49b0dc >>>> dm1105 0000:05:0f.0: could not attach frontend >>>> dm1105 0000:05:0f.0: PCI INT A disabled >>>> >>>> Thanks >>>> Nameer Kazzaz >>>> >>>> Igor M. Liplianin wrote: >>>> >>>>> On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: >>>>> >>>>>> Igor wrote: >>>>>> >>>>>>> Oh, that is wrong. It is registers addresses, Never touch this. >>>>>>> >>>>>>> Let's look on that part of code: >>>>>>> >>>>>>> /* GPIO's for LNB power control */ >>>>>>> #define DM1105_LNB_MASK 0x00000000 // >>>>>>> later in >>>>>>> >>>>>> code write it to >>>>>> >>>>>> >>>>>>> DM1105_GPIOCTR, all GPIO's as OUT >>>>>>> #define DM1105_LNB_OFF 0x00020000 // >>>>>>> later in >>>>>>> >>>>>> code write it to >>>>>> >>>>>> >>>>>>> DM1105_GPIOVAL, set GPIO17 to HIGH >>>>>>> >>>>>>> But you have not to change this. >>>>>>> Right way is to write another entry in cards structure and so on. >>>>>>> Better leave it to me. >>>>>>> >>>>>>> Regards >>>>>>> Igor >>>>>>> >>>>>> Thanks for all your help, I understand better now. I have moved to >>>>>> code >>>>>> like that at the bottom. It still doesn't work, but feels a lot >>>>>> closer. >>>>>> >>>>>> Before I keep playing with values, I want to check I'm on the right >>>>>> track. >>>>>> Does it look right? Specific questions: >>>>>> 1. I see there is a hw_init function. Should I be using that? I >>>>>> put the >>>>>> logic into fe_attach because there was already card-specific >>>>>> logic in >>>>>> there. But this feels like hw initialisation. >>>>>> >>>>>> 2. Should I set the control to input or output? I'm assuming input >>>>>> = 1. >>>>>> >>>>>> 3. Would pin 15 be numbered from the left or right - is it 0x4, or >>>>>> 0x2000? >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Paul >>>>>> >>>>>> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 >>>>>> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 >>>>>> *************** >>>>>> *** 51,56 **** >>>>>> --- 51,57 ---- >>>>>> #define DM1105_BOARD_DVBWORLD_2002 1 >>>>>> #define DM1105_BOARD_DVBWORLD_2004 2 >>>>>> #define DM1105_BOARD_AXESS_DM05 3 >>>>>> + #define DM1105_BOARD_UNBRANDED 4 >>>>>> >>>>>> /* ----------------------------------------------- */ >>>>>> /* >>>>>> *************** >>>>>> *** 171,176 **** >>>>>> --- 172,181 ---- >>>>>> #define DM05_LNB_13V 0x00020000 >>>>>> #define DM05_LNB_18V 0x00030000 >>>>>> >>>>>> + /* GPIO's for demod reset for unbranded 195d:1105 */ >>>>>> + #define UNBRANDED_DEMOD_MASK 0x00008000 >>>>>> + #define UNBRANDED_DEMOD_RESET 0x00008000 >>>>>> + >>>>>> static unsigned int card[] = {[0 ... 3] = UNSET }; >>>>>> module_param_array(card, int, NULL, 0444); >>>>>> MODULE_PARM_DESC(card, "card type"); >>>>>> *************** >>>>>> *** 206,211 **** >>>>>> --- 211,219 ---- >>>>>> [DM1105_BOARD_AXESS_DM05] = { >>>>>> .name = "Axess/EasyTv DM05", >>>>>> }, >>>>>> + [DM1105_BOARD_UNBRANDED] = { >>>>>> + .name = "Unbranded 195d:1105", >>>>>> + }, >>>>>> }; >>>>>> >>>>>> static const struct dm1105_subid dm1105_subids[] = { >>>>>> *************** >>>>>> *** 229,234 **** >>>>>> --- 237,246 ---- >>>>>> .subvendor = 0x195d, >>>>>> .subdevice = 0x1105, >>>>>> .card = DM1105_BOARD_AXESS_DM05, >>>>>> + }, { >>>>>> + .subvendor = 0x195d, >>>>>> + .subdevice = 0x1105, >>>>>> + .card = DM1105_BOARD_UNBRANDED, >>>>>> }, >>>>>> }; >>>>>> >>>>>> *************** >>>>>> *** 698,703 **** >>>>>> --- 710,727 ---- >>>>>> dm1105dvb->fe->ops.set_voltage = >>>>>> dm1105dvb_set_voltage; >>>>>> >>>>>> break; >>>>>> + case DM1105_BOARD_UNBRANDED: >>>>>> + printk(KERN_ERR "Attaching as board_unbranded\n"); >>>>>> + outl(UNBRANDED_DEMOD_MASK, >>>>>> dm_io_mem(DM1105_GPIOCTR)); >>>>>> + outl(UNBRANDED_DEMOD_RESET , >>>>>> dm_io_mem(DM1105_GPIOVAL)); >>>>>> + dm1105dvb->fe = dvb_attach( >>>>>> + si21xx_attach, &serit_config, >>>>>> + &dm1105dvb->i2c_adap); >>>>>> + if (dm1105dvb->fe) >>>>>> + dm1105dvb->fe->ops.set_voltage = >>>>>> + dm1105dvb_set_voltage; >>>>>> + >>>>>> + break; >>>>>> case DM1105_BOARD_DVBWORLD_2002: >>>>>> case DM1105_BOARD_AXESS_DM05: >>>>>> default: >>>>>> >>>>> Some things are missed, like keep GPIO15 high in set_voltage >>>>> function. >>>>> Try attached patch against current v4l-dvb tree with modprobe option >>>>> card=4 >>>>> modprobe dm1105 card=4 >>>>> >> Hi Nameer, >> You can modify sended by me patch to guess GPIO pin. Simply try all >> of them, it is only 17. Just replace all appearances DM1105_GPIO(15) >> with number you want. >> > Ok I will do that. > > Thanks > Nameer Hi Igor, I tried all DM1105_GPIO(0) to DM1105_GPIO(17), same error. Any Idea ? Nameer -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 3 ??????? 2010 00:07:36 Nameer Kazzaz wrote: > Nameer Kazzaz wrote: > > Igor M. Liplianin wrote: > >> On 2 ??????? 2010 17:21:46 Nameer Kazzaz wrote: > >>> Hi Igor, > >>> What do you think ? if I can help you solve this, let me know > >>> what I > >>> can do. > >>> > >>> Thanks > >>> Nameer > >>> > >>> Nameer Kazzaz wrote: > >>>> Hi there, > >>>> dmesg output with patched dm1105.c against current v4l-dvb 'modprob > >>>> dm1105 card=4' > >>>> > >>>> dm1105 0000:05:0f.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 > >>>> DVB: registering new adapter (dm1105) > >>>> dm1105 0000:05:0f.0: MAC dd49b0dc > >>>> dm1105 0000:05:0f.0: could not attach frontend > >>>> dm1105 0000:05:0f.0: PCI INT A disabled > >>>> > >>>> Thanks > >>>> Nameer Kazzaz > >>>> > >>>> Igor M. Liplianin wrote: > >>>>> On 20 ?????? 2010 23:20:20 paul10@planar.id.au wrote: > >>>>>> Igor wrote: > >>>>>>> Oh, that is wrong. It is registers addresses, Never touch this. > >>>>>>> > >>>>>>> Let's look on that part of code: > >>>>>>> > >>>>>>> /* GPIO's for LNB power control */ > >>>>>>> #define DM1105_LNB_MASK 0x00000000 // > >>>>>>> later in > >>>>>> > >>>>>> code write it to > >>>>>> > >>>>>>> DM1105_GPIOCTR, all GPIO's as OUT > >>>>>>> #define DM1105_LNB_OFF 0x00020000 // > >>>>>>> later in > >>>>>> > >>>>>> code write it to > >>>>>> > >>>>>>> DM1105_GPIOVAL, set GPIO17 to HIGH > >>>>>>> > >>>>>>> But you have not to change this. > >>>>>>> Right way is to write another entry in cards structure and so on. > >>>>>>> Better leave it to me. > >>>>>>> > >>>>>>> Regards > >>>>>>> Igor > >>>>>> > >>>>>> Thanks for all your help, I understand better now. I have moved to > >>>>>> code > >>>>>> like that at the bottom. It still doesn't work, but feels a lot > >>>>>> closer. > >>>>>> > >>>>>> Before I keep playing with values, I want to check I'm on the right > >>>>>> track. > >>>>>> Does it look right? Specific questions: > >>>>>> 1. I see there is a hw_init function. Should I be using that? I > >>>>>> put the > >>>>>> logic into fe_attach because there was already card-specific > >>>>>> logic in > >>>>>> there. But this feels like hw initialisation. > >>>>>> > >>>>>> 2. Should I set the control to input or output? I'm assuming input > >>>>>> = 1. > >>>>>> > >>>>>> 3. Would pin 15 be numbered from the left or right - is it 0x4, or > >>>>>> 0x2000? > >>>>>> > >>>>>> Thanks, > >>>>>> > >>>>>> Paul > >>>>>> > >>>>>> *** dm1105.c.old 2010-01-13 16:15:00.000000000 +1100 > >>>>>> --- dm1105.c 2010-01-21 08:13:14.000000000 +1100 > >>>>>> *************** > >>>>>> *** 51,56 **** > >>>>>> --- 51,57 ---- > >>>>>> #define DM1105_BOARD_DVBWORLD_2002 1 > >>>>>> #define DM1105_BOARD_DVBWORLD_2004 2 > >>>>>> #define DM1105_BOARD_AXESS_DM05 3 > >>>>>> + #define DM1105_BOARD_UNBRANDED 4 > >>>>>> > >>>>>> /* ----------------------------------------------- */ > >>>>>> /* > >>>>>> *************** > >>>>>> *** 171,176 **** > >>>>>> --- 172,181 ---- > >>>>>> #define DM05_LNB_13V 0x00020000 > >>>>>> #define DM05_LNB_18V 0x00030000 > >>>>>> > >>>>>> + /* GPIO's for demod reset for unbranded 195d:1105 */ > >>>>>> + #define UNBRANDED_DEMOD_MASK 0x00008000 > >>>>>> + #define UNBRANDED_DEMOD_RESET 0x00008000 > >>>>>> + > >>>>>> static unsigned int card[] = {[0 ... 3] = UNSET }; > >>>>>> module_param_array(card, int, NULL, 0444); > >>>>>> MODULE_PARM_DESC(card, "card type"); > >>>>>> *************** > >>>>>> *** 206,211 **** > >>>>>> --- 211,219 ---- > >>>>>> [DM1105_BOARD_AXESS_DM05] = { > >>>>>> .name = "Axess/EasyTv DM05", > >>>>>> }, > >>>>>> + [DM1105_BOARD_UNBRANDED] = { > >>>>>> + .name = "Unbranded 195d:1105", > >>>>>> + }, > >>>>>> }; > >>>>>> > >>>>>> static const struct dm1105_subid dm1105_subids[] = { > >>>>>> *************** > >>>>>> *** 229,234 **** > >>>>>> --- 237,246 ---- > >>>>>> .subvendor = 0x195d, > >>>>>> .subdevice = 0x1105, > >>>>>> .card = DM1105_BOARD_AXESS_DM05, > >>>>>> + }, { > >>>>>> + .subvendor = 0x195d, > >>>>>> + .subdevice = 0x1105, > >>>>>> + .card = DM1105_BOARD_UNBRANDED, > >>>>>> }, > >>>>>> }; > >>>>>> > >>>>>> *************** > >>>>>> *** 698,703 **** > >>>>>> --- 710,727 ---- > >>>>>> dm1105dvb->fe->ops.set_voltage = > >>>>>> dm1105dvb_set_voltage; > >>>>>> > >>>>>> break; > >>>>>> + case DM1105_BOARD_UNBRANDED: > >>>>>> + printk(KERN_ERR "Attaching as board_unbranded\n"); > >>>>>> + outl(UNBRANDED_DEMOD_MASK, > >>>>>> dm_io_mem(DM1105_GPIOCTR)); > >>>>>> + outl(UNBRANDED_DEMOD_RESET , > >>>>>> dm_io_mem(DM1105_GPIOVAL)); > >>>>>> + dm1105dvb->fe = dvb_attach( > >>>>>> + si21xx_attach, &serit_config, > >>>>>> + &dm1105dvb->i2c_adap); > >>>>>> + if (dm1105dvb->fe) > >>>>>> + dm1105dvb->fe->ops.set_voltage = > >>>>>> + dm1105dvb_set_voltage; > >>>>>> + > >>>>>> + break; > >>>>>> case DM1105_BOARD_DVBWORLD_2002: > >>>>>> case DM1105_BOARD_AXESS_DM05: > >>>>>> default: > >>>>> > >>>>> Some things are missed, like keep GPIO15 high in set_voltage > >>>>> function. > >>>>> Try attached patch against current v4l-dvb tree with modprobe option > >>>>> card=4 > >>>>> modprobe dm1105 card=4 > >> > >> Hi Nameer, > >> You can modify sended by me patch to guess GPIO pin. Simply try all > >> of them, it is only 17. Just replace all appearances DM1105_GPIO(15) > >> with number you want. > > > > Ok I will do that. > > > > Thanks > > Nameer > > Hi Igor, > I tried all DM1105_GPIO(0) to DM1105_GPIO(17), same error. Any Idea ? > > Nameer Hi I have some ideas, for example, to add to driver i2c_scan function.
diff -r d6520e486ee6 linux/drivers/media/dvb/dm1105/dm1105.c --- a/linux/drivers/media/dvb/dm1105/dm1105.c Sat Jan 30 01:27:34 2010 -0200 +++ b/linux/drivers/media/dvb/dm1105/dm1105.c Sun Jan 31 15:35:30 2010 +0200 @@ -52,6 +52,7 @@ #define DM1105_BOARD_DVBWORLD_2002 1 #define DM1105_BOARD_DVBWORLD_2004 2 #define DM1105_BOARD_AXESS_DM05 3 +#define DM1105_BOARD_UNBRANDED_GPIO15 4 /* ----------------------------------------------- */ /* @@ -207,6 +208,9 @@ [DM1105_BOARD_AXESS_DM05] = { .name = "Axess/EasyTv DM05", }, + [DM1105_BOARD_UNBRANDED_GPIO15] = { + .name = "Unbranded Board GPIO15", + }, }; static const struct dm1105_subid dm1105_subids[] = { @@ -327,6 +331,8 @@ #define dm_setl(reg, bit) dm_andorl((reg), (bit), (bit)) #define dm_clearl(reg, bit) dm_andorl((reg), (bit), 0) +#define DM1105_GPIO(x) (1 << x) + static int dm1105_i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num) { @@ -441,6 +447,12 @@ u32 lnb_mask, lnb_13v, lnb_18v, lnb_off; switch (dev->boardnr) { + case DM1105_BOARD_UNBRANDED_GPIO15: + lnb_mask = DM05_LNB_MASK; + lnb_off = DM05_LNB_OFF | DM1105_GPIO(15);/* keep GPIO15 high */ + lnb_13v = DM05_LNB_13V | DM1105_GPIO(15); + lnb_18v = DM05_LNB_18V | DM1105_GPIO(15); + break; case DM1105_BOARD_AXESS_DM05: lnb_mask = DM05_LNB_MASK; lnb_off = DM05_LNB_OFF; @@ -758,6 +770,14 @@ dev->fe->ops.set_voltage = dm1105_set_voltage; break; + case DM1105_BOARD_UNBRANDED_GPIO15: + /* reset frontend */ + dm_clearl(DM1105_GPIOCTR, DM1105_GPIO(15)); + dm_clearl(DM1105_GPIOVAL, DM1105_GPIO(15)); + msleep(10); + dm_setl(DM1105_GPIOVAL, DM1105_GPIO(15)); + msleep(100); + /* break omitted intentionally */ case DM1105_BOARD_DVBWORLD_2002: case DM1105_BOARD_AXESS_DM05: default: