From patchwork Sat May 30 17:00:32 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Igor M. Liplianin" X-Patchwork-Id: 27063 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n4UH0gPD018904 for ; Sat, 30 May 2009 17:00:42 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759979AbZE3RAi (ORCPT ); Sat, 30 May 2009 13:00:38 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1760134AbZE3RAi (ORCPT ); Sat, 30 May 2009 13:00:38 -0400 Received: from mail-fx0-f168.google.com ([209.85.220.168]:34137 "EHLO mail-fx0-f168.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759979AbZE3RAh (ORCPT ); Sat, 30 May 2009 13:00:37 -0400 Received: by fxm12 with SMTP id 12so4958087fxm.37 for ; Sat, 30 May 2009 10:00:38 -0700 (PDT) Received: by 10.204.61.209 with SMTP id u17mr3732658bkh.86.1243702838042; Sat, 30 May 2009 10:00:38 -0700 (PDT) Received: from ?172.20.20.16? ([195.222.65.235]) by mx.google.com with ESMTPS id d13sm4380079fka.2.2009.05.30.10.00.36 (version=SSLv3 cipher=RC4-MD5); Sat, 30 May 2009 10:00:37 -0700 (PDT) From: "Igor M. Liplianin" To: Simon Kenyon Subject: Re: [linux-dvb] SDMC DM1105N not being detected Date: Sat, 30 May 2009 20:00:32 +0300 User-Agent: KMail/1.9.10 Cc: linux-media@vger.kernel.org References: <200905261747.31361.liplianin@tut.by> <4A1C4AF1.6020200@koala.ie> In-Reply-To: <4A1C4AF1.6020200@koala.ie> MIME-Version: 1.0 Message-Id: <200905302000.32353.liplianin@me.by> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org On 26 May 2009 23:02:57 Simon Kenyon wrote: > Igor M. Liplianin wrote: > > The card is working with external LNB power supply, for example, through > > the loop out from another sat box. So, we need to know, which way to > > control LNB power on the board. Usually it is through GPIO pins. > > For example: > > Pins 112 and 111 for GPIO0, GPIO1. Also GPIO15 is at 65 pin. > > You can edit this lines in code: > > -*-*-*-*-*-*-*-*-*-*-*-*- > > /* GPIO's for LNB power control for Axess DM05 */ > > #define DM05_LNB_MASK 0xfffffffc // GPIO > > control #define DM05_LNB_13V 0x3fffd // GPIO > > value #define DM05_LNB_18V 0x3fffc // GPIO > > value -*-*-*-*-*-*-*-*-*-*-*-*- > > > > BTW: > > Bit value 0 for GPIOCTL means output, 1 - input. > > Bit value for GPIOVAL - read/write. > > GPIO pins count is 18. Bits over 18 affect nothing. > > i will try to work out the correct values > when i have done so (or given up trying) i will let you know > > thank you very much for your help > -- > simon > -- > 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 Patch against latest v4l-dvb. Please, test it. # HG changeset patch # User Igor M. Liplianin # Date 1243702068 -10800 # Node ID 05a77f902a1bc1e740600bc4c6f0a0555a4adb57 # Parent 25bc0580359a71b2661ef0ac30e229b83ce84162 Add support for yet another SDMC DM1105 based DVB-S card. From: Igor M. Liplianin Add support for SDMC DM1105 based DVB-S cards with PCI ID 195d:1105 Signed-off-by: Igor M. Liplianin diff -r 25bc0580359a -r 05a77f902a1b linux/drivers/media/dvb/dm1105/dm1105.c --- a/linux/drivers/media/dvb/dm1105/dm1105.c Fri May 29 17:03:31 2009 -0300 +++ b/linux/drivers/media/dvb/dm1105/dm1105.c Sat May 30 19:47:48 2009 +0300 @@ -51,6 +51,9 @@ #ifndef PCI_VENDOR_ID_TRIGEM #define PCI_VENDOR_ID_TRIGEM 0x109f #endif +#ifndef PCI_VENDOR_ID_AXESS +#define PCI_VENDOR_ID_AXESS 0x195d +#endif #ifndef PCI_DEVICE_ID_DM1105 #define PCI_DEVICE_ID_DM1105 0x036f #endif @@ -60,6 +63,9 @@ #ifndef PCI_DEVICE_ID_DW2004 #define PCI_DEVICE_ID_DW2004 0x2004 #endif +#ifndef PCI_DEVICE_ID_DM05 +#define PCI_DEVICE_ID_DM05 0x1105 +#endif /* ----------------------------------------------- */ /* sdmc dm1105 registers */ @@ -150,6 +156,11 @@ #define DM1105_LNB_13V 0x00010100 #define DM1105_LNB_18V 0x00000100 +/* GPIO's for LNB power control for Axess DM05 */ +#define DM05_LNB_MASK 0x00000000 +#define DM05_LNB_13V 0x00020000 +#define DM05_LNB_18V 0x00030000 + static int ir_debug; module_param(ir_debug, int, 0644); MODULE_PARM_DESC(ir_debug, "enable debugging information for IR decoding"); @@ -317,6 +328,18 @@ { struct dm1105dvb *dm1105dvb = frontend_to_dm1105dvb(fe); + switch (dm1105dvb->pdev->subsystem_device) { + case PCI_DEVICE_ID_DM05: + if (voltage == SEC_VOLTAGE_18) { + outl(DM05_LNB_MASK, dm_io_mem(DM1105_GPIOCTR)); + outl(DM05_LNB_18V, dm_io_mem(DM1105_GPIOVAL)); + } else { + /*LNB ON-13V by default!*/ + outl(DM05_LNB_MASK, dm_io_mem(DM1105_GPIOCTR)); + outl(DM05_LNB_13V, dm_io_mem(DM1105_GPIOVAL)); + } + break; + default: if (voltage == SEC_VOLTAGE_18) { outl(DM1105_LNB_MASK, dm_io_mem(DM1105_GPIOCTR)); outl(DM1105_LNB_18V, dm_io_mem(DM1105_GPIOVAL)); @@ -325,6 +348,7 @@ outl(DM1105_LNB_MASK, dm_io_mem(DM1105_GPIOCTR)); outl(DM1105_LNB_13V, dm_io_mem(DM1105_GPIOVAL)); } + } return 0; } @@ -600,37 +624,36 @@ switch (dm1105dvb->pdev->subsystem_device) { case PCI_DEVICE_ID_DW2002: + default: dm1105dvb->fe = dvb_attach( stv0299_attach, &sharp_z0194a_config, &dm1105dvb->i2c_adap); - if (dm1105dvb->fe) { dm1105dvb->fe->ops.set_voltage = dm1105dvb_set_voltage; dvb_attach(dvb_pll_attach, dm1105dvb->fe, 0x60, &dm1105dvb->i2c_adap, DVB_PLL_OPERA1); + break; } - if (!dm1105dvb->fe) { - dm1105dvb->fe = dvb_attach( - stv0288_attach, &earda_config, - &dm1105dvb->i2c_adap); - if (dm1105dvb->fe) { - dm1105dvb->fe->ops.set_voltage = - dm1105dvb_set_voltage; - dvb_attach(stb6000_attach, dm1105dvb->fe, 0x61, - &dm1105dvb->i2c_adap); - } + dm1105dvb->fe = dvb_attach( + stv0288_attach, &earda_config, + &dm1105dvb->i2c_adap); + if (dm1105dvb->fe) { + dm1105dvb->fe->ops.set_voltage = + dm1105dvb_set_voltage; + dvb_attach(stb6000_attach, dm1105dvb->fe, 0x61, + &dm1105dvb->i2c_adap); + break; } - if (!dm1105dvb->fe) { - dm1105dvb->fe = dvb_attach( - si21xx_attach, &serit_config, - &dm1105dvb->i2c_adap); - if (dm1105dvb->fe) - dm1105dvb->fe->ops.set_voltage = - dm1105dvb_set_voltage; - } + dm1105dvb->fe = dvb_attach( + si21xx_attach, &serit_config, + &dm1105dvb->i2c_adap); + if (dm1105dvb->fe) + dm1105dvb->fe->ops.set_voltage = + dm1105dvb_set_voltage; + break; case PCI_DEVICE_ID_DW2004: dm1105dvb->fe = dvb_attach( @@ -638,6 +661,7 @@ &dm1105dvb->i2c_adap); if (dm1105dvb->fe) dm1105dvb->fe->ops.set_voltage = dm1105dvb_set_voltage; + break; } @@ -870,6 +894,11 @@ .subvendor = PCI_ANY_ID, .subdevice = PCI_DEVICE_ID_DW2004, }, { + .vendor = PCI_VENDOR_ID_AXESS, + .device = PCI_DEVICE_ID_DM05, + .subvendor = PCI_VENDOR_ID_AXESS, + .subdevice = PCI_DEVICE_ID_DM05, + }, { /* empty */ }, };