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@xxxxxxxxxxxx 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 Microsoft Windows Free Zone - Linux used for all Computing Tasks -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html