From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp5-g19.free.fr ([212.27.42.35]) by www.linuxtv.org with esmtp (Exim 4.63) (envelope-from ) id 1JuDVA-0001iH-Bq for linux-dvb@linuxtv.org; Thu, 08 May 2008 23:18:10 +0200 Message-ID: <48236E1F.5080300@free.fr> Date: Thu, 08 May 2008 23:18:23 +0200 From: Thierry Merle MIME-Version: 1.0 To: Tomi Orava References: <43276.192.168.9.10.1192357983.squirrel@ncircle.nullnet.fi> <20071018181040.GA6960@dose.home.local> <20071018182940.GA7317@dose.home.local> <20071018201418.GA16574@dose.home.local> <47075.192.168.9.10.1193248379.squirrel@ncircle.nullnet.fi> <472A0CC2.8040509@free.fr> <480F9062.6000700@free.fr> <16781.192.100.124.220.1209712634.squirrel@ncircle.nullnet.fi> <481B4A78.8090305@free.fr> <30354.192.100.124.220.1209969477.squirrel@ncircle.nullnet.fi> <481F66B0.4090302@free.fr> <4821F9A9.6030304@ncircle.nullnet.fi> In-Reply-To: <4821F9A9.6030304@ncircle.nullnet.fi> Content-Type: multipart/mixed; boundary="------------090905060808090504010603" Cc: linux-dvb@linuxtv.org Subject: Re: [linux-dvb] Testers wanted for alternative version of Terratec Cinergy T2 driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-dvb-bounces@linuxtv.org Errors-To: linux-dvb-bounces+mchehab=infradead.org@linuxtv.org List-ID: This is a multi-part message in MIME format. --------------090905060808090504010603 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Tomi Orava a =C3=A9crit : >=20 > Hi, >=20 >>>> Well, I see some issues after taking a closer look at your driver: >>>> 1- checkpatch.pl raises errors: 90 errors, 53 warnings, 995 lines >>>> checked >>>> 2- there is a compilation error (I applied the patch on the latest >>>> v4l-dvb tree): >>>> cinergyT2-core.c: In function 'cinergyt2_usb_probe': >>>> cinergyT2-core.c:138: error: too few arguments to function >>>> 'dvb_usb_device_init' >>>> 3- you should replace the existing driver, not proposing a different >>>> driver. I mean, patch directly >>>> linux/drivers/media/dvb/cinergyT2/cinergyT2.c. >=20 > I did some cleanups pointed by the checkpach.pl script. Good! No more error. > However, I did not replace the original Cinergy T2 driver > as I think that this new driver should be located in the > very same directory as the rest of the usb-dvb drivers. >=20 Agreed, but you should remove the old cinergyT2 driver. Furthermore there is another issue: when I plug the device, the device us= age count is set to 0. When I remove the device the device usage count goes to -1 (displayed as = 4294967295). This is a misbehavior of the dvb framework but perhaps something needs to= be initialized somewhere in the driver. I will look at it...dvb-usb: Ter= raTec/qanu USB2.0 Highspeed DVB-T Receiver successfully initialized and c= onnected. I noticed this error when I plug the device (I load manually the driver b= efore, so I suspect a thing in the probe function): sysfs: duplicate filename 'cinergyT2' can not be created WARNING: at fs/sysfs/dir.c:424 sysfs_add_one() Pid: 2922, comm: modprobe Not tainted 2.6.24.3 #13 [] sysfs_add_one+0x54/0xb7 [] create_dir+0x3c/0x6b [] sysfs_create_dir+0x2d/0x40 [] kobject_get+0xf/0x13 [] kobject_add+0xd3/0x17a [] kobject_register+0x19/0x2d [] bus_add_driver+0x50/0x197 [] usb_register_driver+0x66/0xc8 [usbcore] [] __vunmap+0xbd/0xd1 [] cinergyt2_init+0x18/0x5a [cinergyT2] [] blocking_notifier_call_chain+0x17/0x1a [] sys_init_module+0x11d4/0x12e9 [] syscall_call+0x7/0xb [] __xfrm_lookup+0x1b/0x460 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D kobject_add failed for cinergyT2 with -EEXIST, don't try to register thin= gs with the same name in the same directory. Pid: 2922, comm: modprobe Not tainted 2.6.24.3 #13 [] kobject_add+0x148/0x17a [] kobject_register+0x19/0x2d [] bus_add_driver+0x50/0x197 [] usb_register_driver+0x66/0xc8 [usbcore] [] __vunmap+0xbd/0xd1 [] cinergyt2_init+0x18/0x5a [cinergyT2] [] blocking_notifier_call_chain+0x17/0x1a [] sys_init_module+0x11d4/0x12e9 [] syscall_call+0x7/0xb [] __xfrm_lookup+0x1b/0x460 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D usbcore: error -17 registering interface driver cinergyT2 > The current patch is against the v4l-dvb tree. >=20 > Regards, > Tomi Orava >=20 > diff -r 41b3f12d6ce4 linux/drivers/media/dvb/dvb-usb/Kconfig > --- a/linux/drivers/media/dvb/dvb-usb/Kconfig Tue May 06 11:09:01 2008 = -0300 > +++ b/linux/drivers/media/dvb/dvb-usb/Kconfig Wed May 07 22:34:53 2008 = +0300 > @@ -241,3 +241,11 @@ config DVB_USB_AF9005_REMOTE > Say Y here to support the default remote control decoding for the > Afatech AF9005 based receiver. > =20 > +config DVB_USB_CINERGY_T2 > + tristate "Alternative driver for Terratec CinergyT2/qanu USB2 DVB-T r= eceiver" Just remove the "Alternative" word. [SNIP] > diff -r 41b3f12d6ce4 linux/drivers/media/dvb/dvb-usb/cinergyT2-core.c > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/linux/drivers/media/dvb/dvb-usb/cinergyT2-core.c Wed May 07 22:34= :53 2008 +0300 > @@ -0,0 +1,235 @@ [SNIP] > + > +/* slightly modified version of dvb_usb_generic_rw -function */ > + > +int cinergyt2_cmd(struct dvb_usb_device *d, char *wbuf, int wlen, > + char *rbuf, int rlen, int delay_ms) > +{ I studied the differences between this function and the original dvb_usb_= generic_rw function. The only difference is that cinergyt2_cmd returns the number of bytes tha= t usb_bulk_msg has read (actlen). This value is only used in cinergyT2-remote that can be removed (see furt= her) so this function should be removed and calls replaced by the origina= l dvb_usb_generic_rw [SNIP} > diff -r 41b3f12d6ce4 linux/drivers/media/dvb/dvb-usb/cinergyT2-remote.c > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/linux/drivers/media/dvb/dvb-usb/cinergyT2-remote.c Wed May 07 22:= 34:53 2008 +0300 > @@ -0,0 +1,336 @@ [SNIP] > +struct cinergyt2_rc_key cinergyt2_rc_keys[] =3D { > + { CINERGYT2_RC_EVENT_TYPE_NEC, 0xfe01eb04, KEY_POWER }, In fact, the rc keycodes are nearly standard: first byte=3DRC event type (CINERGYT2_RC_EVENT_TYPE_NONE, CINERGYT2_RC_EV= ENT_TYPE_NEC, CINERGYT2_RC_EVENT_TYPE_RC5) then comes a couple of bytes: the custom code=3D0x04 and the custom code = "checksum" =3D0xeb then the last couple of bytes: the key code=3D0x01 and the key code check= sum=3D0xfe This processing is done in a same way in dvd-usb-remote. I joined to this email a patch against your patch that uses this module. = Obviously you can integrate in your patch . I will look at the module count problem and the irrecord problem, we are = close to propose this beautiful patch ;) Cheers, Thierry --------------090905060808090504010603 Content-Type: text/plain; name="remove_cinergyT2_remote.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="remove_cinergyT2_remote.patch" ZGlmZiAtciBmNTFhYTI1N2FjZmEgbGludXgvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9N YWtlZmlsZQotLS0gYS9saW51eC9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL01ha2VmaWxl CVRodSBNYXkgMDggMjI6NTM6NTYgMjAwOCArMDIwMAorKysgYi9saW51eC9kcml2ZXJzL21l ZGlhL2R2Yi9kdmItdXNiL01ha2VmaWxlCVRodSBNYXkgMDggMjM6MDY6MzQgMjAwOCArMDIw MApAQCAtNjEsNyArNjEsNyBAQAogZHZiLXVzYi1hZjkwMDUtcmVtb3RlLW9ianMgPSBhZjkw MDUtcmVtb3RlLm8KIG9iai0kKENPTkZJR19EVkJfVVNCX0FGOTAwNV9SRU1PVEUpICs9IGR2 Yi11c2ItYWY5MDA1LXJlbW90ZS5vCiAKLWR2Yi11c2ItY2luZXJneVQyLW9ianMgPSBjaW5l cmd5VDItY29yZS5vIGNpbmVyZ3lUMi1mZS5vIGNpbmVyZ3lUMi1yZW1vdGUubworZHZiLXVz Yi1jaW5lcmd5VDItb2JqcyA9IGNpbmVyZ3lUMi1jb3JlLm8gY2luZXJneVQyLWZlLm8KIG9i ai0kKENPTkZJR19EVkJfVVNCX0NJTkVSR1lfVDIpICs9IGR2Yi11c2ItY2luZXJneVQyLm8K IAogCmRpZmYgLXIgZjUxYWEyNTdhY2ZhIGxpbnV4L2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11 c2IvY2luZXJneVQyLWNvcmUuYwotLS0gYS9saW51eC9kcml2ZXJzL21lZGlhL2R2Yi9kdmIt dXNiL2NpbmVyZ3lUMi1jb3JlLmMJVGh1IE1heSAwOCAyMjo1Mzo1NiAyMDA4ICswMjAwCisr KyBiL2xpbnV4L2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvY2luZXJneVQyLWNvcmUuYwlU aHUgTWF5IDA4IDIzOjA2OjM0IDIwMDggKzAyMDAKQEAgLTM3LDEwICszNyw2IEBACiBtb2R1 bGVfcGFyYW1fbmFtZWQoZGVidWcsIGR2Yl91c2JfY2luZXJneXQyX2RlYnVnLCBpbnQsIDA2 NDQpOwogTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgInNldCBkZWJ1Z2dpbmcgbGV2ZWwgKDE9 aW5mbywgeGZlcj0yLCByYz00ICIKIAkJIihvci1hYmxlKSkuIik7Ci0KLW1vZHVsZV9wYXJh bV9uYW1lZChkaXNhYmxlX3JlbW90ZSwgZGlzYWJsZV9yZW1vdGUsIGludCwgMDY0NCk7Ci1N T0RVTEVfUEFSTV9ERVNDKGRpc2FibGVfcmVtb3RlLCAiRGlzYWJsZSByZW1vdGUgY29udHJv bGxlciBzdXBwb3J0IChpbnQpIik7Ci0KIAogRFZCX0RFRklORV9NT0RfT1BUX0FEQVBURVJf TlIoYWRhcHRlcl9ucik7CiAKQEAgLTEzNSw5ICsxMzEsNjUgQEAKIAkvKiBDb3B5IHRoaXMg cG9pbnRlciBhcyB3ZSBhcmUgZ29ubmEgbmVlZCBpdCBpbiB0aGUgcmVsZWFzZSBwaGFzZSAq LwogCWNpbmVyZ3l0Ml91c2JfZGV2aWNlID0gYWRhcC0+ZGV2OwogCi0JcmV0ID0gY2luZXJn eXQyX3JlbW90ZV9pbml0KGFkYXAtPmRldik7Ci0JaWYgKHJldCkKLQkJZXJyKCJjb3VsZCBu b3QgaW5pdGlhbGl6ZSByZW1vdGUgY29udHJvbC4iKTsKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHN0cnVjdCBkdmJfdXNiX3JjX2tleSBjaW5lcmd5dDJfcmNfa2V5cyBbXSA9IHsKKwl7 IDB4MDQsCTB4MDEsCUtFWV9QT1dFUiB9LAorCXsgMHgwNCwJMHgwMiwJS0VZXzEgfSwKKwl7 IDB4MDQsCTB4MDMsCUtFWV8yIH0sCisJeyAweDA0LAkweDA0LAlLRVlfMyB9LAorCXsgMHgw NCwJMHgwNSwJS0VZXzQgfSwKKwl7IDB4MDQsCTB4MDYsCUtFWV81IH0sCisJeyAweDA0LAkw eDA3LAlLRVlfNiB9LAorCXsgMHgwNCwJMHgwOCwJS0VZXzcgfSwKKwl7IDB4MDQsCTB4MDks CUtFWV84IH0sCisJeyAweDA0LAkweDBhLAlLRVlfOSB9LAorCXsgMHgwNCwJMHgwYywJS0VZ XzAgfSwKKwl7IDB4MDQsCTB4MGIsCUtFWV9WSURFTyB9LAorCXsgMHgwNCwJMHgwZCwJS0VZ X1JFRlJFU0ggfSwKKwl7IDB4MDQsCTB4MGUsCUtFWV9TRUxFQ1QgfSwKKwl7IDB4MDQsCTB4 MGYsCUtFWV9FUEcgfSwKKwl7IDB4MDQsCTB4MTAsCUtFWV9VUCB9LAorCXsgMHgwNCwJMHgx NCwJS0VZX0RPV04gfSwKKwl7IDB4MDQsCTB4MTEsCUtFWV9MRUZUIH0sCisJeyAweDA0LAkw eDEzLAlLRVlfUklHSFQgfSwKKwl7IDB4MDQsCTB4MTIsCUtFWV9PSyB9LAorCXsgMHgwNCwJ MHgxNSwJS0VZX1RFWFQgfSwKKwl7IDB4MDQsCTB4MTYsCUtFWV9JTkZPIH0sCisJeyAweDA0 LAkweDE3LAlLRVlfUkVEIH0sCisJeyAweDA0LAkweDE4LAlLRVlfR1JFRU4gfSwKKwl7IDB4 MDQsCTB4MTksCUtFWV9ZRUxMT1cgfSwKKwl7IDB4MDQsCTB4MWEsCUtFWV9CTFVFIH0sCisJ eyAweDA0LAkweDFjLAlLRVlfVk9MVU1FVVAgfSwKKwl7IDB4MDQsCTB4MWUsCUtFWV9WT0xV TUVET1dOIH0sCisJeyAweDA0LAkweDFkLAlLRVlfTVVURSB9LAorCXsgMHgwNCwJMHgxYiwJ S0VZX0NIQU5ORUxVUCB9LAorCXsgMHgwNCwJMHgxZiwJS0VZX0NIQU5ORUxET1dOIH0sCisJ eyAweDA0LAkweDQwLAlLRVlfUEFVU0UgfSwKKwl7IDB4MDQsCTB4NGMsCUtFWV9QTEFZIH0s CisJeyAweDA0LAkweDU4LAlLRVlfUkVDT1JEIH0sCisJeyAweDA0LAkweDU0LAlLRVlfUFJF VklPVVMgfSwKKwl7IDB4MDQsCTB4NDgsCUtFWV9TVE9QIH0sCisJeyAweDA0LAkweDVjLAlL RVlfTkVYVCB9Cit9OworCitzdGF0aWMgaW50IGNpbmVyZ3l0Ml9yY19xdWVyeShzdHJ1Y3Qg ZHZiX3VzYl9kZXZpY2UgKmQsIHUzMiAqZXZlbnQsIGludCAqc3RhdGUpCit7CisJdTgga2V5 WzVdPXswLDAsMCwwLDB9LGNtZCA9IENJTkVSR1lUMl9FUDFfR0VUX1JDX0VWRU5UUzsKKwkq c3RhdGUgPSBSRU1PVEVfTk9fS0VZX1BSRVNTRUQ7CisKKwljaW5lcmd5dDJfY21kKGQsJmNt ZCwxLGtleSxzaXplb2Yoa2V5KSwwKTsKKwlpZihrZXlbNF0gPT0gMHhmZikgeworCQlyZXR1 cm4gMDsKKwl9CisKKwkvKiBoYWNrIHRvIHBhc3MgY2hlY2tzdW0gb24gdGhlIGN1c3RvbSBm aWVsZCAoaXMgc2V0IHRvIDB4ZWIpICovCisJa2V5WzJdID0gfjB4MDQ7CisJZHZiX3VzYl9u ZWNfcmNfa2V5X3RvX2V2ZW50KGQsa2V5LGV2ZW50LHN0YXRlKTsKKyAJaWYgKGtleVswXSAh PSAwKQorCQlkZWJfaW5mbygia2V5OiAleCAleCAleCAleCAleFxuIiwKKwkJCSBrZXlbMF0s a2V5WzFdLGtleVsyXSxrZXlbM10sa2V5WzRdKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTgy LDkgKzIzNCw5IEBACiAJLnBvd2VyX2N0cmwgICAgICAgPSBjaW5lcmd5dDJfcG93ZXJfY3Ry bCwKIAogCS5yY19pbnRlcnZhbCAgICAgID0gNTAsCi0JLnJjX2tleV9tYXAgICAgICAgPSAw LAotCS5yY19rZXlfbWFwX3NpemUgID0gMCwKLQkucmNfcXVlcnkgICAgICAgICA9IDAsCisJ LnJjX2tleV9tYXAgICAgICAgPSBjaW5lcmd5dDJfcmNfa2V5cywKKwkucmNfa2V5X21hcF9z aXplICA9IEFSUkFZX1NJWkUoY2luZXJneXQyX3JjX2tleXMpLAorCS5yY19xdWVyeSAgICAg ICAgID0gY2luZXJneXQyX3JjX3F1ZXJ5LAogCiAJLmdlbmVyaWNfYnVsa19jdHJsX2VuZHBv aW50ID0gMSwKIApAQCAtMjIzLDcgKzI3NSw2IEBACiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBj aW5lcmd5dDJfdXNiX2V4aXQodm9pZCkKIHsKLQljaW5lcmd5dDJfcmVtb3RlX2V4aXQoY2lu ZXJneXQyX3VzYl9kZXZpY2UpOwogCXVzYl9kZXJlZ2lzdGVyKCZjaW5lcmd5dDJfZHJpdmVy KTsKIH0KIApkaWZmIC1yIGY1MWFhMjU3YWNmYSBsaW51eC9kcml2ZXJzL21lZGlhL2R2Yi9k dmItdXNiL2NpbmVyZ3lUMi1yZW1vdGUuYwotLS0gYS9saW51eC9kcml2ZXJzL21lZGlhL2R2 Yi9kdmItdXNiL2NpbmVyZ3lUMi1yZW1vdGUuYwlUaHUgTWF5IDA4IDIyOjUzOjU2IDIwMDgg KzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg LTEsMzM2ICswLDAgQEAKLS8qCi0gKiBUZXJyYVRlYyBDaW5lcmd5IFQyL3FhbnUgVVNCMiBE VkItVCBhZGFwdGVyLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUb21pIE9yYXZhICh0 b21pbW9AbmNpcmNsZS5udWxsbmV0LmZpKQotICoKLSAqIEJhc2VkIG9uIHRoZSBkdmItdXNi LWZyYW1ld29yayBjb2RlIGFuZCB0aGUKLSAqIG9yaWdpbmFsIFRlcnJhdGVjIENpbmVyZ3kg VDIgZHJpdmVyIGJ5OgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBEYW5pZWwgTWFjayA8 ZGFuaWVsQHFhbnUuZGU+IGFuZAotICoJCSAgICBIb2xnZXIgV2FlY2h0bGVyIDxob2xnZXJA cWFudS5kZT4KLSAqCi0gKiAgUHJvdG9jb2wgU3BlYyBwdWJsaXNoZWQgb24gaHR0cDovL3Fh bnUuZGUvc3BlY3MvdGVycmF0ZWNfY2luZXJneVQyLnBkZgotICoKLSAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAqIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24s IEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgotICoKLSAq LwotCi0jaW5jbHVkZSAiY2luZXJneVQyLmgiCi0KLWVudW0gewotCUNJTkVSR1lUMl9SQ19F VkVOVF9UWVBFX05PTkUgPSAweDAwLAotCUNJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQyAg PSAweDAxLAotCUNJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX1JDNSAgPSAweDAyCi19OwotCi0v KioKLSAqIHN0cnVjdCBkdmJfdXNiX3JjX2tleSAtIGEgcmVtb3RlIGNvbnRyb2wga2V5IGFu ZCBpdHMgaW5wdXQtZXZlbnQKLSAqIEBjdXN0b206IHRoZSB2ZW5kb3IvY3VzdG9tIHBhcnQg b2YgdGhlIGtleQotICogQGRhdGE6IHRoZSBhY3R1YWwga2V5IHBhcnQKLSAqIEBldmVudDog dGhlIGlucHV0IGV2ZW50IGFzc2lnbmVkIHRvIGtleSBpZGVudGlmaWVkIGJ5IGN1c3RvbSBh bmQgZGF0YQotICovCi1zdHJ1Y3QgY2luZXJneXQyX3JjX2tleSB7Ci0JdTMyIGN1c3RvbTsK LQl1MzIgZGF0YTsKLQl1MzIgZXZlbnQ7Ci19OwotCi0KLXN0cnVjdCBjaW5lcmd5dDJfcmNf ZXZlbnQgewotCWNoYXIgY3VzdG9tOwotCXVpbnQzMl90IGRhdGE7Ci19IF9fYXR0cmlidXRl X18oKHBhY2tlZCkpOwotCi0KLWV4dGVybiBpbnQgZGlzYWJsZV9yZW1vdGU7Ci0KLXN0cnVj dCBjaW5lcmd5dDJfcmNfa2V5IGNpbmVyZ3l0Ml9yY19rZXlzW10gPSB7Ci0JeyBDSU5FUkdZ VDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGZlMDFlYjA0LCAJS0VZX1BPV0VSIH0sCi0JeyBD SU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGZkMDJlYjA0LCAJS0VZXzEgfSwKLQl7 IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZmMwM2ViMDQsIAlLRVlfMiB9LAot CXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhmYjA0ZWIwNCwgCUtFWV8zIH0s Ci0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGZhMDVlYjA0LCAJS0VZXzQg fSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZjkwNmViMDQsIAlLRVlf NSB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhmODA3ZWIwNCwgCUtF WV82IH0sCi0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGY3MDhlYjA0LCAJ S0VZXzcgfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZjYwOWViMDQs IAlLRVlfOCB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhmNTBhZWIw NCwgCUtFWV85IH0sCi0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGYzMGNl YjA0LCAJS0VZXzAgfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZjQw YmViMDQsIAlLRVlfVklERU8gfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywg CTB4ZjIwZGViMDQsIAlLRVlfUkVGUkVTSCB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZ UEVfTkVDLCAJMHhmMTBlZWIwNCwgCUtFWV9TRUxFQ1QgfSwKLQl7IENJTkVSR1lUMl9SQ19F VkVOVF9UWVBFX05FQywgCTB4ZjAwZmViMDQsIAlLRVlfRVBHIH0sCi0JeyBDSU5FUkdZVDJf UkNfRVZFTlRfVFlQRV9ORUMsIAkweGVmMTBlYjA0LCAJS0VZX1VQIH0sCi0JeyBDSU5FUkdZ VDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGViMTRlYjA0LCAJS0VZX0RPV04gfSwKLQl7IENJ TkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZWUxMWViMDQsIAlLRVlfTEVGVCB9LAot CXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhlYzEzZWIwNCwgCUtFWV9SSUdI VCB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhlZDEyZWIwNCwgCUtF WV9PSyB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhlYTE1ZWIwNCwg CUtFWV9URVhUIH0sCi0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGU5MTZl YjA0LCAJS0VZX0lORk8gfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4 ZTgxN2ViMDQsIAlLRVlfUkVEIH0sCi0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMs IAkweGU3MThlYjA0LCAJS0VZX0dSRUVOIH0sCi0JeyBDSU5FUkdZVDJfUkNfRVZFTlRfVFlQ RV9ORUMsIAkweGU2MTllYjA0LCAJS0VZX1lFTExPVyB9LAotCXsgQ0lORVJHWVQyX1JDX0VW RU5UX1RZUEVfTkVDLCAJMHhlNTFhZWIwNCwgCUtFWV9CTFVFIH0sCi0JeyBDSU5FUkdZVDJf UkNfRVZFTlRfVFlQRV9ORUMsIAkweGUzMWNlYjA0LCAJS0VZX1ZPTFVNRVVQIH0sCi0JeyBD SU5FUkdZVDJfUkNfRVZFTlRfVFlQRV9ORUMsIAkweGUxMWVlYjA0LCAJS0VZX1ZPTFVNRURP V04gfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4ZTIxZGViMDQsIAlL RVlfTVVURSB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhlNDFiZWIw NCwgCUtFWV9DSEFOTkVMVVAgfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywg CTB4ZTAxZmViMDQsIAlLRVlfQ0hBTk5FTERPV04gfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVO VF9UWVBFX05FQywgCTB4YmY0MGViMDQsIAlLRVlfUEFVU0UgfSwKLQl7IENJTkVSR1lUMl9S Q19FVkVOVF9UWVBFX05FQywgCTB4YjM0Y2ViMDQsIAlLRVlfUExBWSB9LAotCXsgQ0lORVJH WVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhhNzU4ZWIwNCwgCUtFWV9SRUNPUkQgfSwKLQl7 IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4YWI1NGViMDQsIAlLRVlfUFJFVklP VVMgfSwKLQl7IENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX05FQywgCTB4Yjc0OGViMDQsIAlL RVlfU1RPUCB9LAotCXsgQ0lORVJHWVQyX1JDX0VWRU5UX1RZUEVfTkVDLCAJMHhhMzVjZWIw NCwgCUtFWV9ORVhUIH0KLX07Ci0KLWludCBjaW5lcmd5dDJfcmNfa2V5c19zaXplID0gQVJS QVlfU0laRShjaW5lcmd5dDJfcmNfa2V5cyk7Ci0KLQotc3RhdGljIGludCBjaW5lcmd5dDJf ZGVjb2RlX3JjX2tleShzdHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmRldiwgaW50IHR5cGUsCi0J CQkJCWludCBkYXRhLCB1MzIgKmV2ZW50LCBpbnQgKnN0YXRlKQotewotCWludCBpLCBrZXks IGZvdW5kOwotCi0JKnN0YXRlID0gUkVNT1RFX05PX0tFWV9QUkVTU0VEOwotCWtleSA9IGxl MzJfdG9fY3B1KGRhdGEpOwotCi0JLyogaW5mbygiY2luZXJneXQyX2RlY29kZV9yY19rZXko KSB0eXBlPSVkLCBrZXk9MHgleCBcCi0JKiAJCShjb252ZXJ0ZWQ9MHgleClcbiIsIHR5cGUs IGRhdGEsIGtleSk7Ci0JKi8KLQotCXN3aXRjaCAodHlwZSkgewotCWNhc2UgQ0lORVJHWVQy X1JDX0VWRU5UX1RZUEVfTkVDOgotCQlpZiAoa2V5ID09IH4wKSB7Ci0JCQkvKiBTdG9wIGtl eSByZXBlYXQgKi8KLQkJCSpzdGF0ZSA9IFJFTU9URV9OT19LRVlfUFJFU1NFRDsKLQkJCWJy ZWFrOwotCQl9Ci0JCWZvdW5kID0gMDsKLQotCQlmb3IgKGkgPSAwOyBpIDwgY2luZXJneXQy X3JjX2tleXNfc2l6ZTsgaSsrKSB7Ci0JCQlpZiAoY2luZXJneXQyX3JjX2tleXNbaV0uZGF0 YSA9PSBrZXkpIHsKLQkJCQkqZXZlbnQgPSBjaW5lcmd5dDJfcmNfa2V5c1tpXS5ldmVudDsK LQkJCQkqc3RhdGUgPSBSRU1PVEVfS0VZX1BSRVNTRUQ7Ci0JCQkJZm91bmQgPSAxOwotCQkJ CS8qIGRlYl9pbmZvKCJSZW1vdGUga2V5IHByZXNzZWQhIGtleSA9ICVkXG4iLAotCQkJCSog CQlpKTsKLQkJCQkqLwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCWlmIChmb3VuZCA9PSAw KQotCQkJZXJyKCJjaW5lcmd5VDI6IFVua25vd24gcmVtb3RlIGNvbnRyb2wga2V5IGRldGVj dGVkISIKLQkJCQkia2V5PTB4JXggKHJhdz0weCV4KVxuIiwga2V5LCBkYXRhKTsKLQkJYnJl YWs7Ci0KLQljYXNlIENJTkVSR1lUMl9SQ19FVkVOVF9UWVBFX1JDNToKLQljYXNlIENJTkVS R1lUMl9SQ19FVkVOVF9UWVBFX05PTkU6Ci0JZGVmYXVsdDoKLQkJaW5mbygiVW5oYW5kbGVk IHJlbW90ZSBrZXkgZGV0ZWN0ZWQhIHR5cGU9MHgleFxuIiwgdHlwZSk7Ci0JCWJyZWFrOwot CX0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBjaW5lcmd5dDJfcmNfcHJvY2Vzcyhz dHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmRldikKLXsKLQljaGFyIGJ1ZlsxXSA9IHsgQ0lORVJH WVQyX0VQMV9HRVRfUkNfRVZFTlRTIH07Ci0Jc3RydWN0IGNpbmVyZ3l0Ml9yY19ldmVudCBy Y19ldmVudHNbMTJdOwotCWludCBsZW4sIGksIHN0YXRlOwotCXUzMiBldmVudDsKLQkvKiBz dHJ1Y3QgY2luZXJneXQyX2RldmljZV9zdGF0ZSAqc3QgPSBkZXYtPnByaXY7ICovCi0KLQls ZW4gPSBjaW5lcmd5dDJfY21kKGRldiwgYnVmLCBzaXplb2YoYnVmKSwKLQkJCQkoY2hhciAq KXJjX2V2ZW50cywgc2l6ZW9mKHJjX2V2ZW50cyksIDApOwotCWlmIChsZW4gPCAwKSB7Ci0J CS8qIHByaW50ayhLRVJOX0lORk8gIkZhaWxlZCB0byByZWFkIFJDIGV2ZW50IGRhdGEhXG4i KTsgKi8KLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKGxlbiA9PSAwKQotCQlyZXR1cm4gMDsK LQotCXN0YXRlID0gUkVNT1RFX05PX0tFWV9QUkVTU0VEOwotCi0JZm9yIChpID0gMDsgaSA8 IChsZW4gLyBzaXplb2YocmNfZXZlbnRzWzBdKSk7IGkrKykgewotCQkvKiBkZWJfaW5mbygi WyVkLyVkXSByY19ldmVudHNbJWRdLmRhdGEgPSAleCAoY29udmVydGVkPSV4KSwKLQkJKiAJ CXR5cGU9JXhcbiIsCi0JCSoJCWksIGxlbiAvIHNpemVvZihyY19ldmVudHNbMF0pLAotCQkq CQlpLCByY19ldmVudHNbaV0uZGF0YSwKLQkJKgkJbGUzMl90b19jcHUocmNfZXZlbnRzW2ld LmRhdGEpLAotCQkqCQlyY19ldmVudHNbaV0uY3VzdG9tKTsKLQkJICovCi0KLQkJY2luZXJn eXQyX2RlY29kZV9yY19rZXkoZGV2LCByY19ldmVudHNbaV0uY3VzdG9tLAotCQkJCQlyY19l dmVudHNbaV0uZGF0YSwgJmV2ZW50LCAmc3RhdGUpOwotCQlzd2l0Y2ggKHN0YXRlKSB7Ci0J CWNhc2UgUkVNT1RFX05PX0tFWV9QUkVTU0VEOgotCQkJYnJlYWs7Ci0KLQkJY2FzZSBSRU1P VEVfS0VZX1BSRVNTRUQ6Ci0JCQkvKiBkZWJfcmMoImtleSBwcmVzc2VkXG4iKTsgKi8KLQkJ CWRldi0+bGFzdF9ldmVudCA9IGV2ZW50OwotCQkJaW5wdXRfZXZlbnQoZGV2LT5yY19pbnB1 dF9kZXYsIEVWX0tFWSwKLQkJCQkJZXZlbnQsIDEpOwotCQkJaW5wdXRfZXZlbnQoZGV2LT5y Y19pbnB1dF9kZXYsIEVWX0tFWSwKLQkJCQkJZGV2LT5sYXN0X2V2ZW50LCAwKTsKLQkJCWlu cHV0X3N5bmMoZGV2LT5yY19pbnB1dF9kZXYpOwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBSRU1P VEVfS0VZX1JFUEVBVDoKLQkJCS8qIGRlYl9yYygia2V5IHJlcGVhdGVkXG4iKTsgKi8KLQkJ CWlucHV0X2V2ZW50KGRldi0+cmNfaW5wdXRfZGV2LCBFVl9LRVksCi0JCQkJCWV2ZW50LCAx KTsKLQkJCWlucHV0X2V2ZW50KGRldi0+cmNfaW5wdXRfZGV2LCBFVl9LRVksCi0JCQkJCWRl di0+bGFzdF9ldmVudCwgMCk7Ci0JCQlpbnB1dF9zeW5jKGRldi0+cmNfaW5wdXRfZGV2KTsK LQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJYnJlYWs7Ci0JCX0KLQotCX0KLQlyZXR1cm4g MDsKLX0KLQotLyoKLSAqIENvZGUgY29waWVkIGZyb20gZHZiLXVzYi1yZW1vdGUuYyBhbmQg bW9kaWZpZWQgZm9yIENpbmVyZ3kgVDIKLSAqLwotCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RF IDwgS0VSTkVMX1ZFUlNJT04oMiwgNiwgMjApCi1zdGF0aWMgdm9pZCBjaW5lcmd5dDJfcmVh ZF9yZW1vdGVfY29udHJvbCh2b2lkICpkYXRhKQotI2Vsc2UKLXN0YXRpYyB2b2lkIGNpbmVy Z3l0Ml9yZWFkX3JlbW90ZV9jb250cm9sKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKLSNl bmRpZgotewotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsIDYs IDIwKQotCXN0cnVjdCBkdmJfdXNiX2RldmljZSAqZCA9IGRhdGE7Ci0jZWxzZQotCXN0cnVj dCBkdmJfdXNiX2RldmljZSAqZCA9Ci0JCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHZi X3VzYl9kZXZpY2UsCi0JCQkJcmNfcXVlcnlfd29yay53b3JrKTsKLSNlbmRpZgotCi0JLyog VE9ETzogbmVlZCBhIGxvY2sgaGVyZS4KLQkqIFdlIGNhbiBzaW1wbHkgc2tpcCBjaGVja2lu ZyBmb3IgdGhlIHJlbW90ZSBjb250cm9sCi0JKiAgaWYgd2UncmUgYnVzeS4KLQkqLwotCi0J Lyogd2hlbiB0aGUgcGFyYW1ldGVyIGhhcyBiZWVuIHNldCB0byAxIHZpYSBzeXNmcyB3aGls ZQotCSogdGhlIGRyaXZlciB3YXMgcnVubmluZwotCSovCi0KLQlpZiAoZGlzYWJsZV9yZW1v dGUpCi0JCXJldHVybjsKLQotCWlmIChjaW5lcmd5dDJfcmNfcHJvY2VzcyhkKSkKLQkJZXJy KCJlcnJvciB3aGlsZSBxdWVyeWluZyBmb3IgYW4gcmVtb3RlIGNvbnRyb2wgZXZlbnQuIik7 Ci0KLQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmQtPnJjX3F1ZXJ5X3dvcmssCi0JCQkJbXNl Y3NfdG9famlmZmllcyhkLT5wcm9wcy5yY19pbnRlcnZhbCkpOwotfQotCi0KLQotaW50IGNp bmVyZ3l0Ml9yZW1vdGVfaW5pdChzdHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmQpCi17Ci0Jc3Ry dWN0IGlucHV0X2RldiAqaW5wdXRfZGV2OwotCWludCBpOwotCWludCBlcnI7Ci0KLQlpZiAo ZGlzYWJsZV9yZW1vdGUpIHsKLQkJZXJyKCJSZW1vdGUgY29udHJvbGxlciBzdXBwb3J0IGRp c2FibGVkIVxuIik7Ci0JCXJldHVybiAwOwotCX0KLQotCXVzYl9tYWtlX3BhdGgoZC0+dWRl diwgZC0+cmNfcGh5cywgc2l6ZW9mKGQtPnJjX3BoeXMpKTsKLQlzdHJsY2F0KGQtPnJjX3Bo eXMsICIvaXIwIiwgc2l6ZW9mKGQtPnJjX3BoeXMpKTsKLQotCWlucHV0X2RldiA9IGlucHV0 X2FsbG9jYXRlX2RldmljZSgpOwotCWlmICghaW5wdXRfZGV2KSB7Ci0JCWVycigiRmFpbGVk IHRvIGFsbG9jYXRlIG5ldyBpbnB1dCBkZXZpY2UhXG4iKTsKLQkJcmV0dXJuIC1FTk9NRU07 Ci0JfQotCi0JaW5wdXRfZGV2LT5ldmJpdFswXSA9IEJJVChFVl9LRVkpOwotCWlucHV0X2Rl di0+bmFtZSA9ICJJUi1yZWNlaXZlciBpbnNpZGUgYW4gVVNCIERWQiByZWNlaXZlciI7Ci0J aW5wdXRfZGV2LT5waHlzID0gZC0+cmNfcGh5czsKLQl1c2JfdG9faW5wdXRfaWQoZC0+dWRl diwgJmlucHV0X2Rldi0+aWQpOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigyLCA2LCAyMikKLQlpbnB1dF9kZXYtPmRldi5wYXJlbnQgPSAmZC0+dWRldi0+ ZGV2OwotI2Vsc2UKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o MiwgNiwgMTUpCi0JaW5wdXRfZGV2LT5jZGV2LmRldiA9ICZkLT51ZGV2LT5kZXY7Ci0jZW5k aWYKLSNlbmRpZgotCi0JLyogc2V0IHRoZSBiaXRzIGZvciB0aGUga2V5cyAqLwotCWRlYl9y Yygia2V5IG1hcCBzaXplOiAlZFxuIiwgY2luZXJneXQyX3JjX2tleXNfc2l6ZSk7Ci0JZm9y IChpID0gMDsgaSA8IGNpbmVyZ3l0Ml9yY19rZXlzX3NpemU7IGkrKykgewotCQlkZWJfcmMo InNldHRpbmcgYml0IGZvciBldmVudCAlZCBpdGVtICVkXG4iLAotCQkJY2luZXJneXQyX3Jj X2tleXNbaV0uZXZlbnQsIGkpOwotCQlzZXRfYml0KGNpbmVyZ3l0Ml9yY19rZXlzW2ldLmV2 ZW50LCBpbnB1dF9kZXYtPmtleWJpdCk7Ci0JfQotCi0JLyogU3RhcnQgdGhlIHJlbW90ZS1j b250cm9sIHBvbGxpbmcuICovCi0JaWYgKGQtPnByb3BzLnJjX2ludGVydmFsIDwgNDApCi0J CWQtPnByb3BzLnJjX2ludGVydmFsID0gMTAwOyAvKiBkZWZhdWx0ICovCi0KLQkvKiBzZXR0 aW5nIHRoZXNlIHR3byB2YWx1ZXMgdG8gbm9uLXplcm8sCi0JICogd2UgaGF2ZSB0byBtYW5h Z2Uga2V5IHJlcGVhdHMgKi8KLQotCWlucHV0X2Rldi0+cmVwW1JFUF9QRVJJT0RdID0gZC0+ cHJvcHMucmNfaW50ZXJ2YWw7Ci0JaW5wdXRfZGV2LT5yZXBbUkVQX0RFTEFZXSAgPSBkLT5w cm9wcy5yY19pbnRlcnZhbCArIDE1MDsKLQotCWVyciA9IGlucHV0X3JlZ2lzdGVyX2Rldmlj ZShpbnB1dF9kZXYpOwotCWlmIChlcnIpIHsKLQkJaW5wdXRfZnJlZV9kZXZpY2UoaW5wdXRf ZGV2KTsKLQkJZXJyKCJGYWlsZWQgdG8gcmVnaXN0ZXIgbmV3IGlucHV0IGRldmljZSFcbiIp OwotCQlyZXR1cm4gZXJyOwotCX0KLQotCWQtPnJjX2lucHV0X2RldiA9IGlucHV0X2RldjsK LQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsIDYsIDIwKQot CUlOSVRfV09SSygmZC0+cmNfcXVlcnlfd29yaywgY2luZXJneXQyX3JlYWRfcmVtb3RlX2Nv bnRyb2wsIGQpOwotI2Vsc2UKLQlJTklUX0RFTEFZRURfV09SSygmZC0+cmNfcXVlcnlfd29y aywgY2luZXJneXQyX3JlYWRfcmVtb3RlX2NvbnRyb2wpOwotI2VuZGlmCi0KLQlpbmZvKCJz Y2hlZHVsZSByZW1vdGUgcXVlcnkgaW50ZXJ2YWwgdG8gJWQgbXNlY3MuIiwKLQkJZC0+cHJv cHMucmNfaW50ZXJ2YWwpOwotCi0Jc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkLT5yY19xdWVy eV93b3JrLAotCQkJCW1zZWNzX3RvX2ppZmZpZXMoZC0+cHJvcHMucmNfaW50ZXJ2YWwpKTsK LQotCWQtPnN0YXRlIHw9IERWQl9VU0JfU1RBVEVfUkVNT1RFOwotCi0JcmV0dXJuIDA7Ci19 Ci1FWFBPUlRfU1lNQk9MKGNpbmVyZ3l0Ml9yZW1vdGVfaW5pdCk7Ci0KLQotaW50IGNpbmVy Z3l0Ml9yZW1vdGVfZXhpdChzdHJ1Y3QgZHZiX3VzYl9kZXZpY2UgKmQpCi17Ci0JaWYgKGQt PnN0YXRlICYgRFZCX1VTQl9TVEFURV9SRU1PVEUpIHsKLQkJY2FuY2VsX3JlYXJtaW5nX2Rl bGF5ZWRfd29yaygmZC0+cmNfcXVlcnlfd29yayk7Ci0JCWZsdXNoX3NjaGVkdWxlZF93b3Jr KCk7Ci0JCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGQtPnJjX2lucHV0X2Rldik7Ci0JfQot CWQtPnN0YXRlICY9IH5EVkJfVVNCX1NUQVRFX1JFTU9URTsKLQlyZXR1cm4gMDsKLX0KLUVY UE9SVF9TWU1CT0woY2luZXJneXQyX3JlbW90ZV9leGl0KTsKZGlmZiAtciBmNTFhYTI1N2Fj ZmEgbGludXgvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9jaW5lcmd5VDIuaAotLS0gYS9s aW51eC9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2NpbmVyZ3lUMi5oCVRodSBNYXkgMDgg MjI6NTM6NTYgMjAwOCArMDIwMAorKysgYi9saW51eC9kcml2ZXJzL21lZGlhL2R2Yi9kdmIt dXNiL2NpbmVyZ3lUMi5oCVRodSBNYXkgMDggMjM6MDY6MzQgMjAwOCArMDIwMApAQCAtMzcs NyArMzcsNiBAQAogCiAjZGVmaW5lIERSSVZFUl9OQU1FICJUZXJyYVRlYy9xYW51IFVTQjIu MCBIaWdoc3BlZWQgRFZCLVQgUmVjZWl2ZXIiCiAKLWV4dGVybiBpbnQgZGlzYWJsZV9yZW1v dGU7CiBleHRlcm4gaW50IGR2Yl91c2JfY2luZXJneXQyX2RlYnVnOwogCiAjZGVmaW5lIGRl Yl9pbmZvKGFyZ3MuLi4pICBkcHJpbnRrKGR2Yl91c2JfY2luZXJneXQyX2RlYnVnLCAgMHgw MDEsIGFyZ3MpCkBAIC05NCw4ICs5Myw1IEBACiBleHRlcm4gaW50IGNpbmVyZ3l0Ml9jbWQo c3RydWN0IGR2Yl91c2JfZGV2aWNlICpkLCAgY2hhciAqd2J1ZiwgIGludCB3bGVuLAogCQkJ Y2hhciAqcmJ1ZiwgIGludCBybGVuLCAgaW50IGRlbGF5X21zKTsKIAotZXh0ZXJuIGludCBj aW5lcmd5dDJfcmVtb3RlX2luaXQoc3RydWN0IGR2Yl91c2JfZGV2aWNlICpkKTsKLWV4dGVy biBpbnQgY2luZXJneXQyX3JlbW90ZV9leGl0KHN0cnVjdCBkdmJfdXNiX2RldmljZSAqZCk7 Ci0KICNlbmRpZiAvKiBfRFZCX1VTQl9DSU5FUkdZVDJfSF8gKi8KIAo= --------------090905060808090504010603 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb --------------090905060808090504010603--